المعرفة الأساسية بمفاهيم البرمجة كائنية التوجه OOP
المعرفة بآخر وأحدث التقنيات الموجودة بال php مثل ال namespaces, traits، الفهم لهذه المفاهيم سيسهل عليك العمل كثيرا
diff --git a/docs/guide-es/caching-data.md b/docs/guide-es/caching-data.md
index 1349865d064..7aa09cd71c0 100644
--- a/docs/guide-es/caching-data.md
+++ b/docs/guide-es/caching-data.md
@@ -191,6 +191,7 @@ Aquí abajo se muestra un sumario de las dependencias disponibles:
- [[yii\caching\ChainedDependency]]: la dependencia cambia si cualquiera de las dependencias en la cadena cambia.
- [[yii\caching\DbDependency]]: la dependencia cambia si el resultado de la consulta de la sentencia SQL especificada cambia.
- [[yii\caching\ExpressionDependency]]: la dependencia cambia si el resultado de la expresión de PHP especificada cambia.
+- [[yii\caching\CallbackDependency]]: la dipendenza viene modificata se il risultato della callback PHP specificata cambia.
- [[yii\caching\FileDependency]]: la dependencia cambia si se modifica la última fecha de modificación del archivo.
- [[yii\caching\TagDependency]]: marca un elemento de datos en caché con un nombre de grupo. Puedes invalidar los elementos de datos almacenados en caché
con el mismo nombre del grupo a la vez llamando a [[yii\caching\TagDependency::invalidate()]].
diff --git a/docs/guide-es/intro-yii.md b/docs/guide-es/intro-yii.md
index 5c57a80a2c6..28f6e31182a 100644
--- a/docs/guide-es/intro-yii.md
+++ b/docs/guide-es/intro-yii.md
@@ -51,7 +51,7 @@ Esta guía está basada principalmente en la versión 2.0. del framework.
Requisitos y Prerequisitos
--------------------------
-Yii 2.0 requiere PHP 5.4.0 o una versión posterior y corre de mejor manera en la última versión de PHP. Se pueden encontrar requisitos más detallados de características individuales
+Yii 2.0 requiere PHP 7.3.0 o una versión posterior y corre de mejor manera en la última versión de PHP. Se pueden encontrar requisitos más detallados de características individuales
ejecutando el script de comprobación incluido en cada lanzamiento de Yii.
Para utilizar Yii se requieren conocimientos básicos de programación orientada a objetos (POO), porque el framework Yii se basa íntegramente en esta tecnología.
diff --git a/docs/guide-fr/caching-data.md b/docs/guide-fr/caching-data.md
index 01979d539b3..5f5cdcb8ae0 100644
--- a/docs/guide-fr/caching-data.md
+++ b/docs/guide-fr/caching-data.md
@@ -217,6 +217,7 @@ Ci-dessous nous présentons un résumé des dépendances de mise en cache dispon
- [[yii\caching\ChainedDependency]]: la dépendance est modifiée si l'une des dépendances de la chaîne est modifiée.
- [[yii\caching\DbDependency]]: la dépendance est modifiée si le résultat de le requête de l'instruction SQL spécifiée est modifié.
- [[yii\caching\ExpressionDependency]]: la dépendance est modifiée si le résultat de l'expression PHP spécifiée est modifié.
+- [[yii\caching\CallbackDependency]]: la dépendance est modifiée si le résultat du rappel PHP spécifié est modifié.
- [[yii\caching\FileDependency]]: la dépendance est modifiée si la date de dernière modification du fichier est modifiée.
- [[yii\caching\TagDependency]]: associe une donnée mise en cache à une ou plusieurs balises. Vous pouvez invalider la donnée mise en cache associée à la balise spécifiée en appelant [[yii\caching\TagDependency::invalidate()]].
@@ -342,4 +343,3 @@ $result = $db->cache(function ($db) {
La mise en cache de requêtes ne fonctionne pas avec des résultats de requêtes qui contiennent des gestionnaires de ressources. Par exemple, lorsque vous utilisez de type de colonne `BLOB` dans certains systèmes de gestion de bases de données (DBMS), la requête retourne un gestionnaire de ressources pour la donnée de la colonne.
Quelques supports de stockage pour cache sont limités en taille. Par exemple, avec memcache, chaque entrée est limitée en taille à 1 MO. En conséquence, si le résultat d'une requête dépasse cette taille, la mise en cache échoue.
-
diff --git a/docs/guide-fr/intro-yii.md b/docs/guide-fr/intro-yii.md
index b378e366051..508d7608373 100644
--- a/docs/guide-fr/intro-yii.md
+++ b/docs/guide-fr/intro-yii.md
@@ -47,7 +47,7 @@ Ce guide est principalement pour la version 2.0.
Configuration nécessaire
------------------------
-Yii 2.0 nécessite PHP 5.4.0 ou plus. Vous pouvez trouver plus de détails sur la configuration requise pour chaque fonctionnalité
+Yii 2.0 nécessite PHP 7.3.0 ou plus. Vous pouvez trouver plus de détails sur la configuration requise pour chaque fonctionnalité
en utilisant le script de test de la configuration inclus dans chaque distribution de Yii.
Utiliser Yii requiert des connaissances de base sur la programmation objet (OOP), en effet Yii est un framework basé sur ce type de programmation.
diff --git a/docs/guide-id/intro-yii.md b/docs/guide-id/intro-yii.md
index 2b1ae4c91cc..56620691ade 100644
--- a/docs/guide-id/intro-yii.md
+++ b/docs/guide-id/intro-yii.md
@@ -38,7 +38,7 @@ Panduan ini terutama tentang versi 2.0.
## Persyaratan dan Prasyarat
-Yii 2.0 memerlukan PHP 5.4.0 atau versi lebih tinggi. Anda dapat menemukan persyaratan yang lebih rinci untuk setiap fitur
+Yii 2.0 memerlukan PHP 7.3.0 atau versi lebih tinggi. Anda dapat menemukan persyaratan yang lebih rinci untuk setiap fitur
dengan menjalankan pengecek persyaratan yang diikutsertakan dalam setiap rilis Yii.
Menggunakan Yii memerlukan pengetahuan dasar tentang pemrograman berorientasi objek (OOP), mengingat Yii adalah framework berbasis OOP murni.
diff --git a/docs/guide-it/intro-yii.md b/docs/guide-it/intro-yii.md
index 056143be68b..f3cf8e7e4f6 100644
--- a/docs/guide-it/intro-yii.md
+++ b/docs/guide-it/intro-yii.md
@@ -50,7 +50,7 @@ Questa guida è focalizzata principalmente sulla versione 2.0.
Richieste e requisiti di sistema
---------------------------------
-Yii 2.0 richiede PHP 5.4.0 o successivo. Puoi trovare maggiori dettagli sulle richieste delle singole funzionalità
+Yii 2.0 richiede PHP 7.3.0 o successivo. Puoi trovare maggiori dettagli sulle richieste delle singole funzionalità
eseguendo lo script di verifica requisiti incluso in ogni versione di Yii.
L'uso di Yii richiede una conoscenza base della programmazione ad oggetti (OOP), dato che Yii è un framework puramente OOP.
diff --git a/docs/guide-ja/README.md b/docs/guide-ja/README.md
index b86e3aaad98..c2c7997c695 100644
--- a/docs/guide-ja/README.md
+++ b/docs/guide-ja/README.md
@@ -135,6 +135,7 @@ RESTful ウェブ・サービス
* [クイック・スタート](rest-quick-start.md)
* [リソース](rest-resources.md)
+* [コレクションのフィルタリング](rest-filtering-collections.md)
* [コントローラ](rest-controllers.md)
* [ルーティング](rest-routing.md)
* [レスポンス形式の設定](rest-response-formatting.md)
diff --git a/docs/guide-ja/caching-data.md b/docs/guide-ja/caching-data.md
index 513fdc59466..e0d82eda602 100644
--- a/docs/guide-ja/caching-data.md
+++ b/docs/guide-ja/caching-data.md
@@ -57,7 +57,7 @@ $data = $cache->getOrSet($key, function () use ($user_id) {
キャッシュ・コンポーネントは通常グローバルに設定しアクセスできるように
[アプリケーション・コンポーネント](structure-application-components.md) として登録されます。
-以下のコードは、二台のキャッシュ・サーバを用いる [Memcached](https://memcached.org/) を使うように
+以下のコードは、二台のキャッシュ・サーバを用いる [memcached](https://memcached.org/) を使うように
`cache` アプリケーション・コンポーネントを構成する方法を示すものです。
```php
@@ -275,6 +275,7 @@ $data = $cache->get($key);
- [[yii\caching\ChainedDependency]]: チェーン上のいずれかの依存が変更された場合に、依存が変更されます。
- [[yii\caching\DbDependency]]: 指定された SQL 文のクエリ結果が変更された場合、依存が変更されます。
- [[yii\caching\ExpressionDependency]]: 指定された PHP の式の結果が変更された場合、依存が変更されます。
+- [[yii\caching\CallbackDependency]]: 指定されたPHPコールバックの結果が変更された場合、依存関係は変更されます。
- [[yii\caching\FileDependency]]: ファイルの最終更新日時が変更された場合、依存が変更されます。
- [[yii\caching\TagDependency]]: キャッシュされるデータ・アイテムに一つまたは複数のタグを関連付けます。
[[yii\caching\TagDependency::invalidate()]] を呼び出すことによって、指定されたタグ (複数可) を持つキャッシュされたデータ・アイテムを無効にすることができます。
@@ -431,4 +432,3 @@ $result = $db->cache(function ($db) {
> Info: デフォルトでは、コンソール・アプリケーションは独立した構成情報ファイルを使用します。
正しい結果を得るためには、ウェブとコンソールのアプリケーション構成で同じキャッシュ・コンポーネントを使用していることを確認してください。
-
diff --git a/docs/guide-ja/caching-fragment.md b/docs/guide-ja/caching-fragment.md
index 4648769f0aa..2e3bd038ab4 100644
--- a/docs/guide-ja/caching-fragment.md
+++ b/docs/guide-ja/caching-fragment.md
@@ -24,6 +24,11 @@ if ($this->beginCache($id)) {
[データ・キャッシュ](caching-data.md) と同様に、キャッシュされるコンテントを識別するためにユニークな `$id` が必要になります。
+次のようにすると、フラグメント・キャッシュを削除することが出来ます。
+```php
+Yii::$app->cache->delete(['yii\widgets\FragmentCache', $id]);
+```
+
## キャッシュのオプション
diff --git a/docs/guide-ja/concept-behaviors.md b/docs/guide-ja/concept-behaviors.md
index a8583d92387..4389d7637ad 100644
--- a/docs/guide-ja/concept-behaviors.md
+++ b/docs/guide-ja/concept-behaviors.md
@@ -1,8 +1,8 @@
ビヘイビア
==========
-ビヘイビアは [[yii\base\Behavior]] またその子クラスのインスタンスです。ビヘイビアは
-[ミックスイン](https://ja.wikipedia.org/wiki/Mixin) としても知られ、既存の [[yii\base\Component|component]] クラスの
+ビヘイビアは [[yii\base\Behavior]] またその子クラスのインスタンスです。
+ビヘイビアは [ミックスイン](https://ja.wikipedia.org/wiki/Mixin) としても知られ、既存の [[yii\base\Component|component]] クラスの
機能を、クラスの継承を変更せずに拡張することができます。コンポーネントにビヘイビアをアタッチすると、その
コンポーネントにはビヘイビアのメソッドとプロパティが "注入" され、それらのメソッドとプロパティは、
コンポーネント・クラス自体に定義されているかのようにアクセスできるようになります。また、ビヘイビアは、
diff --git a/docs/guide-ja/concept-configurations.md b/docs/guide-ja/concept-configurations.md
index b62113647ad..6c664ea97a7 100644
--- a/docs/guide-ja/concept-configurations.md
+++ b/docs/guide-ja/concept-configurations.md
@@ -103,7 +103,7 @@ $config = [
'class' => 'yii\caching\FileCache',
],
'mailer' => [
- 'class' => 'yii\swiftmailer\Mailer',
+ 'class' => 'yii\symfonymailer\Mailer',
],
'log' => [
'class' => 'yii\log\Dispatcher',
@@ -207,7 +207,7 @@ return [
'class' => 'yii\caching\FileCache',
],
'mailer' => [
- 'class' => 'yii\swiftmailer\Mailer',
+ 'class' => 'yii\symfonymailer\Mailer',
],
'log' => [
'class' => 'yii\log\Dispatcher',
diff --git a/docs/guide-ja/concept-di-container.md b/docs/guide-ja/concept-di-container.md
index 9580d425118..c603b5cf615 100644
--- a/docs/guide-ja/concept-di-container.md
+++ b/docs/guide-ja/concept-di-container.md
@@ -541,7 +541,7 @@ $reader = $container->get('app\storage\DocumentsReader');
依存注入と [サービス・ロケータ](concept-service-locator.md) はともに、疎結合でよりテストしやすい方法でのソフトウェア構築を可能にする、
定番のデザインパターンです。
-依存注入とサービス・ロケータへのより深い理解を得るために、 [Martin の記事](https://martinfowler.com/articles/injection.html)
+依存注入とサービス・ロケータをより深く理解するために、 [Martin の記事](https://martinfowler.com/articles/injection.html)
を読むことを強くお勧めします。
Yii はその [サービス・ロケータ](concept-service-locator.md) を、依存注入 (DI) コンテナの上に実装しています。
diff --git a/docs/guide-ja/concept-properties.md b/docs/guide-ja/concept-properties.md
index 7692298683f..14464795ee7 100644
--- a/docs/guide-ja/concept-properties.md
+++ b/docs/guide-ja/concept-properties.md
@@ -80,7 +80,7 @@ getter と setter で定義されたプロパティには、いくつかの特
* 通常の `property_exists()` の呼び出しでは、マジック・プロパティが存在するかどうかを知ることは出来ません。
それぞれ、[[yii\base\BaseObject::canGetProperty()|canGetProperty()]] または [[yii\base\BaseObject::canSetProperty()|canSetProperty()]] を呼び出さなければなりません。
-このガイドの冒頭で説明した問題に戻ると、 `label` に値が代入されているあらゆる箇所で `trim()` を呼ぶのではなく、
-もう `setLabel()` という setter の内部だけで `trim()` を呼べば済むのです。
+このガイドの冒頭で説明した問題に戻ると、`label` に値が代入されているあらゆる箇所で `trim()` を呼ぶのではなく、
+`setLabel()` という setter の内部だけで `trim()` を呼べば済むようになります。
さらに、新しい要求でラベルの先頭を大文字にする必要が発生しても、他のいっさいのコードに触れることなく、
すぐに `setLabel()` メソッドを変更することができます。一箇所の変更は、すべての `label` への代入に普遍的に作用します。
diff --git a/docs/guide-ja/concept-service-locator.md b/docs/guide-ja/concept-service-locator.md
index e3082432de0..7cf325dac34 100644
--- a/docs/guide-ja/concept-service-locator.md
+++ b/docs/guide-ja/concept-service-locator.md
@@ -129,4 +129,4 @@ return [
モジュールからサービスを引き出そうとする全てのリクエストは、そのモジュールが要求に応じられない場合は、すべてその親に渡されます。
モジュール内のコンポーネントの構成情報は、親モジュール内のコンポーネントの構成情報とは決してマージされないことに注意して下さい。
-サービス・ロケータ・パターンによって私たちは名前の付いたサービスを定義することが出来ますが、同じ名前のサービスが同じ構成パラメータを使用すると想定することは出来ません。
+サービス・ロケータのパターンによって私たちは名前の付いたサービスを定義することが出来ますが、同じ名前のサービスが同じ構成パラメータを使用すると想定することは出来ません。
diff --git a/docs/guide-ja/db-dao.md b/docs/guide-ja/db-dao.md
index 26c3c6f3509..a9388ead827 100644
--- a/docs/guide-ja/db-dao.md
+++ b/docs/guide-ja/db-dao.md
@@ -682,5 +682,5 @@ $table = Yii::$app->db->getTableSchema('post');
```
このメソッドは、テーブルのカラム、プライマリ・キー、外部キーなどの情報を含む [[yii\db\TableSchema]] オブジェクトを返します。
-これらの情報は、主として [クエリ・ビルダ](db-query-builder.md) や [アクティブ・レコード](db-active-record.md) によって利用されて、
+この情報は、主として [クエリ・ビルダ](db-query-builder.md) や [アクティブ・レコード](db-active-record.md) によって利用されて、
特定のデータベースに依存しないコードを書くことを助けてくれています。
diff --git a/docs/guide-ja/db-migrations.md b/docs/guide-ja/db-migrations.md
index a0b489cb0cd..6fa39cfae34 100644
--- a/docs/guide-ja/db-migrations.md
+++ b/docs/guide-ja/db-migrations.md
@@ -685,7 +685,7 @@ class m150101_185401_create_news_table extends Migration
`safeDown()` では、先に行を削除して、次にテーブルを削除しています。
> Note: 全ての DBMS がトランザクションをサポートしている訳ではありません。また、トランザクションに入れることが出来ない DB クエリもあります。
- いくつかの例を [暗黙のコミット](https://dev.mysql.com/doc/refman/5.7/en/implicit-commit.html) で見ることが出来ます。
+ そのいくつかの例を [暗黙のコミット](https://dev.mysql.com/doc/refman/5.7/en/implicit-commit.html) で見ることが出来ます。
その場合には、代りに、`up()` と `down()` を実装しなければなりません。
diff --git a/docs/guide-ja/db-query-builder.md b/docs/guide-ja/db-query-builder.md
index 996b2a542f9..170e1aa2c89 100644
--- a/docs/guide-ja/db-query-builder.md
+++ b/docs/guide-ja/db-query-builder.md
@@ -299,7 +299,7 @@ $query->where([$column => $value]);
値が自動的に一対のパーセント記号によって囲まれることに注意してください。
> Note: PostgreSQL を使っている場合は、`like` の代りに、大文字と小文字を区別しない比較のための
- > [`ilike`](https://www.postgresql.org/docs/8.3/functions-matching.html#FUNCTIONS-LIKE) を使うことも出来ます。
+ > [`ilike`](https://www.postgresql.org/docs/8.3/static/functions-matching.html#FUNCTIONS-LIKE) を使うことも出来ます。
- `or like`: オペランド 2 が配列である場合に `LIKE` 述語が `OR` によって結合される以外は、
`like` 演算子と同じです。
diff --git a/docs/guide-ja/input-tabular-input.md b/docs/guide-ja/input-tabular-input.md
index 252ca07a14b..48f2f7e986e 100644
--- a/docs/guide-ja/input-tabular-input.md
+++ b/docs/guide-ja/input-tabular-input.md
@@ -43,12 +43,14 @@ class SettingsController extends Controller
{
$settings = Setting::find()->indexBy('id')->all();
- if (Model::loadMultiple($settings, Yii::$app->request->post()) && Model::validateMultiple($settings)) {
+ if ($this->request->isPost) {
+ if (Setting::loadMultiple($settings, $this->request->post()) && Setting::validateMultiple($settings)) {
foreach ($settings as $setting) {
$setting->save(false);
}
return $this->redirect('index');
}
+ }
return $this->render('update', ['settings' => $settings]);
}
@@ -71,10 +73,12 @@ use yii\widgets\ActiveForm;
$form = ActiveForm::begin();
-foreach ($settings as $index => $setting) {
- echo $form->field($setting, "[$index]value")->label($setting->name);
+foreach ($settings as $id => $setting) {
+ echo $form->field($setting, "[$id]value")->label($setting->name);
}
+echo Html::submitButton('Save');
+
ActiveForm::end();
```
@@ -88,20 +92,29 @@ ActiveForm::end();
```php
public function actionCreate()
{
- $count = count(Yii::$app->request->post('Setting', []));
- $settings = [new Setting()];
- for($i = 1; $i < $count; $i++) {
- $settings[] = new Setting();
+ $settings = [];
+ if ($this->request->isPost) {
+ $count = count($this->request->post($setting->tableName())) - 1;
+ for ($i = 0; $i < $count; $i++) {
+ $settings[$i] = new Setting();
+ }
+ if (Setting::loadMultiple($settings, $this->request->post()) && Setting::validateMultiple($settings)) {
+ foreach ($settings as $setting) {
+ $setting->save(false);
+ }
+ return $this->redirect('index');
}
+ }
+ $settings[] = new Setting();
- // ...
+ return $this->render('create', ['settings' => $settings]);
}
```
ここでは、デフォルトで一個のモデルを含む `$settings` 配列を初期値として作成し、少なくとも一個のテキスト・フィールドが常にビューに表示されるようにしています。
そして、受信したインプットの行数に合せて、配列にモデルを追加しています。
-ビューでは javascript を使ってインプットの行を動的に追加することが出来ます。
+ビューでは JavaScript を使ってインプットの行を動的に追加することが出来ます。
### 更新、作成、削除を一つのページに組み合わせる
diff --git a/docs/guide-ja/input-validation.md b/docs/guide-ja/input-validation.md
index 420317c0f35..b8826135377 100644
--- a/docs/guide-ja/input-validation.md
+++ b/docs/guide-ja/input-validation.md
@@ -748,7 +748,7 @@ JS;
### Deferred 検証
-非同期のクライアント・サイドの検証をサポートする必要がある場合は、[Defered オブジェクト](https://api.jquery.com/category/deferred-object/) を作成することが出来ます。
+非同期のクライアント・サイドの検証をサポートする必要がある場合は、[Deferred オブジェクト](https://api.jquery.com/category/deferred-object/) を作成することが出来ます。
例えば、AJAX によるカスタム検証を実行するために、次のコードを使うことが出来ます。
```php
diff --git a/docs/guide-ja/intro-upgrade-from-v1.md b/docs/guide-ja/intro-upgrade-from-v1.md
index 53010f0da0e..b6dc75585d8 100644
--- a/docs/guide-ja/intro-upgrade-from-v1.md
+++ b/docs/guide-ja/intro-upgrade-from-v1.md
@@ -265,7 +265,7 @@ ActiveForm::end();
テーマは、ソースのビュー・ファイル・パスをテーマのビュー・ファイル・パスにマップするパス・マッピング機構に基づくものになりました。
例えば、あるテーマのパス・マップが `['/web/views' => '/web/themes/basic']` である場合、ビュー・ファイル `/web/views/site/index.php` のテーマ版は `/web/themes/basic/site/index.php` になります。
この理由により、テーマはどのようなビュー・ファイルに対してでも適用することが出来るようになりました。
-コントローラやウィジェットのコンテキストの外で表示されるビューに対してすら、適用できます。
+コントローラやウィジェットのコンテキストの外で表示されるビューであっても適用できます。
また、`CThemeManager` コンポーネントはもうありません。
その代りに、`theme` は `view` アプリケーション・コンポーネントの構成可能なプロパティになりました。
diff --git a/docs/guide-ja/intro-yii.md b/docs/guide-ja/intro-yii.md
index f2995b3e761..a249a0bed00 100644
--- a/docs/guide-ja/intro-yii.md
+++ b/docs/guide-ja/intro-yii.md
@@ -50,7 +50,7 @@ Yii は現在、利用可能な二つのメジャー・バージョン、すな
必要条件と前提条件
------------------
-Yii 2.0 は PHP 5.4.0 以上を必要とし、PHP の最新バージョンで最高の力を発揮します。
+Yii 2.0 は PHP 7.3.0 以上を必要とし、PHP の最新バージョンで最高の力を発揮します。
個々の機能に対する詳細な必要条件は、全ての Yii リリースに含まれている必要条件チェッカを走らせることによって知ることが出来ます。
Yii を使うためには、オブジェクト指向プログラミング (OOP) の基本的な知識が必要です。
diff --git a/docs/guide-ja/output-client-scripts.md b/docs/guide-ja/output-client-scripts.md
index 38ac328e2a4..2e307ab69ff 100644
--- a/docs/guide-ja/output-client-scripts.md
+++ b/docs/guide-ja/output-client-scripts.md
@@ -40,8 +40,8 @@ $this->registerJs(
- [[yii\web\View::POS_LOAD|View::POS_LOAD]] - [ドキュメントの `load` イベント](https://learn.jquery.com/using-jquery-core/document-ready/) でコードを実行するための指定。
上記と同じく、これを指定すると、[[yii\web\JqueryAsset|jQuery]] が自動的に登録されます。
-最後の引数は、スクリプトのコード・ブロックを一意に特定するために使われるスクリプトのユニークな ID です。同じ ID のスクリプトが既にある場合は、新しいものを追加するのでなく、
-それを置き換えます。ID を指定しない場合は、JS コードそれ自身が ID として扱われます。この ID によって、同じコードが複数回登録されるのを防止します。
+最後の引数は、スクリプトのコード・ブロックを一意に特定するために使われるスクリプトのユニークな ID です。同じ ID のスクリプトが既にある場合は、新しいものを追加するのでなく、それを置き換えます。
+ID を指定しない場合は、JS コードそれ自身が ID として扱われます。この ID によって、同じコードが複数回登録されるのを防止します。
### スクリプト・ファイルを登録する
diff --git a/docs/guide-ja/output-data-providers.md b/docs/guide-ja/output-data-providers.md
index d15d313f457..0344016325d 100644
--- a/docs/guide-ja/output-data-providers.md
+++ b/docs/guide-ja/output-data-providers.md
@@ -354,13 +354,13 @@ $filter = new ActiveDataFilter([
$filterCondition = null;
-// どのようなソースからでもフィルタをロードすることが出来ます。
-// 例えば、リクエスト・ボディの JSON からロードしたい場合は、
+// どのようなソースからでもフィルタをロードすることが出来ます。例えば、
+// リクエスト・ボディの JSON からロードしたい場合は、
// 下記のように Yii::$app->request->getBodyParams() を使います。
if ($filter->load(\Yii::$app->request->get())) {
$filterCondition = $filter->build();
if ($filterCondition === false) {
- // シリアライザがエラーを抽出するだろう
+ // シリアライザがフィルタの抽出でエラーを出すかもしれない
return $filter;
}
}
diff --git a/docs/guide-ja/output-data-widgets.md b/docs/guide-ja/output-data-widgets.md
index 28946fe3393..b4dd7d4a05c 100644
--- a/docs/guide-ja/output-data-widgets.md
+++ b/docs/guide-ja/output-data-widgets.md
@@ -777,4 +777,4 @@ yii gii/crud --controllerClass="backend\\controllers\PostController" \
さらに読むべき文書
------------------
-- Arno Slatius による [Rendering Data in Yii 2 with GridView and ListView](https://www.sitepoint.com/rendering-data-in-yii-2-with-gridview-and-listview/)。
+- Arno Slatius による [Rendering Data in Yii 2 with GridView and ListView](https://www.sitepoint.com/rendering-data-in-yii-2-with-gridview-and-listview/)
diff --git a/docs/guide-ja/output-formatting.md b/docs/guide-ja/output-formatting.md
index bcfaabc9d6c..4faf5c3c3ac 100644
--- a/docs/guide-ja/output-formatting.md
+++ b/docs/guide-ja/output-formatting.md
@@ -75,7 +75,7 @@ return [
- [[yii\i18n\Formatter::asDate()|date]] - 値は日付としてフォーマットされます。例えば `January 01, 2014`。
- [[yii\i18n\Formatter::asTime()|time]] - 値は時刻としてフォーマットされます。例えば `14:23`。
- [[yii\i18n\Formatter::asDatetime()|datetime]] - 値は日付および時刻としてフォーマットされます。例えば `January 01, 2014 14:23`。
-- [[yii\i18n\Formatter::asTimestamp()|timestamp]] - 値は [unix タイムスタンプ](https://ja.wikipedia.org/wiki/UNIX%E6%99%82%E9%96%93) としてフォーマットされます。例えば `1412609982`。
+- [[yii\i18n\Formatter::asTimestamp()|timestamp]] - 値は [unix タイムスタンプ](https://ja.wikipedia.org/wiki/UNIX%E6%99%82%E9%96%93) としてフォーマットされます。例えば `1412609982`
- [[yii\i18n\Formatter::asRelativeTime()|relativeTime]] - 値は、その日時と現在との間隔として、人間に分かりやすい言葉でフォーマットされます。
例えば `1 hour ago`。
- [[yii\i18n\Formatter::asDuration()|duration]] - 値は継続時間として、人間に分かりやすい言葉でフォーマットされます。例えば `1 day, 2 minutes`。
diff --git a/docs/guide-ja/output-sorting.md b/docs/guide-ja/output-sorting.md
index 945c331a0d2..ec18e82c952 100644
--- a/docs/guide-ja/output-sorting.md
+++ b/docs/guide-ja/output-sorting.md
@@ -65,7 +65,7 @@ $articles = Article::find()
ラベルは HTML エンコードされないことに注意してください。
> Info: [[yii\data\Sort::$orders|orders]] の値をデータベースのクエリに直接に供給して、
- `ORDER BY` 句を構築することが出来ます。 データベースのクエリが認識できない合成的な属性が入っている場合があるため、
+ `ORDER BY` 句を構築することが出来ます。データベースのクエリが認識できない合成的な属性が入っている場合があるため、
[[yii\data\Sort::$attributeOrders|attributeOrders]] を使ってはいけません。
[[yii\data\Sort::link()]] を呼んでハイパーリンクを生成すれば、それをクリックして、指定した属性によるデータの並べ替えをリクエストすることが出来るようになります。
diff --git a/docs/guide-ja/rest-authentication.md b/docs/guide-ja/rest-authentication.md
index a811526f1a5..6a236cea835 100644
--- a/docs/guide-ja/rest-authentication.md
+++ b/docs/guide-ja/rest-authentication.md
@@ -12,7 +12,7 @@
* [HTTP Basic 認証](https://ja.wikipedia.org/wiki/Basic%E8%AA%8D%E8%A8%BC): アクセス・トークンはユーザ名として送信されます。
この方法は、アクセス・トークンを API コンシューマ側で安全に保存することが出来る場合、
- 例えば API コンシューマがサーバ上で走るプログラムである場合などにのみ使用されるべきです。
+ 例えば API コンシューマがサーバ上で走るプログラムである場合などのみに使用されるべきです。
* クエリ・パラメータ: アクセス・トークンは API の URL、例えば、`https://example.com/users?access-token=xxxxxxxx`
でクエリ・パラメータとして送信されます。
ほとんどのウェブ・サーバはクエリ・パラメータをサーバのログに記録するため、この手法は、
diff --git a/docs/guide-ja/rest-filtering-collections.md b/docs/guide-ja/rest-filtering-collections.md
new file mode 100644
index 00000000000..7eb809679e5
--- /dev/null
+++ b/docs/guide-ja/rest-filtering-collections.md
@@ -0,0 +1,190 @@
+コレクションのフィルタリング
+============================
+
+バージョン 2.0.13 以降、リソースのコレクションは [[yii\data\DataFilter]] コンポーネントを使ってフィルタにかけることが出来ます。
+このコンポーネントは、リクエスト経由で渡されるフィルタ条件の構築を可能にし、そして、拡張バージョンの [[yii\data\ActiveDataFilter]] の助力によって、
+[[yii\db\QueryInterface::where()]] にとって適切な形式でフィルタ条件を使う事を可能にします。
+
+
+## データ・プロバイダをフィルタリングのために構成する
+
+[コレクション](rest-resources.md#collections) のセクションで言及されているように、
+[データ・プロバイダ](output-data-providers#data-providers) を使うと、並べ替えてページ付けしたリソースのリストを出力することが出来ます。
+また、データ・プロバイダを使って、そのリストをフィルタにかけることも出来ます。
+
+```php
+$filter = new ActiveDataFilter([
+ 'searchModel' => 'app\models\PostSearch',
+]);
+
+$filterCondition = null;
+// どのようなソースからでもフィルタをロードすることが出来ます。例えば、
+// リクエスト・ボディの JSON からロードしたい場合は、
+// 下記のように Yii::$app->request->getBodyParams() を使います。
+if ($filter->load(Yii::$app->request->get())) {
+ $filterCondition = $filter->build();
+ if ($filterCondition === false) {
+ // シリアライザがフィルタの抽出でエラーを出すかもしれない
+ return $filter;
+ }
+}
+
+$query = Post::find();
+if ($filterCondition !== null) {
+ $query->andWhere($filterCondition);
+}
+
+return new ActiveDataProvider([
+ 'query' => $query,
+]);
+```
+
+`PostSearch` モデルが、どのプロパティと値がフィルタリングのために許容されるかを定義する役目を担います。
+
+```php
+use yii\base\Model;
+
+class PostSearch extends Model
+{
+ public $id;
+ public $title;
+
+ public function rules()
+ {
+ return [
+ ['id', 'integer'],
+ ['title', 'string', 'min' => 2, 'max' => 200],
+ ];
+ }
+}
+```
+
+そこで特別なビジネス・ロジックが必要でない場合には、検索ルールのためのスタンドアロンなモデルを準備する代わりに、
+[[yii\base\DynamicModel]] を使うことが出来ます。
+
+```php
+$filter = new ActiveDataFilter([
+ 'searchModel' => (new DynamicModel(['id', 'title']))
+ ->addRule(['id'], 'integer')
+ ->addRule(['title'], 'string', ['min' => 2, 'max' => 200]),
+]);
+```
+
+`searchModel` を定義することは、エンド・ユーザに許容するフィルタ条件を制御するために欠かすことが出来ません。
+
+
+## リクエストのフィルタリング
+
+通常、エンド・ユーザは許容された一つ以上のメソッド(これらはAPIドキュメントに明示的に記述されるべきものです)を使ってフィルタリング条件をリクエストで提供するものと期待されます。
+例えば、フィルタリングが JSON を使って POST メソッドで操作される場合は、
+下記と似たようなものになります。
+
+```json
+{
+ "filter": {
+ "id": {"in": [2, 5, 9]},
+ "title": {"like": "cheese"}
+ }
+}
+```
+
+上記の条件は、次のように解釈されます :
+- `id` は、2, 5, または 9 でなければならず、**かつD**
+- `title` は `cheese` という語を含まなければならない。
+
+同一の条件が GET クエリの一部として送信される場合は、次のようになります :
+
+```
+?filter[id][in][]=2&filter[id][in][]=5&filter[id][in][]=9&filter[title][like]=cheese
+```
+
+デフォルトの `filter` キー・ワードは、[[yii\data\DataFilter::$filterAttributeName]] を設定して変更することが出来ます。
+
+
+## フィルタ制御キーワード
+
+許容されているフィルタ制御キーワードは下記の通りです :
+
+| キーワード | 意味 |
+|:--------------:|:-------------:|
+| `and` | `AND` |
+| `or` | `OR` |
+| `not` | `NOT` |
+| `lt` | `<` |
+| `gt` | `>` |
+| `lte` | `<=` |
+| `gte` | `>=` |
+| `eq` | `=` |
+| `neq` | `!=` |
+| `in` | `IN` |
+| `nin` | `NOT IN` |
+| `like` | `LIKE` |
+
+オプションの [[yii\data\DataFilter::$filterControls]] を拡張して、上記のリストを拡張することが出来ます。
+例えば、下記のように、同一のフィルタ構築キーにいくつかのキーワードを与えて、複数のエイリアスを作成することが出来ます :
+
+```php
+[
+ 'eq' => '=',
+ '=' => '=',
+ '==' => '=',
+ '===' => '=',
+ // ...
+]
+```
+
+未定義のキーワードは、すべて、フィルタ制御とは認識されず、属性名として扱われることに注意して下さい。
+制御キーワードと属性名の衝突は避けなければなりません。
+(例えば、制御キーワードとしての 'like' と属性名としての 'like' が存在する場合、そのような属性に対して条件を指定することは不可能です。)
+
+> Note: フィルタ制御を指定する時に、あなたのAPIが使用する実際のデータ交換形式に留意しましょう。
+ すべての指定された制御キーワードがその形式にとって妥当なものであることを確認して下さい。
+ 例えば、XML ではタグ名は Letter クラスの文字でしか開始出来ませんから、`>`, `=`, `$gt` 等は XML スキーマに違反することになります。
+
+> Note: 新しいフィルタ制御キーワードを追加する時は、演算子の結合規則および所期の動作に基づいて、期待されるクエリ結果を得るためには
+ [[yii\data\DataFilter::$conditionValidators]] および/または [[yii\data\DataFilter::$operatorTypes]] をも
+ 更新する必要があるかどうか、必ず確認して下さい。
+
+
+## Null 値の扱い
+
+JSON の式野中では `null` を使う事は容易ですが、文字通りの 'null' を文字列としての "null" と混乱させずに GET クエリを使ってを送信することは不可能です。
+バージョン 2.0.40 以降では、[[yii\data\DataFilter::$nullValue]] オプションを使って、文字通りの `null` に置換される単語(デフォルトでは、"NULL")を構成することが出来ます。
+
+
+## 属性のエイリアス
+
+属性を別の名前で呼びたい場合や、結合された DB テーブルでフィルタをかけたい場合に、
+[[yii\data\DataFilter::$attributeMap]] を使ってエイリアスのマップを設定することが出来ます。
+
+```php
+[
+ 'carPart' => 'car_part', // car_part 属性でフィルタするために carPart が使われる
+ 'authorName' => '{{author}}.[[name]]', // 結合された author テーブルの name 属性でフィルタするために authorName が使われる
+]
+```
+
+## `ActiveController` のためにフィルタを構成する
+
+[[yii\rest\ActiveController]] には一般的な一揃いの REST アクションが失踪されていますが、
+[[yii\rest\IndexAction::$dataFilter]] プロパティによってフィルタを使うことも簡単に出来ます。
+可能な方法のうちの一つは [[yii\rest\ActiveController::actions()]] を使ってそうすることです :
+
+```php
+public function actions()
+{
+ $actions = parent::actions();
+
+ $actions['index']['dataFilter'] = [
+ 'class' => \yii\data\ActiveDataFilter::class,
+ 'attributeMap' => [
+ 'clockIn' => 'clock_in',
+ ],
+ 'searchModel' => (new DynamicModel(['id', 'clockIn']))->addRule(['id', 'clockIn'], 'integer', ['min' => 1]),
+ ];
+
+ return $actions;
+}
+```
+
+これで(`index` アクションによってアクセス可能な)コレクションを `id` と `clockIn` プロパティによってフィルタすることが出来ます。
diff --git a/docs/guide-ja/rest-resources.md b/docs/guide-ja/rest-resources.md
index 09020bca275..07f71703825 100644
--- a/docs/guide-ja/rest-resources.md
+++ b/docs/guide-ja/rest-resources.md
@@ -251,11 +251,3 @@ class PostController extends Controller
REST API におけるコレクションはデータ・プロバイダであるため、データ・プロバイダの全ての機能、すなわち、ページネーションやソーティングを共有しています。
その一例を [クイック・スタート](rest-quick-start.md#trying-it-out) のセクションで見ることが出来ます。
-
-### コレクションをフィルタリングする
-
-バージョン 2.0.13 以降、Yii はコレクションをフィルタリングする便利な機能を提供しています。
-その一例を [クイック・スタート](rest-quick-start.md#trying-it-out) のガイドに見ることが出来ます。
-エンド・ボイントをあなた自身が実装しようとしている場合、フィルタリングは
-データ・プロバイダのガイドの [データ・フィルタを使ってデータ・プロバイダをフィルタリングする](output-data-providers.md#filtering-data-providers-using-data-filters
- のセクションで述べられている方法で行うことが出来ます。
diff --git a/docs/guide-ja/rest-response-formatting.md b/docs/guide-ja/rest-response-formatting.md
index f30433f0170..502d5707a08 100644
--- a/docs/guide-ja/rest-response-formatting.md
+++ b/docs/guide-ja/rest-response-formatting.md
@@ -3,7 +3,7 @@
RESTful API のリクエストを処理するとき、アプリケーションは、通常、レスポンス形式の設定に関して次のステップを踏みます。
-1. レスポンス形式に影響するさまざまな要因、例えば、メディア・タイプ、言語、バージョンなどを決定します。
+1. レスポンス形式に影響しうるさまざまな要因、例えば、メディア・タイプ、言語、バージョンなどを決定します。
このプロセスは [コンテント・ネゴシエーション](https://en.wikipedia.org/wiki/Content_negotiation) としても知られるものです。
2. リソース・オブジェクトを配列に変換します。
[リソース](rest-resources.md) のセクションで説明したように、この作業は [[yii\rest\Serializer]] によって実行されます。
diff --git a/docs/guide-ja/rest-versioning.md b/docs/guide-ja/rest-versioning.md
index f9b73f9006c..6b89c8e07ae 100644
--- a/docs/guide-ja/rest-versioning.md
+++ b/docs/guide-ja/rest-versioning.md
@@ -5,7 +5,7 @@
クライアント・サイドとサーバ・サイドの両方のコードを完全に制御できるウェブ・アプリケーションとは違って、API はあなたの制御が及ばないクライアントによって使用されることを想定したものです。このため、API の後方互換性 (BC) は、可能な限り保たれなければなりません。
BC を損なうかも知れない変更が必要な場合は、それを API の新しいバージョンにおいて導入し、バージョン番号を上げるべきです。そうすれば、既存のクライアントは、API の古いけれども動作するバージョンを使い続けることが出来ますし、新しいまたはアップグレードされたクライアントは、新しい API バージョンで新しい機能を使うことが出来ます。
-> Tip: API のバージョン番号の設計に関する詳細情報は
+> Tip: API のバージョン番号の設計についての詳細な情報は
[Semantic Versioning](https://semver.org/) を参照してください。
API のバージョン管理を実装する方法としてよく使われるのは、バージョン番号を API の URL に埋め込む方法です。
diff --git a/docs/guide-ja/runtime-requests.md b/docs/guide-ja/runtime-requests.md
index 94257ad13a6..fde78a39a99 100644
--- a/docs/guide-ja/runtime-requests.md
+++ b/docs/guide-ja/runtime-requests.md
@@ -152,8 +152,9 @@ Yii アプリケーションに渡されるからです。
信頼できるプロキシの情報を構成することが出来るようになっています。
[[yii\web\Request::trustedHosts|trustedHosts]]、
[[yii\web\Request::secureHeaders|secureHeaders]]、
-[[yii\web\Request::ipHeaders|ipHeaders]] および
-[[yii\web\Request::secureProtocolHeaders|secureProtocolHeaders]]
+[[yii\web\Request::ipHeaders|ipHeaders]]
+[[yii\web\Request::secureProtocolHeaders|secureProtocolHeaders]] および
+[[yii\web\Request::portHeaders|portHeaders]] (2.0.46 以降)
以下は、リバース・プロキシ・アレイの背後で動作するアプリケーションのための、request の構成例です
(リバース・プロキシ・アレイは `10.0.2.0/24` のネットワークに設置されているとします)。
diff --git a/docs/guide-ja/runtime-sessions-cookies.md b/docs/guide-ja/runtime-sessions-cookies.md
index 92eefef8b51..ae09ec64a5c 100644
--- a/docs/guide-ja/runtime-sessions-cookies.md
+++ b/docs/guide-ja/runtime-sessions-cookies.md
@@ -389,7 +389,8 @@ Yii 2.0.21 以降、[[yii\web\Cookie::sameSite]] 設定がサポートされて
ブラウザが `sameSite` 設定をサポートしている場合、指定されたポリシー ('Lax' または 'Strict') に従うクッキーだけが送信されます。
詳細については [SameSite の wiki 記事](https://owasp.org/www-community/SameSite) を参照して下さい。
更なるセキュリティ強化のために、`sameSite` がサポートされていない PHP のバージョンで使われた場合には例外が投げられます。
-この機能を PHP のバージョンに関わりなく使用する場合は、最初にバージョンをチェックして下さい。例えば、
+この機能を PHP のバージョンに関わりなく使用する場合は、最初にバージョンをチェックして下さい。例えば
+
```php
[
'sameSite' => PHP_VERSION_ID >= 70300 ? yii\web\Cookie::SAME_SITE_LAX : null,
diff --git a/docs/guide-ja/security-authorization.md b/docs/guide-ja/security-authorization.md
index 6375122461f..8b22f1591a8 100644
--- a/docs/guide-ja/security-authorization.md
+++ b/docs/guide-ja/security-authorization.md
@@ -157,7 +157,7 @@ class SiteController extends Controller
ロール・ベース・アクセス制御 (RBAC) は、単純でありながら強力な集中型のアクセス制御を提供します。
RBAC と他のもっと伝統的なアクセス制御スキーマとの比較に関する詳細については、
-[Wiki 記事](https://ja.wikipedia.org/wiki/%E3%83%AD%E3%83%BC%E3%83%AB%E3%83%99%E3%83%BC%E3%82%B9%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E5%88%B6%E5%BE%A1) を参照してください。
+[Wikipedia](https://ja.wikipedia.org/wiki/%E3%83%AD%E3%83%BC%E3%83%AB%E3%83%99%E3%83%BC%E3%82%B9%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E5%88%B6%E5%BE%A1) を参照してください。
Yii は、[NIST RBAC モデル](https://csrc.nist.gov/CSRC/media/Publications/conference-paper/1992/10/13/role-based-access-controls/documents/ferraiolo-kuhn-92.pdf) に従って、一般的階層型 RBAC を実装しています。
RBAC の機能は、[[yii\rbac\ManagerInterface|authManager]] [アプリケーション・コンポーネント](structure-application-components.md) を通じて提供されます。
diff --git a/docs/guide-ja/security-best-practices.md b/docs/guide-ja/security-best-practices.md
index 5e39114c63f..d38e18faab9 100644
--- a/docs/guide-ja/security-best-practices.md
+++ b/docs/guide-ja/security-best-practices.md
@@ -333,8 +333,8 @@ H5BP プロジェクトが提供する構成例を参考にすることも出来
- Apache 2:
- Nginx:
-サーバの構成にアクセスする権限がない場合は、このような攻撃に対して防御するために、[[yii\filters\HostControl]]
-フィルタを設定することが出来ます。
+サーバの構成にアクセスする権限がない場合は、このような攻撃に対して防御するために、
+[[yii\filters\HostControl]] フィルタを設定することが出来ます。
```php
// ウェブ・アプリケーション構成ファイル
diff --git a/docs/guide-ja/start-databases.md b/docs/guide-ja/start-databases.md
index b1393aaf545..933696b1757 100644
--- a/docs/guide-ja/start-databases.md
+++ b/docs/guide-ja/start-databases.md
@@ -106,8 +106,8 @@ class Country extends ActiveRecord
}
```
-`Country` クラスは [[yii\db\ActiveRecord]] を拡張しています。この中には一つもコードを書く必要はありません。
-単に上記のコードだけで、Yii は関連付けられたテーブル名をクラス名から推測します。
+`Country` クラスは [[yii\db\ActiveRecord]] を拡張しています。ここにコードを追加する必要は全くありません。
+上記のコードだけで、Yii は関連付けられたテーブル名をクラス名から推測します。
> Info: クラス名とテーブル名を直接に合致させることが出来ない場合は、[[yii\db\ActiveRecord::tableName()]]
メソッドをオーバーライドして、関連づけられたテーブル名を明示的に指定することが出来ます。
diff --git a/docs/guide-ja/start-prerequisites.md b/docs/guide-ja/start-prerequisites.md
index 8aeac1fb64a..bce70b98d0c 100644
--- a/docs/guide-ja/start-prerequisites.md
+++ b/docs/guide-ja/start-prerequisites.md
@@ -5,7 +5,7 @@ Yii の学習曲線は他の PHP フレームワークほど急峻ではあり
## PHP
Yii は PHP フレームワークですから、必ず [言語リファレンスを読んで理解する](https://www.php.net/manual/ja/langref.php) ようにして下さい。
-Yii を使って開発するときはオブジェクト指向の流儀でコードを書くことになりますから、必ず、[クラスとオブジェクト](https://www.php.net/manual/ja/language.oop5.basic.php) および [名前空間](https://www.php.net/manual/ja/language.namespaces.php) には慣れ親しんでおいて下さい。
+Yii を使って開発するときはオブジェクト指向の流儀でコードを書くことになりますから、必ず、[クラスとオブジェクト](https://www.php.net/manual/ja/language.oop5.basic.php) および [名前空間](https://www.php.net/manual/ja/language.namespaces.php) に慣れ親しんでおいて下さい。
## オブジェクト指向プログラミング
diff --git a/docs/guide-ja/structure-application-components.md b/docs/guide-ja/structure-application-components.md
index a75554af1af..7575f172ca1 100644
--- a/docs/guide-ja/structure-application-components.md
+++ b/docs/guide-ja/structure-application-components.md
@@ -58,7 +58,7 @@
けれども、場合によっては、明示的にアクセスされないときでも、リクエストごとにアプリケーション・コンポーネントのインスタンスを作成したいことがあります。
そうするために、アプリケーションの [[yii\base\Application::bootstrap|bootstrap]] プロパティのリストにそのコンポーネントの ID を挙げることが出来ます。
-また、カスタマイズしたコンポーネントをブートストラップするためにクロージャを用いることも出来ます。インスタンス化されたコンポーネントを返すことは要求されません。
+また、カスタマイズされたコンポーネントをブートストラップするためにクロージャを用いることも出来ます。インスタンス化されたコンポーネントを返すことは要求されません。
単に [[yii\base\Application]] のインスタンス化の後にコードを走らせるだけのためにクロージャを使うことも出来ます。
例えば、次のアプリケーション構成情報は、`log` コンポーネントが常にロードされることを保証するものです。
diff --git a/docs/guide-ja/structure-applications.md b/docs/guide-ja/structure-applications.md
index 5ec671f5eb7..c3c44b8ba9f 100644
--- a/docs/guide-ja/structure-applications.md
+++ b/docs/guide-ja/structure-applications.md
@@ -276,7 +276,7 @@ if (YII_ENV_DEV) {
このプロパティを使用して決定します。
言語を指定するのには、[IETF 言語タグ](https://ja.wikipedia.org/wiki/IETF%E8%A8%80%E8%AA%9E%E3%82%BF%E3%82%B0) に従うことが推奨されます。
-例えば、`en` は英語を意味し、`en-US` はアメリカ合衆国の英語を意味します。
+例えば、`en` は英語を意味しますが、`en-US` はアメリカ合衆国の英語を意味します。
このプロパティに関する詳細は [国際化](tutorial-i18n.md) のセクションで読むことが出来ます。
@@ -348,7 +348,7 @@ $width = \Yii::$app->params['thumbnail.size'][0];
[language](#language) プロパティと同様に、このプロパティは
[IETF 言語タグ](https://ja.wikipedia.org/wiki/IETF%E8%A8%80%E8%AA%9E%E3%82%BF%E3%82%B0) に従って構成しなければなりません。
-例えば、`en` は英語を意味し、`en-US` はアメリカ合衆国の英語を意味します。
+例えば、`en` は英語を意味しますが、`en-US` はアメリカ合衆国の英語を意味します。
このプロパティに関する詳細は [国際化](tutorial-i18n.md) のセクションで読むことが出来ます。
diff --git a/docs/guide-ja/structure-assets.md b/docs/guide-ja/structure-assets.md
index 4d42f5faf8e..d9ad0a52915 100644
--- a/docs/guide-ja/structure-assets.md
+++ b/docs/guide-ja/structure-assets.md
@@ -208,7 +208,7 @@ class FontAwesomeAsset extends AssetBundle
### Bower と NPM のアセットのインストール
ほとんどの JavaScript/CSS パッケージは、[Bower](https://bower.io/) および/または [NPM](https://www.npmjs.com/) によって管理されています。
-PHP の世界には PHP の依存を管理する Composer がありますが、PHP のパッケージと全く同じように
+PHP の世界には Composer があって、PHP の依存を管理していますが、PHP のパッケージと全く同じように
`composer.json` を使って Bower のパッケージも NPM のパッケージもロードすることが可能です。
このことを達成するために Composer の構成を少し修正しなければなりません。二つの方法があります。
diff --git a/docs/guide-ja/structure-controllers.md b/docs/guide-ja/structure-controllers.md
index a0cac8d8ed7..d67367d42bf 100644
--- a/docs/guide-ja/structure-controllers.md
+++ b/docs/guide-ja/structure-controllers.md
@@ -1,7 +1,7 @@
コントローラ
============
-コントローラは [MVC](https://ja.wikipedia.org/wiki/Model_View_Controller) アーキテクチャの一部を成すものです。
+コントローラは [MVC](https://ja.wikipedia.org/wiki/Model_View_Controller) アーキテクチャの一部を構成するものです。
それは [[yii\base\Controller]] を拡張したクラスのオブジェクトであり、リクエストの処理とレスポンスの生成について責任を負います。
具体的には、コントローラは、[アプリケーション](structure-applications.md) から制御を引き継いだ後、
入ってきたリクエストのデータを分析し、それを [モデル](structure-models.md) に引き渡して、
diff --git a/docs/guide-ja/structure-extensions.md b/docs/guide-ja/structure-extensions.md
index 66f47e30090..f2122ec43e0 100644
--- a/docs/guide-ja/structure-extensions.md
+++ b/docs/guide-ja/structure-extensions.md
@@ -75,7 +75,7 @@ Image::thumbnail('@webroot/img/test-image.jpg', 120, 120)
2. もし有れば、エクステンションによって提供されているクラス・オートローダをインストールする。
3. 指示に従って、依存するエクステンションを全てダウンロードしインストールする。
-エクステンションがクラス・オートローダを持っていなくても、[PSR-4 標準](https://www.php-fig.org/psr/psr-4/) に従っている場合は、Yii によって提供されているクラス・オートローダを使ってエクステンションのクラスをオートロードすることが出来ます。
+エクステンションがクラス・オートローダを持っていなくても、[PSR-4 標準](https://www.php-fig.org/psr/psr-4/) に従っている場合は、Yii が提供しているクラス・オートローダを使ってエクステンションのクラスをオートロードすることが出来ます。
必要なことは、エクステンションのルート・ディレクトリのための [ルート・エイリアス](concept-aliases.md#defining-aliases) を宣言することだけです。
例えば、エクステンションを `vendor/mycompany/myext` というディレクトリにインストールしたと仮定します。
そして、エクステンションのクラスは `myext` 名前空間の下にあるとします。
@@ -184,7 +184,7 @@ Yii のアプリケーションは、このファイルによって、どんな
それぞれの依存パッケージについて、適切なバージョン制約 (例えば `1.*` や `@stable`) を指定することも忘れてはなりません。
あなたのエクステンションを安定バージョンとしてリリースする場合は、安定した依存パッケージを使ってください。
-たいていの JavaScript/CSS パッケージは、Composer ではなく、[Bower](https://bower.io/) および/または [NPM](https://www.npmjs.com/) を使って管理されています。
+たいていの JavaScript/CSS パッケージは、Composer の代りに、[Bower](https://bower.io/) および/または [NPM](https://www.npmjs.com/) を使って管理されています。
Yii は [Composer アセット・プラグイン](https://github.com/fxpio/composer-asset-plugin) を使って、この種のパッケージを Composer によって管理することを可能にしています。
あなたのエクステンションが Bower パッケージに依存している場合でも、次のように、
`composer.json` に依存パッケージをリストアップすることが簡単に出来ます。
diff --git a/docs/guide-ja/structure-filters.md b/docs/guide-ja/structure-filters.md
index dd7e097648f..701765ae8a8 100644
--- a/docs/guide-ja/structure-filters.md
+++ b/docs/guide-ja/structure-filters.md
@@ -142,7 +142,7 @@ public function behaviors()
### 認証メソッド・フィルタ
認証メソッド・フィルタは、[HTTP Basic 認証](https://ja.wikipedia.org/wiki/Basic%E8%AA%8D%E8%A8%BC)、
-[OAuth 2](https://oauth.net/2/) など、様々なメソッドを使ってユーザを認証するために使われるものです。
+[OAuth 2](https://oauth.net/2/) などの様々なメソッドを使ってユーザを認証するために使われるものです。
これらのフィルタ・クラスはすべて `yii\filters\auth` 名前空間の下にあります。
次の例は、[[yii\filters\auth\HttpBasicAuth]] の使い方を示すもので、HTTP Basic 認証に基づくアクセス・トークンを使ってユーザを認証しています。
diff --git a/docs/guide-ja/structure-models.md b/docs/guide-ja/structure-models.md
index dcbc102ead9..80e65d07afa 100644
--- a/docs/guide-ja/structure-models.md
+++ b/docs/guide-ja/structure-models.md
@@ -293,6 +293,8 @@ public function rules()
// "login" シナリオでは、username と password が必須
[['username', 'password'], 'required', 'on' => self::SCENARIO_LOGIN],
+
+ [['username'], 'string'], // username は文字列でなければならない。この規則は全てのシナリオに適用される
];
}
```
diff --git a/docs/guide-ja/test-fixtures.md b/docs/guide-ja/test-fixtures.md
index 953b7974787..9a8bc4ed6d8 100644
--- a/docs/guide-ja/test-fixtures.md
+++ b/docs/guide-ja/test-fixtures.md
@@ -107,8 +107,8 @@ DB と関係しないフィクスチャ (例えば、何らかのファイルや
## フィクスチャを使用する
-[Codeception](https://codeception.com/) を使ってコードをテストしている場合は、フィクスチャのローディングとアクセスについては、
-内蔵されているサポートを使用することが出来ます。
+[Codeception](https://codeception.com/) を使ってコードをテストしている場合は、
+フィクスチャのローディングとアクセスについて、内蔵されているサポートを使用することが出来ます。
その他のテスト・フレームワークを使っている場合は、テスト・ケースで [[yii\test\FixtureTrait]]
を使って同じ目的を達することが出来ます。
diff --git a/docs/guide-ja/test-functional.md b/docs/guide-ja/test-functional.md
index 8a6274e9065..9a08f90653c 100644
--- a/docs/guide-ja/test-functional.md
+++ b/docs/guide-ja/test-functional.md
@@ -9,7 +9,7 @@ POST や GET のパラメータなどの環境変数を設定しておいてか
経験則から言うと、特別なウェブ・サーバ設定や JavaScript による複雑な UI を持たない場合は、
機能テストの方を選ぶべきです。
-機能テストは Codeception フレームワークの助けを借りて実装されています。これにつては、優れたドキュメントがあります。
+機能テストは Codeception フレームワークの助けを借りて実装されています。これについては、優れたドキュメントがあります。
- [Codeception for Yii framework](https://codeception.com/for/yii)
- [Codeception Functional Tests](https://codeception.com/docs/04-FunctionalTests)
diff --git a/docs/guide-ja/test-overview.md b/docs/guide-ja/test-overview.md
index 41b75812154..89f82ce8c25 100644
--- a/docs/guide-ja/test-overview.md
+++ b/docs/guide-ja/test-overview.md
@@ -61,7 +61,7 @@
どんな形式の自動化テストもやりすぎになる、という場合もあるでしょう。
-- プロジェクトは単純で、この先も、複雑になる心配はない。
+- プロジェクトが単純で、この先も、複雑になる心配はない。
- これ以上かかわることはない一度限りのプロジェクトである。
ただ、このような場合であっても、時間に余裕があれば、テストを自動化することは良いことです。
diff --git a/docs/guide-ja/test-unit.md b/docs/guide-ja/test-unit.md
index 77e596b8f84..2f6caca5cb1 100644
--- a/docs/guide-ja/test-unit.md
+++ b/docs/guide-ja/test-unit.md
@@ -9,7 +9,7 @@ Yii における単体テストは、PHPUnit と Codeception (こちらはオプ
- [Codeception for Yii framework](https://codeception.com/for/yii)
- [Codeception Unit Tests](https://codeception.com/docs/05-UnitTests)
-- [PHPUnit のドキュメントの第2章以降](https://phpunit.readthedocs.io/en/9.5/writing-tests-for-phpunit.html).
+- [第2章から始まる PHPUnit のドキュメント](https://phpunit.readthedocs.io/en/9.5/writing-tests-for-phpunit.html)
## ベーシック・テンプレート、アドバンスト・テンプレートのテストを実行する
diff --git a/docs/guide-ja/tutorial-console.md b/docs/guide-ja/tutorial-console.md
index 74c3401412f..1c39707307b 100644
--- a/docs/guide-ja/tutorial-console.md
+++ b/docs/guide-ja/tutorial-console.md
@@ -113,11 +113,11 @@ exit($exitCode);
--------------------------
シェルで作業をしている場合、コマンド引数の自動補完は便利なものです。
-2.0.11 以降、`./yii` コマンドは、内蔵で Bash および ZSH のために補完をサポートしています。
+2.0.11 以降、`./yii` コマンドは、Bash および ZSH のための自動補完を内蔵でサポートしています。
### Bash の補完
-bash completion がインストールされていることを確認して下さい。ほとんどの bash のインストレーションでは、デフォルトで利用可能になっています。
+bash completion がインストールされていることを確認して下さい。ほとんどのインストレーションでは、デフォルトで利用可能になっています。
補完スクリプトを `/etc/bash_completion.d/` に置いて下さい。
diff --git a/docs/guide-ja/tutorial-core-validators.md b/docs/guide-ja/tutorial-core-validators.md
index 8379daf470b..b51a5a7827e 100644
--- a/docs/guide-ja/tutorial-core-validators.md
+++ b/docs/guide-ja/tutorial-core-validators.md
@@ -53,7 +53,7 @@ public function rules()
このバリデータは、通常、[[yii\captcha\CaptchaAction]] および [[yii\captcha\Captcha]] と一緒に使われ、
入力値が [[yii\captcha\Captcha|CAPTCHA]] ウィジェットによって表示された検証コードと同じであることを確認します。
-- `caseSensitive`: 検証コードの比較で大文字と小文字を区別するかどうか。デフォルト値は `false`。
+- `caseSensitive`: 検証コードの比較で大文字と小文字を区別するか否か。デフォルト値は `false`。
- `captchaAction`: CAPTCHA 画像を表示する [[yii\captcha\CaptchaAction|CAPTCHA アクション]] に対応する
[ルート](structure-controllers.md#routes)。デフォルト値は `'site/captcha'`。
- `skipOnEmpty`: 入力値が空のときに検証をスキップできるかどうか。デフォルト値は `false` で、
@@ -113,8 +113,8 @@ compare バリデータは、文字列や数値を比較するためにしか使
['fromDate', 'compare', 'compareAttribute' => 'toDate', 'operator' => '<', 'enableClientValidation' => false],
```
-バリデータは指定された順序に従って実行されますので、まず最初に、`fromDate` と `toDate` に入力された値が有効な日付であることが確認されます。
-そして、有効な日付であった場合は、機械が読める形式に変換されます。
+バリデータは指定された順序に従って実行されますので、まず最初に、`fromDate` と `toDate` に入力された値が
+有効な日付であることが確認され、有効な日付であった場合は、機械が読める形式に変換されます。
その後に、これらの二つの値が compare バリデータによって比較されます。
現在、date バリデータはクライアント・サイドのバリデーションを提供していませんので、これはサーバ・サイドでのみ動作します。
そのため、compare バリデータについても、[[yii\validators\CompareValidator::$enableClientValidation|$enableClientValidation]] は
@@ -289,7 +289,7 @@ function foo($model, $attribute) {
// 以下と同義
['a1', 'exist', 'targetAttribute' => ['a2' => 'a2']],
- // a1 と a2 の両方が存在する必要がある。両者はともにエラー・メッセージを受け取る
+ // a1 と a2 の両方が存在する必要がある。エラーの無い最初の属性がエラー・メッセージを受け取る
// すなわち、a1 = 3, a2 = 4 は、"a1" カラムに 3, "a2" カラムに 4 が存在する場合に有効
[['a1', 'a2'], 'exist', 'targetAttribute' => ['a1', 'a2']],
// 以下と同義
@@ -328,6 +328,8 @@ function foo($model, $attribute) {
このバリデータは、一つまたは複数のカラムに対する検証に使用することが出来ます
(複数のカラムに対する検証の場合は、それらの属性の組み合せが存在しなければならないことを意味します)。
+同時に複数のカラムをチェックして(例えば `['a1', 'a2']`)バリデーションが失敗したときに、`skipOnError` が `true` に設定されている場合は、
+先行するエラーが無い最初の属性だけが新しいエラー・メッセージを受け取ります。
- `targetClass`: 検証される入力値を探すために使用される [アクティブ・レコード](db-active-record.md) クラスの名前。
設定されていない場合は、現在検証されているモデルのクラスが使用されます。
@@ -418,8 +420,8 @@ function foo($model, $attribute) {
- `filter`: フィルタを定義する PHP コールバック。これには、グローバル関数の名前、無名関数などを指定することが出来ます。
関数のシグニチャは ``function ($value) { return $newValue; }` でなければなりません。このプロパティは必須項目です。
- `skipOnArray`: 入力値が配列である場合にフィルタをスキップするか否か。デフォルト値は `false`。
- フィルタが配列の入力を処理できない場合は、このプロパティを `true` に設定しなければなりません。
- そうしないと、何らかの PHP エラーが生じ得ます。
+ フィルタが配列の入力を処理できない場合は、このプロパティを `true` に設定しなければなりません。そうしないと、
+ 何らかの PHP エラーが生じ得ます。
> Tip: 入力値をトリムしたい場合は、[trim](#trim) バリデータを直接使うことが出来ます。
@@ -679,7 +681,7 @@ IPv4 アドレス `192.168.10.128` も、制約の前にリストされている
['a1', 'unique', 'targetAttribute' => 'a1'],
['a1', 'unique', 'targetAttribute' => ['a1' => 'a1']],
- // a1 の入力値が a2 のカラムにおいてユニークである必要がある
+ // a1 の入力値がユニークである必要がある。ただし a2 のカラムが a1 の入力値のユニークネスのチェックに用いられる
// すなわち、a1 = 2 は、"a2" カラムに 2 の値が存在しない場合に有効
['a1', 'unique', 'targetAttribute' => 'a2'],
// 以下と同義
@@ -704,9 +706,10 @@ IPv4 アドレス `192.168.10.128` も、制約の前にリストされている
]
```
-このバリデータは、入力値がテーブルのカラムにおいてユニークであるかどうかをチェックします。
-[アクティブ・レコード](db-active-record.md) モデルの属性に対してのみ働きます。
+このバリデータは、入力値がテーブルのカラムにおいてユニークであるかどうかをチェックします。このバリデータは [アクティブ・レコード](db-active-record.md) モデルの属性に対してのみ働きます。
一つのカラムに対する検証か、複数のカラムに対する検証か、どちらかをサポートします。
+同時に複数のカラムをチェックするバリデーション(例えば上記の `['a1', 'a2']` )が失敗したときに、
+`skipOnError` が `true` に設定されている場合は、先行するエラーが無い最初の属性のみが新しいエラー・メッセージを受け取ります。
- `targetClass`: 検証される入力値を探すために使用される [アクティブ・レコード](db-active-record.md) クラスの名前。
設定されていない場合は、現在検証されているモデルのクラスが使用されます。
diff --git a/docs/guide-ja/tutorial-docker.md b/docs/guide-ja/tutorial-docker.md
index 53864ab6144..d52d1a0793f 100644
--- a/docs/guide-ja/tutorial-docker.md
+++ b/docs/guide-ja/tutorial-docker.md
@@ -24,7 +24,7 @@ CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS
これは Docker デーモンが起動して走っていることを意味します。
-これに加えて `docker-compose version` を実行すると、出力は次のようになるはずです。
+さらに、`docker-compose version` を実行すると、出力は次のようになるはずです。
```
docker-compose version 1.20.0, build unknown
diff --git a/docs/guide-ja/tutorial-i18n.md b/docs/guide-ja/tutorial-i18n.md
index 43a43f14200..50ba4bf163a 100644
--- a/docs/guide-ja/tutorial-i18n.md
+++ b/docs/guide-ja/tutorial-i18n.md
@@ -156,8 +156,8 @@ return [
##### 他のストレージ・タイプ
-翻訳メッセージを格納するのには、PHP ファイル以外に、
-次のメッセージ・ソースを使うことも可能です。
+翻訳メッセージを格納するのには、PHP ファイル以外に、次のメッセージ・ソースを
+使うことも可能です。
- [[yii\i18n\GettextMessageSource]] - 翻訳メッセージを保持するのに GNU Gettext の MO ファイルまたは PO ファイルを使用する
- [[yii\i18n\DbMessageSource]] - 翻訳メッセージを保存するのにデータベース・テーブルを使用する
@@ -743,7 +743,7 @@ class TranslationEventHandler
翻訳は [[yii\i18n\PhpMessageSource|php ファイル]]、[[yii\i18n\GettextMessageSource|.po ファイル]]、または [[yii\i18n\DbMessageSource|database]] に保存することが出来ます。追加のオプションについてはそれぞれのクラスを参照してください。
-まず最初に、構成情報ファイルを作成する必要があります。
+最初に、構成情報ファイルを作成する必要があります。
どこに保存したいかを決めて、次のコマンドを発行してください。
```bash
diff --git a/docs/guide-ja/tutorial-mailing.md b/docs/guide-ja/tutorial-mailing.md
index 5c8e9dd8d4a..1f7ec10f362 100644
--- a/docs/guide-ja/tutorial-mailing.md
+++ b/docs/guide-ja/tutorial-mailing.md
@@ -8,7 +8,7 @@ Yii は電子メールの作成と送信をサポートしています。
実際のメール送信メカニズムはエクステンションによって提供されなければなりません。
と言うのは、メール送信はプロジェクトが異なるごとに異なる実装が必要とされるでしょうし、通常、外部のサービスやライブラリに依存するものだからです。
-ごく一般的な場合であれば、[yii2-swiftmailer](https://www.yiiframework.com/extension/yiisoft/yii2-swiftmailer) 公式エクステンションを使用することが出来ます。
+ごく一般的な場合であれば、yii2-symfonymailer](https://www.yiiframework.com/extension/yiisoft/yii2-symfonymailer) 公式エクステンションを使用することが出来ます。
構成
@@ -22,16 +22,11 @@ return [
//....
'components' => [
'mailer' => [
- 'class' => 'yii\swiftmailer\Mailer',
+ 'class' => 'yii\symfonymailer\Mailer',
'useFileTransport' => false,
'transport' => [
- 'class' => 'Swift_SmtpTransport',
- 'encryption' => 'tls',
- 'host' => 'your_mail_server_host',
- 'port' => 'your_smtp_port',
- 'username' => 'your_username',
- 'password' => 'your_password',
- ],
+ 'dsn' => 'smtp://user:pass@smtp.example.com:465',
+ ],
],
],
];
diff --git a/docs/guide-ja/tutorial-template-engines.md b/docs/guide-ja/tutorial-template-engines.md
index 8791d5bff05..39518d13ad1 100644
--- a/docs/guide-ja/tutorial-template-engines.md
+++ b/docs/guide-ja/tutorial-template-engines.md
@@ -34,8 +34,8 @@
]
```
-上記のコードにおいては、Smarty と Twig の両者がビュー・ファイルによって使用可能なものとして構成されています。
-しかし、これらのエクステンションをプロジェクトで使うためには、`composer.json` ファイルも修正して、これらのエクステンションを含める必要があります。
+上記のコードにおいては、Smarty と Twig の両者がビュー・ファイルによって使用可能なものとして構成されています。しかし、
+これらのエクステンションをプロジェクトで使うためには、`composer.json` ファイルも修正して、これらのエクステンションを含める必要があります。
```
"yiisoft/yii2-smarty": "~2.0.0",
diff --git a/docs/guide-pl/intro-yii.md b/docs/guide-pl/intro-yii.md
index a70e448fcff..b80de97d935 100644
--- a/docs/guide-pl/intro-yii.md
+++ b/docs/guide-pl/intro-yii.md
@@ -52,7 +52,7 @@ Ten przewodnik opisuje wersję 2.0.
Wymagania i zależności
----------------------
-Yii 2.0 wymaga PHP w wersji 5.4.0 lub nowszej i pracuje najwydajniej na najnowszej wersji PHP. Aby otrzymać więcej
+Yii 2.0 wymaga PHP w wersji 7.3.0 lub nowszej i pracuje najwydajniej na najnowszej wersji PHP. Aby otrzymać więcej
informacji na temat wymagań i indywidualnych funkcjonalności, uruchom specjalny skrypt testujący system dołączony w każdym wydaniu Yii.
Używanie Yii wymaga podstawowej wiedzy o programowaniu obiektowym w PHP (OOP), ponieważ Yii
diff --git a/docs/guide-pt-BR/caching-data.md b/docs/guide-pt-BR/caching-data.md
index 3801b355a1e..3ac696c8208 100644
--- a/docs/guide-pt-BR/caching-data.md
+++ b/docs/guide-pt-BR/caching-data.md
@@ -229,6 +229,7 @@ Abaixo um sumário das dependências de cache disponíveis:
- [[yii\caching\DbDependency]]: a dependência muda caso o resultado da consulta especificada pela instrução SQL seja
alterado.
- [[yii\caching\ExpressionDependency]]: a dependência muda se o resultado da expressão PHP especificada for alterado.
+- [[yii\caching\CallbackDependency]]: a dependência é alterada se o resultado do callback PHP especificado for alterado..
- [[yii\caching\FileDependency]]: A dependência muda se a data da última alteração do arquivo for alterada.
- [[yii\caching\TagDependency]]: associa um registro em cache com uma ou múltiplas tags. Você pode invalidar os
registros em cache com a tag especificada ao chamar [[yii\caching\TagDependency::invalidate()]].
@@ -352,4 +353,3 @@ O cache de consulta não funciona com resultados de consulta que contêm mani
Por exemplo, ao usar o tipo de coluna `BLOB` em alguns SGBDs, o resultado da consulta retornará um manipulador de recurso (resource handler) para o registro na coluna.
Alguns armazenamentos em cache têm limitações de tamanho. Por exemplo, memcache limita o uso máximo de espaço de 1MB para cada registro. Então, se o tamanho do resultado de uma consulta exceder este limite, o cache falhará.
-
diff --git a/docs/guide-pt-BR/intro-yii.md b/docs/guide-pt-BR/intro-yii.md
index 5ba072351c9..bc2126c75fd 100644
--- a/docs/guide-pt-BR/intro-yii.md
+++ b/docs/guide-pt-BR/intro-yii.md
@@ -59,7 +59,7 @@ desenvolvimento nos próximos anos. Este guia trata principalmente da versão 2.
Requisitos e Pré-requisitos
---------------------------
-Yii 2.0 requer PHP 5.4.0 ou superior. Você pode encontrar requisitos mais
+Yii 2.0 requer PHP 7.3.0 ou superior. Você pode encontrar requisitos mais
detalhados para recursos específicos executando o verificador de requisitos
(requirement checker) incluído em cada lançamento do Yii.
diff --git a/docs/guide-pt-BR/start-installation.md b/docs/guide-pt-BR/start-installation.md
index a5228fb9b6d..1fcc2d07c4b 100644
--- a/docs/guide-pt-BR/start-installation.md
+++ b/docs/guide-pt-BR/start-installation.md
@@ -49,7 +49,7 @@ Você pode atualizar o Composer executando o comando `composer self-update`.
> A quantidade de solicitações depende do número de dependências que sua aplicação possui e pode extrapolar a
> **taxa limite da API do Github**. Se você atingir esse limite, o Composer pode pedir a você suas credenciais de login para obter um
> token de acesso à API Github. Em conexões rápidas você pode atingir esse limite antes que o Composer consiga lidar com a situação, então, recomendamos
-> configurar um toke de acesso antes de instalar o Yii.
+> configurar um token de acesso antes de instalar o Yii.
> Por favor, consulte a [documentação do Composer sobre tokens da API Github](https://getcomposer.org/doc/articles/troubleshooting.md#api-rate-limit-and-oauth-tokens)
> para instruções de como fazer isso.
diff --git a/docs/guide-ru/caching-data.md b/docs/guide-ru/caching-data.md
index 7b1a3052e29..d68bbfdb178 100644
--- a/docs/guide-ru/caching-data.md
+++ b/docs/guide-ru/caching-data.md
@@ -221,6 +221,7 @@ $data = $cache->get($key);
- [[yii\caching\ChainedDependency]]: зависимость меняется, если любая зависимость в цепочке изменяется;
- [[yii\caching\DbDependency]]: зависимость меняется, если результат некоторого определенного SQL запроса изменён;
- [[yii\caching\ExpressionDependency]]: зависимость меняется, если результат определенного PHP выражения изменён;
+- [[yii\caching\CallbackDependency]]: зависимость меняется, если результат коллбэк функции изменён;
- [[yii\caching\FileDependency]]: зависимость меняется, если изменилось время последней модификации файла;
- [[yii\caching\TagDependency]]: Связывает кэшированные данные элемента с одним или несколькими тегами. Вы можете аннулировать кэширование данных элементов с заданным тегом(тегами) по вызову. [[yii\caching\TagDependency::invalidate()]];
diff --git a/docs/guide-ru/concept-di-container.md b/docs/guide-ru/concept-di-container.md
index 80c2c723d86..2812d4bd8fc 100644
--- a/docs/guide-ru/concept-di-container.md
+++ b/docs/guide-ru/concept-di-container.md
@@ -498,7 +498,7 @@ class HotelController extends Controller
как можно раньше. Ниже приведены рекомендуемые практики:
* Если вы разработчик приложения, то вы можете зарегистрировать зависимости в конфигурации вашего приложения.
- Как это сделать описано в подразделе [Конфигурация приложения](concept-service-locator.md#application-configurations)
+ Как это сделать описано в подразделе [Конфигурация приложения](concept-configurations.md#application-configurations)
раздела [Конфигурации](concept-configurations.md).
* Если вы разработчик распространяемого [расширения](structure-extensions.md), то вы можете зарегистрировать зависимости
в загрузочном классе расширения.
diff --git a/docs/guide-ru/intro-yii.md b/docs/guide-ru/intro-yii.md
index 353ecaeac05..4ec5d66b1c4 100644
--- a/docs/guide-ru/intro-yii.md
+++ b/docs/guide-ru/intro-yii.md
@@ -42,7 +42,7 @@ Yii — не проект одного человека. Он поддержив
Требования к ПО и знаниям
-------------------------
-Yii 2.0 требует PHP 5.4.0 и выше и наилучшим образом работает на последней версии PHP. Чтобы узнать требования для отдельных возможностей, вы можете запустить скрипт проверки
+Yii 2.0 требует PHP 7.3.0 и выше и наилучшим образом работает на последней версии PHP. Чтобы узнать требования для отдельных возможностей, вы можете запустить скрипт проверки
требований, который поставляется с каждым релизом фреймворка.
Для разработки на Yii потребуется общее понимание ООП, так как фреймворк полностью следует этой парадигме. Также стоит
diff --git a/docs/guide-ru/runtime-logging.md b/docs/guide-ru/runtime-logging.md
index cc42a8c1872..2f45900e2ca 100644
--- a/docs/guide-ru/runtime-logging.md
+++ b/docs/guide-ru/runtime-logging.md
@@ -146,7 +146,7 @@ return [
Временная метка [IP-адрес][ID пользователя][ID сессии][Уровень важности][Категория] Текст сообщения
```
-Этот формат может быть изменен при помощи свойства [[yii\log\Target::prefix]], которое получает анонимную функцию, возвращающую нужный префикс сообщения. Например, следующий код позволяет настроить вывод идентификатор текущего пользователя в качестве префикса для всех сообщений.
+Этот формат может быть изменен при помощи свойства [[yii\log\Target::prefix]], которое получает анонимную функцию, возвращающую нужный префикс сообщения. Например, следующий код позволяет настроить вывод идентификатора текущего пользователя в качестве префикса для всех сообщений.
```php
[
diff --git a/docs/guide-ru/structure-controllers.md b/docs/guide-ru/structure-controllers.md
index c55a8cf1517..5765f26c16a 100644
--- a/docs/guide-ru/structure-controllers.md
+++ b/docs/guide-ru/structure-controllers.md
@@ -310,7 +310,7 @@ class HelloWorldAction extends Action
[[yii\console\Response::exitStatus|статус выхода]] исполнения команды.
В вышеприведенных примерах, все результаты действий являются строками, которые будут использованы в качестве тела ответа,
-высланного пользователю. Следующий пример, показывает действие может перенаправить браузер пользователя на новый URL, с помощью
+высланного пользователю. Следующий пример, показывает как действие может перенаправить браузер пользователя на новый URL, с помощью
возврата response объекта (т. к. [[yii\web\Controller::redirect()|redirect()]] метод возвращает response объект):
```php
diff --git a/docs/guide-tr/intro-yii.md b/docs/guide-tr/intro-yii.md
index 069f690f91d..f05107f19ee 100644
--- a/docs/guide-tr/intro-yii.md
+++ b/docs/guide-tr/intro-yii.md
@@ -32,6 +32,6 @@ Bu kılavuz esas olarak sürüm 2.0 ile ilgilidir.
Gereksinimler ve Önkoşullar
------------------------------
-Yii 2.0, PHP 5.4.0 veya üstü sürüm gerektirir ve PHP 'nin en son sürümü ile en iyi şekilde çalışır. Her bir Yii sürümünde yer alan gereksinim denetleyicisini çalıştırarak, daha ayrıntılı gereksinimleri ayrı ayrı özellikler için bulabilirsiniz.
+Yii 2.0, PHP 7.3.0 veya üstü sürüm gerektirir ve PHP 'nin en son sürümü ile en iyi şekilde çalışır. Her bir Yii sürümünde yer alan gereksinim denetleyicisini çalıştırarak, daha ayrıntılı gereksinimleri ayrı ayrı özellikler için bulabilirsiniz.
Yii OOP temelli bir kütüphane olduğu için Yii'yi kullanmak, nesne yönelimli programlama (OOP) hakkında temel bilgi gerektirir. Yii 2.0 ayrıca PHP'nin [namespaceler](https://www.php.net/manual/en/language.namespaces.php) ve [traitler](https://www.php.net/manual/en/language.oop5.traits.php) gibi son özelliklerinden de yararlanır. Bu kavramları anlamak, Yii 2.0'ı daha kolay anlamanıza yardımcı olacaktır.
diff --git a/docs/guide-uk/intro-yii.md b/docs/guide-uk/intro-yii.md
index 93b0efb9998..cca32875a54 100644
--- a/docs/guide-uk/intro-yii.md
+++ b/docs/guide-uk/intro-yii.md
@@ -46,7 +46,7 @@ Yii — не проект однієї людини. Він підтримуєт
Вимоги до ПЗ і знань
--------------------
-Yii 2.0 потребує PHP 5.4.0 та вище. Щоб дізнатися вимоги для окремих можливостей ви можете запустити скрипт перевірки вимог,
+Yii 2.0 потребує PHP 7.3.0 та вище. Щоб дізнатися вимоги для окремих можливостей ви можете запустити скрипт перевірки вимог,
який поставляється із кожним релізом фреймворку.
Для розробки на Yii необхідне загальне розуміння ООП, оскільки фреймворк повністю слідує цій парадигмі.
diff --git a/docs/guide-uz/intro-yii.md b/docs/guide-uz/intro-yii.md
index 4e9f1d6de52..be66bdc7cde 100644
--- a/docs/guide-uz/intro-yii.md
+++ b/docs/guide-uz/intro-yii.md
@@ -32,6 +32,6 @@ Ayni vaqtda Yii ning ikkita yo'nalishi mavjud: 1.1 va 2.0. 1.1 yo'nalishi avvalg
DT va bilimlarga talablar
-------------------------
-Yii 2.0 PHP 5.4.0 va undan yuqorisini talab qiladi. Boshqa imkoniyatlar uchun talablarni bilish uchun har bir alohida yo'lga qo'yilgan freymvork bilan birga mos o'rnatilgan talablar tekshiruv skriptini ishga tushirishingiz mumkin.
+Yii 2.0 PHP 7.3.0 va undan yuqorisini talab qiladi. Boshqa imkoniyatlar uchun talablarni bilish uchun har bir alohida yo'lga qo'yilgan freymvork bilan birga mos o'rnatilgan talablar tekshiruv skriptini ishga tushirishingiz mumkin.
Freymvork to'liq obektga mo'ljallangan dasturlashga (OMD) asoslanganligi bois Yii da ishlash uchun OMD ni umumiy tushunish talab etiladi. Shuningdek, PHP ning zamonaviy imkoniyatlari bo'lmish [nomlar soxasi](https://www.php.net/manual/ru/language.namespaces.php) va [treytlar](https://www.php.net/manual/ru/language.oop5.traits.php) ni o'rganish talab etiladi.
diff --git a/docs/guide-vi/intro-yii.md b/docs/guide-vi/intro-yii.md
index 6548c58ed28..f7e51d52113 100644
--- a/docs/guide-vi/intro-yii.md
+++ b/docs/guide-vi/intro-yii.md
@@ -47,7 +47,7 @@ Hướng dẫn này chủ yếu là về phiên bản 2.0.
Yêu cầu hệ thống và các điều kiện cần thiết
------------------------------
-Yii 2.0 đòi hỏi phiên bản PHP 5.4.0 hoặc cao hơn. Bạn có thể chạy bất kỳ gói Yii đi kèm với các yêu cầu hệ thống.
+Yii 2.0 đòi hỏi phiên bản PHP 7.3.0 hoặc cao hơn. Bạn có thể chạy bất kỳ gói Yii đi kèm với các yêu cầu hệ thống.
kiểm tra xem những gì các đặc điểm cụ thể của từng cấu hình PHP.
Để tìm hiểu Yii, bạn cần có kiến thức cơ bản về lập trình hướng đối tượng (OOP), vì Yii là một framework hướng đối tượng
diff --git a/docs/guide-zh-CN/caching-data.md b/docs/guide-zh-CN/caching-data.md
index 046c85f4124..2fd3e3cfa51 100644
--- a/docs/guide-zh-CN/caching-data.md
+++ b/docs/guide-zh-CN/caching-data.md
@@ -275,6 +275,7 @@ $data = $cache->get($key);
- [[yii\caching\ChainedDependency]]:如果依赖链上任何一个依赖产生变化,则依赖改变。
- [[yii\caching\DbDependency]]:如果指定 SQL 语句的查询结果发生了变化,则依赖改变。
- [[yii\caching\ExpressionDependency]]:如果指定的 PHP 表达式执行结果发生变化,则依赖改变。
+- [[yii\caching\CallbackDependency]]:如果指定的PHP回调结果发生变化,依赖性将改变。
- [[yii\caching\FileDependency]]:如果文件的最后修改时间发生变化,则依赖改变。
- [[yii\caching\TagDependency]]:将缓存的数据项与一个或多个标签相关联。 您可以通过调用
[[yii\caching\TagDependency::invalidate()]] 来检查指定标签的缓存数据项是否有效。
@@ -431,4 +432,3 @@ $result = $db->cache(function ($db) {
> Info: 默认情况下,控制台应用使用独立的配置文件。
所以,为了上述命令发挥作用,请确保 Web 应用和控制台应用配置相同的缓存组件。
-
diff --git a/docs/guide-zh-CN/intro-yii.md b/docs/guide-zh-CN/intro-yii.md
index d03e5ad9a14..af91110c2e3 100644
--- a/docs/guide-zh-CN/intro-yii.md
+++ b/docs/guide-zh-CN/intro-yii.md
@@ -50,7 +50,7 @@ Yii 当前有两个主要版本:1.1 和 2.0。 1.1 版是上代的老版本,
系统要求和先决条件
------------------------------
-Yii 2.0 需要 PHP 5.4.0 或以上版本支持。你可以通过运行任何
+Yii 2.0 需要 PHP 7.3.0 或以上版本支持。你可以通过运行任何
Yii 发行包中附带的系统要求检查器查看每个具体特性所需的 PHP 配置。
使用 Yii 需要对面向对象编程(OOP)有基本了解,因为 Yii 是一个纯面向对象的框架。Yii 2.0 还使用了 PHP 的最新特性,
diff --git a/docs/guide/caching-data.md b/docs/guide/caching-data.md
index 1c712e801d0..2666e544d4f 100644
--- a/docs/guide/caching-data.md
+++ b/docs/guide/caching-data.md
@@ -277,6 +277,7 @@ Below is a summary of the available cache dependencies:
- [[yii\caching\ChainedDependency]]: the dependency is changed if any of the dependencies on the chain is changed.
- [[yii\caching\DbDependency]]: the dependency is changed if the query result of the specified SQL statement is changed.
- [[yii\caching\ExpressionDependency]]: the dependency is changed if the result of the specified PHP expression is changed.
+- [[yii\caching\CallbackDependency]]: the dependency is changed if the result of the specified PHP callback is changed.
- [[yii\caching\FileDependency]]: the dependency is changed if the file's last modification time is changed.
- [[yii\caching\TagDependency]]: associates a cached data item with one or multiple tags. You may invalidate
the cached data items with the specified tag(s) by calling [[yii\caching\TagDependency::invalidate()]].
@@ -433,4 +434,3 @@ You can flush the cache from the console by calling `yii cache/flush` as well.
> Info: Console application uses a separate configuration file by default. Ensure, that you have the same caching
components in your web and console application configs to reach the proper effect.
-
diff --git a/docs/guide/db-active-record.md b/docs/guide/db-active-record.md
index e87727469bb..e77317214e5 100644
--- a/docs/guide/db-active-record.md
+++ b/docs/guide/db-active-record.md
@@ -650,6 +650,17 @@ life cycle will happen:
> - [[yii\db\ActiveRecord::updateCounters()]]
> - [[yii\db\ActiveRecord::updateAllCounters()]]
+> Note: DI is not supported by default due to performance concerns. You can add support if needed by overriding
+> the [[yii\db\ActiveRecord::instantiate()|instantiate()]] method to instantiate the class via [[Yii::createObject()]]:
+>
+> ```php
+> public static function instantiate($row)
+> {
+> return Yii::createObject(static::class);
+> }
+> ```
+
+
### Refreshing Data Life Cycle
When calling [[yii\db\ActiveRecord::refresh()|refresh()]] to refresh an Active Record instance, the
diff --git a/docs/guide/input-tabular-input.md b/docs/guide/input-tabular-input.md
index 44c9ffea1d5..f5aa95b57af 100644
--- a/docs/guide/input-tabular-input.md
+++ b/docs/guide/input-tabular-input.md
@@ -1,4 +1,4 @@
-Collecting tabular input
+Collecting Tabular Input
========================
Sometimes you need to handle multiple models of the same kind in a single form. For example, multiple settings, where
diff --git a/docs/guide/intro-yii.md b/docs/guide/intro-yii.md
index ea493cf2b8d..17a3242663f 100644
--- a/docs/guide/intro-yii.md
+++ b/docs/guide/intro-yii.md
@@ -50,7 +50,7 @@ This guide is mainly about version 2.0.
Requirements and Prerequisites
------------------------------
-Yii 2.0 requires PHP 5.4.0 or above and runs best with the latest version of PHP. You can find more detailed
+Yii 2.0 requires PHP 7.3.0 or above and runs best with the latest version of PHP. You can find more detailed
requirements for individual features by running the requirement checker included in every Yii release.
Using Yii requires basic knowledge of object-oriented programming (OOP), as Yii is a pure OOP-based framework.
diff --git a/docs/internals-fa/core-code-style.md b/docs/internals-fa/core-code-style.md
index e63e2b77951..3becc5802b1 100644
--- a/docs/internals-fa/core-code-style.md
+++ b/docs/internals-fa/core-code-style.md
@@ -1,49 +1,52 @@
رعایت اصول و سبک کدنویسی فریمورک Yii2
===============================
-
-سبک کدنویسی که در نسخه 2 فریمورک و extension های رسمی استفاده میشه دارای اصول، قواعد و قانون های خودش هست. پس اگر تصمیم دارید چیزی به هسته اضافه کنید باید این قواعد رو در نظر بگیرید حتی در غیر این صورت هم رعایت این موارد خالی از لطف نیست و توصیه میکنم این کارُ انجام بدین. در حالی که میتونید راحت باشید، شما مجبور به رعایت این سبک در application خودتون نیستید...
+
+سبک کدنویسی که در نسخه 2 فریمورک و extension های رسمی استفاده میشه دارای اصول، قواعد و قانون های خودش هست. پس اگر تصمیم دارید چیزی به هسته اضافه کنید باید این قواعد رو در نظر بگیرید حتی در غیر این صورت هم رعایت این موارد خالی از لطف نیست و توصیه میکنم این کارو انجام بدین.
+
+البته که نیاز نیست حتما این موارد رو در برنامههای خودتون رعایت کنید و می تونید در این مورد راحت باشید...
-
-میتونید برای دریافت پیکره بندی CodeSniffer اینجا رو مطالعه کنید: https://github.com/yiisoft/yii2-coding-standards
+
+میتونید برای دریافت پیکربندی CodeSniffer اینجا رو مطالعه کنید: https://github.com/yiisoft/yii2-coding-standards
## 1. نگاه کلی
-
-به طور کلی ما از سبک PSR-2 استفاده میکنیم و هر چیزی که در این سبک وجود داره اینجا هم هست.
-(https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-2-coding-style-guide.md)
-
-
در فایل ها باید از برچسب های php?> و =?> استفاده شود.
-
در پایان هر فایل باید یک خط جدید(newline) داشته باشید.
-
encoding فایل برای کد های php باید UTF-8 without BOM باشد.
-
به جای tab از 4 فضای خالی(space) استفاده کنید.
-
نام کلاس ها باید به صورت StudlyCaps تعریف شوند.
-
ثابت های داخل کلاس تماما باید با حروف بزرگ و گاهی با جداکننده "_" تعریف شوند.
-
نام متد ها و پراپرتی ها باید به صورت camelCase تعریف شوند.
-
پراپرتی های خصوصی(private) باید با "_" شروع شوند.
-
همیشه از elseif جای else if استفاده کنید.
-
-## 2. فایل ها
-
-
در فایل ها باید از برچسب های php?> و =?> استفاده کرد نه از ?> .
-
در انتهای فایل های php نباید از تگ استفاده کنید.
-
در انتهای هر خط نباید space وجود داشته باشد
-
پسوند فایل هایی که شامل کد php هستند باید php. باشد.
-
encoding فایل برای کد های php باید UTF-8 without BOM باشد.
-
-
-## 3. نام کلاس ها
-
-نام کلاس ها باید به صورت StudlyCaps تعریف شوند. به عنوان مثال, `Controller`, `Model`.
-
-## 4. کلاس ها
-
-
نام کلاس ها باید به صورت CamelCase تعریف شوند.
-
آکولاد باز باید در خط بعدی، زیر نام کلاس نوشته شود.
-
تمام کلاس ها باید بلاک مستندات مطابق استاندارد PHPDoc داشته باشند.
-
برای تمام کد های داخل کلاس باید با 4 space فاصله ایجاد کنید.
-
فقط یک کلاس داخل هر فایل php باید موجود باشد.
-
تمام کلاس ها باید namespaced داشته باشند.
-
نام کلاس باید معال نام فایل و namespace باید مطابق مسیر آن باشد.
+
+به طور کلی ما از سبک کدنویسی PSR-2 پیروی میکنیم:
+
+https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-2-coding-style-guide.md
+
+
در فایلها باید از برچسبهای php?> و =?> استفاده شود.
+
در پایان هر فایل باید یک خط جدید (newline) داشته باشید.
+
encoding فایل برای کدهای php باید UTF-8 without BOM باشد.
+
به جای tab از 4 فضای خالی (space) استفاده کنید.
+
نام کلاسها باید به صورت StudlyCaps تعریف شوند.
+
ثابتهای داخل کلاس تماما باید با حروف بزرگ و گاهی با جداکننده "_" تعریف شوند.
+
نام متدها و پراپرتیها باید به صورت camelCase تعریف شوند.
+
پراپرتیهای خصوصی (private) باید با "_" شروع شوند.
+
همیشه از elseif جای else if استفاده کنید.
+
+## 2. فایلها
+
+
در فایلها باید از برچسب های php?> و =?> استفاده کرد نه از ?> .
+
در انتهای فایلهای php نباید از تگ ?> استفاده کنید.
+
در انتهای هر خط نباید space وجود داشته باشد.
+
پسوند فایلهایی که شامل کد php هستند باید php. باشد.
+
encoding فایل برای کدهای php باید UTF-8 without BOM باشد.
+
+
+## 3. نام کلاسها
+
+نام کلاسها باید به صورت StudlyCaps تعریف شوند. به عنوان مثال، `Controller` و `Model`.
+
+## 4. کلاسها
+
+
نام کلاسها باید به صورت CamelCase تعریف شوند.
+
آکولاد باز باید در خط بعدی، زیر نام کلاس نوشته شود.
+
تمام کلاسها باید بلاک مستندات مطابق استاندارد PHPDoc داشته باشند.
+
برای تمام کدهای داخل کلاس باید با 4 space فاصله ایجاد کنید.
+
فقط یک کلاس داخل هر فایل php باید موجود باشد.
+
تمام کلاسها باید namespaced داشته باشند.
+
نام کلاس باید معادل نام فایل و namespace باید مطابق مسیر آن باشد.
```php
/**
@@ -55,9 +58,9 @@ class MyClass extends \yii\base\BaseObject implements MyInterface
}
```
-### 4.1. ثابت ها
-
-ثابت های داخل کلاس تماما باید با حروف بزرگ و گاهی با جداکننده "_" تعریف شوند.
+### 4.1. ثابتها
+
+ثابتهای داخل کلاس تماما باید با حروف بزرگ و گاهی با جداکننده "_" تعریف شوند.
```php
از کلید واژه های public، protected و private استفاده کنید.
-
پراپرتی های public و protected باید در بالای کلاس و قبل از متد ها تعریف شوند. private هم همینطور اما ممکن هست کاهی قبل از متدی که با آن مرتبط هست آورده شود.
-
ترتیب تعریف پراپرتی ها باید به صورت اول public، دوم protected و سپس private باشد! هیچ قانون سختی برای رعایت این مورد نیست...
-
برای خوانایی بهتر میتونید از خط خالی بین گروه های public، protected و private استفاده کنید.
-
متغییر های private باید مثل varName_$ باشند.
-
اعضای عمومی داخل کلاس باید به صورت camelCase تعریف شوند.(حرف اول کوچک، با CamelCase فرق میکنه).
-
بهتره از نام هایی مثل i$ و j$ استفاده نکنید.
+
از کلید واژه های public ،protected و private استفاده کنید.
+
پراپرتیهای public و protected باید در بالای کلاس و قبل از متدها تعریف شوند. private هم همینطور اما ممکن هست گاهی قبل از متدی که با آن مرتبط هست آورده شود.
+
ترتیب تعریف پراپرتیها باید به صورت اول public، دوم protected و سپس private باشد! کار بسیار سادهایست :)
+
برای خوانایی بهتر میتونید از خط خالی بین گروههای public، protected و private استفاده کنید.
+
متغیر های private باید مثل varName_$ باشند.
+
اعضای عمومی داخل کلاس باید به صورت camelCase تعریف شوند. (حرف اول کوچک، با CamelCase فرق میکنه)
+
بهتره از نامهایی مثل i$ و j$ استفاده نکنید.
```php
توابع و متد ها باید camelCase باشند.
-
نام باید هدف رو نشون بده.
-
از کلید واژه های public، protected و private استفاده کنید.
-
آکولاد باز باید در خط بعدی یعنی زیر نام متد قرار بگیره.
+
توابع و متدها باید camelCase باشند.
+
نام باید هدف رو نشون بده.
+
از کلید واژه های public، protected و private استفاده کنید.
+
آکولاد باز باید در خط بعدی یعنی زیر نام متد قرار بگیره.
[phpDoc](https://phpdoc.org/) رو بخونید و موارد اونُ رعایت کنید.
-
کد بدون مستندات مجاز نیست.
-
تمام کلاس ها باید شامل بلاک مستندات در ابتدای فایل باشند.
-
نیازی به نوشتن return@ ندارید اگر متد شما اگر چیزی را برنمیگرداند.
-
به مثال های زیر توجه کنید:
+
https://phpdoc.org رو بخونید و موارد اون رو رعایت کنید.
+
کد بدون مستندات مجاز نیست.
+
تمام کلاسها باید شامل بلاک مستندات در ابتدای فایل باشند.
+
نیازی به نوشتن return@ ندارید اگر متد شما چیزی برنمیگرداند.
+
به مثالهای زیر توجه کنید:
```php
getEventHandlers($eventName)->insertAt(0, $eventHandler);
- * ```
- *
- * @param string $name the event name
- * @return Vector list of attached event handlers for the event
- * @throws Exception if the event is not defined
- */
-public function getEventHandlers($name)
-{
- if (!isset($this->_e[$name])) {
- $this->_e[$name] = new Vector;
- }
- $this->ensureBehaviors();
- return $this->_e[$name];
-}
+* $component->getEventHandlers($eventName)->insertAt(0, $eventHandler);
+* ```
+*
+* @param string $name the event name
+* @return Vector list of attached event handlers for the event
+* @throws Exception if the event is not defined
+ */
+ public function getEventHandlers($name)
+ {
+ if (!isset($this->_e[$name])) {
+ $this->_e[$name] = new Vector;
+ }
+ $this->ensureBehaviors();
+ return $this->_e[$name];
+ }
```
#### نظرات
-
از // برای کامنت گذاری استفاده کنید نه از #.
-
در خطوطی که کامنت گذاشتین نباید کد بنویسید، یعنی اون خط برای اون کامنت باید باشه.
+
از // برای کامنت گذاری استفاده کنید نه از #.
+
در خطوطی که کامنت گذاشتین نباید کد بنویسید، یعنی اون خط برای اون کامنت باید باشه.
قوانین بیشتر
----------------
-
تا جایی که میتونید از تابع empty به جای === استفاده کنید.
-
اگر شرایط تو در تویی در کد شما وجود نداره return زود هنگام یا ساده تر بگم return وسط متد مشکلی نخواهد داشت.
-
همیشه از static جای self به جز موارد زیر استفاده کنید:
-
1) دسترسی به ثابت ها باید با self انجام بشه.
-
2) دسترسی به پراپرتی های خصوصی باید با self انجام بشه.
-
3) مجاز به استفاده از self برای صدا زدن توابع در مواقعی مثل فراخوانی بازگشتی هستید.
+
تا جایی که میتونید از تابع empty به جای === استفاده کنید.
+
اگر شرایط تو در تویی در کد شما وجود نداره return زود هنگام یا ساده تر بگم return وسط متد مشکلی نخواهد داشت.
+
همیشه از static جای self به جز موارد زیر استفاده کنید:
+
1) دسترسی به ثابتها باید با self انجام بشه.
+
2) دسترسی به پراپرتیهای خصوصی باید با self انجام بشه.
+
3) مجاز به استفاده از self برای صدا زدن توابع در مواقعی مثل فراخوانی بازگشتی هستید.
-namespace ها
+نیماسپیسها
----------------
-
از حرف کوچک استفاده کنید.
-
از فرم جمع اسم ها برای نشان دادن یک شی استفاده کنید مثل validators.
-
از فرم منفرد اسم ها برای قابلیت ها و امکانات استفاده کنید مثل web.
-
بهتره فضای نام تک کلمه ای باشه در غیر این صورت از camelCase استفاده کنید.
-
+
از حرف کوچک استفاده کنید.
+
از فرم جمع اسمها برای نشان دادن یک شی استفاده کنید مثل validators.
+
از فرم مفرد اسمها برای قابلیتها و امکانات استفاده کنید مثل web.
+
بهتره فضای نام تککلمهای باشه در غیر این صورت از camelCase استفاده کنید.
diff --git a/docs/internals/git-workflow.md b/docs/internals/git-workflow.md
index 11e8a499a6c..b3ede5011a0 100644
--- a/docs/internals/git-workflow.md
+++ b/docs/internals/git-workflow.md
@@ -111,7 +111,7 @@ review your suggestion, and provide appropriate feedback along the way.
### 2. Pull the latest code from the main Yii branch
```
-git pull upstream
+git pull upstream master
```
You should start at this point for every new contribution to make sure you are working on the latest code.
diff --git a/framework/BaseYii.php b/framework/BaseYii.php
index 496f6aa121a..ff716b4d349 100644
--- a/framework/BaseYii.php
+++ b/framework/BaseYii.php
@@ -1,4 +1,5 @@
'' . \Yii::t('yii',
- 'Yii Framework') . '',
+ 'yii' => '' . \Yii::t('yii', 'Yii Framework') . '',
]);
}
diff --git a/framework/CHANGELOG.md b/framework/CHANGELOG.md
index 0158d4bab33..302698ff536 100644
--- a/framework/CHANGELOG.md
+++ b/framework/CHANGELOG.md
@@ -4,12 +4,46 @@ Yii Framework 2 Change Log
2.0.50 under development
------------------------
+- Bug #17181: Improved `BaseUrl::isRelative($url)` performance (sammousa, bizley, rob006)
+- Bug #17191: Fixed `BaseUrl::isRelative($url)` method in `yii\helpers\BaseUrl` (ggh2e3)
+- Bug #18469: Fixed `Link::serialize(array $links)` method in `yii\web\Link` (ggh2e3)
+- Bug #19691: Allow using custom class to style error summary (skepticspriggan)
+- Bug #20040: Fix type `boolean` in `MSSQL` (terabytesoftw)
+- Bug #20055: Fix Response header X-Pagination-Total-Count is always 0 (lav45, xicond)
+- Bug #20005: Fix `yii\console\controllers\ServeController` to specify the router script (terabytesoftw)
+- Bug #19060: Fix `yii\widgets\Menu` bug when using Closure for active item and adding additional tests in `tests\framework\widgets\MenuTest` (atrandafir)
+- Bug #13920: Fixed erroneous validation for specific cases (tim-fischer-maschinensucher)
+- Bug #19927: Fixed `console\controllers\MessageController` when saving translations to database: fixed FK error when adding new string and language at the same time, checking/regenerating all missing messages and dropping messages for unused languages (atrandafir)
+- Bug #20002: Fixed superfluous query on HEAD request in serializer (xicond)
+- Bug #20122: Fixed parsing of boolean keywords (e.g. used in SQLite) in `\yii\db\ColumnSchema::typecast()` (rhertogh)
+- Enh #12743: Added new methods `BaseActiveRecord::loadRelations()` and `BaseActiveRecord::loadRelationsFor()` to eager load related models for existing primary model instances (PowerGamer1)
+- Enh #20030: Improve performance of handling `ErrorHandler::$memoryReserveSize` (antonshevelev, rob006)
+- Enh #20042: Add empty array check to `ActiveQueryTrait::findWith()` (renkas)
+- Enh #20032: Added `yii\helpers\BaseStringHelper::mask()` method for string masking with multibyte support (salehhashemi1992)
+- Enh #20034: Added `yii\helpers\BaseStringHelper::findBetween()` to retrieve a substring that lies between two strings (salehhashemi1992)
+- Bug #20083: Fix deprecated warning implicit conversion from float (skepticspriggan)
+- Enh #20087: Add custom attributes to script tags (skepticspriggan)
+- Enh #20121: Added `yiisoft/yii2-coding-standards` to composer `require-dev` and lint code to comply with PSR12 (razvanphp)
+- New #20137: Added `yii\caching\CallbackDependency` to allow using a callback to determine if a cache dependency is still valid (laxity7)
+- Enh #20134: Raise minimum `PHP` version to `7.3` (@terabytesoftw)
+- Bug #20141: Update `ezyang/htmlpurifier` dependency to version `4.17` (@terabytesoftw)
+
+2.0.49.2 October 12, 2023
+-------------------------
+
- Bug #19925: Improved PHP version check when handling MIME types (schmunk42)
+
+
+2.0.49.1 October 05, 2023
+-------------------------
+
- Bug #19940: File Log writer without newline (terabytesoftw)
-- Bug #19951: Removed unneeded MIME file tests (schmunk42)
- Bug #19950: Fix `Query::groupBy(null)` causes error for PHP 8.1: `trim(): Passing null to parameter #1 ($string) of type string is deprecated` (uaoleg)
+- Bug #19951: Removed unneeded MIME file tests (schmunk42)
+- Bug #19984: Do not duplicate log messages in memory (lubosdz)
- Enh #19780: added pcntl to requirements check (schmunk42)
+
2.0.49 August 29, 2023
----------------------
diff --git a/framework/Yii.php b/framework/Yii.php
index d02b95a231a..ee9a1b5dc69 100644
--- a/framework/Yii.php
+++ b/framework/Yii.php
@@ -1,4 +1,5 @@
* @since 2.0
+ * @phpcs:disable PSR1.Files.SideEffects.FoundWithSymbols
+ * @phpcs:disable PSR1.Classes.ClassDeclaration.MissingNamespace
*/
class Yii extends \yii\BaseYii
{
diff --git a/framework/assets/yii.activeForm.js b/framework/assets/yii.activeForm.js
index b12f812c37d..045cfebcaa1 100644
--- a/framework/assets/yii.activeForm.js
+++ b/framework/assets/yii.activeForm.js
@@ -330,7 +330,7 @@
this.$form = $form;
var $input = findInput($form, this);
- var disabled = $input.toArray().reduce(function(result, next) {
+ var disabled = $input.toArray().reduce(function (result, next) {
return result && $(next).is(':disabled');
}, true);
if (disabled) {
@@ -395,9 +395,11 @@
data: $form.serialize() + extData,
dataType: data.settings.ajaxDataType,
complete: function (jqXHR, textStatus) {
+ currentAjaxRequest = null;
$form.trigger(events.ajaxComplete, [jqXHR, textStatus]);
},
beforeSend: function (jqXHR, settings) {
+ currentAjaxRequest = jqXHR;
$form.trigger(events.ajaxBeforeSend, [jqXHR, settings]);
},
success: function (msgs) {
@@ -563,6 +565,9 @@
return;
}
+ if (currentAjaxRequest !== null) {
+ currentAjaxRequest.abort();
+ }
if (data.settings.timer !== undefined) {
clearTimeout(data.settings.timer);
}
@@ -728,8 +733,7 @@
var errorAttributes = [], $input;
$.each(data.attributes, function () {
- var hasError = (submitting && updateInput($form, this, messages)) || (!submitting && attrHasError($form,
- this, messages));
+ var hasError = (submitting && updateInput($form, this, messages)) || (!submitting && attrHasError($form, this, messages));
$input = findInput($form, this);
if (!$input.is(':disabled') && !this.cancelled && hasError) {
@@ -929,4 +933,7 @@
$form.find(attribute.input).attr('aria-invalid', hasError ? 'true' : 'false');
}
}
+
+ var currentAjaxRequest = null;
+
})(window.jQuery);
diff --git a/framework/assets/yii.gridView.js b/framework/assets/yii.gridView.js
index f02d4d95e94..cdcb3731960 100644
--- a/framework/assets/yii.gridView.js
+++ b/framework/assets/yii.gridView.js
@@ -198,7 +198,7 @@
$grid.find(checkAllInput + (all ? ":not(:checked)" : ":checked")).prop('checked', all).change();
};
initEventHandler($grid, 'checkRow', 'click.yiiGridView', "#" + id + " " + inputs, handler);
- if($grid.find(inputs).length) {
+ if ($grid.find(inputs).length) {
handler(); // Ensure "check all" checkbox is checked on page load if all data row checkboxes are initially checked.
}
},
@@ -245,7 +245,8 @@
* @param {string} selector jQuery selector
* @param {function} callback The actual function to be executed with this event
*/
- function initEventHandler($gridView, type, event, selector, callback) {
+ function initEventHandler($gridView, type, event, selector, callback)
+ {
var id = $gridView.attr('id');
var prevHandler = gridEventHandlers[id];
if (prevHandler !== undefined && prevHandler[type] !== undefined) {
diff --git a/framework/assets/yii.js b/framework/assets/yii.js
index 6384d07d172..e7a61f75456 100644
--- a/framework/assets/yii.js
+++ b/framework/assets/yii.js
@@ -353,7 +353,8 @@ window.yii = (function ($) {
}
};
- function initCsrfHandler() {
+ function initCsrfHandler()
+ {
// automatically send CSRF token for all AJAX requests
$.ajaxPrefilter(function (options, originalOptions, xhr) {
if (!options.crossDomain && pub.getCsrfParam()) {
@@ -363,7 +364,8 @@ window.yii = (function ($) {
pub.refreshCsrfToken();
}
- function initRedirectHandler() {
+ function initRedirectHandler()
+ {
// handle AJAX redirection
$(document).ajaxComplete(function (event, xhr) {
var url = xhr && xhr.getResponseHeader('X-Redirect');
@@ -373,7 +375,8 @@ window.yii = (function ($) {
});
}
- function initAssetFilters() {
+ function initAssetFilters()
+ {
/**
* Used for storing loaded scripts and information about loading each script if it's in the process of loading.
* A single script can have one of the following values:
@@ -472,7 +475,8 @@ window.yii = (function ($) {
});
}
- function initDataMethods() {
+ function initDataMethods()
+ {
var handler = function (event) {
var $this = $(this),
method = $this.data('method'),
@@ -499,7 +503,8 @@ window.yii = (function ($) {
.on('change.yii', pub.changeableSelector, handler);
}
- function isReloadableAsset(url) {
+ function isReloadableAsset(url)
+ {
for (var i = 0; i < pub.reloadableScripts.length; i++) {
var rule = getAbsoluteUrl(pub.reloadableScripts[i]);
var match = new RegExp("^" + escapeRegExp(rule).split('\\*').join('.+') + "$").test(url);
@@ -512,7 +517,8 @@ window.yii = (function ($) {
}
// https://stackoverflow.com/questions/3446170/escape-string-for-use-in-javascript-regex/6969486#6969486
- function escapeRegExp(str) {
+ function escapeRegExp(str)
+ {
return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&");
}
@@ -521,7 +527,8 @@ window.yii = (function ($) {
* @param {string} url Initial URL
* @returns {string}
*/
- function getAbsoluteUrl(url) {
+ function getAbsoluteUrl(url)
+ {
return url.charAt(0) === '/' ? pub.getBaseCurrentUrl() + url : url;
}
diff --git a/framework/assets/yii.validation.js b/framework/assets/yii.validation.js
index 2cae037e3c1..af80bb80493 100644
--- a/framework/assets/yii.validation.js
+++ b/framework/assets/yii.validation.js
@@ -95,7 +95,7 @@ yii.validation = (function ($) {
},
validateImage: function (file, messages, options, deferred, fileReader, image) {
- image.onload = function() {
+ image.onload = function () {
validateImageSize(file, image, messages, options);
deferred.resolve();
};
@@ -379,7 +379,8 @@ yii.validation = (function ($) {
}
};
- function getUploadedFiles(attribute, messages, options) {
+ function getUploadedFiles(attribute, messages, options)
+ {
// Skip validation if File API is not available
if (typeof File === "undefined") {
return [];
@@ -415,12 +416,13 @@ yii.validation = (function ($) {
return files;
}
- function validateFile(file, messages, options) {
+ function validateFile(file, messages, options)
+ {
if (options.extensions && options.extensions.length > 0) {
var found = false;
var filename = file.name.toLowerCase();
- for (var index=0; index < options.extensions.length; index++) {
+ for (var index = 0; index < options.extensions.length; index++) {
var ext = options.extensions[index].toLowerCase();
if ((ext === '' && filename.indexOf('.') === -1) || (filename.substr(filename.length - options.extensions[index].length - 1) === ('.' + ext))) {
found = true;
@@ -448,7 +450,8 @@ yii.validation = (function ($) {
}
}
- function validateMimeType(mimeTypes, fileType) {
+ function validateMimeType(mimeTypes, fileType)
+ {
for (var i = 0, len = mimeTypes.length; i < len; i++) {
if (new RegExp(mimeTypes[i]).test(fileType)) {
return true;
@@ -458,7 +461,8 @@ yii.validation = (function ($) {
return false;
}
- function validateImageSize(file, image, messages, options) {
+ function validateImageSize(file, image, messages, options)
+ {
if (options.minWidth && image.width < options.minWidth) {
messages.push(options.underWidth.replace(/\{file\}/g, file.name));
}
@@ -479,7 +483,8 @@ yii.validation = (function ($) {
/**
* PHP: `trim($path, ' /')`, JS: `yii.helpers.trim(path, {chars: ' /'})`
*/
- function trimString(value, options = {skipOnEmpty: true, chars: null}) {
+ function trimString(value, options = {skipOnEmpty: true, chars: null})
+ {
if (options.skipOnEmpty !== false && pub.isEmpty(value)) {
return value;
}
diff --git a/framework/base/Action.php b/framework/base/Action.php
index 45d95c59cbf..b5d04b80ddd 100644
--- a/framework/base/Action.php
+++ b/framework/base/Action.php
@@ -1,4 +1,5 @@
controller->bindActionParams($this, $params);
- Yii::debug('Running action: ' . get_class($this) . '::run(), invoked by ' . get_class($this->controller), __METHOD__);
+ Yii::debug('Running action: ' . get_class($this) . '::run(), invoked by ' . get_class($this->controller), __METHOD__);
if (Yii::$app->requestedParams === null) {
Yii::$app->requestedParams = $args;
}
diff --git a/framework/base/ActionEvent.php b/framework/base/ActionEvent.php
index ab03d7366f1..9cfe64509ce 100644
--- a/framework/base/ActionEvent.php
+++ b/framework/base/ActionEvent.php
@@ -1,4 +1,5 @@
ensureBehaviors();
diff --git a/framework/base/Configurable.php b/framework/base/Configurable.php
index b44a082841e..3fe41fe88bb 100644
--- a/framework/base/Configurable.php
+++ b/framework/base/Configurable.php
@@ -1,4 +1,5 @@
getName();
if (($component = $this->module->get($name, false)) instanceof $typeName) {
$args[] = $component;
- $requestedParams[$name] = "Component: " . get_class($component) . " \$$name";
+ $requestedParams[$name] = 'Component: ' . get_class($component) . " \$$name";
} elseif ($this->module->has($typeName) && ($service = $this->module->get($typeName)) instanceof $typeName) {
$args[] = $service;
$requestedParams[$name] = 'Module ' . get_class($this->module) . " DI: $typeName \$$name";
diff --git a/framework/base/DynamicContentAwareInterface.php b/framework/base/DynamicContentAwareInterface.php
index 58e2625c550..e605d8568f7 100644
--- a/framework/base/DynamicContentAwareInterface.php
+++ b/framework/base/DynamicContentAwareInterface.php
@@ -1,4 +1,5 @@
memoryReserveSize > 0) {
- $this->_memoryReserve = str_pad('', $this->memoryReserveSize, 'x');
+ $this->_memoryReserve = str_repeat('x', $this->memoryReserveSize);
}
// to restore working directory in shutdown handler
if (PHP_SAPI !== 'cli') {
diff --git a/framework/base/Event.php b/framework/base/Event.php
index ac2fdc43466..db66db004e1 100644
--- a/framework/base/Event.php
+++ b/framework/base/Event.php
@@ -1,4 +1,5 @@
controllerNamespace . '\\' . str_replace('/', '\\', $prefix) . $className, '\\');
if (strpos($className, '-') !== false || !class_exists($className)) {
return null;
diff --git a/framework/base/NotSupportedException.php b/framework/base/NotSupportedException.php
index 4161fb737f4..32a1bed9770 100644
--- a/framework/base/NotSupportedException.php
+++ b/framework/base/NotSupportedException.php
@@ -1,4 +1,5 @@
- * @since 2.0
- * @deprecated since 2.0.13, the class name `Object` is invalid since PHP 7.2, use [[BaseObject]] instead.
- * @see https://wiki.php.net/rfc/object-typehint
- * @see https://github.com/yiisoft/yii2/issues/7936#issuecomment-315384669
- */
-class Object extends BaseObject
-{
-}
diff --git a/framework/base/Request.php b/framework/base/Request.php
index 3f7f5aaed16..9a07057d4f5 100644
--- a/framework/base/Request.php
+++ b/framework/base/Request.php
@@ -1,4 +1,5 @@
30
) {
diff --git a/framework/base/StaticInstanceInterface.php b/framework/base/StaticInstanceInterface.php
index 12cce4bfbc8..0d9af1134b5 100644
--- a/framework/base/StaticInstanceInterface.php
+++ b/framework/base/StaticInstanceInterface.php
@@ -1,4 +1,5 @@
dynamicPlaceholders[$placeholder] = $statements;
-}
+ }
/**
* Evaluates the given PHP statements.
diff --git a/framework/base/ViewContextInterface.php b/framework/base/ViewContextInterface.php
index df2834c0d5c..ef2a1a4377d 100644
--- a/framework/base/ViewContextInterface.php
+++ b/framework/base/ViewContextInterface.php
@@ -1,4 +1,5 @@
skipUpdateOnClean
+ if (
+ $this->skipUpdateOnClean
&& $event->name == ActiveRecord::EVENT_BEFORE_UPDATE
&& empty($this->owner->dirtyAttributes)
) {
diff --git a/framework/behaviors/AttributeTypecastBehavior.php b/framework/behaviors/AttributeTypecastBehavior.php
index a418b15de25..e2bde1b9a98 100644
--- a/framework/behaviors/AttributeTypecastBehavior.php
+++ b/framework/behaviors/AttributeTypecastBehavior.php
@@ -1,4 +1,5 @@
attributeTypes
*/
- private static $autoDetectedAttributeTypes = [];
+ private static $_autoDetectedAttributeTypes = [];
/**
@@ -193,7 +194,7 @@ class AttributeTypecastBehavior extends Behavior
*/
public static function clearAutoDetectedAttributeTypes()
{
- self::$autoDetectedAttributeTypes = [];
+ self::$_autoDetectedAttributeTypes = [];
}
/**
@@ -205,10 +206,10 @@ public function attach($owner)
if ($this->attributeTypes === null) {
$ownerClass = get_class($this->owner);
- if (!isset(self::$autoDetectedAttributeTypes[$ownerClass])) {
- self::$autoDetectedAttributeTypes[$ownerClass] = $this->detectAttributeTypes();
+ if (!isset(self::$_autoDetectedAttributeTypes[$ownerClass])) {
+ self::$_autoDetectedAttributeTypes[$ownerClass] = $this->detectAttributeTypes();
}
- $this->attributeTypes = self::$autoDetectedAttributeTypes[$ownerClass];
+ $this->attributeTypes = self::$_autoDetectedAttributeTypes[$ownerClass];
}
}
diff --git a/framework/behaviors/AttributesBehavior.php b/framework/behaviors/AttributesBehavior.php
index df093864a34..5ab2ceea0d1 100644
--- a/framework/behaviors/AttributesBehavior.php
+++ b/framework/behaviors/AttributesBehavior.php
@@ -1,4 +1,5 @@
skipUpdateOnClean
+ if (
+ $this->skipUpdateOnClean
&& $event->name === ActiveRecord::EVENT_BEFORE_UPDATE
&& empty($this->owner->dirtyAttributes)
) {
@@ -152,7 +154,8 @@ public function evaluateAttributes($event)
if (!empty($this->order[$event->name])) {
$attributes = array_merge(
array_intersect((array) $this->order[$event->name], $attributes),
- array_diff($attributes, (array) $this->order[$event->name]));
+ array_diff($attributes, (array) $this->order[$event->name])
+ );
}
foreach ($attributes as $attribute) {
if ($this->preserveNonEmptyValues && !empty($this->owner->$attribute)) {
diff --git a/framework/behaviors/BlameableBehavior.php b/framework/behaviors/BlameableBehavior.php
index f83b8b3f28c..f6396c33bfd 100755
--- a/framework/behaviors/BlameableBehavior.php
+++ b/framework/behaviors/BlameableBehavior.php
@@ -1,4 +1,5 @@
defaultDuration;
}
- if ($dependency !== null && $this->serializer !== false) {
- $dependency->evaluateDependency($this);
- }
-
- $data = [];
- foreach ($items as $key => $value) {
- if ($this->serializer === null) {
- $value = serialize([$value, $dependency]);
- } elseif ($this->serializer !== false) {
- $value = call_user_func($this->serializer[0], [$value, $dependency]);
- }
-
- $key = $this->buildKey($key);
- $data[$key] = $value;
- }
+ $data = $this->prepareCacheData($items, $dependency);
return $this->setValues($data, $duration);
}
@@ -343,6 +330,21 @@ public function madd($items, $duration = 0, $dependency = null)
* @since 2.0.7
*/
public function multiAdd($items, $duration = 0, $dependency = null)
+ {
+ $data = $this->prepareCacheData($items, $dependency);
+
+ return $this->addValues($data, $duration);
+ }
+
+ /**
+ * Prepares data for caching by serializing values and evaluating dependencies.
+ *
+ * @param array $items The items to be cached.
+ * @param mixed $dependency The dependency to be evaluated.
+ *
+ * @return array The prepared data for caching.
+ */
+ private function prepareCacheData($items, $dependency)
{
if ($dependency !== null && $this->serializer !== false) {
$dependency->evaluateDependency($this);
@@ -360,7 +362,7 @@ public function multiAdd($items, $duration = 0, $dependency = null)
$data[$key] = $value;
}
- return $this->addValues($data, $duration);
+ return $data;
}
/**
diff --git a/framework/caching/CacheInterface.php b/framework/caching/CacheInterface.php
index 0ff387eff1c..1d318ac2ee0 100644
--- a/framework/caching/CacheInterface.php
+++ b/framework/caching/CacheInterface.php
@@ -1,4 +1,5 @@
+ * @since 2.0.50
+ */
+class CallbackDependency extends Dependency
+{
+ /**
+ * @var callable the PHP callback that will be called to determine if the dependency has been changed.
+ */
+ public $callback;
+
+
+ /**
+ * Generates the data needed to determine if dependency has been changed.
+ * This method returns the result of the callback function.
+ * @param CacheInterface $cache the cache component that is currently evaluating this dependency
+ * @return mixed the data needed to determine if dependency has been changed.
+ */
+ protected function generateDependencyData($cache)
+ {
+ return ($this->callback)();
+ }
+}
diff --git a/framework/caching/ChainedDependency.php b/framework/caching/ChainedDependency.php
index b318ea8516a..0efa116507f 100644
--- a/framework/caching/ChainedDependency.php
+++ b/framework/caching/ChainedDependency.php
@@ -1,4 +1,5 @@
fileName);
+
clearstatcache(false, $fileName);
return @filemtime($fileName);
}
diff --git a/framework/caching/MemCache.php b/framework/caching/MemCache.php
index a1918c90f58..3f560c61579 100644
--- a/framework/caching/MemCache.php
+++ b/framework/caching/MemCache.php
@@ -1,4 +1,5 @@
YII2_PATH . '/caching/Dependency.php',
'yii\caching\DummyCache' => YII2_PATH . '/caching/DummyCache.php',
'yii\caching\ExpressionDependency' => YII2_PATH . '/caching/ExpressionDependency.php',
+ 'yii\caching\CallbackDependency' => YII2_PATH . '/caching/CallbackDependency.php',
'yii\caching\FileCache' => YII2_PATH . '/caching/FileCache.php',
'yii\caching\FileDependency' => YII2_PATH . '/caching/FileDependency.php',
'yii\caching\MemCache' => YII2_PATH . '/caching/MemCache.php',
diff --git a/framework/composer.json b/framework/composer.json
index 951679faec9..d24703fb442 100644
--- a/framework/composer.json
+++ b/framework/composer.json
@@ -63,16 +63,16 @@
"source": "https://github.com/yiisoft/yii2"
},
"require": {
- "php": ">=5.4.0",
+ "php": ">=7.3.0",
"ext-mbstring": "*",
"ext-ctype": "*",
"lib-pcre": "*",
"yiisoft/yii2-composer": "~2.0.4",
- "ezyang/htmlpurifier": "^4.6",
+ "ezyang/htmlpurifier": "^4.17",
"cebe/markdown": "~1.0.0 | ~1.1.0 | ~1.2.0",
"bower-asset/jquery": "3.7.*@stable | 3.6.*@stable | 3.5.*@stable | 3.4.*@stable | 3.3.*@stable | 3.2.*@stable | 3.1.*@stable | 2.2.*@stable | 2.1.*@stable | 1.11.*@stable | 1.12.*@stable",
- "bower-asset/inputmask": "~3.2.2 | ~3.3.5 | ~5.0.8 ",
- "bower-asset/punycode": "1.3.* | 2.2.*",
+ "bower-asset/inputmask": "^5.0.8 ",
+ "bower-asset/punycode": "^2.2",
"bower-asset/yii2-pjax": "~2.0.1",
"paragonie/random_compat": ">=1"
},
diff --git a/framework/console/Application.php b/framework/console/Application.php
index 1ec070a55d2..7d5a87d7b9f 100644
--- a/framework/console/Application.php
+++ b/framework/console/Application.php
@@ -1,4 +1,5 @@
controller instanceof \yii\console\Controller && Yii::$app->controller->isColorEnabled($stream)
- || Yii::$app instanceof \yii\console\Application && Console::streamSupportsAnsiColors($stream)) {
+ if (
+ Yii::$app->controller instanceof \yii\console\Controller && Yii::$app->controller->isColorEnabled($stream)
+ || Yii::$app instanceof \yii\console\Application && Console::streamSupportsAnsiColors($stream)
+ ) {
$message = Console::ansiFormat($message, $format);
}
diff --git a/framework/console/Exception.php b/framework/console/Exception.php
index 59ee7d71acb..784857246da 100644
--- a/framework/console/Exception.php
+++ b/framework/console/Exception.php
@@ -1,4 +1,5 @@
getActionArgsHelp($action) as $argument => $help) {
- $description = preg_replace("~\R~", '', addcslashes($help['comment'], ':')) ?: $argument;
+ $description = preg_replace('~\R~', '', addcslashes($help['comment'], ':')) ?: $argument;
$this->stdout($argument . ':' . $description . "\n");
}
$this->stdout("\n");
foreach ($controller->getActionOptionsHelp($action) as $argument => $help) {
- $description = preg_replace("~\R~", '', addcslashes($help['comment'], ':'));
+ $description = preg_replace('~\R~', '', addcslashes($help['comment'], ':'));
$this->stdout('--' . $argument . ($description ? ':' . $description : '') . "\n");
}
}
@@ -440,11 +441,12 @@ protected function getSubCommandHelp($controller, $actionID)
if (!empty($args)) {
foreach ($args as $name => $arg) {
$this->stdout($this->formatOptionHelp(
- '- ' . $this->ansiFormat($name, Console::FG_CYAN),
- $arg['required'],
- $arg['type'],
- $arg['default'],
- $arg['comment']) . "\n\n");
+ '- ' . $this->ansiFormat($name, Console::FG_CYAN),
+ $arg['required'],
+ $arg['type'],
+ $arg['default'],
+ $arg['comment']
+ ) . "\n\n");
}
}
@@ -452,12 +454,16 @@ protected function getSubCommandHelp($controller, $actionID)
$this->stdout("\nOPTIONS\n\n", Console::BOLD);
foreach ($options as $name => $option) {
$this->stdout($this->formatOptionHelp(
- $this->ansiFormat('--' . $name . $this->formatOptionAliases($controller, $name),
- Console::FG_RED, empty($option['required']) ? Console::FG_RED : Console::BOLD),
- !empty($option['required']),
- $option['type'],
- $option['default'],
- $option['comment']) . "\n\n");
+ $this->ansiFormat(
+ '--' . $name . $this->formatOptionAliases($controller, $name),
+ Console::FG_RED,
+ empty($option['required']) ? Console::FG_RED : Console::BOLD
+ ),
+ !empty($option['required']),
+ $option['type'],
+ $option['default'],
+ $option['comment']
+ ) . "\n\n");
}
}
}
diff --git a/framework/console/controllers/MessageController.php b/framework/console/controllers/MessageController.php
index e1a73576903..a869ab0195a 100644
--- a/framework/console/controllers/MessageController.php
+++ b/framework/console/controllers/MessageController.php
@@ -1,4 +1,5 @@
select(['language'])->from($messageTable)->groupBy('language')->all($db);
- foreach ($rows as $row) {
- $currentLanguages[] = $row['language'];
- }
- $missingLanguages = [];
- if (!empty($currentLanguages)) {
- $missingLanguages = array_diff($languages, $currentLanguages);
- }
-
$new = [];
$obsolete = [];
@@ -372,89 +363,130 @@ protected function saveMessagesToDb($messages, $db, $sourceMessageTable, $messag
if (isset($currentMessages[$category])) {
$new[$category] = array_diff($msgs, $currentMessages[$category]);
+ // obsolete messages per category
$obsolete += array_diff($currentMessages[$category], $msgs);
} else {
$new[$category] = $msgs;
}
}
+ // obsolete categories
foreach (array_diff(array_keys($currentMessages), array_keys($messages)) as $category) {
$obsolete += $currentMessages[$category];
}
if (!$removeUnused) {
foreach ($obsolete as $pk => $msg) {
+ // skip already marked unused
if (strncmp($msg, '@@', 2) === 0 && substr($msg, -2) === '@@') {
unset($obsolete[$pk]);
}
}
}
- $obsolete = array_keys($obsolete);
$this->stdout('Inserting new messages...');
- $savedFlag = false;
+ $insertCount = 0;
foreach ($new as $category => $msgs) {
foreach ($msgs as $msg) {
- $savedFlag = true;
- $lastPk = $db->schema->insert($sourceMessageTable, ['category' => $category, 'message' => $msg]);
- foreach ($languages as $language) {
- $db->createCommand()
- ->insert($messageTable, ['id' => $lastPk['id'], 'language' => $language])
- ->execute();
+ $insertCount++;
+ $db->schema->insert($sourceMessageTable, ['category' => $category, 'message' => $msg]);
+ }
+ }
+
+ $this->stdout($insertCount ? "{$insertCount} saved.\n" : "Nothing to save.\n");
+
+ $this->stdout($removeUnused ? 'Deleting obsoleted messages...' : 'Updating obsoleted messages...');
+
+ if (empty($obsolete)) {
+ $this->stdout("Nothing obsoleted...skipped.\n");
+ }
+
+ if ($obsolete) {
+ if ($removeUnused) {
+ $affected = $db->createCommand()
+ ->delete($sourceMessageTable, ['in', 'id', array_keys($obsolete)])
+ ->execute();
+ $this->stdout("{$affected} deleted.\n");
+ } elseif ($markUnused) {
+ $marked = 0;
+ $rows = (new Query())
+ ->select(['id', 'message'])
+ ->from($sourceMessageTable)
+ ->where(['in', 'id', array_keys($obsolete)])
+ ->all($db);
+
+ foreach ($rows as $row) {
+ $marked++;
+ $db->createCommand()->update(
+ $sourceMessageTable,
+ ['message' => '@@' . $row['message'] . '@@'],
+ ['id' => $row['id']]
+ )->execute();
}
+ $this->stdout("{$marked} updated.\n");
+ } else {
+ $this->stdout("kept untouched.\n");
}
}
- if (!empty($missingLanguages)) {
- $updatedMessages = [];
- $rows = (new Query())->select(['id', 'category', 'message'])->from($sourceMessageTable)->all($db);
- foreach ($rows as $row) {
- $updatedMessages[$row['category']][$row['id']] = $row['message'];
+ // get fresh message id list
+ $freshMessagesIds = [];
+ $rows = (new Query())->select(['id'])->from($sourceMessageTable)->all($db);
+ foreach ($rows as $row) {
+ $freshMessagesIds[] = $row['id'];
+ }
+
+ $this->stdout('Generating missing rows...');
+ $generatedMissingRows = [];
+
+ foreach ($languages as $language) {
+ $count = 0;
+
+ // get list of ids of translations for this language
+ $msgRowsIds = [];
+ $msgRows = (new Query())->select(['id'])->from($messageTable)->where([
+ 'language' => $language,
+ ])->all($db);
+ foreach ($msgRows as $row) {
+ $msgRowsIds[] = $row['id'];
}
- foreach ($updatedMessages as $category => $msgs) {
- foreach ($msgs as $id => $msg) {
- $savedFlag = true;
- foreach ($missingLanguages as $language) {
- $db->createCommand()
- ->insert($messageTable, ['id' => $id, 'language' => $language])
- ->execute();
- }
+
+ // insert missing
+ foreach ($freshMessagesIds as $id) {
+ if (!in_array($id, $msgRowsIds)) {
+ $db->createCommand()
+ ->insert($messageTable, ['id' => $id, 'language' => $language])
+ ->execute();
+ $count++;
}
}
+ if ($count) {
+ $generatedMissingRows[] = "{$count} for {$language}";
+ }
}
- $this->stdout($savedFlag ? "saved.\n" : "Nothing to save.\n");
- $this->stdout($removeUnused ? 'Deleting obsoleted messages...' : 'Updating obsoleted messages...');
+ $this->stdout($generatedMissingRows ? implode(', ', $generatedMissingRows) . ".\n" : "Nothing to do.\n");
- if (empty($obsolete)) {
- $this->stdout("Nothing obsoleted...skipped.\n");
- return;
+ $this->stdout('Dropping unused languages...');
+ $droppedLanguages = [];
+
+ $currentLanguages = [];
+ $rows = (new Query())->select(['language'])->from($messageTable)->groupBy('language')->all($db);
+ foreach ($rows as $row) {
+ $currentLanguages[] = $row['language'];
}
- if ($removeUnused) {
- $db->createCommand()
- ->delete($sourceMessageTable, ['in', 'id', $obsolete])
- ->execute();
- $this->stdout("deleted.\n");
- } elseif ($markUnused) {
- $rows = (new Query())
- ->select(['id', 'message'])
- ->from($sourceMessageTable)
- ->where(['in', 'id', $obsolete])
- ->all($db);
-
- foreach ($rows as $row) {
- $db->createCommand()->update(
- $sourceMessageTable,
- ['message' => '@@' . $row['message'] . '@@'],
- ['id' => $row['id']]
- )->execute();
+ foreach ($currentLanguages as $currentLanguage) {
+ if (!in_array($currentLanguage, $languages)) {
+ $deleted = $db->createCommand()->delete($messageTable, 'language=:language', [
+ 'language' => $currentLanguage,
+ ])->execute();
+ $droppedLanguages[] = "removed {$deleted} rows for $currentLanguage";
}
- $this->stdout("updated.\n");
- } else {
- $this->stdout("kept untouched.\n");
}
+
+ $this->stdout($droppedLanguages ? implode(', ', $droppedLanguages) . ".\n" : "Nothing to do.\n");
}
/**
diff --git a/framework/console/controllers/MigrateController.php b/framework/console/controllers/MigrateController.php
index 17b6a76389a..3a7e5803641 100644
--- a/framework/console/controllers/MigrateController.php
+++ b/framework/console/controllers/MigrateController.php
@@ -1,4 +1,5 @@
templateFile;
$table = null;
- if (preg_match(
- '/^create_?junction_?(?:table)?_?(?:for)?(.+)_?and(.+)_?tables?$/i',
- $name,
- $matches
- )) {
+ if (preg_match('/^create_?junction_?(?:table)?_?(?:for)?(.+)_?and(.+)_?tables?$/i', $name, $matches)) {
$templateFile = $this->generatorTemplateFiles['create_junction'];
$firstTable = $this->normalizeTableName($matches[1]);
$secondTable = $this->normalizeTableName($matches[2]);
diff --git a/framework/console/controllers/ServeController.php b/framework/console/controllers/ServeController.php
index 68a7e50c286..2b8ce9f78c0 100644
--- a/framework/console/controllers/ServeController.php
+++ b/framework/console/controllers/ServeController.php
@@ -1,4 +1,5 @@
stdout("Quit the server with CTRL-C or COMMAND-C.\n");
- passthru('"' . PHP_BINARY . '"' . " -S {$address} -t \"{$documentRoot}\" $router");
+ $command = '"' . PHP_BINARY . '"' . " -S {$address} -t \"{$documentRoot}\"";
+
+ if ($this->router !== null && $router !== '') {
+ $command .= " -r \"{$router}\"";
+ }
+
+ $this->runCommand($command);
}
/**
@@ -122,4 +129,9 @@ protected function isAddressTaken($address)
fclose($fp);
return true;
}
+
+ protected function runCommand($command)
+ {
+ passthru($command);
+ }
}
diff --git a/framework/console/widgets/Table.php b/framework/console/widgets/Table.php
index c0ece4d4d89..dd41ea176f6 100644
--- a/framework/console/widgets/Table.php
+++ b/framework/console/widgets/Table.php
@@ -1,4 +1,5 @@
rows = array_map(function($row) {
- return array_map(function($value) {
+ $this->rows = array_map(function ($row) {
+ return array_map(function ($value) {
return empty($value) && !is_numeric($value)
? ' '
: (is_array($value)
@@ -198,7 +199,8 @@ public function run()
);
// Header
if ($headerCount > 0) {
- $buffer .= $this->renderRow($this->headers,
+ $buffer .= $this->renderRow(
+ $this->headers,
$this->chars[self::CHAR_LEFT],
$this->chars[self::CHAR_MIDDLE],
$this->chars[self::CHAR_RIGHT]
@@ -215,10 +217,12 @@ public function run()
$this->chars[self::CHAR_RIGHT_MID]
);
}
- $buffer .= $this->renderRow($row,
+ $buffer .= $this->renderRow(
+ $row,
$this->chars[self::CHAR_LEFT],
$this->chars[self::CHAR_MIDDLE],
- $this->chars[self::CHAR_RIGHT]);
+ $this->chars[self::CHAR_RIGHT]
+ );
}
$buffer .= $this->renderSeparator(
diff --git a/framework/data/ActiveDataFilter.php b/framework/data/ActiveDataFilter.php
index be5704aa675..bf6eea2c32e 100644
--- a/framework/data/ActiveDataFilter.php
+++ b/framework/data/ActiveDataFilter.php
@@ -1,4 +1,5 @@
query;
if (($pagination = $this->getPagination()) !== false) {
- $pagination->totalCount = $this->getTotalCount();
if ($pagination->totalCount === 0) {
return [];
}
diff --git a/framework/data/ArrayDataProvider.php b/framework/data/ArrayDataProvider.php
index 657bcd2a1c3..14511c54556 100644
--- a/framework/data/ArrayDataProvider.php
+++ b/framework/data/ArrayDataProvider.php
@@ -1,4 +1,5 @@
sortModels($models, $sort);
}
- if (($pagination = $this->getPagination()) !== false) {
- $pagination->totalCount = $this->getTotalCount();
-
- if ($pagination->getPageSize() > 0) {
- $models = array_slice($models, $pagination->getOffset(), $pagination->getLimit(), true);
- }
+ $pagination = $this->getPagination();
+ if ($pagination !== false && $pagination->getPageSize() > 0) {
+ $models = array_slice($models, $pagination->getOffset(), $pagination->getLimit(), true);
}
-
return $models;
}
diff --git a/framework/data/BaseDataProvider.php b/framework/data/BaseDataProvider.php
index 82af0aa7c47..409b9f28bca 100644
--- a/framework/data/BaseDataProvider.php
+++ b/framework/data/BaseDataProvider.php
@@ -1,4 +1,5 @@
* @since 2.0
+ * @phpcs:disable Squiz.NamingConventions.ValidVariableName.PrivateNoUnderscore
*/
abstract class BaseDataProvider extends Component implements DataProviderInterface
{
@@ -163,12 +165,12 @@ public function getCount()
*/
public function getTotalCount()
{
- if ($this->getPagination() === false) {
+ if ($this->_pagination === false) {
return $this->getCount();
- } elseif ($this->_totalCount === null) {
+ }
+ if ($this->_totalCount === null) {
$this->_totalCount = $this->prepareTotalCount();
}
-
return $this->_totalCount;
}
@@ -192,7 +194,6 @@ public function getPagination()
if ($this->_pagination === null) {
$this->setPagination([]);
}
-
return $this->_pagination;
}
@@ -216,9 +217,13 @@ public function setPagination($value)
$config['pageParam'] = $this->id . '-page';
$config['pageSizeParam'] = $this->id . '-per-page';
}
- $this->_pagination = Yii::createObject(array_merge($config, $value));
- } elseif ($value instanceof Pagination || $value === false) {
+ $value = Yii::createObject(array_merge($config, $value));
+ }
+ if ($value instanceof Pagination) {
+ $value->totalCount = $this->getTotalCount();
$this->_pagination = $value;
+ } elseif ($value === false) {
+ $this->_pagination = false;
} else {
throw new InvalidArgumentException('Only Pagination instance, configuration array or false is allowed.');
}
diff --git a/framework/data/DataFilter.php b/framework/data/DataFilter.php
index 057509203fe..8d4142e93f9 100644
--- a/framework/data/DataFilter.php
+++ b/framework/data/DataFilter.php
@@ -1,4 +1,5 @@
totalCount = $this->getTotalCount();
$limit = $pagination->getLimit();
$offset = $pagination->getOffset();
}
diff --git a/framework/db/ActiveQuery.php b/framework/db/ActiveQuery.php
index 413255fcfeb..8f5fc9903e1 100644
--- a/framework/db/ActiveQuery.php
+++ b/framework/db/ActiveQuery.php
@@ -1,4 +1,5 @@
primaryModel ? get_class($this->primaryModel) : $this->modelClass;
$relation = new self($modelClass, [
diff --git a/framework/db/ActiveQueryInterface.php b/framework/db/ActiveQueryInterface.php
index c424a4919cb..f15e49eb008 100644
--- a/framework/db/ActiveQueryInterface.php
+++ b/framework/db/ActiveQueryInterface.php
@@ -1,4 +1,5 @@
* @author Carsten Brandt
* @since 2.0
+ * @phpcs:disable Squiz.NamingConventions.ValidVariableName.PrivateNoUnderscore
*
* @method ActiveRecordInterface|array|null one($db = null) See [[ActiveQueryInterface::one()]] for more info.
* @method ActiveRecordInterface[] all($db = null) See [[ActiveQueryInterface::all()]] for more info.
@@ -102,7 +104,7 @@ public function __clone()
* Its signature should be `function($query)`, where `$query` is the query to be customized.
* @return $this the relation object itself.
*/
- public function via($relationName, callable $callable = null)
+ public function via($relationName, ?callable $callable = null)
{
$relation = $this->primaryModel->getRelation($relationName);
$callableUsed = $callable !== null;
@@ -453,7 +455,8 @@ private function buildBuckets($models, $link, $viaModels = null, $viaQuery = nul
* @param array $viaMap
* @return array
*/
- private function mapVia($map, $viaMap) {
+ private function mapVia($map, $viaMap)
+ {
$resultMap = [];
foreach ($map as $key => $linkKeys) {
$resultMap[$key] = [];
diff --git a/framework/db/AfterSaveEvent.php b/framework/db/AfterSaveEvent.php
index 3efccc10ec1..1a8a768d4fa 100644
--- a/framework/db/AfterSaveEvent.php
+++ b/framework/db/AfterSaveEvent.php
@@ -1,4 +1,5 @@
* @since 2.0.14
+ * @phpcs:disable Squiz.NamingConventions.ValidVariableName.PrivateNoUnderscore
*/
class ArrayExpression implements ExpressionInterface, \ArrayAccess, \Countable, \IteratorAggregate
{
diff --git a/framework/db/BaseActiveRecord.php b/framework/db/BaseActiveRecord.php
index 61cf3774094..8931c84f3ed 100644
--- a/framework/db/BaseActiveRecord.php
+++ b/framework/db/BaseActiveRecord.php
@@ -1,4 +1,5 @@
where(['country_id' => 123])->all();
+ * if (Yii:app()->getUser()->getIdentity()->canAccessOrders()) {
+ * Customer::loadRelationsFor($customers, 'orders.items');
+ * }
+ * ```
+ *
+ * @param array|ActiveRecordInterface[] $models array of primary models. Each model should have the same type and can be:
+ * - an active record instance;
+ * - active record instance represented by array (i.e. active record was loaded using [[ActiveQuery::asArray()]]).
+ * @param string|array $relationNames the names of the relations of primary models to be loaded from database. See [[ActiveQueryInterface::with()]] on how to specify this argument.
+ * @param bool $asArray whether to load each related model as an array or an object (if the relation itself does not specify that).
+ * @since 2.0.50
+ */
+ public static function loadRelationsFor(&$models, $relationNames, $asArray = false)
+ {
+ // ActiveQueryTrait::findWith() called below assumes $models array is non-empty.
+ if (empty($models)) {
+ return;
+ }
+
+ static::find()->asArray($asArray)->findWith((array)$relationNames, $models);
+ }
+
+ /**
+ * Eager loads related models for the already loaded primary model.
+ *
+ * Helps to reduce the number of queries performed against database if some related models are only used
+ * when a specific condition is met. For example:
+ *
+ * ```php
+ * $customer = Customer::find()->where(['id' => 123])->one();
+ * if (Yii:app()->getUser()->getIdentity()->canAccessOrders()) {
+ * $customer->loadRelations('orders.items');
+ * }
+ * ```
+ *
+ * @param string|array $relationNames the names of the relations of this model to be loaded from database. See [[ActiveQueryInterface::with()]] on how to specify this argument.
+ * @param bool $asArray whether to load each relation as an array or an object (if the relation itself does not specify that).
+ * @since 2.0.50
+ */
+ public function loadRelations($relationNames, $asArray = false)
+ {
+ $models = [$this];
+ static::loadRelationsFor($models, $relationNames, $asArray);
+ }
}
diff --git a/framework/db/BatchQueryResult.php b/framework/db/BatchQueryResult.php
index db8e8c28946..c80ed82b5cf 100644
--- a/framework/db/BatchQueryResult.php
+++ b/framework/db/BatchQueryResult.php
@@ -1,4 +1,5 @@
errorInfo[1]) ? $e->errorInfo[1] : null;
- if ($this->getDbDriverName() !== 'sqlsrv' || $errorCode !== $this->mssqlNoMoreRowsErrorCode) {
+ if ($this->getDbDriverName() !== 'sqlsrv' || $errorCode !== self::MSSQL_NO_MORE_ROWS_ERROR_CODE) {
throw $e;
}
}
diff --git a/framework/db/CheckConstraint.php b/framework/db/CheckConstraint.php
index 585032cfe80..1bb86d92bf4 100644
--- a/framework/db/CheckConstraint.php
+++ b/framework/db/CheckConstraint.php
@@ -1,4 +1,5 @@
type,
[
@@ -123,12 +125,14 @@ protected function typecast($value)
Schema::TYPE_BINARY,
Schema::TYPE_CHAR
],
- true)
+ true
+ )
) {
return null;
}
- if ($value === null
+ if (
+ $value === null
|| gettype($value) === $this->phpType
|| $value instanceof ExpressionInterface
|| $value instanceof Query
@@ -136,7 +140,8 @@ protected function typecast($value)
return $value;
}
- if (is_array($value)
+ if (
+ is_array($value)
&& count($value) === 2
&& isset($value[1])
&& in_array($value[1], $this->getPdoParamTypes(), true)
@@ -154,7 +159,8 @@ protected function typecast($value)
// ensure type cast always has . as decimal separator in all locales
return StringHelper::floatToString($value);
}
- if (is_numeric($value)
+ if (
+ is_numeric($value)
&& ColumnSchemaBuilder::CATEGORY_NUMERIC === ColumnSchemaBuilder::$typeCategoryMap[$this->type]
) {
// https://github.com/yiisoft/yii2/issues/14663
@@ -174,7 +180,7 @@ protected function typecast($value)
case 'boolean':
// treating a 0 bit value as false too
// https://github.com/yiisoft/yii2/issues/9006
- return (bool) $value && $value !== "\0";
+ return (bool) $value && $value !== "\0" && strtolower($value) !== 'false';
case 'double':
return (float) $value;
}
diff --git a/framework/db/ColumnSchemaBuilder.php b/framework/db/ColumnSchemaBuilder.php
index 756b4b8aa8b..d77515fad5d 100644
--- a/framework/db/ColumnSchemaBuilder.php
+++ b/framework/db/ColumnSchemaBuilder.php
@@ -1,4 +1,5 @@
_sql);
diff --git a/framework/db/Connection.php b/framework/db/Connection.php
index 4df8f3af62f..2a1c151c79d 100644
--- a/framework/db/Connection.php
+++ b/framework/db/Connection.php
@@ -1,4 +1,5 @@
* @since 2.0.14
+ * @phpcs:disable Squiz.NamingConventions.ValidVariableName.PrivateNoUnderscore
*/
final class PdoValue implements ExpressionInterface
{
diff --git a/framework/db/PdoValueBuilder.php b/framework/db/PdoValueBuilder.php
index 6bec24c94bd..2eae1532739 100644
--- a/framework/db/PdoValueBuilder.php
+++ b/framework/db/PdoValueBuilder.php
@@ -1,4 +1,5 @@
columns : [];
$sets = [];
foreach ($columns as $name => $value) {
-
$value = isset($columnSchemas[$name]) ? $columnSchemas[$name]->dbTypecast($value) : $value;
if ($value instanceof ExpressionInterface) {
$placeholder = $this->buildExpression($value, $params);
@@ -1527,7 +1527,7 @@ public function buildWithQueries($withs, &$params)
$result[] = $with['alias'] . ' AS (' . $with['query'] . ')';
}
- return 'WITH ' . ($recursive ? 'RECURSIVE ' : '') . implode (', ', $result);
+ return 'WITH ' . ($recursive ? 'RECURSIVE ' : '') . implode(', ', $result);
}
/**
diff --git a/framework/db/QueryExpressionBuilder.php b/framework/db/QueryExpressionBuilder.php
index e811c053c99..bd88a758ea0 100644
--- a/framework/db/QueryExpressionBuilder.php
+++ b/framework/db/QueryExpressionBuilder.php
@@ -1,4 +1,5 @@
* @since 2.0.14
+ * @phpcs:disable Squiz.NamingConventions.ValidVariableName.PrivateNoUnderscore
*/
class BetweenColumnsCondition implements ConditionInterface
{
diff --git a/framework/db/conditions/BetweenColumnsConditionBuilder.php b/framework/db/conditions/BetweenColumnsConditionBuilder.php
index 0795d0f2f85..516489c9c77 100644
--- a/framework/db/conditions/BetweenColumnsConditionBuilder.php
+++ b/framework/db/conditions/BetweenColumnsConditionBuilder.php
@@ -1,4 +1,5 @@
* @since 2.0.14
+ * @phpcs:disable Squiz.NamingConventions.ValidVariableName.PrivateNoUnderscore
*/
class BetweenCondition implements ConditionInterface
{
diff --git a/framework/db/conditions/BetweenConditionBuilder.php b/framework/db/conditions/BetweenConditionBuilder.php
index 2af0a29fe7c..dde3f9c3bb9 100644
--- a/framework/db/conditions/BetweenConditionBuilder.php
+++ b/framework/db/conditions/BetweenConditionBuilder.php
@@ -1,4 +1,5 @@
* @since 2.0.14
+ * @phpcs:disable Squiz.NamingConventions.ValidVariableName.PrivateNoUnderscore
*/
class ExistsCondition implements ConditionInterface
{
diff --git a/framework/db/conditions/ExistsConditionBuilder.php b/framework/db/conditions/ExistsConditionBuilder.php
index c7997d974cc..dcef6f7dcdc 100644
--- a/framework/db/conditions/ExistsConditionBuilder.php
+++ b/framework/db/conditions/ExistsConditionBuilder.php
@@ -1,4 +1,5 @@
* @since 2.0.14
+ * @phpcs:disable Squiz.NamingConventions.ValidVariableName.PrivateNoUnderscore
*/
class HashCondition implements ConditionInterface
{
diff --git a/framework/db/conditions/HashConditionBuilder.php b/framework/db/conditions/HashConditionBuilder.php
index 9e0b5a48002..da77c709322 100644
--- a/framework/db/conditions/HashConditionBuilder.php
+++ b/framework/db/conditions/HashConditionBuilder.php
@@ -1,4 +1,5 @@
* @since 2.0.14
+ * @phpcs:disable Squiz.NamingConventions.ValidVariableName.PrivateNoUnderscore
*/
class InCondition implements ConditionInterface
{
diff --git a/framework/db/conditions/InConditionBuilder.php b/framework/db/conditions/InConditionBuilder.php
index 3717c226b1f..32cb078ed79 100644
--- a/framework/db/conditions/InConditionBuilder.php
+++ b/framework/db/conditions/InConditionBuilder.php
@@ -1,4 +1,5 @@
queryBuilder->db->quoteColumnName($column);
if ($operator === 'IN') {
return sprintf('%s IS NULL', $column);
diff --git a/framework/db/conditions/LikeCondition.php b/framework/db/conditions/LikeCondition.php
index 0fe2a8fa0eb..8d203aab4cb 100644
--- a/framework/db/conditions/LikeCondition.php
+++ b/framework/db/conditions/LikeCondition.php
@@ -1,4 +1,5 @@
* @since 2.0.14
+ * @phpcs:disable Squiz.NamingConventions.ValidVariableName.PrivateNoUnderscore
*/
class NotCondition implements ConditionInterface
{
diff --git a/framework/db/conditions/NotConditionBuilder.php b/framework/db/conditions/NotConditionBuilder.php
index 23772621f97..842d08a12e8 100644
--- a/framework/db/conditions/NotConditionBuilder.php
+++ b/framework/db/conditions/NotConditionBuilder.php
@@ -1,4 +1,5 @@
* @since 2.0.14
+ * @phpcs:disable Squiz.NamingConventions.ValidVariableName.PrivateNoUnderscore
*/
class SimpleCondition implements ConditionInterface
{
diff --git a/framework/db/conditions/SimpleConditionBuilder.php b/framework/db/conditions/SimpleConditionBuilder.php
index 00a75115b8e..1983f52bfaf 100644
--- a/framework/db/conditions/SimpleConditionBuilder.php
+++ b/framework/db/conditions/SimpleConditionBuilder.php
@@ -1,4 +1,5 @@
type === 'timestamp' && $info['Default'] === 'SYS_TIMESTAMP' ||
+ if (
+ $column->type === 'timestamp' && $info['Default'] === 'SYS_TIMESTAMP' ||
$column->type === 'datetime' && $info['Default'] === 'SYS_DATETIME' ||
$column->type === 'date' && $info['Default'] === 'SYS_DATE' ||
$column->type === 'time' && $info['Default'] === 'SYS_TIME'
diff --git a/framework/db/cubrid/conditions/LikeConditionBuilder.php b/framework/db/cubrid/conditions/LikeConditionBuilder.php
index 80cd27173ea..89f0fe3ab88 100644
--- a/framework/db/cubrid/conditions/LikeConditionBuilder.php
+++ b/framework/db/cubrid/conditions/LikeConditionBuilder.php
@@ -1,4 +1,5 @@
hasLimit($limit)) {
if ($limit instanceof Expression) {
- $limit = '('. (string)$limit . ')';
+ $limit = '(' . (string)$limit . ')';
}
$sql = "SELECT TOP $limit * FROM ($sql) sub";
} else {
@@ -199,7 +200,7 @@ public function alterColumn($table, $column, $type)
if ($checkValue !== null) {
$sqlAfter[] = "ALTER TABLE {$tableName} ADD CONSTRAINT " .
$this->db->quoteColumnName("CK_{$constraintBase}") .
- " CHECK (" . ($defaultValue instanceof Expression ? $checkValue : new Expression($checkValue)) . ")";
+ ' CHECK (' . ($defaultValue instanceof Expression ? $checkValue : new Expression($checkValue)) . ')';
}
if ($type->isUnique()) {
@@ -307,10 +308,10 @@ protected function buildAddCommentSql($comment, $table, $column = null)
throw new InvalidArgumentException("Table not found: $table");
}
- $schemaName = $tableSchema->schemaName ? "N'" . $tableSchema->schemaName . "'": 'SCHEMA_NAME()';
- $tableName = "N" . $this->db->quoteValue($tableSchema->name);
- $columnName = $column ? "N" . $this->db->quoteValue($column) : null;
- $comment = "N" . $this->db->quoteValue($comment);
+ $schemaName = $tableSchema->schemaName ? "N'" . $tableSchema->schemaName . "'" : 'SCHEMA_NAME()';
+ $tableName = 'N' . $this->db->quoteValue($tableSchema->name);
+ $columnName = $column ? 'N' . $this->db->quoteValue($column) : null;
+ $comment = 'N' . $this->db->quoteValue($comment);
$functionParams = "
@name = N'MS_description',
@@ -373,9 +374,9 @@ protected function buildRemoveCommentSql($table, $column = null)
throw new InvalidArgumentException("Table not found: $table");
}
- $schemaName = $tableSchema->schemaName ? "N'" . $tableSchema->schemaName . "'": 'SCHEMA_NAME()';
- $tableName = "N" . $this->db->quoteValue($tableSchema->name);
- $columnName = $column ? "N" . $this->db->quoteValue($column) : null;
+ $schemaName = $tableSchema->schemaName ? "N'" . $tableSchema->schemaName . "'" : 'SCHEMA_NAME()';
+ $tableName = 'N' . $this->db->quoteValue($tableSchema->name);
+ $columnName = $column ? 'N' . $this->db->quoteValue($column) : null;
return "
IF EXISTS (
@@ -502,7 +503,7 @@ public function insert($table, $columns, &$params)
}
$quoteColumnName = $this->db->quoteColumnName($column->name);
- $cols[] = $quoteColumnName . ' ' . $dbType . ' ' . ($column->allowNull ? "NULL" : "");
+ $cols[] = $quoteColumnName . ' ' . $dbType . ' ' . ($column->allowNull ? 'NULL' : '');
$outputColumns[] = 'INSERTED.' . $quoteColumnName;
}
}
@@ -639,7 +640,7 @@ protected function extractAlias($table)
* @see https://docs.microsoft.com/sql/relational-databases/system-catalog-views/sys-objects-transact-sql
* @return string the DROP CONSTRAINTS SQL
*/
- private function dropConstraintsForColumn($table, $column, $type='')
+ private function dropConstraintsForColumn($table, $column, $type = '')
{
return "DECLARE @tableName VARCHAR(MAX) = '" . $this->db->quoteTableName($table) . "'
DECLARE @columnName VARCHAR(MAX) = '{$column}'
@@ -659,7 +660,7 @@ private function dropConstraintsForColumn($table, $column, $type='')
WHERE i.[is_unique_constraint]=1 and i.[object_id]=OBJECT_ID(@tableName)
) cons
JOIN [sys].[objects] so ON so.[object_id]=cons.[object_id]
- " . (!empty($type) ? " WHERE so.[type]='{$type}'" : "") . ")
+ " . (!empty($type) ? " WHERE so.[type]='{$type}'" : '') . ")
IF @constraintName IS NULL BREAK
EXEC (N'ALTER TABLE ' + @tableName + ' DROP CONSTRAINT [' + @constraintName + ']')
END";
@@ -672,6 +673,6 @@ private function dropConstraintsForColumn($table, $column, $type='')
public function dropColumn($table, $column)
{
return $this->dropConstraintsForColumn($table, $column) . "\nALTER TABLE " . $this->db->quoteTableName($table)
- . " DROP COLUMN " . $this->db->quoteColumnName($column);
+ . ' DROP COLUMN ' . $this->db->quoteColumnName($column);
}
}
diff --git a/framework/db/mssql/Schema.php b/framework/db/mssql/Schema.php
index 005b1555f78..a71f2e78647 100644
--- a/framework/db/mssql/Schema.php
+++ b/framework/db/mssql/Schema.php
@@ -1,4 +1,5 @@
db->getSchema()->getServerVersion(), '14', '>=');
$column = $this->createColumnSchema();
$column->name = $info['column_name'];
@@ -393,20 +395,21 @@ protected function loadColumnSchema($info)
if (isset($this->typeMap[$type])) {
$column->type = $this->typeMap[$type];
}
+
+ if ($isVersion2017orLater && $type === 'bit') {
+ $column->type = 'boolean';
+ }
+
if (!empty($matches[2])) {
$values = explode(',', $matches[2]);
$column->size = $column->precision = (int) $values[0];
+
if (isset($values[1])) {
$column->scale = (int) $values[1];
}
- if ($column->size === 1 && ($type === 'tinyint' || $type === 'bit')) {
- $column->type = 'boolean';
- } elseif ($type === 'bit') {
- if ($column->size > 32) {
- $column->type = 'bigint';
- } elseif ($column->size === 32) {
- $column->type = 'integer';
- }
+
+ if ($isVersion2017orLater === false) {
+ $column->type = $this->booleanTypeLegacy($column->size, $type);
}
}
}
@@ -431,7 +434,7 @@ protected function loadColumnSchema($info)
protected function findColumns($table)
{
$columnsTableName = 'INFORMATION_SCHEMA.COLUMNS';
- $whereSql = "[t1].[table_name] = " . $this->db->quoteValue($table->name);
+ $whereSql = '[t1].[table_name] = ' . $this->db->quoteValue($table->name);
if ($table->catalogName !== null) {
$columnsTableName = "{$table->catalogName}.{$columnsTableName}";
$whereSql .= " AND [t1].[table_catalog] = '{$table->catalogName}'";
@@ -813,4 +816,27 @@ public function createColumnSchemaBuilder($type, $length = null)
{
return Yii::createObject(ColumnSchemaBuilder::className(), [$type, $length, $this->db]);
}
+
+ /**
+ * Assigns a type boolean for the column type bit, for legacy versions of MSSQL.
+ *
+ * @param int $size column size.
+ * @param string $type column type.
+ *
+ * @return string column type.
+ */
+ private function booleanTypeLegacy($size, $type)
+ {
+ if ($size === 1 && ($type === 'tinyint' || $type === 'bit')) {
+ return 'boolean';
+ } elseif ($type === 'bit') {
+ if ($size > 32) {
+ return 'bigint';
+ } elseif ($size === 32) {
+ return 'integer';
+ }
+ }
+
+ return $type;
+ }
}
diff --git a/framework/db/mssql/SqlsrvPDO.php b/framework/db/mssql/SqlsrvPDO.php
index 4285e220df0..ed8139eefad 100644
--- a/framework/db/mssql/SqlsrvPDO.php
+++ b/framework/db/mssql/SqlsrvPDO.php
@@ -1,4 +1,5 @@
getColumnDefinition($table, $column)));
+ $definition = trim(preg_replace("/COMMENT '(?:''|[^'])*'/i", '', $this->getColumnDefinition($table, $column)));
$checkRegex = '/CHECK *(\(([^()]|(?-2))*\))/';
$check = preg_match($checkRegex, $definition, $checkMatches);
diff --git a/framework/db/mysql/Schema.php b/framework/db/mysql/Schema.php
index fa2270eb77d..6f8a2eb3ef7 100644
--- a/framework/db/mysql/Schema.php
+++ b/framework/db/mysql/Schema.php
@@ -1,4 +1,5 @@
type, ['timestamp', 'datetime', 'date', 'time'])
+ if (
+ in_array($column->type, ['timestamp', 'datetime', 'date', 'time'])
&& isset($info['default'])
- && preg_match('/^current_timestamp(?:\(([0-9]*)\))?$/i', $info['default'], $matches)) {
+ && preg_match('/^current_timestamp(?:\(([0-9]*)\))?$/i', $info['default'], $matches)
+ ) {
$column->defaultValue = new Expression('CURRENT_TIMESTAMP' . (!empty($matches[1]) ? '(' . $matches[1] . ')' : ''));
} elseif (isset($type) && $type === 'bit') {
$column->defaultValue = bindec(trim(isset($info['default']) ? $info['default'] : '', 'b\''));
diff --git a/framework/db/oci/ColumnSchemaBuilder.php b/framework/db/oci/ColumnSchemaBuilder.php
index dcb5ff21ef8..b104588c4cd 100644
--- a/framework/db/oci/ColumnSchemaBuilder.php
+++ b/framework/db/oci/ColumnSchemaBuilder.php
@@ -1,4 +1,5 @@
primaryKey)>1) {
+ if (count($tableSchema->primaryKey) > 1) {
throw new InvalidArgumentException("Can't reset sequence for composite primary key in table: $table");
}
// use master connection to get the biggest PK value
$value = $this->db->useMaster(function (Connection $db) use ($tableSchema) {
return $db->createCommand(
- 'SELECT MAX("' . $tableSchema->primaryKey[0] . '") FROM "'. $tableSchema->name . '"'
+ 'SELECT MAX("' . $tableSchema->primaryKey[0] . '") FROM "' . $tableSchema->name . '"'
)->queryScalar();
}) + 1;
}
diff --git a/framework/db/oci/Schema.php b/framework/db/oci/Schema.php
index e0e4c05e2da..6234bfa490d 100644
--- a/framework/db/oci/Schema.php
+++ b/framework/db/oci/Schema.php
@@ -1,4 +1,5 @@
getType(), $expression->getDimension()-1);
+ return new $expressionClass($value, $expression->getType(), $expression->getDimension() - 1);
}
/**
diff --git a/framework/db/pgsql/ArrayParser.php b/framework/db/pgsql/ArrayParser.php
index 50a204e3c5d..e50ee3b7cda 100644
--- a/framework/db/pgsql/ArrayParser.php
+++ b/framework/db/pgsql/ArrayParser.php
@@ -1,4 +1,5 @@
* @author Dmytro Naumenko
* @since 2.0.14
+ * @phpcs:disable Squiz.NamingConventions.ValidVariableName.PrivateNoUnderscore
*/
class ArrayParser
{
diff --git a/framework/db/pgsql/ColumnSchema.php b/framework/db/pgsql/ColumnSchema.php
index 33d97bbdf55..533e333e7b8 100644
--- a/framework/db/pgsql/ColumnSchema.php
+++ b/framework/db/pgsql/ColumnSchema.php
@@ -1,4 +1,5 @@
db->quoteTableName($name);
@@ -435,7 +437,7 @@ private function oldUpsert($table, $insertColumns, $updateColumns, &$params)
list($updates, $params) = $this->prepareUpdateSets($table, $updateColumns, $params);
$updateSql = 'UPDATE ' . $this->db->quoteTableName($table) . ' SET ' . implode(', ', $updates)
. ' FROM "EXCLUDED" ' . $this->buildWhere($updateCondition, $params)
- . ' RETURNING ' . $this->db->quoteTableName($table) .'.*';
+ . ' RETURNING ' . $this->db->quoteTableName($table) . '.*';
$selectUpsertSubQuery = (new Query())
->select(new Expression('1'))
->from('upsert')
diff --git a/framework/db/pgsql/Schema.php b/framework/db/pgsql/Schema.php
index 154e01a3808..4b3604cf3bf 100644
--- a/framework/db/pgsql/Schema.php
+++ b/framework/db/pgsql/Schema.php
@@ -1,4 +1,5 @@
allowNull = $info['is_nullable'];
$column->autoIncrement = $info['is_autoinc'];
$column->comment = $info['column_comment'];
- if ($info['type_scheme'] !== null && !in_array($info['type_scheme'], [$this->defaultSchema, 'pg_catalog'], true)
- ) {
+ if ($info['type_scheme'] !== null && !in_array($info['type_scheme'], [$this->defaultSchema, 'pg_catalog'], true)) {
$column->dbType = $info['type_scheme'] . '.' . $info['data_type'];
} else {
$column->dbType = $info['data_type'];
diff --git a/framework/db/sqlite/ColumnSchemaBuilder.php b/framework/db/sqlite/ColumnSchemaBuilder.php
index d9853b08ab3..7f3444d3d36 100644
--- a/framework/db/sqlite/ColumnSchemaBuilder.php
+++ b/framework/db/sqlite/ColumnSchemaBuilder.php
@@ -1,4 +1,5 @@
isBuiltin();
}
-
} else {
$class = $param->getClass();
$isClass = $class !== null;
diff --git a/framework/di/Instance.php b/framework/di/Instance.php
index 39bd801b354..458b01f274c 100644
--- a/framework/di/Instance.php
+++ b/framework/di/Instance.php
@@ -1,4 +1,5 @@
matchAction($action)
+ if (
+ $this->matchAction($action)
&& $this->matchRole($user)
&& $this->matchIP($request->getUserIP())
&& $this->matchVerb($request->getMethod())
diff --git a/framework/filters/AjaxFilter.php b/framework/filters/AjaxFilter.php
index 02b3d7ebf0e..a950946df95 100644
--- a/framework/filters/AjaxFilter.php
+++ b/framework/filters/AjaxFilter.php
@@ -1,4 +1,5 @@
filterAttribute === null) {
+ if ($this->filterAttribute === null) {
$this->filterAttribute = $this->attribute;
}
}
@@ -150,8 +151,10 @@ protected function renderHeaderCellContent()
$label = Html::encode($label);
}
- if ($this->attribute !== null && $this->enableSorting &&
- ($sort = $this->grid->dataProvider->getSort()) !== false && $sort->hasAttribute($this->attribute)) {
+ if (
+ $this->attribute !== null && $this->enableSorting &&
+ ($sort = $this->grid->dataProvider->getSort()) !== false && $sort->hasAttribute($this->attribute)
+ ) {
return $sort->link($this->attribute, array_merge($this->sortLinkOptions, ['label' => $label]));
}
diff --git a/framework/grid/GridView.php b/framework/grid/GridView.php
index 7ee0e06bbc0..fc37be02859 100644
--- a/framework/grid/GridView.php
+++ b/framework/grid/GridView.php
@@ -1,4 +1,5 @@
language` will be used.
* @return string The converted date format pattern.
+ * @throws \Exception
*/
public static function convertDateIcuToPhp($pattern, $type = 'date', $locale = null)
{
if (isset(self::$_icuShortFormats[$pattern])) {
if (extension_loaded('intl')) {
- if ($locale === null) {
- $locale = Yii::$app->language;
- }
- if ($type === 'date') {
- $formatter = new IntlDateFormatter($locale, self::$_icuShortFormats[$pattern], IntlDateFormatter::NONE);
- } elseif ($type === 'time') {
- $formatter = new IntlDateFormatter($locale, IntlDateFormatter::NONE, self::$_icuShortFormats[$pattern]);
- } else {
- $formatter = new IntlDateFormatter($locale, self::$_icuShortFormats[$pattern], self::$_icuShortFormats[$pattern]);
- }
- $pattern = $formatter->getPattern();
+ $pattern = self::createFormatter($locale, $type, $pattern);
} else {
return static::$phpFallbackDatePatterns[$pattern][$type];
}
@@ -249,53 +241,53 @@ public static function convertDatePhpToIcu($pattern)
"'" => "''''", // single `'` should be encoded as `''`, which internally should be encoded as `''''`
// Day
'\d' => "'d'",
- 'd' => 'dd', // Day of the month, 2 digits with leading zeros 01 to 31
+ 'd' => 'dd', // Day of the month, 2 digits with leading zeros — 01 to 31
'\D' => "'D'",
- 'D' => 'eee', // A textual representation of a day, three letters Mon through Sun
+ 'D' => 'eee', // A textual representation of a day, three letters — Mon through Sun
'\j' => "'j'",
- 'j' => 'd', // Day of the month without leading zeros 1 to 31
+ 'j' => 'd', // Day of the month without leading zeros — 1 to 31
'\l' => "'l'",
- 'l' => 'eeee', // A full textual representation of the day of the week Sunday through Saturday
+ 'l' => 'eeee', // A full textual representation of the day of the week — Sunday through Saturday
'\N' => "'N'",
'N' => 'e', // ISO-8601 numeric representation of the day of the week, 1 (for Monday) through 7 (for Sunday)
'\S' => "'S'",
- 'S' => '', // English ordinal suffix for the day of the month, 2 characters st, nd, rd or th. Works well with j
+ 'S' => '', // English ordinal suffix for the day of the month, 2 characters — st, nd, rd or th. Works well with j
'\w' => "'w'",
- 'w' => '', // Numeric representation of the day of the week 0 (for Sunday) through 6 (for Saturday)
+ 'w' => '', // Numeric representation of the day of the week — 0 (for Sunday) through 6 (for Saturday)
'\z' => "'z'",
- 'z' => 'D', // The day of the year (starting from 0) 0 through 365
+ 'z' => 'D', // The day of the year (starting from 0) — 0 through 365
// Week
'\W' => "'W'",
- 'W' => 'w', // ISO-8601 week number of year, weeks starting on Monday (added in PHP 4.1.0) Example: 42 (the 42nd week in the year)
+ 'W' => 'w', // ISO-8601 week number of year, weeks starting on Monday (added in PHP 4.1.0) — Example: 42 (the 42nd week in the year)
// Month
'\F' => "'F'",
'F' => 'MMMM', // A full textual representation of a month, January through December
'\m' => "'m'",
- 'm' => 'MM', // Numeric representation of a month, with leading zeros 01 through 12
+ 'm' => 'MM', // Numeric representation of a month, with leading zeros — 01 through 12
'\M' => "'M'",
- 'M' => 'MMM', // A short textual representation of a month, three letters Jan through Dec
+ 'M' => 'MMM', // A short textual representation of a month, three letters — Jan through Dec
'\n' => "'n'",
- 'n' => 'M', // Numeric representation of a month, without leading zeros 1 through 12, not supported by ICU but we fallback to "with leading zero"
+ 'n' => 'M', // Numeric representation of a month, without leading zeros — 1 through 12, not supported by ICU but we fallback to "with leading zero"
'\t' => "'t'",
- 't' => '', // Number of days in the given month 28 through 31
+ 't' => '', // Number of days in the given month — 28 through 31
// Year
'\L' => "'L'",
'L' => '', // Whether it's a leap year, 1 if it is a leap year, 0 otherwise.
'\o' => "'o'",
'o' => 'Y', // ISO-8601 year number. This has the same value as Y, except that if the ISO week number (W) belongs to the previous or next year, that year is used instead.
'\Y' => "'Y'",
- 'Y' => 'yyyy', // A full numeric representation of a year, 4 digits Examples: 1999 or 2003
+ 'Y' => 'yyyy', // A full numeric representation of a year, 4 digits — Examples: 1999 or 2003
'\y' => "'y'",
- 'y' => 'yy', // A two digit representation of a year Examples: 99 or 03
+ 'y' => 'yy', // A two digit representation of a year — Examples: 99 or 03
// Time
'\a' => "'a'",
'a' => 'a', // Lowercase Ante meridiem and Post meridiem, am or pm
'\A' => "'A'",
'A' => 'a', // Uppercase Ante meridiem and Post meridiem, AM or PM, not supported by ICU but we fallback to lowercase
'\B' => "'B'",
- 'B' => '', // Swatch Internet time 000 through 999
+ 'B' => '', // Swatch Internet time — 000 through 999
'\g' => "'g'",
- 'g' => 'h', // 12-hour format of an hour without leading zeros 1 through 12
+ 'g' => 'h', // 12-hour format of an hour without leading zeros — 1 through 12
'\G' => "'G'",
'G' => 'H', // 24-hour format of an hour without leading zeros 0 to 23h
'\h' => "'h'",
@@ -303,9 +295,9 @@ public static function convertDatePhpToIcu($pattern)
'\H' => "'H'",
'H' => 'HH', // 24-hour format of an hour with leading zeros, 00 to 23 h
'\i' => "'i'",
- 'i' => 'mm', // Minutes with leading zeros 00 to 59
+ 'i' => 'mm', // Minutes with leading zeros — 00 to 59
'\s' => "'s'",
- 's' => 'ss', // Seconds, with leading zeros 00 through 59
+ 's' => 'ss', // Seconds, with leading zeros — 00 through 59
'\u' => "'u'",
'u' => '', // Microseconds. Example: 654321
// Timezone
@@ -350,22 +342,13 @@ public static function convertDatePhpToIcu($pattern)
* @param string|null $locale the locale to use for converting ICU short patterns `short`, `medium`, `long` and `full`.
* If not given, `Yii::$app->language` will be used.
* @return string The converted date format pattern.
+ * @throws \Exception
*/
public static function convertDateIcuToJui($pattern, $type = 'date', $locale = null)
{
if (isset(self::$_icuShortFormats[$pattern])) {
if (extension_loaded('intl')) {
- if ($locale === null) {
- $locale = Yii::$app->language;
- }
- if ($type === 'date') {
- $formatter = new IntlDateFormatter($locale, self::$_icuShortFormats[$pattern], IntlDateFormatter::NONE);
- } elseif ($type === 'time') {
- $formatter = new IntlDateFormatter($locale, IntlDateFormatter::NONE, self::$_icuShortFormats[$pattern]);
- } else {
- $formatter = new IntlDateFormatter($locale, self::$_icuShortFormats[$pattern], self::$_icuShortFormats[$pattern]);
- }
- $pattern = $formatter->getPattern();
+ $pattern = self::createFormatter($locale, $type, $pattern);
} else {
return static::$juiFallbackDatePatterns[$pattern][$type];
}
@@ -500,37 +483,37 @@ public static function convertDatePhpToJui($pattern)
// https://www.php.net/manual/en/function.date
return strtr($pattern, [
// Day
- 'd' => 'dd', // Day of the month, 2 digits with leading zeros 01 to 31
- 'D' => 'D', // A textual representation of a day, three letters Mon through Sun
- 'j' => 'd', // Day of the month without leading zeros 1 to 31
- 'l' => 'DD', // A full textual representation of the day of the week Sunday through Saturday
+ 'd' => 'dd', // Day of the month, 2 digits with leading zeros — 01 to 31
+ 'D' => 'D', // A textual representation of a day, three letters — Mon through Sun
+ 'j' => 'd', // Day of the month without leading zeros — 1 to 31
+ 'l' => 'DD', // A full textual representation of the day of the week — Sunday through Saturday
'N' => '', // ISO-8601 numeric representation of the day of the week, 1 (for Monday) through 7 (for Sunday)
- 'S' => '', // English ordinal suffix for the day of the month, 2 characters st, nd, rd or th. Works well with j
- 'w' => '', // Numeric representation of the day of the week 0 (for Sunday) through 6 (for Saturday)
- 'z' => 'o', // The day of the year (starting from 0) 0 through 365
+ 'S' => '', // English ordinal suffix for the day of the month, 2 characters — st, nd, rd or th. Works well with j
+ 'w' => '', // Numeric representation of the day of the week — 0 (for Sunday) through 6 (for Saturday)
+ 'z' => 'o', // The day of the year (starting from 0) — 0 through 365
// Week
- 'W' => '', // ISO-8601 week number of year, weeks starting on Monday (added in PHP 4.1.0) Example: 42 (the 42nd week in the year)
+ 'W' => '', // ISO-8601 week number of year, weeks starting on Monday (added in PHP 4.1.0) — Example: 42 (the 42nd week in the year)
// Month
'F' => 'MM', // A full textual representation of a month, January through December
- 'm' => 'mm', // Numeric representation of a month, with leading zeros 01 through 12
- 'M' => 'M', // A short textual representation of a month, three letters Jan through Dec
- 'n' => 'm', // Numeric representation of a month, without leading zeros 1 through 12
- 't' => '', // Number of days in the given month 28 through 31
+ 'm' => 'mm', // Numeric representation of a month, with leading zeros — 01 through 12
+ 'M' => 'M', // A short textual representation of a month, three letters — Jan through Dec
+ 'n' => 'm', // Numeric representation of a month, without leading zeros — 1 through 12
+ 't' => '', // Number of days in the given month — 28 through 31
// Year
'L' => '', // Whether it's a leap year, 1 if it is a leap year, 0 otherwise.
'o' => '', // ISO-8601 year number. This has the same value as Y, except that if the ISO week number (W) belongs to the previous or next year, that year is used instead.
- 'Y' => 'yy', // A full numeric representation of a year, 4 digits Examples: 1999 or 2003
- 'y' => 'y', // A two digit representation of a year Examples: 99 or 03
+ 'Y' => 'yy', // A full numeric representation of a year, 4 digits — Examples: 1999 or 2003
+ 'y' => 'y', // A two digit representation of a year — Examples: 99 or 03
// Time
'a' => '', // Lowercase Ante meridiem and Post meridiem, am or pm
'A' => '', // Uppercase Ante meridiem and Post meridiem, AM or PM, not supported by ICU but we fallback to lowercase
- 'B' => '', // Swatch Internet time 000 through 999
- 'g' => '', // 12-hour format of an hour without leading zeros 1 through 12
+ 'B' => '', // Swatch Internet time — 000 through 999
+ 'g' => '', // 12-hour format of an hour without leading zeros — 1 through 12
'G' => '', // 24-hour format of an hour without leading zeros 0 to 23h
'h' => '', // 12-hour format of an hour with leading zeros, 01 to 12 h
'H' => '', // 24-hour format of an hour with leading zeros, 00 to 23 h
- 'i' => '', // Minutes with leading zeros 00 to 59
- 's' => '', // Seconds, with leading zeros 00 through 59
+ 'i' => '', // Minutes with leading zeros — 00 to 59
+ 's' => '', // Seconds, with leading zeros — 00 through 59
'u' => '', // Microseconds. Example: 654321
// Timezone
'e' => '', // Timezone identifier. Examples: UTC, GMT, Atlantic/Azores
@@ -545,4 +528,32 @@ public static function convertDatePhpToJui($pattern)
'U' => '@', // Seconds since the Unix Epoch (January 1 1970 00:00:00 GMT)
]);
}
+
+ /**
+ * Creates a date/time formatter based on the given parameters.
+ *
+ * @param string|null $locale The locale to be used. If null, the application's current language will be used.
+ * @param string $type The type of formatter ('date', 'time', etc.)
+ * @param string $pattern The pattern for the IntlDateFormatter.
+ *
+ * @return string The resulting pattern after formatter creation.
+ *
+ * @throws \Exception If the 'intl' extension is not loaded.
+ */
+ private static function createFormatter($locale, $type, $pattern)
+ {
+ if ($locale === null) {
+ $locale = Yii::$app->language;
+ }
+
+ if ($type === 'date') {
+ $formatter = new IntlDateFormatter($locale, self::$_icuShortFormats[$pattern], IntlDateFormatter::NONE);
+ } elseif ($type === 'time') {
+ $formatter = new IntlDateFormatter($locale, IntlDateFormatter::NONE, self::$_icuShortFormats[$pattern]);
+ } else {
+ $formatter = new IntlDateFormatter($locale, self::$_icuShortFormats[$pattern], self::$_icuShortFormats[$pattern]);
+ }
+
+ return $formatter->getPattern();
+ }
}
diff --git a/framework/helpers/BaseHtml.php b/framework/helpers/BaseHtml.php
index 45812e4165b..0eab768e6e9 100644
--- a/framework/helpers/BaseHtml.php
+++ b/framework/helpers/BaseHtml.php
@@ -1,4 +1,5 @@
getView();
+ if ($view instanceof \yii\web\View && !empty($view->scriptOptions)) {
+ $options = array_merge($view->scriptOptions, $options);
+ }
+
return static::tag('script', $content, $options);
}
@@ -1260,6 +1266,7 @@ public static function activeHint($model, $attribute, $options = [])
* - showAllErrors: boolean, if set to true every error message for each attribute will be shown otherwise
* only the first error message for each attribute will be shown. Defaults to `false`.
* Option is available since 2.0.10.
+ * - emptyClass: string, the class name that is added to an empty summary.
*
* The rest of the options will be rendered as the attributes of the container tag.
*
@@ -1271,12 +1278,17 @@ public static function errorSummary($models, $options = [])
$footer = ArrayHelper::remove($options, 'footer', '');
$encode = ArrayHelper::remove($options, 'encode', true);
$showAllErrors = ArrayHelper::remove($options, 'showAllErrors', false);
+ $emptyClass = ArrayHelper::remove($options, 'emptyClass', null);
unset($options['header']);
$lines = self::collectErrors($models, $encode, $showAllErrors);
if (empty($lines)) {
// still render the placeholder for client-side validation use
$content = '
';
}
diff --git a/framework/helpers/BaseHtmlPurifier.php b/framework/helpers/BaseHtmlPurifier.php
index 2397bff57ad..f707baabaf4 100644
--- a/framework/helpers/BaseHtmlPurifier.php
+++ b/framework/helpers/BaseHtmlPurifier.php
@@ -1,4 +1,5 @@
charset : 'UTF-8';
}
-
}
diff --git a/framework/helpers/BaseIpHelper.php b/framework/helpers/BaseIpHelper.php
index 5ab73a63106..98b97ddd56a 100644
--- a/framework/helpers/BaseIpHelper.php
+++ b/framework/helpers/BaseIpHelper.php
@@ -1,4 +1,5 @@
= $strLength || $start < -$strLength) {
+ return $string;
+ }
+
+ $masked = mb_substr($string, 0, $start, 'UTF-8');
+ $masked .= str_repeat($mask, abs($length));
+ $masked .= mb_substr($string, $start + abs($length), null, 'UTF-8');
+
+ return $masked;
+ }
+
+ /**
+ * Returns the portion of the string that lies between the first occurrence of the start string
+ * and the last occurrence of the end string after that.
+ *
+ * @param string $string The input string.
+ * @param string $start The string marking the start of the portion to extract.
+ * @param string $end The string marking the end of the portion to extract.
+ * @return string|null The portion of the string between the first occurrence of
+ * start and the last occurrence of end, or null if either start or end cannot be found.
+ */
+ public static function findBetween($string, $start, $end)
+ {
+ $startPos = mb_strpos($string, $start);
+
+ if ($startPos === false) {
+ return null;
+ }
+
+ $startPos += mb_strlen($start);
+ $endPos = mb_strrpos($string, $end, $startPos);
+
+ if ($endPos === false) {
+ return null;
+ }
+
+ return mb_substr($string, $startPos, $endPos - $startPos);
+ }
}
diff --git a/framework/helpers/BaseUrl.php b/framework/helpers/BaseUrl.php
index a671123c7cd..7122b9e17b9 100644
--- a/framework/helpers/BaseUrl.php
+++ b/framework/helpers/BaseUrl.php
@@ -1,4 +1,5 @@
'application/rtf',
'text/xml' => 'application/xml',
diff --git a/framework/helpers/mimeExtensions.php b/framework/helpers/mimeExtensions.php
index 946d61cd0c5..8247ff28297 100644
--- a/framework/helpers/mimeExtensions.php
+++ b/framework/helpers/mimeExtensions.php
@@ -1,4 +1,5 @@
'ez',
'application/applixware' => 'aw',
diff --git a/framework/helpers/mimeTypes.php b/framework/helpers/mimeTypes.php
index e91f80f95f8..c5ddb934900 100644
--- a/framework/helpers/mimeTypes.php
+++ b/framework/helpers/mimeTypes.php
@@ -1,4 +1,5 @@
'application/vnd.lotus-1-2-3',
'3dml' => 'text/vnd.in3d.3dml',
@@ -1005,7 +1010,7 @@
# fix for bundled libmagic bug, see also https://github.com/yiisoft/yii2/issues/19925
if ((PHP_VERSION_ID >= 80100 && PHP_VERSION_ID < 80122) || (PHP_VERSION_ID >= 80200 && PHP_VERSION_ID < 80209)) {
- $mimeTypes = array_replace($mimeTypes, array('xz' => 'application/octet-stream'));
+ $mimeTypes = array_replace($mimeTypes, ['xz' => 'application/octet-stream']);
}
return $mimeTypes;
diff --git a/framework/i18n/DbMessageSource.php b/framework/i18n/DbMessageSource.php
index 0686291d2a7..155cbc3eccc 100644
--- a/framework/i18n/DbMessageSource.php
+++ b/framework/i18n/DbMessageSource.php
@@ -1,4 +1,5 @@
defaultTimeZone))
+ new DateTimeZone($this->defaultTimeZone)
+ )
) !== false
) { // try Y-m-d format (support invalid dates like 2012-13-01)
return $checkDateTimeInfo ? [$timestamp, false, true] : $timestamp;
@@ -891,7 +893,8 @@ protected function normalizeDatetimeValue($value, $checkDateTimeInfo = false)
($timestamp = DateTime::createFromFormat(
'Y-m-d H:i:s',
$value,
- new DateTimeZone($this->defaultTimeZone))
+ new DateTimeZone($this->defaultTimeZone)
+ )
) !== false
) { // try Y-m-d H:i:s format (support invalid dates like 2012-13-01 12:63:12)
return $checkDateTimeInfo ? [$timestamp, true, true] : $timestamp;
@@ -1056,7 +1059,7 @@ public function asDuration($value, $implodeString = ', ', $negativeSign = '-')
} elseif (is_numeric($value)) {
$isNegative = $value < 0;
$zeroDateTime = (new DateTime())->setTimestamp(0);
- $valueDateTime = (new DateTime())->setTimestamp(abs($value));
+ $valueDateTime = (new DateTime())->setTimestamp(abs((int) $value));
$interval = $valueDateTime->diff($zeroDateTime);
} elseif (strncmp($value, 'P-', 2) === 0) {
$interval = new DateInterval('P' . substr($value, 2));
diff --git a/framework/i18n/GettextFile.php b/framework/i18n/GettextFile.php
index 6e320348c31..519d9e1571c 100644
--- a/framework/i18n/GettextFile.php
+++ b/framework/i18n/GettextFile.php
@@ -1,4 +1,5 @@
bindValues([
+ if (
+ $command->bindValues([
':level' => $level,
':category' => $category,
':log_time' => $timestamp,
':prefix' => $this->getMessagePrefix($message),
':message' => $text,
- ])->execute() > 0) {
+ ])->execute() > 0
+ ) {
continue;
}
throw new LogRuntimeException('Unable to export log through database!');
diff --git a/framework/log/Dispatcher.php b/framework/log/Dispatcher.php
index 11b6b0016a9..c913bc0873f 100644
--- a/framework/log/Dispatcher.php
+++ b/framework/log/Dispatcher.php
@@ -1,4 +1,5 @@
messages)) . "\n";
- $trimmedText = trim($text);
- if (empty($trimmedText)) {
+ if (trim($text) === '') {
return; // No messages to export, so we exit the function early
}
diff --git a/framework/log/LogRuntimeException.php b/framework/log/LogRuntimeException.php
index 609f3cde478..4271b976bc0 100644
--- a/framework/log/LogRuntimeException.php
+++ b/framework/log/LogRuntimeException.php
@@ -1,4 +1,5 @@
dbTargets === []) {
+ if ($this->_dbTargets === []) {
$log = Yii::$app->getLog();
$usedTargets = [];
@@ -45,17 +46,17 @@ protected function getDbTargets()
if (!in_array($currentTarget, $usedTargets, true)) {
// do not create same table twice
$usedTargets[] = $currentTarget;
- $this->dbTargets[] = $target;
+ $this->_dbTargets[] = $target;
}
}
}
- if ($this->dbTargets === []) {
+ if ($this->_dbTargets === []) {
throw new InvalidConfigException('You should configure "log" component to use one or more database targets before executing this migration.');
}
}
- return $this->dbTargets;
+ return $this->_dbTargets;
}
public function up()
diff --git a/framework/mail/BaseMailer.php b/framework/mail/BaseMailer.php
index c5f76fb7538..f07bfa4f87e 100644
--- a/framework/mail/BaseMailer.php
+++ b/framework/mail/BaseMailer.php
@@ -1,4 +1,5 @@
mailer === null) {
$mailer = Yii::$app->getMailer();
diff --git a/framework/mail/MailEvent.php b/framework/mail/MailEvent.php
index 641f71ae10e..2e4dd9cc0ed 100644
--- a/framework/mail/MailEvent.php
+++ b/framework/mail/MailEvent.php
@@ -1,4 +1,5 @@
' en ',
'"{attribute}" does not support operator "{operator}".' => '"{attribute}" ondersteun nie operateur "{operator}" nie.',
'(not set)' => '(nie gestel nie)',
+ 'Action not found.' => '',
+ 'Aliases available: {aliases}' => '',
'An internal server error occurred.' => '\'n Interne bediener fout het plaasgevind.',
'Are you sure you want to delete this item?' => 'Is jy seker jy wil hierdie item skrap?',
'Condition for "{attribute}" should be either a value or valid operator specification.' => 'Voorwaarde vir "{attribute}" moet óf \'n waarde, óf \'n geldige operateurspesifikasie wees.',
@@ -43,10 +46,10 @@
'Only files with these extensions are allowed: {extensions}.' => 'Slegs hierdie soort lêers word toegelaat: {extensions}.',
'Operator "{operator}" must be used with a search attribute.' => 'Operateur "{operator}" moet gebruik word met \'n soekkenmerk.',
'Operator "{operator}" requires multiple operands.' => 'Operateur "{operator}" vereis veelvuldige operande.',
+ 'Options available: {options}' => '',
'Page not found.' => 'Bladsy nie gevind nie.',
'Please fix the following errors:' => 'Maak asseblief die volgende foute reg:',
'Please upload a file.' => 'Laai asseblief \'n lêer op.',
- 'Powered by {yii}' => 'Aangedryf deur {yii}',
'Showing {begin, number}-{end, number} of {totalCount, number} {totalCount, plural, one{item} other{items}}.' => '',
'The combination {values} of {attributes} has already been taken.' => 'Die kombinasie {values} van {attributes} is reeds geneem.',
'The file "{file}" is not an image.' => 'Die lêer "{file}" is nie \'n prent nie.',
@@ -68,7 +71,6 @@
'Update' => 'Opdateer',
'View' => 'Beskou',
'Yes' => 'Ja',
- 'Yii Framework' => 'Yii Raamwerk',
'You are not allowed to perform this action.' => 'Jy mag nie hierdie aksie uitvoer nie.',
'You can upload at most {limit, number} {limit, plural, one{file} other{files}}.' => 'Jy kan \'n maksimum van {limit, number} {limit, plural, one{lêer} other{lêers}} oplaai.',
'You should upload at least {limit, number} {limit, plural, one{file} other{files}}.' => 'Jy moet ten minste {limit, number} {limit, plural, one{lêer} other{lêers}} oplaai.',
@@ -108,6 +110,7 @@
'{attribute} should contain at least {min, number} {min, plural, one{character} other{characters}}.' => '{attribute} moet ten minste {min, number} {min, plural, one{karakter} other{karakters}} bevat.',
'{attribute} should contain at most {max, number} {max, plural, one{character} other{characters}}.' => '{attribute} moet hoogstens {max, number} {max, plural, one{karakter} other{karakters}} bevat.',
'{attribute} should contain {length, number} {length, plural, one{character} other{characters}}.' => '{attribute} moet {length, number} {length, plural, one{karakter} other{karakters}} bevat.',
+ '{compareAttribute} is invalid.' => '',
'{delta, plural, =1{1 day} other{# days}}' => '{delta, plural, =1{1 dag} other{# dae}}',
'{delta, plural, =1{1 hour} other{# hours}}' => '{delta} uur',
'{delta, plural, =1{1 minute} other{# minutes}}' => '{delta, plural, =1{1 minuut} other{# minute}}',
@@ -123,7 +126,6 @@
'{nFormatted} B' => '{nFormatted} B',
'{nFormatted} GB' => '{nFormatted} GB',
'{nFormatted} GiB' => '{nFormatted} GiB',
- '{nFormatted} kB' => '{nFormatted} KB',
'{nFormatted} KiB' => '{nFormatted} KiB',
'{nFormatted} MB' => '{nFormatted} MB',
'{nFormatted} MiB' => '{nFormatted} MiB',
@@ -131,6 +133,7 @@
'{nFormatted} PiB' => '{nFormatted} PiB',
'{nFormatted} TB' => '{nFormatted} TB',
'{nFormatted} TiB' => '{nFormatted} TiB',
+ '{nFormatted} kB' => '{nFormatted} KB',
'{nFormatted} {n, plural, =1{byte} other{bytes}}' => '{nFormatted} {n, plural, =1{greep} other{grepe}}',
'{nFormatted} {n, plural, =1{gibibyte} other{gibibytes}}' => '{nFormatted} {n, plural, =1{gibigreep} other{gibigrepe}}',
'{nFormatted} {n, plural, =1{gigabyte} other{gigabytes}}' => '{nFormatted} {n, plural, =1{gigagreep} other{gigagrepe}}',
diff --git a/framework/messages/ar/yii.php b/framework/messages/ar/yii.php
index f300954a31c..25d0623c494 100644
--- a/framework/messages/ar/yii.php
+++ b/framework/messages/ar/yii.php
@@ -1,4 +1,5 @@
'',
+ '"{attribute}" does not support operator "{operator}".' => '',
'(not set)' => '(لم يحدد)',
+ 'Action not found.' => '',
+ 'Aliases available: {aliases}' => '',
'An internal server error occurred.' => '.حدث خطأ داخلي في الخادم',
+ 'Are you sure you want to delete this item?' => '',
+ 'Condition for "{attribute}" should be either a value or valid operator specification.' => '',
'Delete' => 'حذف',
'Error' => 'خطأ',
'File upload failed.' => '.فشل في تحميل الملف',
@@ -34,65 +41,91 @@
'Missing required arguments: {params}' => 'البيانات المطلوبة ضرورية: {params}',
'Missing required parameters: {params}' => 'البيانات المطلوبة ضرورية: {params}',
'No' => 'لا',
- 'No help for unknown command "{command}".' => 'ليس هناك مساعدة لأمر غير معروف "{command}".',
- 'No help for unknown sub-command "{command}".' => 'ليس هناك مساعدة لأمر فرعي غير معروف "{command}".',
'No results found.' => 'لم يتم العثور على نتائج',
- 'Only files with these extensions are allowed: {extensions}.' => 'فقط الملفات التي تحمل هذه الصيغ مسموح بها: {extensions}.',
'Only files with these MIME types are allowed: {mimeTypes}.' => 'فقط الملفات من هذه الأنواع مسموح بها: {mimeTypes}.',
+ 'Only files with these extensions are allowed: {extensions}.' => 'فقط الملفات التي تحمل هذه الصيغ مسموح بها: {extensions}.',
+ 'Operator "{operator}" must be used with a search attribute.' => '',
+ 'Operator "{operator}" requires multiple operands.' => '',
+ 'Options available: {options}' => '',
'Page not found.' => 'لم يتم العثور على الصفحة',
'Please fix the following errors:' => 'الرجاء تصحيح الأخطاء التالية:',
'Please upload a file.' => 'الرجاء تحميل ملف.',
'Showing {begin, number}-{end, number} of {totalCount, number} {totalCount, plural, one{item} other{items}}.' => 'عرض {begin, number}-{end, number} من أصل {totalCount, number} {totalCount, plural, one{مُدخل} few{مُدخلات} many{مُدخل} other{مُدخلات}}.',
+ 'The combination {values} of {attributes} has already been taken.' => '',
'The file "{file}" is not an image.' => 'الملف "{file}" ليس صورة.',
'The file "{file}" is too big. Its size cannot exceed {formattedLimit}.' => 'الملف "{file}" كبير الحجم. حجمه لا يجب أن يتخطى {formattedLimit}.',
'The file "{file}" is too small. Its size cannot be smaller than {formattedLimit}.' => 'الملف "{file}" صغير جداً. حجمه لا يجب أن يكون أصغر من {formattedLimit}.',
'The format of {attribute} is invalid.' => 'شكل {attribute} غير صالح',
+ 'The format of {filter} is invalid.' => '',
'The image "{file}" is too large. The height cannot be larger than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'الصورة "{file}" كبيرة جداً. ارتفاعها لا يمكن أن يتخطى {limit, number} {limit, plural, other{بكسل}}.',
'The image "{file}" is too large. The width cannot be larger than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'الصورة "{file}" كبيرة جداً. عرضها لا يمكن أن يتخطى {limit, number} {limit, plural, other{بكسل}}.',
'The image "{file}" is too small. The height cannot be smaller than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'الصورة "{file}" صغيرة جداً. ارتفاعها لا يمكن أن يقل عن {limit, number} {limit, plural, other{بكسل}}.',
'The image "{file}" is too small. The width cannot be smaller than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'الصورة "{file}" كبيرة جداً. عرضها لا يمكن أن يقل عن {limit, number} {limit, plural, other{بكسل}}.',
+ 'The requested view "{name}" was not found.' => '',
'The verification code is incorrect.' => 'رمز التحقق غير صحيح',
'Total {count, number} {count, plural, one{item} other{items}}.' => 'مجموع {count, number} {count, plural, one{مُدخل} few{مُدخلات} many{مُدخل}}.',
'Unable to verify your data submission.' => 'لم نستطع التأكد من البيانات المقدمة.',
- 'Unknown command "{command}".' => 'أمر غير معروف. "{command}"',
+ 'Unknown alias: -{name}' => '',
+ 'Unknown filter attribute "{attribute}"' => '',
'Unknown option: --{name}' => 'خيار غير معروف: --{name}',
'Update' => 'تحديث',
'View' => 'عرض',
'Yes' => 'نعم',
'You are not allowed to perform this action.' => 'غير مصرح لك القيام بهذا العمل',
'You can upload at most {limit, number} {limit, plural, one{file} other{files}}.' => 'تستطيع كأقصى حد تحميل {limit, number} {limit, plural, one{ملف} few{ملفات} many{ملف} other{ملفات}}.',
+ 'You should upload at least {limit, number} {limit, plural, one{file} other{files}}.' => '',
+ 'in {delta, plural, =1{a day} other{# days}}' => '',
+ 'in {delta, plural, =1{a minute} other{# minutes}}' => '',
+ 'in {delta, plural, =1{a month} other{# months}}' => '',
+ 'in {delta, plural, =1{a second} other{# seconds}}' => '',
+ 'in {delta, plural, =1{a year} other{# years}}' => '',
+ 'in {delta, plural, =1{an hour} other{# hours}}' => '',
+ 'just now' => '',
'the input value' => 'قيمة المُدخل',
'{attribute} "{value}" has already been taken.' => '{attribute} "{value}" سبق استعماله',
'{attribute} cannot be blank.' => '{attribute} لا يمكن تركه فارغًا.',
+ '{attribute} contains wrong subnet mask.' => '',
'{attribute} is invalid.' => '{attribute} غير صالح.',
'{attribute} is not a valid URL.' => '{attribute} ليس بعنوان صحيح.',
'{attribute} is not a valid email address.' => '{attribute} ليس ببريد إلكتروني صحيح.',
+ '{attribute} is not in the allowed range.' => '',
'{attribute} must be "{requiredValue}".' => '{attribute} يجب أن يكون "{requiredValue}".',
'{attribute} must be a number.' => '{attribute} يجب أن يكون رقمًا',
'{attribute} must be a string.' => '{attribute} يجب أن يكون كلمات',
+ '{attribute} must be a valid IP address.' => '',
+ '{attribute} must be an IP address with specified subnet.' => '',
'{attribute} must be an integer.' => '{attribute} يجب أن يكون رقمًا صحيحًا',
'{attribute} must be either "{true}" or "{false}".' => '{attribute} يجب أن يكن إما "{true}" أو "{false}".',
'{attribute} must be equal to "{compareValueOrAttribute}".' => '{attribute} يجب أن يساوي "{compareValueOrAttribute}".',
- '{attribute} must not be equal to "{compareValueOrAttribute}".' => '{attribute} يجب أن لا يساوي "{compareValueOrAttribute}".',
'{attribute} must be greater than "{compareValueOrAttribute}".' => '{attribute} يجب أن يكون أكبر من "{compareValueOrAttribute}".',
'{attribute} must be greater than or equal to "{compareValueOrAttribute}".' => '{attribute} يجب أن يكون أكبر من أو يساوي "{compareValueOrAttribute}".',
'{attribute} must be less than "{compareValueOrAttribute}".' => '{attribute} يجب أن يكون أصغر من "{compareValueOrAttribute}".',
'{attribute} must be less than or equal to "{compareValueOrAttribute}".' => '{attribute} يجب أن يكون أصغر من أو يساوي "{compareValueOrAttribute}".',
- '{attribute} must be greater than "{compareValue}".' => '{attribute} يجب أن يكون أكبر من "{compareValue}".',
- '{attribute} must be greater than or equal to "{compareValue}".' => '{attribute} يجب أن يكون أكبر من أو يساوي "{compareValue}".',
- '{attribute} must be less than "{compareValue}".' => '{attribute} يجب أن يكون أصغر من "{compareValue}".',
- '{attribute} must be less than or equal to "{compareValue}".' => '{attribute} يجب أن يكون أصغر من أو يساوي "{compareValue}".',
'{attribute} must be no greater than {max}.' => '{attribute} يجب أن لا يكون أكبر من "{max}".',
'{attribute} must be no less than {min}.' => '{attribute} يجب أن لا يكون أصغر من "{min}".',
- '{attribute} must be repeated exactly.' => '{attribute} يجب أن يكون متطابق.',
- '{attribute} must not be equal to "{compareValue}".' => '{attribute} يجب ان لا يساوي "{compareValue}"',
+ '{attribute} must not be a subnet.' => '',
+ '{attribute} must not be an IPv4 address.' => '',
+ '{attribute} must not be an IPv6 address.' => '',
+ '{attribute} must not be equal to "{compareValueOrAttribute}".' => '{attribute} يجب أن لا يساوي "{compareValueOrAttribute}".',
'{attribute} should contain at least {min, number} {min, plural, one{character} other{characters}}.' => '{attribute} يجب أن يحتوي على أكثر من {min, number} {min, plural, one{حرف} few{حروف} other{حرف}}.',
'{attribute} should contain at most {max, number} {max, plural, one{character} other{characters}}.' => '{attribute} يجب أن لا يحتوي على أكثر من {max, number} {max, plural, one{حرف} few{حروف} other{حرف}}.',
'{attribute} should contain {length, number} {length, plural, one{character} other{characters}}.' => '{attribute} يجب أن يحتوي على {length, number} {length, plural, one{حرف} few{حروف} other{حرف}}.',
+ '{compareAttribute} is invalid.' => '',
+ '{delta, plural, =1{1 day} other{# days}}' => '',
+ '{delta, plural, =1{1 hour} other{# hours}}' => '',
+ '{delta, plural, =1{1 minute} other{# minutes}}' => '',
+ '{delta, plural, =1{1 month} other{# months}}' => '',
+ '{delta, plural, =1{1 second} other{# seconds}}' => '',
+ '{delta, plural, =1{1 year} other{# years}}' => '',
+ '{delta, plural, =1{a day} other{# days}} ago' => '',
+ '{delta, plural, =1{a minute} other{# minutes}} ago' => '',
+ '{delta, plural, =1{a month} other{# months}} ago' => '',
+ '{delta, plural, =1{a second} other{# seconds}} ago' => '',
+ '{delta, plural, =1{a year} other{# years}} ago' => '',
+ '{delta, plural, =1{an hour} other{# hours}} ago' => '',
'{nFormatted} B' => '{nFormatted} بايت',
'{nFormatted} GB' => '{nFormatted} جيجابايت',
'{nFormatted} GiB' => '{nFormatted} جيبيبايت',
- '{nFormatted} kB' => '{nFormatted} كيلوبايت',
'{nFormatted} KiB' => '{nFormatted} كيبيبايت',
'{nFormatted} MB' => '{nFormatted} ميجابايت',
'{nFormatted} MiB' => '{nFormatted} ميبيبايت',
@@ -100,6 +133,7 @@
'{nFormatted} PiB' => '{nFormatted} بيبيبايت',
'{nFormatted} TB' => '{nFormatted} تيرابايت',
'{nFormatted} TiB' => '{nFormatted} تيبيبايت',
+ '{nFormatted} kB' => '{nFormatted} كيلوبايت',
'{nFormatted} {n, plural, =1{byte} other{bytes}}' => '{nFormatted} بايت',
'{nFormatted} {n, plural, =1{gibibyte} other{gibibytes}}' => '{nFormatted} جيبيبايت',
'{nFormatted} {n, plural, =1{gigabyte} other{gigabytes}}' => '{nFormatted} جيجابايت',
diff --git a/framework/messages/az/yii.php b/framework/messages/az/yii.php
index 797dc804327..950226a6e0f 100644
--- a/framework/messages/az/yii.php
+++ b/framework/messages/az/yii.php
@@ -1,4 +1,5 @@
'',
+ '"{attribute}" does not support operator "{operator}".' => '',
'(not set)' => '(məlumat yoxdur)',
+ 'Action not found.' => '',
+ 'Aliases available: {aliases}' => '',
'An internal server error occurred.' => 'Daxili server xətası meydana gəldi.',
'Are you sure you want to delete this item?' => 'Bu elementi silmək istədiyinizə əminsinizmi?',
+ 'Condition for "{attribute}" should be either a value or valid operator specification.' => '',
'Delete' => 'Sil',
'Error' => 'Xəta',
'File upload failed.' => 'Fayl yüklənmədi.',
@@ -35,65 +41,108 @@
'Missing required arguments: {params}' => 'Tələb olunan arqumentlər tapılmadı: {params}',
'Missing required parameters: {params}' => 'Tələb olunan parametrlər tapılmadı: {params}',
'No' => 'Xeyr',
- 'No help for unknown command "{command}".' => 'Qeyri-müəyyən "{command}" əmri üçün kömək yoxdur.',
- 'No help for unknown sub-command "{command}".' => 'Qeyri-müəyyən "{command}" sub-əmri üçün kömək yoxdur.',
'No results found.' => 'Heç bir nəticə tapılmadı',
'Only files with these MIME types are allowed: {mimeTypes}.' => 'Ancaq bu MIME tipli fayllara icazə verilib: {mimeTypes}.',
'Only files with these extensions are allowed: {extensions}.' => 'Genişlənmələri ancaq bu tipdə olan fayllara icazə verilib: {extensions}.',
+ 'Operator "{operator}" must be used with a search attribute.' => '',
+ 'Operator "{operator}" requires multiple operands.' => '',
+ 'Options available: {options}' => '',
'Page not found.' => 'Səhifə tapılmadı.',
'Please fix the following errors:' => 'Xahiş olunur xətaları düzəldin: ',
'Please upload a file.' => 'Xahiş olunur bir fayl yükləyin.',
'Showing {begin, number}-{end, number} of {totalCount, number} {totalCount, plural, one{item} other{items}}.' => '{totalCount, number} {totalCount, plural, one{elementdən} other{elementdən}} {begin, number}-{end, number} arası göstərilir.',
+ 'The combination {values} of {attributes} has already been taken.' => '',
'The file "{file}" is not an image.' => '"{file}" təsvir faylı deyil.',
'The file "{file}" is too big. Its size cannot exceed {formattedLimit}.' => '"{file}" faylı çox böyükdür. Həcmi {formattedLimit} qiymətindən böyük ola bilməz.',
'The file "{file}" is too small. Its size cannot be smaller than {formattedLimit}.' => '"{file}" faylı çox kiçikdir. Həcmi {formattedLimit} qiymətindən kiçik ola bilməz.',
'The format of {attribute} is invalid.' => '{attribute} formatı düzgün deyil.',
+ 'The format of {filter} is invalid.' => '',
'The image "{file}" is too large. The height cannot be larger than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => '"{file}" şəkli çox böyükdür. Uzunluq {limit, plural, one{pixel} other{pixels}} qiymətindən böyük ola bilməz.',
'The image "{file}" is too large. The width cannot be larger than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => '"{file}" şəkli çox böyükdür. Eni {limit, number} {limit, plural, one{pixel} other{pixel}} qiymətindən böyük ola bilməz.',
'The image "{file}" is too small. The height cannot be smaller than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => '"{file}" şəkli çox kiçikdir. Eni {limit, number} {limit, plural, one{pixel} other{pixel}} qiymətindən kiçik ola bilməz.',
'The image "{file}" is too small. The width cannot be smaller than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => '"{file}" şəkli çox kiçikdir. Eni {limit, number} {limit, plural, one{pixel} other{pixels}} qiymətindən kiçik ola bilməz.',
+ 'The requested view "{name}" was not found.' => '',
'The verification code is incorrect.' => 'Təsdiqləmə kodu səhvdir.',
'Total {count, number} {count, plural, one{item} other{items}}.' => 'Toplam {count, number} {count, plural, one{element} other{element}}.',
'Unable to verify your data submission.' => 'Təqdim etdiyiniz məlumat təsdiqlənmədi.',
- 'Unknown command "{command}".' => 'Qeyri-müəyyən əmr "{command}".',
+ 'Unknown alias: -{name}' => '',
+ 'Unknown filter attribute "{attribute}"' => '',
'Unknown option: --{name}' => 'Qeyri-müəyyən seçim: --{name}',
'Update' => 'Yenilə',
'View' => 'Bax',
'Yes' => 'Bəli',
'You are not allowed to perform this action.' => 'Bu əməliyyatı yerinə yetirmək üçün icazəniz yoxdur.',
'You can upload at most {limit, number} {limit, plural, one{file} other{files}}.' => 'Ancaq {limit, number} {limit, plural, one{fayl} other{fayl}} yükləyə bilərsiniz.',
+ 'You should upload at least {limit, number} {limit, plural, one{file} other{files}}.' => '',
+ 'in {delta, plural, =1{a day} other{# days}}' => '',
+ 'in {delta, plural, =1{a minute} other{# minutes}}' => '',
+ 'in {delta, plural, =1{a month} other{# months}}' => '',
+ 'in {delta, plural, =1{a second} other{# seconds}}' => '',
+ 'in {delta, plural, =1{a year} other{# years}}' => '',
+ 'in {delta, plural, =1{an hour} other{# hours}}' => '',
+ 'just now' => '',
'the input value' => 'daxil olunmuş qiymət',
'{attribute} "{value}" has already been taken.' => '{attribute} "{value}" artıq istifadə olunub.',
'{attribute} cannot be blank.' => '{attribute} boş qoyula bilməz.',
+ '{attribute} contains wrong subnet mask.' => '',
'{attribute} is invalid.' => '{attribute} düzgün deyil.',
'{attribute} is not a valid URL.' => '{attribute} düzgün URL deyil.',
'{attribute} is not a valid email address.' => '{attribute} düzgün e-mail deyil.',
+ '{attribute} is not in the allowed range.' => '',
'{attribute} must be "{requiredValue}".' => '{attribute} {requiredValue} olmalıdır.',
'{attribute} must be a number.' => '{attribute} ədəd olmalıdır.',
'{attribute} must be a string.' => '{attribute} simvol tipli olmalıdır.',
+ '{attribute} must be a valid IP address.' => '',
+ '{attribute} must be an IP address with specified subnet.' => '',
'{attribute} must be an integer.' => '{attribute} tam ədəd olmalıdır.',
'{attribute} must be either "{true}" or "{false}".' => '{attribute} ya {true} ya da {false} ola bilər.',
- '{attribute} must be greater than "{compareValue}".' => '{attribute}, "{compareValue}" dən böyük olmalıdır.',
- '{attribute} must be greater than or equal to "{compareValue}".' => '{attribute}, "{compareValue}"dən böyük və ya bərabər olmalıdır.',
- '{attribute} must be less than "{compareValue}".' => '{attribute}, "{compareValue}" dən kiçik olmalıdır.',
- '{attribute} must be less than or equal to "{compareValue}".' => '{attribute}, "{compareValue}"dən kiçik və ya bərabər olmalıdır.',
+ '{attribute} must be equal to "{compareValueOrAttribute}".' => '',
+ '{attribute} must be greater than "{compareValueOrAttribute}".' => '{attribute}, "{compareValueOrAttribute}" dən böyük olmalıdır.',
+ '{attribute} must be greater than or equal to "{compareValueOrAttribute}".' => '{attribute}, "{compareValueOrAttribute}"dən böyük və ya bərabər olmalıdır.',
+ '{attribute} must be less than "{compareValueOrAttribute}".' => '{attribute}, "{compareValueOrAttribute}" dən kiçik olmalıdır.',
+ '{attribute} must be less than or equal to "{compareValueOrAttribute}".' => '{attribute}, "{compareValueOrAttribute}"dən kiçik və ya bərabər olmalıdır.',
'{attribute} must be no greater than {max}.' => '{attribute} {max} dən böyük olmamalıdır.',
'{attribute} must be no less than {min}.' => '{attribute} {min} dən kiçik olmamalıdır.',
- '{attribute} must be repeated exactly.' => '{attribute} dəqiqliklə təkrar olunmalıdir.',
- '{attribute} must not be equal to "{compareValue}".' => '{attribute}, "{compareValue}" ilə eyni olmamalıdır',
+ '{attribute} must not be a subnet.' => '',
+ '{attribute} must not be an IPv4 address.' => '',
+ '{attribute} must not be an IPv6 address.' => '',
+ '{attribute} must not be equal to "{compareValueOrAttribute}".' => '{attribute}, "{compareValueOrAttribute}" ilə eyni olmamalıdır',
'{attribute} should contain at least {min, number} {min, plural, one{character} other{characters}}.' => '{attribute} ən az {min, number} simvol olmalıdır.',
'{attribute} should contain at most {max, number} {max, plural, one{character} other{characters}}.' => '{attribute} ən çox {max, number} simvol olmalıdır.',
'{attribute} should contain {length, number} {length, plural, one{character} other{characters}}.' => '{attribute} {length, number} simvol olmalıdır.',
- '{n, plural, =1{# byte} other{# bytes}}' => '{n} Bayt',
- '{n, plural, =1{# gigabyte} other{# gigabytes}}' => '{n} Giqabayt',
- '{n, plural, =1{# kilobyte} other{# kilobytes}}' => '{n} Kilobayt',
- '{n, plural, =1{# megabyte} other{# megabytes}}' => '{n} Meqabayt',
- '{n, plural, =1{# petabyte} other{# petabytes}}' => '{n} Petabayt',
- '{n, plural, =1{# terabyte} other{# terabytes}}' => '{n} Terabayt',
- '{n} B' => '{n} B',
- '{n} GB' => '{n} GB',
- '{n} KB' => '{n} KB',
- '{n} MB' => '{n} MB',
- '{n} PB' => '{n} PB',
- '{n} TB' => '{n} TB',
+ '{compareAttribute} is invalid.' => '',
+ '{delta, plural, =1{1 day} other{# days}}' => '',
+ '{delta, plural, =1{1 hour} other{# hours}}' => '',
+ '{delta, plural, =1{1 minute} other{# minutes}}' => '',
+ '{delta, plural, =1{1 month} other{# months}}' => '',
+ '{delta, plural, =1{1 second} other{# seconds}}' => '',
+ '{delta, plural, =1{1 year} other{# years}}' => '',
+ '{delta, plural, =1{a day} other{# days}} ago' => '',
+ '{delta, plural, =1{a minute} other{# minutes}} ago' => '',
+ '{delta, plural, =1{a month} other{# months}} ago' => '',
+ '{delta, plural, =1{a second} other{# seconds}} ago' => '',
+ '{delta, plural, =1{a year} other{# years}} ago' => '',
+ '{delta, plural, =1{an hour} other{# hours}} ago' => '',
+ '{nFormatted} B' => '{nFormatted} B',
+ '{nFormatted} GB' => '{nFormatted} GB',
+ '{nFormatted} GiB' => '',
+ '{nFormatted} KiB' => '',
+ '{nFormatted} MB' => '{nFormatted} MB',
+ '{nFormatted} MiB' => '',
+ '{nFormatted} PB' => '{nFormatted} PB',
+ '{nFormatted} PiB' => '',
+ '{nFormatted} TB' => '{nFormatted} TB',
+ '{nFormatted} TiB' => '',
+ '{nFormatted} kB' => '{nFormatted} kB',
+ '{nFormatted} {n, plural, =1{byte} other{bytes}}' => '{nFormatted} Bayt',
+ '{nFormatted} {n, plural, =1{gibibyte} other{gibibytes}}' => '',
+ '{nFormatted} {n, plural, =1{gigabyte} other{gigabytes}}' => '{nFormatted} Giqabayt',
+ '{nFormatted} {n, plural, =1{kibibyte} other{kibibytes}}' => '',
+ '{nFormatted} {n, plural, =1{kilobyte} other{kilobytes}}' => '{nFormatted} Kilobayt',
+ '{nFormatted} {n, plural, =1{mebibyte} other{mebibytes}}' => '',
+ '{nFormatted} {n, plural, =1{megabyte} other{megabytes}}' => '{nFormatted} Meqabayt',
+ '{nFormatted} {n, plural, =1{pebibyte} other{pebibytes}}' => '',
+ '{nFormatted} {n, plural, =1{petabyte} other{petabytes}}' => '{nFormatted} Petabayt',
+ '{nFormatted} {n, plural, =1{tebibyte} other{tebibytes}}' => '',
+ '{nFormatted} {n, plural, =1{terabyte} other{terabytes}}' => '{nFormatted} Terabayt',
];
diff --git a/framework/messages/be/yii.php b/framework/messages/be/yii.php
index f2ed384a925..69c5d22c1a4 100644
--- a/framework/messages/be/yii.php
+++ b/framework/messages/be/yii.php
@@ -1,4 +1,5 @@
' і ',
'"{attribute}" does not support operator "{operator}".' => '"{attribute}" не падтрымлівае аператар "{operator}".',
'(not set)' => '(не зададзена)',
+ 'Action not found.' => '',
+ 'Aliases available: {aliases}' => '',
'An internal server error occurred.' => 'Узнікла ўнутраная памылка сервера.',
'Are you sure you want to delete this item?' => 'Вы ўпэўнены, што жадаеце выдаліць гэты элемент?',
'Condition for "{attribute}" should be either a value or valid operator specification.' => 'Умова для "{attribute}" павінна быць ці значэннем, ці дакладнай спецыфікацыяй аператара.',
@@ -43,10 +46,10 @@
'Only files with these extensions are allowed: {extensions}.' => 'Дазволена загрузка файлаў толькі з наступнымі пашырэннямі: {extensions}.',
'Operator "{operator}" must be used with a search attribute.' => 'Аператар "{operator}" павінен выкарыстоўвацца праз атрыбут пошуку.',
'Operator "{operator}" requires multiple operands.' => 'Аператар "{operator}" патрабуе некалькі аперандаў.',
+ 'Options available: {options}' => '',
'Page not found.' => 'Старонка не знойдзена.',
'Please fix the following errors:' => 'Выпраўце наступныя памылкі:',
'Please upload a file.' => 'Загрузіце файл.',
- 'Powered by {yii}' => 'Працуе на {yii}',
'Showing {begin, number}-{end, number} of {totalCount, number} {totalCount, plural, one{item} other{items}}.' => 'Паказаны запісы {begin, number}-{end, number} з {totalCount, number}.',
'The combination {values} of {attributes} has already been taken.' => 'Камбінацыя {values} параметраў {attributes} ужо існуе.',
'The file "{file}" is not an image.' => 'Файл «{file}» не зьяўляецца малюнкам.',
@@ -68,7 +71,6 @@
'Update' => 'Рэдагаваць',
'View' => 'Прагляд',
'Yes' => 'Так',
- 'Yii Framework' => 'Yii Framework',
'You are not allowed to perform this action.' => 'You are not allowed to perform this action.',
'You can upload at most {limit, number} {limit, plural, one{file} other{files}}.' => 'Вы не можаце загружаць больш за {limit, number} {limit, plural, one{файл} few{файлы} many{файлаў} other{файла}}.',
'You should upload at least {limit, number} {limit, plural, one{file} other{files}}.' => 'Вы павінны загрузіць мінімум {limit, number} {limit, plural, one{файл} few{файлы} many{файлаў} other{файла}}',
@@ -108,6 +110,7 @@
'{attribute} should contain at least {min, number} {min, plural, one{character} other{characters}}.' => 'Значэнне «{attribute}» павінна ўтрымліваць мінімум {min, number} {min, plural, one{сімвал} few{сімвала} many{сімвалаў} other{сімвала}}.',
'{attribute} should contain at most {max, number} {max, plural, one{character} other{characters}}.' => 'Значэнне «{attribute}» павінна ўтрымліваць максімум {max, number} {max, plural, one{сімвал} few{сімвала} many{сімвалаў} other{сімвала}}.',
'{attribute} should contain {length, number} {length, plural, one{character} other{characters}}.' => 'Значэнне «{attribute}» павінна ўтрымліваць {length, number} {length, plural, one{сімвал} few{сімвала} many{сімвалаў} other{сімвала}}.',
+ '{compareAttribute} is invalid.' => '',
'{delta, plural, =1{1 day} other{# days}}' => '{delta, plural, one{# дзень} few{# дні} many{# дзён} other{# дні}}',
'{delta, plural, =1{1 hour} other{# hours}}' => '{delta, plural, one{# гадзіна} few{# гадзіны} many{# гадзін} other{# гадзіны}}',
'{delta, plural, =1{1 minute} other{# minutes}}' => '{delta, plural, one{# хвіліна} few{# хвіліны} many{# хвілін} other{# хвіліны}}',
@@ -123,7 +126,6 @@
'{nFormatted} B' => '{nFormatted} Б',
'{nFormatted} GB' => '{nFormatted} ГБ',
'{nFormatted} GiB' => '{nFormatted} ГіБ',
- '{nFormatted} kB' => '{nFormatted} КБ',
'{nFormatted} KiB' => '{nFormatted} КіБ',
'{nFormatted} MB' => '{nFormatted} МБ',
'{nFormatted} MiB' => '{nFormatted} МіБ',
@@ -131,6 +133,7 @@
'{nFormatted} PiB' => '{nFormatted} ПіБ',
'{nFormatted} TB' => '{nFormatted} ТБ',
'{nFormatted} TiB' => '{nFormatted} ЦіБ',
+ '{nFormatted} kB' => '{nFormatted} КБ',
'{nFormatted} {n, plural, =1{byte} other{bytes}}' => '{nFormatted} {n, plural, one{байт} few{байта} many{байтаў} other{байта}}',
'{nFormatted} {n, plural, =1{gibibyte} other{gibibytes}}' => '{nFormatted} {n, plural, one{гібібайт} few{гібібайта} many{гібібайтаў} other{гібібайта}}',
'{nFormatted} {n, plural, =1{gigabyte} other{gigabytes}}' => '{nFormatted} {n, plural, one{гігабайт} few{гігабайта} many{гігабайтаў} other{гігабайта}}',
diff --git a/framework/messages/bg/yii.php b/framework/messages/bg/yii.php
index eb87f3bf120..7e7d0219ed6 100644
--- a/framework/messages/bg/yii.php
+++ b/framework/messages/bg/yii.php
@@ -1,4 +1,5 @@
' и ',
'"{attribute}" does not support operator "{operator}".' => '"{attribute}" не поддържа оператор "{operator}".',
'(not set)' => '(не е попълнено)',
+ 'Action not found.' => '',
+ 'Aliases available: {aliases}' => '',
'An internal server error occurred.' => 'Възникна вътрешна грешка в сървъра.',
'Are you sure you want to delete this item?' => 'Сигурни ли сте, че искате да изтриете записа?',
'Condition for "{attribute}" should be either a value or valid operator specification.' => 'Условието за "{attribute}" трябва да е валидна стойност или оператор.',
@@ -43,10 +46,10 @@
'Only files with these extensions are allowed: {extensions}.' => 'Допускат се файлове със следните разширения: {extensions}.',
'Operator "{operator}" must be used with a search attribute.' => 'Операторът "{operator}" трябва да се използва с атрибут за търсене.',
'Operator "{operator}" requires multiple operands.' => 'Операторът "{operator}" изисква множество елементи.',
+ 'Options available: {options}' => '',
'Page not found.' => 'Страницата не беше намерена.',
'Please fix the following errors:' => 'Моля, коригирайте следните грешки:',
'Please upload a file.' => 'Моля, прикачете файл.',
- 'Powered by {yii}' => 'Задвижвано от {yii}',
'Showing {begin, number}-{end, number} of {totalCount, number} {totalCount, plural, one{item} other{items}}.' => 'Показване на {begin, number}-{end, number} от {totalCount, number} {totalCount, plural, one{запис} other{записа}}.',
'The combination {values} of {attributes} has already been taken.' => 'Комбинацията от {values} от {attributes} е вече заета.',
'The file "{file}" is not an image.' => 'Файлът "{file}" не е изображение.',
@@ -68,7 +71,6 @@
'Update' => 'Обнови',
'View' => 'Виж',
'Yes' => 'Да',
- 'Yii Framework' => 'Yii Framework',
'You are not allowed to perform this action.' => 'Нямате права да изпълните тази операция.',
'You can upload at most {limit, number} {limit, plural, one{file} other{files}}.' => 'Може да прикачите най-много {limit, number} {limit, plural, one{файл} other{файла}}.',
'You should upload at least {limit, number} {limit, plural, one{file} other{files}}.' => 'Трябва да качите поне {limit, number} {limit, plural, one{файл} other{файлове}}.',
@@ -108,6 +110,7 @@
'{attribute} should contain at least {min, number} {min, plural, one{character} other{characters}}.' => 'Полето {attribute} трябва да съдържа поне {min, number} {min, plural, one{символ} other{символа}}.',
'{attribute} should contain at most {max, number} {max, plural, one{character} other{characters}}.' => 'Полето "{attribute}" трябва да съдържа най-много {max, number} {max, plural, one{символ} other{символа}}.',
'{attribute} should contain {length, number} {length, plural, one{character} other{characters}}.' => 'Полето "{attribute}" трябва да съдържа точно {length, number} {length, plural, one{символ} other{символа}}.',
+ '{compareAttribute} is invalid.' => '',
'{delta, plural, =1{1 day} other{# days}}' => '{delta, plural, =1{1 ден} other{# дни}}',
'{delta, plural, =1{1 hour} other{# hours}}' => '{delta, plural, =1{1 час} other{# часа}}',
'{delta, plural, =1{1 minute} other{# minutes}}' => '{delta, plural, =1{1 минута} other{# минути}}',
@@ -123,7 +126,6 @@
'{nFormatted} B' => '{nFormatted} B',
'{nFormatted} GB' => '{nFormatted} GB',
'{nFormatted} GiB' => '{nFormatted} GiB',
- '{nFormatted} kB' => '{nFormatted} KB',
'{nFormatted} KiB' => '{nFormatted} KiB',
'{nFormatted} MB' => '{nFormatted} MB',
'{nFormatted} MiB' => '{nFormatted} MiB',
@@ -131,6 +133,7 @@
'{nFormatted} PiB' => '{nFormatted} PiB',
'{nFormatted} TB' => '{nFormatted} TB',
'{nFormatted} TiB' => '{nFormatted} TiB',
+ '{nFormatted} kB' => '{nFormatted} KB',
'{nFormatted} {n, plural, =1{byte} other{bytes}}' => '{nFormatted} {n, plural, =1{байта} other{байта}}',
'{nFormatted} {n, plural, =1{gibibyte} other{gibibytes}}' => '{nFormatted} {n, plural, =1{гибибайт} other{гибибайта}}',
'{nFormatted} {n, plural, =1{gigabyte} other{gigabytes}}' => '{nFormatted} {n, plural, =1{гигабайт} other{гигабайта}}',
diff --git a/framework/messages/bs/yii.php b/framework/messages/bs/yii.php
index 968d93aa442..eb583338b96 100644
--- a/framework/messages/bs/yii.php
+++ b/framework/messages/bs/yii.php
@@ -1,4 +1,5 @@
'',
+ '"{attribute}" does not support operator "{operator}".' => '',
'(not set)' => '(bez vrijednosti)',
+ 'Action not found.' => '',
+ 'Aliases available: {aliases}' => '',
'An internal server error occurred.' => 'Došlo je do interne greške na serveru.',
'Are you sure you want to delete this item?' => 'Jeste li sigurni da želite obrisati ovu stavku?',
+ 'Condition for "{attribute}" should be either a value or valid operator specification.' => '',
'Delete' => 'Obriši',
'Error' => 'Greška',
'File upload failed.' => 'Slanje datoteke nije uspjelo.',
@@ -38,14 +44,19 @@
'No results found.' => 'Nema rezultata.',
'Only files with these MIME types are allowed: {mimeTypes}.' => 'Samo datoteke sa sljedećim MIME tipovima su dozvoljeni: {mimeTypes}.',
'Only files with these extensions are allowed: {extensions}.' => 'Samo datoteke sa sljedećim ekstenzijama su dozvoljeni: {extensions}.',
+ 'Operator "{operator}" must be used with a search attribute.' => '',
+ 'Operator "{operator}" requires multiple operands.' => '',
+ 'Options available: {options}' => '',
'Page not found.' => 'Stranica nije pronađena.',
'Please fix the following errors:' => 'Molimo ispravite sljedeće greške:',
'Please upload a file.' => 'Molimo da pošaljete datoteku.',
'Showing {begin, number}-{end, number} of {totalCount, number} {totalCount, plural, one{item} other{items}}.' => 'Prikazano {begin, number}-{end, number} od {totalCount, number} {totalCount, plural, one{stavke} other{stavki}}.',
+ 'The combination {values} of {attributes} has already been taken.' => '',
'The file "{file}" is not an image.' => 'Datoteka "{file}" nije slika.',
'The file "{file}" is too big. Its size cannot exceed {formattedLimit}.' => 'Datoteka "{file}" je prevelika. Veličina ne smije biti veća od {formattedLimit}.',
'The file "{file}" is too small. Its size cannot be smaller than {formattedLimit}.' => 'Datoteka "{file}" је premala. Veličina ne smije biti manja od {formattedLimit}.',
'The format of {attribute} is invalid.' => 'Format atributa "{attribute}" je neispravan.',
+ 'The format of {filter} is invalid.' => '',
'The image "{file}" is too large. The height cannot be larger than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'Slika "{file}" je prevelika. Visina ne smije biti veća od {limit, number} {limit, plural, one{piksel} other{piksela}}.',
'The image "{file}" is too large. The width cannot be larger than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'Slika "{file}" je prevelika. Širina ne smije biti veća od {limit, number} {limit, plural, one{piksel} other{piksela}}.',
'The image "{file}" is too small. The height cannot be smaller than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'Slika "{file}" je premala. Visina ne smije biti manja od {limit, number} {limit, plural, one{piksel} other{piksela}}.',
@@ -54,12 +65,15 @@
'The verification code is incorrect.' => 'Potvrdni kod nije ispravan.',
'Total {count, number} {count, plural, one{item} other{items}}.' => 'Ukupno {count, number} {count, plural, one{stavka} other{stavki}}.',
'Unable to verify your data submission.' => 'Nije moguće provjeriti poslane podatke.',
+ 'Unknown alias: -{name}' => '',
+ 'Unknown filter attribute "{attribute}"' => '',
'Unknown option: --{name}' => 'Nepoznata opcija: --{name}',
'Update' => 'Ažurirati',
'View' => 'Pregled',
'Yes' => 'Da',
'You are not allowed to perform this action.' => 'Nemate prava da izvršite ovu akciju.',
'You can upload at most {limit, number} {limit, plural, one{file} other{files}}.' => 'Možete poslati najviše {limit, number} {limit, plural, one{datoteku} other{datoteka}}.',
+ 'You should upload at least {limit, number} {limit, plural, one{file} other{files}}.' => '',
'in {delta, plural, =1{a day} other{# days}}' => 'za {delta, plural, =1{dan} one{# dan} few{# dana} many{# dana} other{# dana}}',
'in {delta, plural, =1{a minute} other{# minutes}}' => 'za {delta, plural, =1{minut} one{# minut} few{# minuta} many{# minuta} other{# minuta}}',
'in {delta, plural, =1{a month} other{# months}}' => 'za {delta, plural, =1{mjesec} one{# mjesec} few{# mjeseci} many{# mjeseci} other{# mjeseci}}',
@@ -70,25 +84,39 @@
'the input value' => 'ulazna vrijednost',
'{attribute} "{value}" has already been taken.' => '{attribute} "{value}" je već zauzet.',
'{attribute} cannot be blank.' => '{attribute} ne smije biti prazan.',
+ '{attribute} contains wrong subnet mask.' => '',
'{attribute} is invalid.' => '{attribute} je neispravan.',
'{attribute} is not a valid URL.' => '{attribute} ne sadrži ispravan URL.',
'{attribute} is not a valid email address.' => '{attribute} ne sadrži ispravnu email adresu.',
+ '{attribute} is not in the allowed range.' => '',
'{attribute} must be "{requiredValue}".' => '{attribute} mora biti "{requiredValue}".',
'{attribute} must be a number.' => '{attribute} mora biti broj.',
'{attribute} must be a string.' => '{attribute} mora biti tekst.',
+ '{attribute} must be a valid IP address.' => '',
+ '{attribute} must be an IP address with specified subnet.' => '',
'{attribute} must be an integer.' => '{attribute} mora biti cijeli broj.',
'{attribute} must be either "{true}" or "{false}".' => '{attribute} mora biti "{true}" ili "{false}".',
- '{attribute} must be greater than "{compareValue}".' => '{attribute} mora biti veći od "{compareValue}".',
- '{attribute} must be greater than or equal to "{compareValue}".' => '{attribute} mora biti veći ili jednak od "{compareValue}".',
- '{attribute} must be less than "{compareValue}".' => '{attribute} mora biti manji od "{compareValue}".',
- '{attribute} must be less than or equal to "{compareValue}".' => '{attribute} mora biti manji ili jednak od "{compareValue}".',
+ '{attribute} must be equal to "{compareValueOrAttribute}".' => '',
+ '{attribute} must be greater than "{compareValueOrAttribute}".' => '{attribute} mora biti veći od "{compareValueOrAttribute}".',
+ '{attribute} must be greater than or equal to "{compareValueOrAttribute}".' => '{attribute} mora biti veći ili jednak od "{compareValueOrAttribute}".',
+ '{attribute} must be less than "{compareValueOrAttribute}".' => '{attribute} mora biti manji od "{compareValueOrAttribute}".',
+ '{attribute} must be less than or equal to "{compareValueOrAttribute}".' => '{attribute} mora biti manji ili jednak od "{compareValueOrAttribute}".',
'{attribute} must be no greater than {max}.' => '{attribute} ne smije biti veći od "{max}"',
'{attribute} must be no less than {min}.' => '{attribute} ne smije biti manji od {min}.',
- '{attribute} must be repeated exactly.' => '{attribute} mora biti ponovljen ispravno.',
- '{attribute} must not be equal to "{compareValue}".' => '{attribute} ne smije biti jednak"{compareValue}".',
+ '{attribute} must not be a subnet.' => '',
+ '{attribute} must not be an IPv4 address.' => '',
+ '{attribute} must not be an IPv6 address.' => '',
+ '{attribute} must not be equal to "{compareValueOrAttribute}".' => '{attribute} ne smije biti jednak"{compareValueOrAttribute}".',
'{attribute} should contain at least {min, number} {min, plural, one{character} other{characters}}.' => '{attribute} treba sadržavati najmanje {min, number} {min, plural, one{znak} other{znakova}}.',
'{attribute} should contain at most {max, number} {max, plural, one{character} other{characters}}.' => '{attribute} treba sadržavati najviše {max, number} {max, plural, one{znak} other{znakova}}.',
'{attribute} should contain {length, number} {length, plural, one{character} other{characters}}.' => '{attribute} treba sadržavati {length, number} {length, plural, one{znak} other{znakova}}.',
+ '{compareAttribute} is invalid.' => '',
+ '{delta, plural, =1{1 day} other{# days}}' => '',
+ '{delta, plural, =1{1 hour} other{# hours}}' => '',
+ '{delta, plural, =1{1 minute} other{# minutes}}' => '',
+ '{delta, plural, =1{1 month} other{# months}}' => '',
+ '{delta, plural, =1{1 second} other{# seconds}}' => '',
+ '{delta, plural, =1{1 year} other{# years}}' => '',
'{delta, plural, =1{a day} other{# days}} ago' => 'prije {delta, plural, =1{dan} one{# dan} few{# dana} many{# dana} other{# dana}}',
'{delta, plural, =1{a minute} other{# minutes}} ago' => 'prije {delta, plural, =1{minut} one{# minut} few{# minuta} many{# minuta} other{# minuta}}',
'{delta, plural, =1{a month} other{# months}} ago' => 'prije {delta, plural, =1{mjesec} one{# mjesec} few{# mjeseci} many{# mjeseci} other{# mjeseci}}',
@@ -98,7 +126,6 @@
'{nFormatted} B' => '{nFormatted} B',
'{nFormatted} GB' => '{nFormatted} GB',
'{nFormatted} GiB' => '{nFormatted} GiB',
- '{nFormatted} kB' => '{nFormatted} kB',
'{nFormatted} KiB' => '{nFormatted} KiB',
'{nFormatted} MB' => '{nFormatted} MB',
'{nFormatted} MiB' => '{nFormatted} MiB',
@@ -106,6 +133,7 @@
'{nFormatted} PiB' => '{nFormatted} PiB',
'{nFormatted} TB' => '{nFormatted} TB',
'{nFormatted} TiB' => '{nFormatted} TiB',
+ '{nFormatted} kB' => '{nFormatted} kB',
'{nFormatted} {n, plural, =1{byte} other{bytes}}' => '{nFormatted} {n, plural, =1{bajt} other{bajtova}}',
'{nFormatted} {n, plural, =1{gibibyte} other{gibibytes}}' => '{nFormatted} {n, plural, =1{gibibajt} other{gibibajta}}',
'{nFormatted} {n, plural, =1{gigabyte} other{gigabytes}}' => '{nFormatted} {n, plural, =1{gigabajt} other{gigabajta}}',
diff --git a/framework/messages/ca/yii.php b/framework/messages/ca/yii.php
index f404ab6411d..925abf32036 100644
--- a/framework/messages/ca/yii.php
+++ b/framework/messages/ca/yii.php
@@ -1,4 +1,5 @@
'',
+ '"{attribute}" does not support operator "{operator}".' => '',
'(not set)' => '(no establert)',
+ 'Action not found.' => '',
+ 'Aliases available: {aliases}' => '',
'An internal server error occurred.' => 'S\'ha produït un error intern al servidor.',
'Are you sure you want to delete this item?' => 'Estas segur que vols eliminar aquest element?',
+ 'Condition for "{attribute}" should be either a value or valid operator specification.' => '',
'Delete' => 'Eliminar',
'Error' => 'Error',
'File upload failed.' => 'Ha fallat la pujada del fitxer.',
@@ -35,77 +41,108 @@
'Missing required arguments: {params}' => 'Falten arguments requerits: {params}',
'Missing required parameters: {params}' => 'Falten paràmetres requerits: {params}',
'No' => 'No',
- 'No help for unknown command "{command}".' => 'No hi ha ajuda per l\'ordre desconeguda "{command}"',
- 'No help for unknown sub-command "{command}".' => 'No hi ha ajuda per la sub-ordre desconeguda "{command}"',
'No results found.' => 'No s\'han trobat resultats.',
'Only files with these MIME types are allowed: {mimeTypes}.' => 'Només s\'accepten arxius amb els següents tipus MIME: {mimeTypes}.',
'Only files with these extensions are allowed: {extensions}.' => 'Només s\'accepten arxius amb les seguents extensions: {extensions}',
+ 'Operator "{operator}" must be used with a search attribute.' => '',
+ 'Operator "{operator}" requires multiple operands.' => '',
+ 'Options available: {options}' => '',
'Page not found.' => 'No s\'ha trobat la pàgina.',
'Please fix the following errors:' => 'Si us plau corregeix els següents errors:',
'Please upload a file.' => 'Si us plau puja un arxiu.',
'Showing {begin, number}-{end, number} of {totalCount, number} {totalCount, plural, one{item} other{items}}.' => 'Mostrant {begin, number}-{end, number} de {totalCount, number} {totalCount, plural, one{element} other{elements}}.',
+ 'The combination {values} of {attributes} has already been taken.' => '',
'The file "{file}" is not an image.' => 'L\'arxiu "{file}" no és una imatge.',
'The file "{file}" is too big. Its size cannot exceed {formattedLimit}.' => 'L\'arxiu "{file}" és massa gran. El seu tamany no pot excedir {formattedLimit}.',
'The file "{file}" is too small. Its size cannot be smaller than {formattedLimit}.' => 'L\'arxiu "{file}" és massa petit. El seu tamany no pot ser menor que {formattedLimit}.',
'The format of {attribute} is invalid.' => 'El format de {attribute} és invalid.',
+ 'The format of {filter} is invalid.' => '',
'The image "{file}" is too large. The height cannot be larger than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'La imatge "{file}" és massa gran. L\'altura no pot ser major que {limit, number} {limit, plural, one{píxel} other{píxels}}.',
'The image "{file}" is too large. The width cannot be larger than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'La imatge "{file}" és massa gran. L\'amplada no pot ser major que {limit, number} {limit, plural, one{píxel} other{píxels}}.',
'The image "{file}" is too small. The height cannot be smaller than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'La imatge "{file}" és massa petita. L\'altura no pot ser menor que {limit, number} {limit, plural, one{píxel} other{píxels}}.',
'The image "{file}" is too small. The width cannot be smaller than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'La imatge "{file}" és massa petita. L\'amplada no pot ser menor que {limit, number} {limit, plural, one{píxel} other{píxels}}.',
+ 'The requested view "{name}" was not found.' => '',
'The verification code is incorrect.' => 'El codi de verificació és incorrecte.',
'Total {count, number} {count, plural, one{item} other{items}}.' => 'Total {count, number} {count, plural, one{element} other{elements}}.',
'Unable to verify your data submission.' => 'No s\'ha pogut verificar les dades enviades.',
- 'Unknown command "{command}".' => 'Ordre desconeguda "{command}".',
+ 'Unknown alias: -{name}' => '',
+ 'Unknown filter attribute "{attribute}"' => '',
'Unknown option: --{name}' => 'Opció desconeguda: --{name}',
'Update' => 'Actualitzar',
'View' => 'Veure',
'Yes' => 'Sí',
'You are not allowed to perform this action.' => 'No tems permís per executar aquesta acció.',
'You can upload at most {limit, number} {limit, plural, one{file} other{files}}.' => 'Pots pujar com a màxim {limit, number} {limit, plural, one{arxiu} other{arxius}}.',
+ 'You should upload at least {limit, number} {limit, plural, one{file} other{files}}.' => '',
'in {delta, plural, =1{a day} other{# days}}' => 'en {delta, plural, =1{un dia} other{# dies}}',
'in {delta, plural, =1{a minute} other{# minutes}}' => 'en {delta, plural, =1{un minut} other{# minuts}}',
'in {delta, plural, =1{a month} other{# months}}' => 'en {delta, plural, =1{un mes} other{# mesos}}',
'in {delta, plural, =1{a second} other{# seconds}}' => 'en {delta, plural, =1{un segon} other{# segons}}',
'in {delta, plural, =1{a year} other{# years}}' => 'en {delta, plural, =1{un any} other{# anys}}',
'in {delta, plural, =1{an hour} other{# hours}}' => 'en {delta, plural, =1{una hora} other{# hores}}',
+ 'just now' => '',
'the input value' => 'el valor d\'entrada',
'{attribute} "{value}" has already been taken.' => '{attribute} "{value}" ja ha sigut utilitzat.',
'{attribute} cannot be blank.' => '{attribute} no pot estar buit.',
+ '{attribute} contains wrong subnet mask.' => '',
'{attribute} is invalid.' => '{attribute} és invalid.',
'{attribute} is not a valid URL.' => '{attribute} no és una URL valida.',
'{attribute} is not a valid email address.' => '{attribute} no es una direcció de correu valida.',
+ '{attribute} is not in the allowed range.' => '',
'{attribute} must be "{requiredValue}".' => '{attribute} ha de ser "{requiredValue}".',
'{attribute} must be a number.' => '{attribute} ha de ser un nombre.',
'{attribute} must be a string.' => '{attribute} ha de ser una cadena de caràcters.',
+ '{attribute} must be a valid IP address.' => '',
+ '{attribute} must be an IP address with specified subnet.' => '',
'{attribute} must be an integer.' => '{attribute} ha de ser un nombre enter.',
'{attribute} must be either "{true}" or "{false}".' => '{attribute} ha de ser "{true}" o "{false}".',
- '{attribute} must be greater than "{compareValue}".' => '{attribute} ha de ser major que "{compareValue}',
- '{attribute} must be greater than or equal to "{compareValue}".' => '{attribute} ha de ser major o igual que "{compareValue}".',
- '{attribute} must be less than "{compareValue}".' => '{attribute} ha de ser menor que "{compareValue}".',
- '{attribute} must be less than or equal to "{compareValue}".' => '{attribute} ha de ser menor o igual que "{compareValue}".',
+ '{attribute} must be equal to "{compareValueOrAttribute}".' => '',
+ '{attribute} must be greater than "{compareValueOrAttribute}".' => '{attribute} ha de ser major que "{compareValueOrAttribute}',
+ '{attribute} must be greater than or equal to "{compareValueOrAttribute}".' => '{attribute} ha de ser major o igual que "{compareValueOrAttribute}".',
+ '{attribute} must be less than "{compareValueOrAttribute}".' => '{attribute} ha de ser menor que "{compareValueOrAttribute}".',
+ '{attribute} must be less than or equal to "{compareValueOrAttribute}".' => '{attribute} ha de ser menor o igual que "{compareValueOrAttribute}".',
'{attribute} must be no greater than {max}.' => '{attribute} no pot ser major que {max}.',
'{attribute} must be no less than {min}.' => '{attribute} no pot ser menor que {min}.',
- '{attribute} must be repeated exactly.' => '{attribute} ha de ser repetit exactament igual.',
- '{attribute} must not be equal to "{compareValue}".' => '{attribute} no pot ser igual que "{compareValue}".',
+ '{attribute} must not be a subnet.' => '',
+ '{attribute} must not be an IPv4 address.' => '',
+ '{attribute} must not be an IPv6 address.' => '',
+ '{attribute} must not be equal to "{compareValueOrAttribute}".' => '{attribute} no pot ser igual que "{compareValueOrAttribute}".',
'{attribute} should contain at least {min, number} {min, plural, one{character} other{characters}}.' => '{attribute} hauria de contenir com a mínim {min, number} {min, plural, one{lletra} other{lletres}}.',
'{attribute} should contain at most {max, number} {max, plural, one{character} other{characters}}.' => '{attribute} hauria de contenir com a màxim {max, number} {max, plural, one{lletra} other{lletres}}.',
'{attribute} should contain {length, number} {length, plural, one{character} other{characters}}.' => '{attribute} hauria contenir {length, number} {length, plural, one{lletra} other{lletres}}.',
+ '{compareAttribute} is invalid.' => '',
+ '{delta, plural, =1{1 day} other{# days}}' => '',
+ '{delta, plural, =1{1 hour} other{# hours}}' => '',
+ '{delta, plural, =1{1 minute} other{# minutes}}' => '',
+ '{delta, plural, =1{1 month} other{# months}}' => '',
+ '{delta, plural, =1{1 second} other{# seconds}}' => '',
+ '{delta, plural, =1{1 year} other{# years}}' => '',
'{delta, plural, =1{a day} other{# days}} ago' => 'hace {delta, plural, =1{un dia} other{# dies}}',
'{delta, plural, =1{a minute} other{# minutes}} ago' => 'fa {delta, plural, =1{un minut} other{# minuts}}',
'{delta, plural, =1{a month} other{# months}} ago' => 'fa {delta, plural, =1{un mes} other{# mesos}}',
'{delta, plural, =1{a second} other{# seconds}} ago' => 'fa {delta, plural, =1{un segon} other{# segons}}',
'{delta, plural, =1{a year} other{# years}} ago' => 'fa {delta, plural, =1{un any} other{# anys}}',
'{delta, plural, =1{an hour} other{# hours}} ago' => 'fa {delta, plural, =1{una hora} other{# hores}}',
- '{n, plural, =1{# byte} other{# bytes}}' => '{n, plural, =1{# byte} other{# bytes}}',
- '{n, plural, =1{# gigabyte} other{# gigabytes}}' => '{n, plural, =1{# gigabyte} other{# gigabytes}}',
- '{n, plural, =1{# kilobyte} other{# kilobytes}}' => '{n, plural, =1{# kilobyte} other{# kilobytes}}',
- '{n, plural, =1{# megabyte} other{# megabytes}}' => '{n, plural, =1{# megabyte} other{# megabytes}}',
- '{n, plural, =1{# petabyte} other{# petabytes}}' => '{n, plural, =1{# petabyte} other{# petabytes}}',
- '{n, plural, =1{# terabyte} other{# terabytes}}' => '{n, plural, =1{# terabyte} other{# terabytes}}',
- '{n} B' => '{n} B',
- '{n} GB' => '{n} GB',
- '{n} KB' => '{n} KB',
- '{n} MB' => '{n} MB',
- '{n} PB' => '{n} PB',
- '{n} TB' => '{n} TB',
+ '{nFormatted} B' => '{nFormatted} B',
+ '{nFormatted} GB' => '{nFormatted} GB',
+ '{nFormatted} GiB' => '',
+ '{nFormatted} KiB' => '',
+ '{nFormatted} MB' => '{nFormatted} MB',
+ '{nFormatted} MiB' => '',
+ '{nFormatted} PB' => '{nFormatted} PB',
+ '{nFormatted} PiB' => '',
+ '{nFormatted} TB' => '{nFormatted} TB',
+ '{nFormatted} TiB' => '',
+ '{nFormatted} kB' => '{nFormatted} kB',
+ '{nFormatted} {n, plural, =1{byte} other{bytes}}' => '{nFormatted} {n, plural, =1{byte} other{bytes}}',
+ '{nFormatted} {n, plural, =1{gibibyte} other{gibibytes}}' => '',
+ '{nFormatted} {n, plural, =1{gigabyte} other{gigabytes}}' => '{nFormatted} {n, plural, =1{gigabyte} other{gigabytes}}',
+ '{nFormatted} {n, plural, =1{kibibyte} other{kibibytes}}' => '',
+ '{nFormatted} {n, plural, =1{kilobyte} other{kilobytes}}' => '{nFormatted} {n, plural, =1{kilobyte} other{kilobytes}}',
+ '{nFormatted} {n, plural, =1{mebibyte} other{mebibytes}}' => '',
+ '{nFormatted} {n, plural, =1{megabyte} other{megabytes}}' => '{nFormatted} {n, plural, =1{megabyte} other{megabytes}}',
+ '{nFormatted} {n, plural, =1{pebibyte} other{pebibytes}}' => '',
+ '{nFormatted} {n, plural, =1{petabyte} other{petabytes}}' => '{nFormatted} {n, plural, =1{petabyte} other{petabytes}}',
+ '{nFormatted} {n, plural, =1{tebibyte} other{tebibytes}}' => '',
+ '{nFormatted} {n, plural, =1{terabyte} other{terabytes}}' => '{nFormatted} {n, plural, =1{terabyte} other{terabytes}}',
];
diff --git a/framework/messages/config.php b/framework/messages/config.php
index 93845f2e0a9..35d2b9f55bd 100644
--- a/framework/messages/config.php
+++ b/framework/messages/config.php
@@ -1,4 +1,5 @@
[
'af', 'ar', 'az', 'be', 'bg', 'bs', 'ca', 'cs', 'da', 'de', 'el', 'es', 'et', 'fa', 'fi', 'fr', 'he', 'hi',
'pt-BR', 'ro', 'hr', 'hu', 'hy', 'id', 'it', 'ja', 'ka', 'kk', 'ko', 'kz', 'lt', 'lv', 'ms', 'nb-NO', 'nl',
- 'pl', 'pt', 'ru', 'sk', 'sl', 'sr', 'sr-Latn', 'sv', 'tg', 'th', 'tr', 'uk', 'uz', 'uz-Cy', 'vi', 'zh-CN',
- 'zh-TW'
+ 'pl', 'pt', 'ru', 'sk', 'sl', 'sr', 'sr-Latn', 'sv', 'tg', 'th', 'tr', 'uk', 'uz', 'uz-Cy', 'vi', 'zh', 'zh-TW'
],
// string, the name of the function for translating messages.
// Defaults to 'Yii::t'. This is used as a mark to find the messages to be
@@ -26,12 +26,12 @@
// boolean, whether to sort messages by keys when merging new messages
// with the existing ones. Defaults to false, which means the new (untranslated)
// messages will be separated from the old (translated) ones.
- 'sort' => false,
+ 'sort' => true,
// boolean, whether the message file should be overwritten with the merged messages
'overwrite' => true,
// boolean, whether to remove messages that no longer appear in the source code.
// Defaults to false, which means each of these messages will be enclosed with a pair of '@@' marks.
- 'removeUnused' => false,
+ 'removeUnused' => true,
// boolean, whether to mark messages that no longer appear in the source code.
// Defaults to true, which means each of these messages will be enclosed with a pair of '@@' marks.
'markUnused' => true,
diff --git a/framework/messages/cs/yii.php b/framework/messages/cs/yii.php
index d5c8232f1ba..13984c95679 100644
--- a/framework/messages/cs/yii.php
+++ b/framework/messages/cs/yii.php
@@ -1,4 +1,5 @@
' a ',
- 'Powered by {yii}' => 'Běží na {yii}',
- 'The combination {values} of {attributes} has already been taken.' => 'Kombinace {values} pro {attributes} je již použitá.',
- 'Unknown alias: -{name}' => 'Neznámý alias: -{name}',
- 'Yii Framework' => 'Yii Framework',
- '{attribute} contains wrong subnet mask.' => '{attribute} obsahuje neplatnou masku podsítě.',
- '{attribute} is not in the allowed range.' => '{attribute} není v povoleném rozsahu.',
- '{attribute} must be a valid IP address.' => '{attribute} musí být platná IP adresa.',
- '{attribute} must be an IP address with specified subnet.' => '{attribute} musí být IP adresa se zadanou podsítí.',
- '{attribute} must be equal to "{compareValueOrAttribute}".' => '{attribute} se musí rovnat "{compareValueOrAttribute}".',
- '{attribute} must be greater than "{compareValueOrAttribute}".' => '{attribute} musí být větší než "{compareValueOrAttribute}".',
- '{attribute} must be greater than or equal to "{compareValueOrAttribute}".' => '{attribute} musí být větší nebo roven "{compareValueOrAttribute}".',
- '{attribute} must be less than "{compareValueOrAttribute}".' => '{attribute} musí být menší než "{compareValueOrAttribute}".',
- '{attribute} must be less than or equal to "{compareValueOrAttribute}".' => '{attribute} musí být menší nebo roven "{compareValueOrAttribute}".',
- '{attribute} must not be a subnet.' => '{attribute} nesmí být podsíť.',
- '{attribute} must not be an IPv4 address.' => '{attribute} nesmí být IPv4 adresa.',
- '{attribute} must not be an IPv6 address.' => '{attribute} nesmí být IPv6 adresa.',
- '{attribute} must not be equal to "{compareValueOrAttribute}".' => '{attribute} se nesmí rovnat "{compareValueOrAttribute}".',
- '{delta, plural, =1{1 day} other{# days}}' => '{delta, plural, =1{1 den} few{# dny} other{# dní}}',
- '{delta, plural, =1{1 hour} other{# hours}}' => '{delta, plural, =1{1 hodina} few{# hodiny} other{# hodin}}',
- '{delta, plural, =1{1 minute} other{# minutes}}' => '{delta, plural, =1{1 minuta} few{# minuty} other{# minut}}',
- '{delta, plural, =1{1 month} other{# months}}' => '{delta, plural, =1{1 měsíc} few{# měsíce} other{# měsíců}}',
- '{delta, plural, =1{1 second} other{# seconds}}' => '{delta, plural, =1{1 sekunda} few{# sekundy} other{# sekund}}',
- '{delta, plural, =1{1 year} other{# years}}' => '{delta, plural, =1{1 rok} few{# roky} other{# let}}',
- '{nFormatted} B' => '{nFormatted} B',
- '{nFormatted} GB' => '{nFormatted} GB',
- '{nFormatted} GiB' => '{nFormatted} GiB',
- '{nFormatted} kB' => '{nFormatted} kB',
- '{nFormatted} KiB' => '{nFormatted} KiB',
- '{nFormatted} MB' => '{nFormatted} MB',
- '{nFormatted} MiB' => '{nFormatted} MiB',
- '{nFormatted} PB' => '{nFormatted} PB',
- '{nFormatted} PiB' => '{nFormatted} PiB',
- '{nFormatted} TB' => '{nFormatted} TB',
- '{nFormatted} TiB' => '{nFormatted} TiB',
+ '"{attribute}" does not support operator "{operator}".' => '',
'(not set)' => '(není zadáno)',
+ 'Action not found.' => '',
+ 'Aliases available: {aliases}' => '',
'An internal server error occurred.' => 'Vyskytla se vnitřní chyba serveru.',
'Are you sure you want to delete this item?' => 'Opravdu chcete smazat tuto položku?',
+ 'Condition for "{attribute}" should be either a value or valid operator specification.' => '',
'Delete' => 'Smazat',
'Error' => 'Chyba',
'File upload failed.' => 'Nepodařilo se nahrát soubor.',
@@ -73,14 +44,19 @@
'No results found.' => 'Nenalezeny žádné záznamy.',
'Only files with these MIME types are allowed: {mimeTypes}.' => 'Povolené jsou pouze soubory následujících MIME typů: {mimeTypes}.',
'Only files with these extensions are allowed: {extensions}.' => 'Povolené jsou pouze soubory s následujícími příponami: {extensions}.',
+ 'Operator "{operator}" must be used with a search attribute.' => '',
+ 'Operator "{operator}" requires multiple operands.' => '',
+ 'Options available: {options}' => '',
'Page not found.' => 'Stránka nenalezena.',
'Please fix the following errors:' => 'Opravte prosím následující chyby:',
'Please upload a file.' => 'Nahrajte prosím soubor.',
'Showing {begin, number}-{end, number} of {totalCount, number} {totalCount, plural, one{item} other{items}}.' => '{totalCount, plural, one{Zobrazen} few{Zobrazeny} other{Zobrazeno}} {totalCount, plural, one{{begin, number}} other{{begin, number}-{end, number}}} z {totalCount, number} {totalCount, plural, one{záznamu} other{záznamů}}.',
+ 'The combination {values} of {attributes} has already been taken.' => 'Kombinace {values} pro {attributes} je již použitá.',
'The file "{file}" is not an image.' => 'Soubor "{file}" není obrázek.',
'The file "{file}" is too big. Its size cannot exceed {formattedLimit}.' => 'Soubor "{file}" je příliš velký. Velikost souboru nesmí přesáhnout {formattedLimit}.',
'The file "{file}" is too small. Its size cannot be smaller than {formattedLimit}.' => 'Soubor "{file}" je příliš malý. Velikost souboru nesmí být méně než {formattedLimit}.',
'The format of {attribute} is invalid.' => 'Formát údaje {attribute} je neplatný.',
+ 'The format of {filter} is invalid.' => '',
'The image "{file}" is too large. The height cannot be larger than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'Obrázek "{file}" je příliš velký. Výška nesmí přesáhnout {limit, number} {limit, plural, one{pixel} few{pixely} other{pixelů}}.',
'The image "{file}" is too large. The width cannot be larger than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'Obrázek "{file}" je příliš velký. Šířka nesmí přesáhnout {limit, number} {limit, plural, one{pixel} few{pixely} other{pixelů}}.',
'The image "{file}" is too small. The height cannot be smaller than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'Obrázek "{file}" je příliš malý. Výška nesmí být méně než {limit, number} {limit, plural, one{pixel} few{pixely} other{pixelů}}.',
@@ -89,12 +65,15 @@
'The verification code is incorrect.' => 'Nesprávný ověřovací kód.',
'Total {count, number} {count, plural, one{item} other{items}}.' => 'Celkem {count, number} {count, plural, one{záznam} few{záznamy} other{záznamů}}.',
'Unable to verify your data submission.' => 'Nebylo možné ověřit odeslané údaje.',
+ 'Unknown alias: -{name}' => 'Neznámý alias: -{name}',
+ 'Unknown filter attribute "{attribute}"' => '',
'Unknown option: --{name}' => 'Neznámá volba: --{name}',
'Update' => 'Upravit',
'View' => 'Náhled',
'Yes' => 'Ano',
'You are not allowed to perform this action.' => 'Nemáte oprávnění pro požadovanou akci.',
'You can upload at most {limit, number} {limit, plural, one{file} other{files}}.' => 'Nahrát můžete nanejvýš {limit, number} {limit, plural, one{soubor} few{soubory} other{souborů}}.',
+ 'You should upload at least {limit, number} {limit, plural, one{file} other{files}}.' => '',
'in {delta, plural, =1{a day} other{# days}}' => 'za {delta, plural, =1{den} few{# dny} other{# dnů}}',
'in {delta, plural, =1{a minute} other{# minutes}}' => 'za {delta, plural, =1{minutu} few{# minuty} other{# minut}}',
'in {delta, plural, =1{a month} other{# months}}' => 'za {delta, plural, =1{měsíc} few{# měsíce} other{# měsíců}}',
@@ -105,25 +84,56 @@
'the input value' => 'vstupní hodnota',
'{attribute} "{value}" has already been taken.' => 'Hodnota "{value}" pro údaj {attribute} již byla dříve použita.',
'{attribute} cannot be blank.' => 'Je zapotřebí vyplnit {attribute}.',
+ '{attribute} contains wrong subnet mask.' => '{attribute} obsahuje neplatnou masku podsítě.',
'{attribute} is invalid.' => 'Neplatná hodnota pro {attribute}.',
'{attribute} is not a valid URL.' => '{attribute} není platná URL.',
'{attribute} is not a valid email address.' => 'Pro {attribute} nebyla použita platná emailová adresa.',
+ '{attribute} is not in the allowed range.' => '{attribute} není v povoleném rozsahu.',
'{attribute} must be "{requiredValue}".' => '{attribute} musí být "{requiredValue}".',
'{attribute} must be a number.' => '{attribute} musí být číslo.',
'{attribute} must be a string.' => '{attribute} musí být řetězec.',
+ '{attribute} must be a valid IP address.' => '{attribute} musí být platná IP adresa.',
+ '{attribute} must be an IP address with specified subnet.' => '{attribute} musí být IP adresa se zadanou podsítí.',
'{attribute} must be an integer.' => '{attribute} musí být celé číslo.',
'{attribute} must be either "{true}" or "{false}".' => '{attribute} musí být buď "{true}" nebo "{false}".',
+ '{attribute} must be equal to "{compareValueOrAttribute}".' => '{attribute} se musí rovnat "{compareValueOrAttribute}".',
+ '{attribute} must be greater than "{compareValueOrAttribute}".' => '{attribute} musí být větší než "{compareValueOrAttribute}".',
+ '{attribute} must be greater than or equal to "{compareValueOrAttribute}".' => '{attribute} musí být větší nebo roven "{compareValueOrAttribute}".',
+ '{attribute} must be less than "{compareValueOrAttribute}".' => '{attribute} musí být menší než "{compareValueOrAttribute}".',
+ '{attribute} must be less than or equal to "{compareValueOrAttribute}".' => '{attribute} musí být menší nebo roven "{compareValueOrAttribute}".',
'{attribute} must be no greater than {max}.' => '{attribute} nesmí být větší než {max}.',
'{attribute} must be no less than {min}.' => '{attribute} nesmí být menší než {min}.',
+ '{attribute} must not be a subnet.' => '{attribute} nesmí být podsíť.',
+ '{attribute} must not be an IPv4 address.' => '{attribute} nesmí být IPv4 adresa.',
+ '{attribute} must not be an IPv6 address.' => '{attribute} nesmí být IPv6 adresa.',
+ '{attribute} must not be equal to "{compareValueOrAttribute}".' => '{attribute} se nesmí rovnat "{compareValueOrAttribute}".',
'{attribute} should contain at least {min, number} {min, plural, one{character} other{characters}}.' => '{attribute} musí obsahovat alespoň {min, number} {min, plural, one{znak} few{znaky} other{znaků}}.',
'{attribute} should contain at most {max, number} {max, plural, one{character} other{characters}}.' => '{attribute} může obsahovat nanejvýš {max, number} {max, plural, one{znak} few{znaky} other{znaků}}.',
'{attribute} should contain {length, number} {length, plural, one{character} other{characters}}.' => '{attribute} musí obsahovat {length, number} {length, plural, one{znak} few{znaky} other{znaků}}.',
+ '{compareAttribute} is invalid.' => '',
+ '{delta, plural, =1{1 day} other{# days}}' => '{delta, plural, =1{1 den} few{# dny} other{# dní}}',
+ '{delta, plural, =1{1 hour} other{# hours}}' => '{delta, plural, =1{1 hodina} few{# hodiny} other{# hodin}}',
+ '{delta, plural, =1{1 minute} other{# minutes}}' => '{delta, plural, =1{1 minuta} few{# minuty} other{# minut}}',
+ '{delta, plural, =1{1 month} other{# months}}' => '{delta, plural, =1{1 měsíc} few{# měsíce} other{# měsíců}}',
+ '{delta, plural, =1{1 second} other{# seconds}}' => '{delta, plural, =1{1 sekunda} few{# sekundy} other{# sekund}}',
+ '{delta, plural, =1{1 year} other{# years}}' => '{delta, plural, =1{1 rok} few{# roky} other{# let}}',
'{delta, plural, =1{a day} other{# days}} ago' => '{delta, plural, =1{včera} other{před # dny}}',
'{delta, plural, =1{a minute} other{# minutes}} ago' => 'před {delta, plural, =1{minutou} other{# minutami}}',
'{delta, plural, =1{a month} other{# months}} ago' => 'před {delta, plural, =1{měsícem} other{# měsíci}}',
'{delta, plural, =1{a second} other{# seconds}} ago' => 'před {delta, plural, =1{sekundou} other{# sekundami}}',
'{delta, plural, =1{a year} other{# years}} ago' => 'před {delta, plural, =1{rokem} other{# lety}}',
'{delta, plural, =1{an hour} other{# hours}} ago' => 'před {delta, plural, =1{hodinou} other{# hodinami}}',
+ '{nFormatted} B' => '{nFormatted} B',
+ '{nFormatted} GB' => '{nFormatted} GB',
+ '{nFormatted} GiB' => '{nFormatted} GiB',
+ '{nFormatted} KiB' => '{nFormatted} KiB',
+ '{nFormatted} MB' => '{nFormatted} MB',
+ '{nFormatted} MiB' => '{nFormatted} MiB',
+ '{nFormatted} PB' => '{nFormatted} PB',
+ '{nFormatted} PiB' => '{nFormatted} PiB',
+ '{nFormatted} TB' => '{nFormatted} TB',
+ '{nFormatted} TiB' => '{nFormatted} TiB',
+ '{nFormatted} kB' => '{nFormatted} kB',
'{nFormatted} {n, plural, =1{byte} other{bytes}}' => '{nFormatted} {n, plural, =1{byte} few{byty} other{bytů}}',
'{nFormatted} {n, plural, =1{gibibyte} other{gibibytes}}' => '{nFormatted} {n, plural, =1{gibibyte} few{gibibyty} other{gibibytů}}',
'{nFormatted} {n, plural, =1{gigabyte} other{gigabytes}}' => '{nFormatted} {n, plural, =1{gigabyte} few{gigabyty} other{gigabytů}}',
diff --git a/framework/messages/da/yii.php b/framework/messages/da/yii.php
index d7e27d265e3..64eba62ce43 100644
--- a/framework/messages/da/yii.php
+++ b/framework/messages/da/yii.php
@@ -1,4 +1,5 @@
'(ikke defineret)',
- 'An internal server error occurred.' => 'Der opstod en intern server fejl.',
- 'Are you sure you want to delete this item?' => 'Er du sikker på, at du vil slette dette element?',
- 'Delete' => 'Slet',
- 'Error' => 'Fejl',
- 'File upload failed.' => 'Upload af fil fejlede.',
- 'Home' => 'Start',
- 'Invalid data received for parameter "{param}".' => 'Ugyldig data modtaget for parameteren "{param}".',
- 'Login Required' => 'Login Påkrævet',
- 'Missing required arguments: {params}' => 'Påkrævede argumenter mangler: {params}',
- 'Missing required parameters: {params}' => 'Påkrævede parametre mangler: {params}',
- 'No' => 'Nej',
- 'No help for unknown command "{command}".' => 'Ingen hjælp til ukendt kommando "{command}".',
- 'No help for unknown sub-command "{command}".' => 'Ingen hjælp til ukendt under-kommando "{command}".',
- 'No results found.' => 'Ingen resultater fundet.',
- 'Only files with these MIME types are allowed: {mimeTypes}.' => 'Kun filer med følgende MIME-typer er tilladte: {mimeTypes}.',
- 'Only files with these extensions are allowed: {extensions}.' => 'Kun filer med følgende filtyper er tilladte: {extensions}.',
- 'Page not found.' => 'Siden blev ikke fundet.',
- 'Please fix the following errors:' => 'Ret venligst følgende fejl:',
- 'Please upload a file.' => 'Venligst upload en fil.',
- 'Showing {begin, number}-{end, number} of {totalCount, number} {totalCount, plural, one{item} other{items}}.' => 'Viser {begin, number}-{end, number} af {totalCount, number} {totalCount, plural, one{element} other{elementer}}.',
- 'The file "{file}" is not an image.' => 'Filen "{file}" er ikke et billede.',
- 'The file "{file}" is too big. Its size cannot exceed {formattedLimit}.' => 'Filen "{file}" er for stor. Størrelsen må ikke overstige {formattedLimit}.',
- 'The file "{file}" is too small. Its size cannot be smaller than {formattedLimit}.' => 'Filen "{file}" er for lille. Størrelsen må ikke være mindre end {formattedLimit}.',
- 'The format of {attribute} is invalid.' => 'Formatet af {attribute} er ugyldigt.',
- 'The image "{file}" is too large. The height cannot be larger than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'Billedet "{file}" er for stort. Højden må ikke være større end {limit, number} {limit, plural, one{pixel} other{pixels}}.',
- 'The image "{file}" is too large. The width cannot be larger than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'Billedet "{file}" er for stort. Bredden må ikke være større end {limit, number} {limit, plural, one{pixel} other{pixels}}.',
- 'The image "{file}" is too small. The height cannot be smaller than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'Billedet "{file}" er for lille. Højden må ikke være mindre end {limit, number} {limit, plural, one{pixel} other{pixels}}.',
- 'The image "{file}" is too small. The width cannot be smaller than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'Billedet "{file}" er for lille. Bredden må ikke være mindre end {limit, number} {limit, plural, one{pixel} other{pixels}}.',
- 'The requested view "{name}" was not found.' => 'Den ønskede visning "{name}" blev ikke fundet.',
- 'The verification code is incorrect.' => 'Verifikationskoden er ikke korrekt.',
- 'Total {count, number} {count, plural, one{item} other{items}}.' => 'Total {count, number} {count, plural, one{element} other{elementer}}.',
- 'Unable to verify your data submission.' => 'Kunne ikke verificere din data indsendelse.',
- 'Unknown command "{command}".' => 'Ukendt kommando "{command}".',
- 'Unknown option: --{name}' => 'Ukendt option: --{name}',
- 'Update' => 'Opdatér',
- 'View' => 'Vis',
- 'Yes' => 'Ja',
- 'You are not allowed to perform this action.' => 'Du har ikke tilladelse til at udføre denne handling.',
- 'You can upload at most {limit, number} {limit, plural, one{file} other{files}}.' => 'Du kan højst uploade {limit, number} {limit, plural, one{fil} other{filer}}.',
- 'in {delta, plural, =1{a day} other{# days}}' => 'om {delta, plural, =1{en dag} other{# dage}}',
- 'in {delta, plural, =1{a minute} other{# minutes}}' => 'om {delta, plural, =1{et minut} other{# minutter}}',
- 'in {delta, plural, =1{a month} other{# months}}' => 'om {delta, plural, =1{en måned} other{# måneder}}',
- 'in {delta, plural, =1{a second} other{# seconds}}' => 'om {delta, plural, =1{et sekund} other{# sekunder}}',
- 'in {delta, plural, =1{a year} other{# years}}' => 'om {delta, plural, =1{et år} other{# år}}',
- 'in {delta, plural, =1{an hour} other{# hours}}' => 'om {delta, plural, =1{en time} other{# timer}}',
- 'the input value' => 'inputværdien',
- '{attribute} "{value}" has already been taken.' => '{attribute} "{value}" er allerede i brug.',
- '{attribute} cannot be blank.' => '{attribute} må ikke være tom.',
- '{attribute} is invalid.' => '{attribute} er ugyldig.',
- '{attribute} is not a valid URL.' => '{attribute} er ikke en gyldig URL.',
- '{attribute} is not a valid email address.' => '{attribute} er ikke en gyldig emailadresse.',
- '{attribute} must be "{requiredValue}".' => '{attribute} skal være "{requiredValue}".',
- '{attribute} must be a number.' => '{attribute} skal være et nummer.',
- '{attribute} must be a string.' => '{attribute} skal være en tekst-streng.',
- '{attribute} must be an integer.' => '{attribute} skal være et heltal.',
- '{attribute} must be either "{true}" or "{false}".' => '{attribute} skal være enten "{true}" eller "{false}".',
- '{attribute} must be greater than "{compareValue}".' => '{attribute} skal være større end "{compareValue}".',
- '{attribute} must be greater than or equal to "{compareValue}".' => '{attribute} skal være større end eller lig med "{compareValue}".',
- '{attribute} must be less than "{compareValue}".' => '{attribute} skal være mindre end "{compareValue}".',
- '{attribute} must be less than or equal to "{compareValue}".' => '{attribute} skal være mindre end eller lig med "{compareValue}".',
- '{attribute} must be no greater than {max}.' => '{attribute} må ikke være større end {max}.',
- '{attribute} must be no less than {min}.' => '{attribute} må ikke være mindre end {min}.',
- '{attribute} must be repeated exactly.' => '{attribute} skal være gentaget præcist.',
- '{attribute} must not be equal to "{compareValue}".' => '{attribute} må ikke være lig med "{compareValue}".',
- '{attribute} should contain at least {min, number} {min, plural, one{character} other{characters}}.' => '{attribute} skal mindst indeholde {min, number} {min, plural, one{tegn} other{tegn}}.',
- '{attribute} should contain at most {max, number} {max, plural, one{character} other{characters}}.' => '{attribute} skal højst indeholde {max, number} {max, plural, one{tegn} other{tegn}}.',
- '{attribute} should contain {length, number} {length, plural, one{character} other{characters}}.' => '{attribute} skal indeholde {length, number} {length, plural, one{tegn} other{tegn}}.',
- '{delta, plural, =1{a day} other{# days}} ago' => 'for {delta, plural, =1{en dag} other{# dage}} siden',
- '{delta, plural, =1{a minute} other{# minutes}} ago' => 'for {delta, plural, =1{et minut} other{# minutter}} siden',
- '{delta, plural, =1{a month} other{# months}} ago' => 'for {delta, plural, =1{en måned} other{# måneder}} siden',
- '{delta, plural, =1{a second} other{# seconds}} ago' => 'for {delta, plural, =1{et sekund} other{# sekunder}} siden',
- '{delta, plural, =1{a year} other{# years}} ago' => 'for {delta, plural, =1{et år} other{# år}} siden',
- '{delta, plural, =1{an hour} other{# hours}} ago' => 'for {delta, plural, =1{en time} other{# timer}} siden',
- '{n, plural, =1{# byte} other{# bytes}}' => '{n, plural, =1{# byte} other{# bytes}}',
- '{n, plural, =1{# gigabyte} other{# gigabytes}}' => '{n, plural, =1{# gigabyte} other{# gigabytes}}',
- '{n, plural, =1{# kilobyte} other{# kilobytes}}' => '{n, plural, =1{# kilobyte} other{# kilobytes}}',
- '{n, plural, =1{# megabyte} other{# megabytes}}' => '{n, plural, =1{# megabyte} other{# megabytes}}',
- '{n, plural, =1{# petabyte} other{# petabytes}}' => '{n, plural, =1{# petabyte} other{# petabytes}}',
- '{n, plural, =1{# terabyte} other{# terabytes}}' => '{n, plural, =1{# terabyte} other{# terabytes}}',
- '{n} B' => '{n} B',
- '{n} GB' => '{n} GB',
- '{n} KB' => '{n} KB',
- '{n} MB' => '{n} MB',
- '{n} PB' => '{n} PB',
- '{n} TB' => '{n} TB',
+ ' and ' => '',
+ '"{attribute}" does not support operator "{operator}".' => '',
+ '(not set)' => '(ikke defineret)',
+ 'Action not found.' => '',
+ 'Aliases available: {aliases}' => '',
+ 'An internal server error occurred.' => 'Der opstod en intern server fejl.',
+ 'Are you sure you want to delete this item?' => 'Er du sikker på, at du vil slette dette element?',
+ 'Condition for "{attribute}" should be either a value or valid operator specification.' => '',
+ 'Delete' => 'Slet',
+ 'Error' => 'Fejl',
+ 'File upload failed.' => 'Upload af fil fejlede.',
+ 'Home' => 'Start',
+ 'Invalid data received for parameter "{param}".' => 'Ugyldig data modtaget for parameteren "{param}".',
+ 'Login Required' => 'Login Påkrævet',
+ 'Missing required arguments: {params}' => 'Påkrævede argumenter mangler: {params}',
+ 'Missing required parameters: {params}' => 'Påkrævede parametre mangler: {params}',
+ 'No' => 'Nej',
+ 'No results found.' => 'Ingen resultater fundet.',
+ 'Only files with these MIME types are allowed: {mimeTypes}.' => 'Kun filer med følgende MIME-typer er tilladte: {mimeTypes}.',
+ 'Only files with these extensions are allowed: {extensions}.' => 'Kun filer med følgende filtyper er tilladte: {extensions}.',
+ 'Operator "{operator}" must be used with a search attribute.' => '',
+ 'Operator "{operator}" requires multiple operands.' => '',
+ 'Options available: {options}' => '',
+ 'Page not found.' => 'Siden blev ikke fundet.',
+ 'Please fix the following errors:' => 'Ret venligst følgende fejl:',
+ 'Please upload a file.' => 'Venligst upload en fil.',
+ 'Showing {begin, number}-{end, number} of {totalCount, number} {totalCount, plural, one{item} other{items}}.' => 'Viser {begin, number}-{end, number} af {totalCount, number} {totalCount, plural, one{element} other{elementer}}.',
+ 'The combination {values} of {attributes} has already been taken.' => '',
+ 'The file "{file}" is not an image.' => 'Filen "{file}" er ikke et billede.',
+ 'The file "{file}" is too big. Its size cannot exceed {formattedLimit}.' => 'Filen "{file}" er for stor. Størrelsen må ikke overstige {formattedLimit}.',
+ 'The file "{file}" is too small. Its size cannot be smaller than {formattedLimit}.' => 'Filen "{file}" er for lille. Størrelsen må ikke være mindre end {formattedLimit}.',
+ 'The format of {attribute} is invalid.' => 'Formatet af {attribute} er ugyldigt.',
+ 'The format of {filter} is invalid.' => '',
+ 'The image "{file}" is too large. The height cannot be larger than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'Billedet "{file}" er for stort. Højden må ikke være større end {limit, number} {limit, plural, one{pixel} other{pixels}}.',
+ 'The image "{file}" is too large. The width cannot be larger than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'Billedet "{file}" er for stort. Bredden må ikke være større end {limit, number} {limit, plural, one{pixel} other{pixels}}.',
+ 'The image "{file}" is too small. The height cannot be smaller than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'Billedet "{file}" er for lille. Højden må ikke være mindre end {limit, number} {limit, plural, one{pixel} other{pixels}}.',
+ 'The image "{file}" is too small. The width cannot be smaller than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'Billedet "{file}" er for lille. Bredden må ikke være mindre end {limit, number} {limit, plural, one{pixel} other{pixels}}.',
+ 'The requested view "{name}" was not found.' => 'Den ønskede visning "{name}" blev ikke fundet.',
+ 'The verification code is incorrect.' => 'Verifikationskoden er ikke korrekt.',
+ 'Total {count, number} {count, plural, one{item} other{items}}.' => 'Total {count, number} {count, plural, one{element} other{elementer}}.',
+ 'Unable to verify your data submission.' => 'Kunne ikke verificere din data indsendelse.',
+ 'Unknown alias: -{name}' => '',
+ 'Unknown filter attribute "{attribute}"' => '',
+ 'Unknown option: --{name}' => 'Ukendt option: --{name}',
+ 'Update' => 'Opdatér',
+ 'View' => 'Vis',
+ 'Yes' => 'Ja',
+ 'You are not allowed to perform this action.' => 'Du har ikke tilladelse til at udføre denne handling.',
+ 'You can upload at most {limit, number} {limit, plural, one{file} other{files}}.' => 'Du kan højst uploade {limit, number} {limit, plural, one{fil} other{filer}}.',
+ 'You should upload at least {limit, number} {limit, plural, one{file} other{files}}.' => '',
+ 'in {delta, plural, =1{a day} other{# days}}' => 'om {delta, plural, =1{en dag} other{# dage}}',
+ 'in {delta, plural, =1{a minute} other{# minutes}}' => 'om {delta, plural, =1{et minut} other{# minutter}}',
+ 'in {delta, plural, =1{a month} other{# months}}' => 'om {delta, plural, =1{en måned} other{# måneder}}',
+ 'in {delta, plural, =1{a second} other{# seconds}}' => 'om {delta, plural, =1{et sekund} other{# sekunder}}',
+ 'in {delta, plural, =1{a year} other{# years}}' => 'om {delta, plural, =1{et år} other{# år}}',
+ 'in {delta, plural, =1{an hour} other{# hours}}' => 'om {delta, plural, =1{en time} other{# timer}}',
+ 'just now' => '',
+ 'the input value' => 'inputværdien',
+ '{attribute} "{value}" has already been taken.' => '{attribute} "{value}" er allerede i brug.',
+ '{attribute} cannot be blank.' => '{attribute} må ikke være tom.',
+ '{attribute} contains wrong subnet mask.' => '',
+ '{attribute} is invalid.' => '{attribute} er ugyldig.',
+ '{attribute} is not a valid URL.' => '{attribute} er ikke en gyldig URL.',
+ '{attribute} is not a valid email address.' => '{attribute} er ikke en gyldig emailadresse.',
+ '{attribute} is not in the allowed range.' => '',
+ '{attribute} must be "{requiredValue}".' => '{attribute} skal være "{requiredValue}".',
+ '{attribute} must be a number.' => '{attribute} skal være et nummer.',
+ '{attribute} must be a string.' => '{attribute} skal være en tekst-streng.',
+ '{attribute} must be a valid IP address.' => '',
+ '{attribute} must be an IP address with specified subnet.' => '',
+ '{attribute} must be an integer.' => '{attribute} skal være et heltal.',
+ '{attribute} must be either "{true}" or "{false}".' => '{attribute} skal være enten "{true}" eller "{false}".',
+ '{attribute} must be equal to "{compareValueOrAttribute}".' => '',
+ '{attribute} must be greater than "{compareValueOrAttribute}".' => '{attribute} skal være større end "{compareValueOrAttribute}".',
+ '{attribute} must be greater than or equal to "{compareValueOrAttribute}".' => '{attribute} skal være større end eller lig med "{compareValueOrAttribute}".',
+ '{attribute} must be less than "{compareValueOrAttribute}".' => '{attribute} skal være mindre end "{compareValueOrAttribute}".',
+ '{attribute} must be less than or equal to "{compareValueOrAttribute}".' => '{attribute} skal være mindre end eller lig med "{compareValueOrAttribute}".',
+ '{attribute} must be no greater than {max}.' => '{attribute} må ikke være større end {max}.',
+ '{attribute} must be no less than {min}.' => '{attribute} må ikke være mindre end {min}.',
+ '{attribute} must not be a subnet.' => '',
+ '{attribute} must not be an IPv4 address.' => '',
+ '{attribute} must not be an IPv6 address.' => '',
+ '{attribute} must not be equal to "{compareValueOrAttribute}".' => '{attribute} må ikke være lig med "{compareValueOrAttribute}".',
+ '{attribute} should contain at least {min, number} {min, plural, one{character} other{characters}}.' => '{attribute} skal mindst indeholde {min, number} {min, plural, one{tegn} other{tegn}}.',
+ '{attribute} should contain at most {max, number} {max, plural, one{character} other{characters}}.' => '{attribute} skal højst indeholde {max, number} {max, plural, one{tegn} other{tegn}}.',
+ '{attribute} should contain {length, number} {length, plural, one{character} other{characters}}.' => '{attribute} skal indeholde {length, number} {length, plural, one{tegn} other{tegn}}.',
+ '{compareAttribute} is invalid.' => '',
+ '{delta, plural, =1{1 day} other{# days}}' => '',
+ '{delta, plural, =1{1 hour} other{# hours}}' => '',
+ '{delta, plural, =1{1 minute} other{# minutes}}' => '',
+ '{delta, plural, =1{1 month} other{# months}}' => '',
+ '{delta, plural, =1{1 second} other{# seconds}}' => '',
+ '{delta, plural, =1{1 year} other{# years}}' => '',
+ '{delta, plural, =1{a day} other{# days}} ago' => 'for {delta, plural, =1{en dag} other{# dage}} siden',
+ '{delta, plural, =1{a minute} other{# minutes}} ago' => 'for {delta, plural, =1{et minut} other{# minutter}} siden',
+ '{delta, plural, =1{a month} other{# months}} ago' => 'for {delta, plural, =1{en måned} other{# måneder}} siden',
+ '{delta, plural, =1{a second} other{# seconds}} ago' => 'for {delta, plural, =1{et sekund} other{# sekunder}} siden',
+ '{delta, plural, =1{a year} other{# years}} ago' => 'for {delta, plural, =1{et år} other{# år}} siden',
+ '{delta, plural, =1{an hour} other{# hours}} ago' => 'for {delta, plural, =1{en time} other{# timer}} siden',
+ '{nFormatted} B' => '{nFormatted} B',
+ '{nFormatted} GB' => '{nFormatted} GB',
+ '{nFormatted} GiB' => '',
+ '{nFormatted} KiB' => '',
+ '{nFormatted} MB' => '{nFormatted} MB',
+ '{nFormatted} MiB' => '',
+ '{nFormatted} PB' => '{nFormatted} PB',
+ '{nFormatted} PiB' => '',
+ '{nFormatted} TB' => '{nFormatted} TB',
+ '{nFormatted} TiB' => '',
+ '{nFormatted} kB' => '{nFormatted} kB',
+ '{nFormatted} {n, plural, =1{byte} other{bytes}}' => '{nFormatted} {n, plural, =1{byte} other{bytes}}',
+ '{nFormatted} {n, plural, =1{gibibyte} other{gibibytes}}' => '',
+ '{nFormatted} {n, plural, =1{gigabyte} other{gigabytes}}' => '{nFormatted} {n, plural, =1{gigabyte} other{gigabytes}}',
+ '{nFormatted} {n, plural, =1{kibibyte} other{kibibytes}}' => '',
+ '{nFormatted} {n, plural, =1{kilobyte} other{kilobytes}}' => '{nFormatted} {n, plural, =1{kilobyte} other{kilobytes}}',
+ '{nFormatted} {n, plural, =1{mebibyte} other{mebibytes}}' => '',
+ '{nFormatted} {n, plural, =1{megabyte} other{megabytes}}' => '{nFormatted} {n, plural, =1{megabyte} other{megabytes}}',
+ '{nFormatted} {n, plural, =1{pebibyte} other{pebibytes}}' => '',
+ '{nFormatted} {n, plural, =1{petabyte} other{petabytes}}' => '{nFormatted} {n, plural, =1{petabyte} other{petabytes}}',
+ '{nFormatted} {n, plural, =1{tebibyte} other{tebibytes}}' => '',
+ '{nFormatted} {n, plural, =1{terabyte} other{terabytes}}' => '{nFormatted} {n, plural, =1{terabyte} other{terabytes}}',
];
diff --git a/framework/messages/de/yii.php b/framework/messages/de/yii.php
index 51ede9951a1..b92593b6f8f 100644
--- a/framework/messages/de/yii.php
+++ b/framework/messages/de/yii.php
@@ -1,4 +1,5 @@
' und ',
+ '"{attribute}" does not support operator "{operator}".' => '"{attribute}" unterstützt den Operator "{operator}" nicht.',
'(not set)' => '(nicht gesetzt)',
+ 'Action not found.' => '',
+ 'Aliases available: {aliases}' => '',
'An internal server error occurred.' => 'Es ist ein interner Serverfehler aufgetreten.',
'Are you sure you want to delete this item?' => 'Wollen Sie diesen Eintrag wirklich löschen?',
+ 'Condition for "{attribute}" should be either a value or valid operator specification.' => 'Die Bedingung für "{attribute}" muss entweder ein Wert oder ein gültiger Operator sein.',
'Delete' => 'Löschen',
'Error' => 'Fehler',
'File upload failed.' => 'Das Hochladen der Datei ist fehlgeschlagen.',
@@ -39,16 +44,19 @@
'No results found.' => 'Keine Ergebnisse gefunden',
'Only files with these MIME types are allowed: {mimeTypes}.' => 'Es sind nur Dateien mit folgenden MIME-Typen erlaubt: {mimeTypes}.',
'Only files with these extensions are allowed: {extensions}.' => 'Es sind nur Dateien mit folgenden Dateierweiterungen erlaubt: {extensions}.',
+ 'Operator "{operator}" must be used with a search attribute.' => 'Der Operator "{operator}" muss zusammen mit einem Such-Attribut verwendet werden.',
+ 'Operator "{operator}" requires multiple operands.' => 'Der Operator "{operator}" erwartet mehrere Operanden.',
+ 'Options available: {options}' => '',
'Page not found.' => 'Seite nicht gefunden.',
'Please fix the following errors:' => 'Bitte korrigieren Sie die folgenden Fehler:',
'Please upload a file.' => 'Bitte laden Sie eine Datei hoch.',
- 'Powered by {yii}' => 'Basiert auf {yii}',
'Showing {begin, number}-{end, number} of {totalCount, number} {totalCount, plural, one{item} other{items}}.' => 'Zeige {begin, number}-{end, number} von {totalCount, number} {totalCount, plural, one{Eintrag} other{Einträgen}}.',
'The combination {values} of {attributes} has already been taken.' => 'Die Kombination {values} für {attributes} wird bereits verwendet.',
'The file "{file}" is not an image.' => 'Die Datei "{file}" ist kein Bild.',
'The file "{file}" is too big. Its size cannot exceed {formattedLimit}.' => 'Die Datei "{file}" ist zu groß. Es sind maximal {formattedLimit} erlaubt.',
'The file "{file}" is too small. Its size cannot be smaller than {formattedLimit}.' => 'Die Datei "{file}" ist zu klein. Es sind mindestens {formattedLimit} erforderlich.',
'The format of {attribute} is invalid.' => 'Das Format von {attribute} ist ungültig.',
+ 'The format of {filter} is invalid.' => 'Das Format von {filter} ist ungültig.',
'The image "{file}" is too large. The height cannot be larger than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'Das Bild "{file}" ist zu groß. Es darf maximal {limit, number} Pixel hoch sein.',
'The image "{file}" is too large. The width cannot be larger than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'Das Bild "{file}" ist zu groß. Es darf maximal {limit, number} Pixel breit sein.',
'The image "{file}" is too small. The height cannot be smaller than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'Das Bild "{file}" ist zu klein. Es muss mindestens {limit, number} Pixel hoch sein.',
@@ -58,13 +66,14 @@
'Total {count, number} {count, plural, one{item} other{items}}.' => 'Insgesamt {count, number} {count, plural, one{Eintrag} other{Einträge}}.',
'Unable to verify your data submission.' => 'Ihre Dateneingabe konnte nicht überprüft werden oder ist ungültig.',
'Unknown alias: -{name}' => 'Unbekannter Alias: -{name}',
+ 'Unknown filter attribute "{attribute}"' => 'Unbekanntes Filter-Attribut "{attribute}"',
'Unknown option: --{name}' => 'Unbekannte Option: --{name}',
'Update' => 'Bearbeiten',
'View' => 'Anzeigen',
'Yes' => 'Ja',
- 'Yii Framework' => 'Yii Framework',
- 'You can upload at most {limit, number} {limit, plural, one{file} other{files}}.' => 'Sie können maximal {limit, plural, one{eine Datei} other{# Dateien}} hochladen.',
'You are not allowed to perform this action.' => 'Sie dürfen diese Aktion nicht durchführen.',
+ 'You can upload at most {limit, number} {limit, plural, one{file} other{files}}.' => 'Sie können maximal {limit, plural, one{eine Datei} other{# Dateien}} hochladen.',
+ 'You should upload at least {limit, number} {limit, plural, one{file} other{files}}.' => '',
'in {delta, plural, =1{a day} other{# days}}' => 'in {delta, plural, =1{einem Tag} other{# Tagen}}',
'in {delta, plural, =1{a minute} other{# minutes}}' => 'in {delta, plural, =1{einer Minute} other{# Minuten}}',
'in {delta, plural, =1{a month} other{# months}}' => 'in {delta, plural, =1{einem Monat} other{# Monaten}}',
@@ -101,6 +110,7 @@
'{attribute} should contain at least {min, number} {min, plural, one{character} other{characters}}.' => '{attribute} muss mindestens {min, number} Zeichen enthalten.',
'{attribute} should contain at most {max, number} {max, plural, one{character} other{characters}}.' => '{attribute} darf maximal {max, number} Zeichen enthalten.',
'{attribute} should contain {length, number} {length, plural, one{character} other{characters}}.' => '{attribute} muss aus genau {length, number} Zeichen bestehen.',
+ '{compareAttribute} is invalid.' => '',
'{delta, plural, =1{1 day} other{# days}}' => '{delta, plural, =1{1 Tag} other{# Tage}}',
'{delta, plural, =1{1 hour} other{# hours}}' => '{delta, plural, =1{1 Stunde} other{# Stunden}}',
'{delta, plural, =1{1 minute} other{# minutes}}' => '{delta, plural, =1{1 Minute} other{# Minuten}}',
@@ -116,7 +126,6 @@
'{nFormatted} B' => '{nFormatted} B',
'{nFormatted} GB' => '{nFormatted} GB',
'{nFormatted} GiB' => '{nFormatted} GiB',
- '{nFormatted} kB' => '{nFormatted} kB',
'{nFormatted} KiB' => '{nFormatted} KiB',
'{nFormatted} MB' => '{nFormatted} MB',
'{nFormatted} MiB' => '{nFormatted} MiB',
@@ -124,6 +133,7 @@
'{nFormatted} PiB' => '{nFormatted} PiB',
'{nFormatted} TB' => '{nFormatted} TB',
'{nFormatted} TiB' => '{nFormatted} TiB',
+ '{nFormatted} kB' => '{nFormatted} kB',
'{nFormatted} {n, plural, =1{byte} other{bytes}}' => '{nFormatted} Byte',
'{nFormatted} {n, plural, =1{gibibyte} other{gibibytes}}' => '{nFormatted} GibiByte',
'{nFormatted} {n, plural, =1{gigabyte} other{gigabytes}}' => '{nFormatted} Gigabyte',
@@ -135,10 +145,4 @@
'{nFormatted} {n, plural, =1{petabyte} other{petabytes}}' => '{nFormatted} Petabyte',
'{nFormatted} {n, plural, =1{tebibyte} other{tebibytes}}' => '{nFormatted} TebiByte',
'{nFormatted} {n, plural, =1{terabyte} other{terabytes}}' => '{nFormatted} Terabyte',
- '"{attribute}" does not support operator "{operator}".' => '"{attribute}" unterstützt den Operator "{operator}" nicht.',
- 'Condition for "{attribute}" should be either a value or valid operator specification.' => 'Die Bedingung für "{attribute}" muss entweder ein Wert oder ein gültiger Operator sein.',
- 'Operator "{operator}" must be used with a search attribute.' => 'Der Operator "{operator}" muss zusammen mit einem Such-Attribut verwendet werden.',
- 'Operator "{operator}" requires multiple operands.' => 'Der Operator "{operator}" erwartet mehrere Operanden.',
- 'The format of {filter} is invalid.' => 'Das Format von {filter} ist ungültig.',
- 'Unknown filter attribute "{attribute}"' => 'Unbekanntes Filter-Attribut "{attribute}"',
];
diff --git a/framework/messages/el/yii.php b/framework/messages/el/yii.php
index 2c4cfa79fd9..a6481adab81 100644
--- a/framework/messages/el/yii.php
+++ b/framework/messages/el/yii.php
@@ -1,4 +1,5 @@
'Το «{attribute}» πρέπει να περιέχει τουλάχιστον {min, number} {min, plural, one{χαρακτήρα} few{χαρακτήρες} many{χαρακτήρες} other{χαρακτήρες}}.',
'{attribute} should contain at most {max, number} {max, plural, one{character} other{characters}}.' => 'Το «{attribute}» πρέπει να περιέχει το πολύ {max, number} {max, plural, one{χαρακτήρα} few{χαρακτήρες} many{χαρακτήρες} other{χαρακτήρες}}.',
'{attribute} should contain {length, number} {length, plural, one{character} other{characters}}.' => 'Το «{attribute}» πρέπει να περιέχει {length, number} {length, plural, one{χαρακτήρα} few{χαρακτήρες} many{χαρακτήρες} other{χαρακτήρες}}.',
+ '{compareAttribute} is invalid.' => '',
'{delta, plural, =1{1 day} other{# days}}' => '{delta, plural, =1{1 ημέρα} other{# ημέρες}}',
'{delta, plural, =1{1 hour} other{# hours}}' => '{delta, plural, =1{1 ώρα} other{# ώρες}}',
'{delta, plural, =1{1 minute} other{# minutes}}' => '{delta, plural, =1{1 λεπτό} other{# λεπτά}}',
diff --git a/framework/messages/es/yii.php b/framework/messages/es/yii.php
index 6d65a3233c8..9bb0c8e0290 100644
--- a/framework/messages/es/yii.php
+++ b/framework/messages/es/yii.php
@@ -1,4 +1,5 @@
' y ',
- 'The combination {values} of {attributes} has already been taken.' => 'La combinación de {values} de {attributes} ya ha sido utilizada.',
+ '"{attribute}" does not support operator "{operator}".' => '',
'(not set)' => '(no definido)',
+ 'Action not found.' => '',
+ 'Aliases available: {aliases}' => '',
'An internal server error occurred.' => 'Hubo un error interno del servidor.',
'Are you sure you want to delete this item?' => '¿Está seguro de eliminar este elemento?',
+ 'Condition for "{attribute}" should be either a value or valid operator specification.' => '',
'Delete' => 'Eliminar',
'Error' => 'Error',
'File upload failed.' => 'Falló la subida del archivo.',
@@ -40,15 +44,19 @@
'No results found.' => 'No se encontraron resultados.',
'Only files with these MIME types are allowed: {mimeTypes}.' => 'Sólo se aceptan archivos con los siguientes tipos MIME: {mimeTypes}.',
'Only files with these extensions are allowed: {extensions}.' => 'Sólo se aceptan archivos con las siguientes extensiones: {extensions}',
+ 'Operator "{operator}" must be used with a search attribute.' => '',
+ 'Operator "{operator}" requires multiple operands.' => '',
+ 'Options available: {options}' => '',
'Page not found.' => 'Página no encontrada.',
'Please fix the following errors:' => 'Por favor corrija los siguientes errores:',
'Please upload a file.' => 'Por favor suba un archivo.',
- 'Powered by {yii}' => 'Desarrollado con {yii}',
'Showing {begin, number}-{end, number} of {totalCount, number} {totalCount, plural, one{item} other{items}}.' => 'Mostrando {begin, number}-{end, number} de {totalCount, number} {totalCount, plural, one{elemento} other{elementos}}.',
+ 'The combination {values} of {attributes} has already been taken.' => 'La combinación de {values} de {attributes} ya ha sido utilizada.',
'The file "{file}" is not an image.' => 'El archivo "{file}" no es una imagen.',
'The file "{file}" is too big. Its size cannot exceed {formattedLimit}.' => 'El archivo "{file}" es demasiado grande. Su tamaño no puede exceder {formattedLimit}.',
'The file "{file}" is too small. Its size cannot be smaller than {formattedLimit}.' => 'El archivo "{file}" es demasiado pequeño. Su tamaño no puede ser menor a {formattedLimit}.',
'The format of {attribute} is invalid.' => 'El formato de {attribute} es inválido.',
+ 'The format of {filter} is invalid.' => '',
'The image "{file}" is too large. The height cannot be larger than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'La imagen "{file}" es demasiado grande. La altura no puede ser mayor a {limit, number} {limit, plural, one{píxel} other{píxeles}}.',
'The image "{file}" is too large. The width cannot be larger than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'La imagen "{file}" es demasiado grande. La anchura no puede ser mayor a {limit, number} {limit, plural, one{píxel} other{píxeles}}.',
'The image "{file}" is too small. The height cannot be smaller than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'La imagen "{file}" es demasiado pequeña. La altura no puede ser menor a {limit, number} {limit, plural, one{píxel} other{píxeles}}.',
@@ -58,13 +66,14 @@
'Total {count, number} {count, plural, one{item} other{items}}.' => 'Total {count, number} {count, plural, one{elemento} other{elementos}}.',
'Unable to verify your data submission.' => 'Incapaz de verificar los datos enviados.',
'Unknown alias: -{name}' => 'Alias desconocido: -{name}',
+ 'Unknown filter attribute "{attribute}"' => '',
'Unknown option: --{name}' => 'Opción desconocida: --{name}',
'Update' => 'Actualizar',
'View' => 'Ver',
'Yes' => 'Sí',
- 'Yii Framework' => 'Yii Framework',
'You are not allowed to perform this action.' => 'No tiene permitido ejecutar esta acción.',
'You can upload at most {limit, number} {limit, plural, one{file} other{files}}.' => 'Puedes subir como máximo {limit, number} {limit, plural, one{archivo} other{archivos}}.',
+ 'You should upload at least {limit, number} {limit, plural, one{file} other{files}}.' => '',
'in {delta, plural, =1{a day} other{# days}}' => 'en {delta, plural, =1{un día} other{# días}}',
'in {delta, plural, =1{a minute} other{# minutes}}' => 'en {delta, plural, =1{un minuto} other{# minutos}}',
'in {delta, plural, =1{a month} other{# months}}' => 'en {delta, plural, =1{un mes} other{# meses}}',
@@ -101,6 +110,7 @@
'{attribute} should contain at least {min, number} {min, plural, one{character} other{characters}}.' => '{attribute} debería contener al menos {min, number} {min, plural, one{letra} other{letras}}.',
'{attribute} should contain at most {max, number} {max, plural, one{character} other{characters}}.' => '{attribute} debería contener como máximo {max, number} {max, plural, one{letra} other{letras}}.',
'{attribute} should contain {length, number} {length, plural, one{character} other{characters}}.' => '{attribute} debería contener {length, number} {length, plural, one{letra} other{letras}}.',
+ '{compareAttribute} is invalid.' => '',
'{delta, plural, =1{1 day} other{# days}}' => '{delta, plural, =1{1 día} other{# días}}',
'{delta, plural, =1{1 hour} other{# hours}}' => '{delta, plural, =1{1 hora} other{# horas}}',
'{delta, plural, =1{1 minute} other{# minutes}}' => '{delta, plural, =1{1 minuto} other{# minutos}}',
@@ -116,7 +126,6 @@
'{nFormatted} B' => '{nFormatted} B',
'{nFormatted} GB' => '{nFormatted} GB',
'{nFormatted} GiB' => '{nFormatted} GiB',
- '{nFormatted} kB' => '{nFormatted} kB',
'{nFormatted} KiB' => '{nFormatted} KiB',
'{nFormatted} MB' => '{nFormatted} MB',
'{nFormatted} MiB' => '{nFormatted} MiB',
@@ -124,6 +133,7 @@
'{nFormatted} PiB' => '{nFormatted} PiB',
'{nFormatted} TB' => '{nFormatted} TB',
'{nFormatted} TiB' => '{nFormatted} TiB',
+ '{nFormatted} kB' => '{nFormatted} kB',
'{nFormatted} {n, plural, =1{byte} other{bytes}}' => '{nFormatted} {n, plural, =1{byte} other{bytes}}',
'{nFormatted} {n, plural, =1{gibibyte} other{gibibytes}}' => '{nFormatted} {n, plural, =1{gibibyte} other{gibibytes}}',
'{nFormatted} {n, plural, =1{gigabyte} other{gigabytes}}' => '{nFormatted} {n, plural, =1{gigabyte} other{gigabytes}}',
diff --git a/framework/messages/et/yii.php b/framework/messages/et/yii.php
index 337d7fc1506..ddd632b90f1 100644
--- a/framework/messages/et/yii.php
+++ b/framework/messages/et/yii.php
@@ -1,4 +1,5 @@
' ja ',
+ '"{attribute}" does not support operator "{operator}".' => '"{attribute}" ei toeta tehtemärki "{operator}".',
'(not set)' => '(määramata)',
+ 'Action not found.' => '',
+ 'Aliases available: {aliases}' => '',
'An internal server error occurred.' => 'Ilmnes serveri sisemine viga.',
'Are you sure you want to delete this item?' => 'Kas olete kindel, et soovite selle üksuse kustutada?',
+ 'Condition for "{attribute}" should be either a value or valid operator specification.' => 'Atribuudi "{attribute}" tingimus peaks olema kas väärtus või korrektne tehtemärgi spetsifikatsioon.',
'Delete' => 'Kustuta',
'Error' => 'Viga',
'File upload failed.' => 'Faili üleslaadimine ebaõnnestus.',
@@ -38,14 +44,19 @@
'No results found.' => 'Ei leitud ühtegi tulemust.',
'Only files with these MIME types are allowed: {mimeTypes}.' => 'Lubatud on ainult nende MIME tüüpidega failid: {mimeTypes}.',
'Only files with these extensions are allowed: {extensions}.' => 'Lubatud on ainult nende faililaienditega failid: {extensions}.',
+ 'Operator "{operator}" must be used with a search attribute.' => 'Tehtemärki "{operator}" peab kasutama koos otsinguatribuudiga.',
+ 'Operator "{operator}" requires multiple operands.' => 'Tehtemärk "{operator}" nõuab mitut operandi.',
+ 'Options available: {options}' => '',
'Page not found.' => 'Lehekülge ei leitud.',
'Please fix the following errors:' => 'Palun parandage järgnevad vead:',
'Please upload a file.' => 'Palun laadige fail üles.',
'Showing {begin, number}-{end, number} of {totalCount, number} {totalCount, plural, one{item} other{items}}.' => 'Näitan {totalCount, number} {totalCount, plural, one{üksusest} other{üksusest}} {begin, number}-{end, number}.',
+ 'The combination {values} of {attributes} has already been taken.' => 'Atribuutide {attributes} väärtuste kombinatsioon {values} on juba võetud.',
'The file "{file}" is not an image.' => 'See fail "{file}" ei ole pilt.',
'The file "{file}" is too big. Its size cannot exceed {formattedLimit}.' => 'See fail "{file}" on liiga suur. Suurus ei tohi ületada {formattedLimit}.',
'The file "{file}" is too small. Its size cannot be smaller than {formattedLimit}.' => 'See fail "{file}" on liiga väike. Suurus ei tohi olla väiksem kui {formattedLimit}.',
'The format of {attribute} is invalid.' => '{attribute} on sobimatus vormingus.',
+ 'The format of {filter} is invalid.' => 'Filtri {filter} formaat on sobimatu.',
'The image "{file}" is too large. The height cannot be larger than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'Pilt "{file}" on liiga suur. Kõrgus ei tohi olla suurem kui {limit, number} {limit, plural, one{piksel} other{pikslit}}.',
'The image "{file}" is too large. The width cannot be larger than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'Pilt "{file}" on liiga suur. Laius ei tohi olla suurem kui {limit, number} {limit, plural, one{piksel} other{pikslit}}.',
'The image "{file}" is too small. The height cannot be smaller than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'Pilt "{file}" on liiga väike. Kõrgus ei tohi olla väiksem kui {limit, number} {limit, plural, one{piksel} other{pikslit}}.',
@@ -54,72 +65,64 @@
'The verification code is incorrect.' => 'Kontrollkood on vale.',
'Total {count, number} {count, plural, one{item} other{items}}.' => 'Kokku {count, number} {count, plural, one{üksus} other{üksust}}.',
'Unable to verify your data submission.' => 'Ei suuda edastatud andmete õigsuses veenduda.',
+ 'Unknown alias: -{name}' => 'Tundmatu alias: -{name}',
+ 'Unknown filter attribute "{attribute}"' => 'Tundmatu filtri atribuut "{attribute}"',
'Unknown option: --{name}' => 'Tundmatu valik: --{name}',
'Update' => 'Muuda',
'View' => 'Vaata',
'Yes' => 'Jah',
'You are not allowed to perform this action.' => 'Teil pole õigust seda toimingut sooritada.',
'You can upload at most {limit, number} {limit, plural, one{file} other{files}}.' => 'Saate üles laadida kõige rohkem {limit, number} {limit, plural, one{faili} other{faili}}.',
+ 'You should upload at least {limit, number} {limit, plural, one{file} other{files}}.' => 'Peaksid üles laadima vähemalt {limit, number} {limit, plural, one{faili} other{faili}}.',
'in {delta, plural, =1{a day} other{# days}}' => '{delta, plural, =1{ühe päeva} other{# päeva}} pärast',
'in {delta, plural, =1{a minute} other{# minutes}}' => '{delta, plural, =1{ühe minuti} other{# minuti}} pärast',
'in {delta, plural, =1{a month} other{# months}}' => '{delta, plural, =1{ühe kuu} other{# kuu}} pärast',
'in {delta, plural, =1{a second} other{# seconds}}' => '{delta, plural, =1{ühe sekundi} other{# sekundi}} pärast',
'in {delta, plural, =1{a year} other{# years}}' => '{delta, plural, =1{ühe aasta} other{# aasta}} pärast',
'in {delta, plural, =1{an hour} other{# hours}}' => '{delta, plural, =1{ühe tunni} other{# tunni}} pärast',
+ 'just now' => 'just nüüd',
'the input value' => 'sisendväärtus',
'{attribute} "{value}" has already been taken.' => '{attribute} "{value}" on juba kasutuses.',
'{attribute} cannot be blank.' => '{attribute} ei tohi olla tühi.',
+ '{attribute} contains wrong subnet mask.' => '{attribute} sisaldab valet alamvõrgumaski.',
'{attribute} is invalid.' => '{attribute} on sobimatu.',
'{attribute} is not a valid URL.' => '{attribute} ei ole korrektne URL.',
'{attribute} is not a valid email address.' => '{attribute} ei ole korrektne e-posti aadress.',
+ '{attribute} is not in the allowed range.' => '{attribute} ei ole lubatud vahemikus.',
'{attribute} must be "{requiredValue}".' => '{attribute} peab olema "{requiredValue}".',
'{attribute} must be a number.' => '{attribute} peab olema number.',
'{attribute} must be a string.' => '{attribute} peab olema tekst.',
- '{attribute} must be an integer.' => '{attribute} peab olema täisarv.',
- '{attribute} must be either "{true}" or "{false}".' => '{attribute} peab olema kas "{true}" või "{false}".',
- '{attribute} must be no greater than {max}.' => '{attribute} ei tohi olla suurem kui {max}.',
- '{attribute} must be no less than {min}.' => '{attribute} ei tohi olla väiksem kui {min}.',
- '{attribute} should contain at least {min, number} {min, plural, one{character} other{characters}}.' => '{attribute} peab sisaldama vähemalt {min, number} {min, plural, one{tähemärki} other{tähemärki}}.',
- '{attribute} should contain at most {max, number} {max, plural, one{character} other{characters}}.' => '{attribute} tohib sisaldada maksimaalselt {max, number} {max, plural, one{tähemärki} other{tähemärki}}.',
- '{attribute} should contain {length, number} {length, plural, one{character} other{characters}}.' => '{attribute} peab sisaldama {length, number} {length, plural, one{tähemärki} other{tähemärki}}.',
- '{delta, plural, =1{a day} other{# days}} ago' => '{delta, plural, =1{1 päev} other{# päeva}} tagasi',
- '{delta, plural, =1{a minute} other{# minutes}} ago' => '{delta, plural, =1{1 minut} other{# minutit}} tagasi',
- '{delta, plural, =1{a month} other{# months}} ago' => '{delta, plural, =1{kuu aega} other{# kuud}} tagasi',
- '{delta, plural, =1{a second} other{# seconds}} ago' => '{delta, plural, =1{1 sekund} other{# sekundit}} tagasi',
- '{delta, plural, =1{a year} other{# years}} ago' => '{delta, plural, =1{aasta} other{# aastat}} tagasi',
- '{delta, plural, =1{an hour} other{# hours}} ago' => '{delta, plural, =1{tund aega} other{# tundi}} tagasi',
- ' and ' => ' ja ',
- '"{attribute}" does not support operator "{operator}".' => '"{attribute}" ei toeta tehtemärki "{operator}".',
- 'Condition for "{attribute}" should be either a value or valid operator specification.' => 'Atribuudi "{attribute}" tingimus peaks olema kas väärtus või korrektne tehtemärgi spetsifikatsioon.',
- 'Operator "{operator}" must be used with a search attribute.' => 'Tehtemärki "{operator}" peab kasutama koos otsinguatribuudiga.',
- 'Operator "{operator}" requires multiple operands.' => 'Tehtemärk "{operator}" nõuab mitut operandi.',
- 'Powered by {yii}' => '',
- 'The combination {values} of {attributes} has already been taken.' => 'Atribuutide {attributes} väärtuste kombinatsioon {values} on juba võetud.',
- 'The format of {filter} is invalid.' => 'Filtri {filter} formaat on sobimatu.',
- 'Unknown alias: -{name}' => 'Tundmatu alias: -{name}',
- 'Unknown filter attribute "{attribute}"' => 'Tundmatu filtri atribuut "{attribute}"',
- 'Yii Framework' => 'Yii raamistik',
- 'You should upload at least {limit, number} {limit, plural, one{file} other{files}}.' => 'Peaksid üles laadima vähemalt {limit, number} {limit, plural, one{faili} other{faili}}.',
- 'just now' => 'just nüüd',
- '{attribute} contains wrong subnet mask.' => '{attribute} sisaldab valet alamvõrgumaski.',
- '{attribute} is not in the allowed range.' => '{attribute} ei ole lubatud vahemikus.',
'{attribute} must be a valid IP address.' => '{attribute} peab olema õige IP-aadress',
'{attribute} must be an IP address with specified subnet.' => '{attribute} peab olema võrgumaskiga IP-aadress.',
+ '{attribute} must be an integer.' => '{attribute} peab olema täisarv.',
+ '{attribute} must be either "{true}" or "{false}".' => '{attribute} peab olema kas "{true}" või "{false}".',
'{attribute} must be equal to "{compareValueOrAttribute}".' => '{attribute} peab olema "{compareValueOrAttribute}".',
'{attribute} must be greater than "{compareValueOrAttribute}".' => '{attribute} peab olema suurem kui "{compareValueOrAttribute}".',
'{attribute} must be greater than or equal to "{compareValueOrAttribute}".' => '{attribute} peab olema suurem või võrdne "{compareValueOrAttribute}".',
'{attribute} must be less than "{compareValueOrAttribute}".' => '{attribute} peab olema väiksem kui "{compareValueOrAttribute}".',
'{attribute} must be less than or equal to "{compareValueOrAttribute}".' => '{attribute} peab olema väiksem või võrdne "{compareValueOrAttribute}".',
+ '{attribute} must be no greater than {max}.' => '{attribute} ei tohi olla suurem kui {max}.',
+ '{attribute} must be no less than {min}.' => '{attribute} ei tohi olla väiksem kui {min}.',
'{attribute} must not be a subnet.' => '{attribute} ei tohi olla alamvõrk.',
'{attribute} must not be an IPv4 address.' => '{attribute} ei tohi olla IPv4 aadress.',
'{attribute} must not be an IPv6 address.' => '{attribute} ei tohi olla IPv6 aadress.',
'{attribute} must not be equal to "{compareValueOrAttribute}".' => '{attribute} ei tohi olla "{compareValueOrAttribute}".',
+ '{attribute} should contain at least {min, number} {min, plural, one{character} other{characters}}.' => '{attribute} peab sisaldama vähemalt {min, number} {min, plural, one{tähemärki} other{tähemärki}}.',
+ '{attribute} should contain at most {max, number} {max, plural, one{character} other{characters}}.' => '{attribute} tohib sisaldada maksimaalselt {max, number} {max, plural, one{tähemärki} other{tähemärki}}.',
+ '{attribute} should contain {length, number} {length, plural, one{character} other{characters}}.' => '{attribute} peab sisaldama {length, number} {length, plural, one{tähemärki} other{tähemärki}}.',
+ '{compareAttribute} is invalid.' => '',
'{delta, plural, =1{1 day} other{# days}}' => '{delta, plural, =1{1 päev} other{# päeva}}',
'{delta, plural, =1{1 hour} other{# hours}}' => '{delta, plural, =1{1 tund} other{# tundi}}',
'{delta, plural, =1{1 minute} other{# minutes}}' => '{delta, plural, =1{1 minut} other{# minutit}}',
'{delta, plural, =1{1 month} other{# months}}' => '{delta, plural, =1{1 kuu} other{# kuud}}',
'{delta, plural, =1{1 second} other{# seconds}}' => '{delta, plural, =1{1 sekund} other{# sekundit}}',
'{delta, plural, =1{1 year} other{# years}}' => '{delta, plural, =1{1 aasta} other{# aastat}}',
+ '{delta, plural, =1{a day} other{# days}} ago' => '{delta, plural, =1{1 päev} other{# päeva}} tagasi',
+ '{delta, plural, =1{a minute} other{# minutes}} ago' => '{delta, plural, =1{1 minut} other{# minutit}} tagasi',
+ '{delta, plural, =1{a month} other{# months}} ago' => '{delta, plural, =1{kuu aega} other{# kuud}} tagasi',
+ '{delta, plural, =1{a second} other{# seconds}} ago' => '{delta, plural, =1{1 sekund} other{# sekundit}} tagasi',
+ '{delta, plural, =1{a year} other{# years}} ago' => '{delta, plural, =1{aasta} other{# aastat}} tagasi',
+ '{delta, plural, =1{an hour} other{# hours}} ago' => '{delta, plural, =1{tund aega} other{# tundi}} tagasi',
'{nFormatted} B' => '{nFormatted} B',
'{nFormatted} GB' => '{nFormatted} GB',
'{nFormatted} GiB' => '{nFormatted} GiB',
diff --git a/framework/messages/fa/yii.php b/framework/messages/fa/yii.php
index ec97c548788..1b720621a81 100644
--- a/framework/messages/fa/yii.php
+++ b/framework/messages/fa/yii.php
@@ -1,4 +1,5 @@
' و ',
+ '"{attribute}" does not support operator "{operator}".' => '"{attribute}" از عملگر "{operator}" پشتیبانی نمیکند.',
'(not set)' => '(تنظیم نشده)',
+ 'Action not found.' => 'عمل یافت نشد.',
+ 'Aliases available: {aliases}' => 'نامهای مستعار موجود: {aliases}',
'An internal server error occurred.' => 'خطای داخلی سرور رخ داده است.',
'Are you sure you want to delete this item?' => 'آیا اطمینان به حذف این مورد دارید؟',
+ 'Condition for "{attribute}" should be either a value or valid operator specification.' => 'شرط برای "{attribute}" باید یک مقدار یا مشخصهی عملگر معتبر باشد.',
'Delete' => 'حذف',
'Error' => 'خطا',
'File upload failed.' => 'آپلود فایل ناموفق بود.',
@@ -39,15 +44,19 @@
'No results found.' => 'نتیجهای یافت نشد.',
'Only files with these MIME types are allowed: {mimeTypes}.' => 'فقط این نوع فایلها مجاز میباشند: {mimeTypes}.',
'Only files with these extensions are allowed: {extensions}.' => 'فقط فایلهای با این پسوندها مجاز هستند: {extensions}.',
+ 'Operator "{operator}" must be used with a search attribute.' => 'عملگر "{operator}" باید با یک ویژگی جستجو استفاده شود.',
+ 'Operator "{operator}" requires multiple operands.' => 'عملگر "{operator}" به چند عملوند نیاز دارد.',
+ 'Options available: {options}' => 'گزینههای موجود: {options}',
'Page not found.' => 'صفحهای یافت نشد.',
'Please fix the following errors:' => 'لطفاً خطاهای زیر را رفع نمائید:',
'Please upload a file.' => 'لطفاً یک فایل آپلود کنید.',
- 'Showing {begin, number}-{end, number} of {totalCount, number} {totalCount, plural, one{item} other{items}}.' => 'نمایش {begin, number} تا {end, number} مورد از کل {totalCount, number} مورد.',
+ 'Showing {begin, number}-{end, number} of {totalCount, number} {totalCount, plural, one{item} other{items}}.' => 'نمایش {begin, number} تا {end, number} مورد از کل {totalCount, number} مورد.',
'The combination {values} of {attributes} has already been taken.' => 'مقدار {values} از {attributes} قبلاً گرفته شده است.',
'The file "{file}" is not an image.' => 'فایل "{file}" یک تصویر نیست.',
- 'The file "{file}" is too big. Its size cannot exceed {formattedLimit}.' => 'حجم فایل "{file}" بسیار بیشتر می باشد. حجم آن نمی تواند از {formattedLimit} بیشتر باشد.',
- 'The file "{file}" is too small. Its size cannot be smaller than {formattedLimit}.' => 'حجم فایل "{file}" بسیار کم می باشد. حجم آن نمی تواند از {formattedLimit} کمتر باشد.',
+ 'The file "{file}" is too big. Its size cannot exceed {formattedLimit}.' => 'حجم فایل "{file}" بسیار بیشتر میباشد. حجم آن نمیتواند از {formattedLimit} بیشتر باشد.',
+ 'The file "{file}" is too small. Its size cannot be smaller than {formattedLimit}.' => 'حجم فایل "{file}" بسیار کم میباشد. حجم آن نمیتواند از {formattedLimit} کمتر باشد.',
'The format of {attribute} is invalid.' => 'قالب {attribute} نامعتبر است.',
+ 'The format of {filter} is invalid.' => 'قالب {filter} نامعتبر است.',
'The image "{file}" is too large. The height cannot be larger than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'تصویر "{file}" خیلی بزرگ است. ارتفاع نمیتواند بزرگتر از {limit, number} پیکسل باشد.',
'The image "{file}" is too large. The width cannot be larger than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'تصویر "{file}" خیلی بزرگ است. عرض نمیتواند بزرگتر از {limit, number} پیکسل باشد.',
'The image "{file}" is too small. The height cannot be smaller than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'تصویر "{file}" خیلی کوچک است. ارتفاع نمیتواند کوچکتر از {limit, number} پیکسل باشد.',
@@ -57,12 +66,14 @@
'Total {count, number} {count, plural, one{item} other{items}}.' => 'مجموع {count, number} مورد.',
'Unable to verify your data submission.' => 'قادر به تأیید اطلاعات ارسالی شما نمیباشد.',
'Unknown alias: -{name}' => 'نام مستعار ناشناخته: -{name}',
+ 'Unknown filter attribute "{attribute}"' => 'ویژگی "{attribute}" فیلتر ناشناخته',
'Unknown option: --{name}' => 'گزینه ناشناخته: --{name}',
'Update' => 'بروزرسانی',
'View' => 'نما',
'Yes' => 'بله',
'You are not allowed to perform this action.' => 'شما برای انجام این عملیات، دسترسی ندارید.',
'You can upload at most {limit, number} {limit, plural, one{file} other{files}}.' => 'شما حداکثر {limit, number} فایل را میتوانید آپلود کنید.',
+ 'You should upload at least {limit, number} {limit, plural, one{file} other{files}}.' => 'شما باید حداقل {limit, number} فایل آپلود کنید.',
'in {delta, plural, =1{a day} other{# days}}' => '{delta} روز دیگر',
'in {delta, plural, =1{a minute} other{# minutes}}' => '{delta} دقیقه دیگر',
'in {delta, plural, =1{a month} other{# months}}' => '{delta} ماه دیگر',
@@ -71,34 +82,35 @@
'in {delta, plural, =1{an hour} other{# hours}}' => '{delta} ساعت دیگر',
'just now' => 'هم اکنون',
'the input value' => 'مقدار ورودی',
- '{attribute} "{value}" has already been taken.' => '{attribute} با مقدار "{value}" در حال حاضر گرفتهشده است.',
+ '{attribute} "{value}" has already been taken.' => '{attribute} در حال حاضر با مقدار "{value}" گرفته شده است.',
'{attribute} cannot be blank.' => '{attribute} نمیتواند خالی باشد.',
- '{attribute} contains wrong subnet mask.' => '{attribute} شامل فرمت زیرشبکه اشتباه است.',
+ '{attribute} contains wrong subnet mask.' => '{attribute} شامل فرمت پوشش زیرشبکه (subnet mask) اشتباه است.',
'{attribute} is invalid.' => '{attribute} معتبر نیست.',
'{attribute} is not a valid URL.' => '{attribute} یک URL معتبر نیست.',
'{attribute} is not a valid email address.' => '{attribute} یک آدرس ایمیل معتبر نیست.',
- '{attribute} is not in the allowed range.' => '{attribute} در محدوده مجاز نمیباشد.',
+ '{attribute} is not in the allowed range.' => '{attribute} در محدوده مجاز نمیباشد.',
'{attribute} must be "{requiredValue}".' => '{attribute} باید "{requiredValue}" باشد.',
'{attribute} must be a number.' => '{attribute} باید یک عدد باشد.',
'{attribute} must be a string.' => '{attribute} باید یک رشته باشد.',
'{attribute} must be a valid IP address.' => '{attribute} باید یک آدرس IP معتبر باشد.',
- '{attribute} must be an IP address with specified subnet.' => '{attribute} باید یک IP آدرس با زیرشبکه بخصوص باشد.',
+ '{attribute} must be an IP address with specified subnet.' => '{attribute} باید یک آدرس IP با زیرشبکه (subnet) مشخص شده باشد.',
'{attribute} must be an integer.' => '{attribute} باید یک عدد صحیح باشد.',
'{attribute} must be either "{true}" or "{false}".' => '{attribute} باید "{true}" و یا "{false}" باشد.',
'{attribute} must be equal to "{compareValueOrAttribute}".' => '{attribute} باید با "{compareValueOrAttribute}" برابر باشد.',
- '{attribute} must be greater than "{compareValueOrAttribute}".' => '{attribute} باید بزرگتر از "{compareValueOrAttribute}" باشد.',
- '{attribute} must be greater than or equal to "{compareValueOrAttribute}".' => '{attribute} باید بزرگتر یا برابر با "{compareValueOrAttribute}" باشد.',
+ '{attribute} must be greater than "{compareValueOrAttribute}".' => '{attribute} باید بیشتر از "{compareValueOrAttribute}" باشد.',
+ '{attribute} must be greater than or equal to "{compareValueOrAttribute}".' => '{attribute} باید بیشتر یا برابر با "{compareValueOrAttribute}" باشد.',
'{attribute} must be less than "{compareValueOrAttribute}".' => '{attribute} باید کمتر از "{compareValueOrAttribute}" باشد.',
'{attribute} must be less than or equal to "{compareValueOrAttribute}".' => '{attribute} باید کمتر یا برابر با "{compareValueOrAttribute}" باشد.',
'{attribute} must be no greater than {max}.' => '{attribute} نباید بیشتر از "{max}" باشد.',
'{attribute} must be no less than {min}.' => '{attribute} نباید کمتر از "{min}" باشد.',
- '{attribute} must not be a subnet.' => '{attribute} نباید یک زیرشبکه باشد.',
+ '{attribute} must not be a subnet.' => '{attribute} نباید یک زیرشبکه (subnet) باشد.',
'{attribute} must not be an IPv4 address.' => '{attribute} نباید آدرس IPv4 باشد.',
'{attribute} must not be an IPv6 address.' => '{attribute} نباید آدرس IPv6 باشد.',
'{attribute} must not be equal to "{compareValueOrAttribute}".' => '{attribute} نباید برابر با "{compareValueOrAttribute}" باشد.',
'{attribute} should contain at least {min, number} {min, plural, one{character} other{characters}}.' => '{attribute} حداقل باید شامل {min, number} کارکتر باشد.',
'{attribute} should contain at most {max, number} {max, plural, one{character} other{characters}}.' => '{attribute} حداکثر باید شامل {max, number} کارکتر باشد.',
'{attribute} should contain {length, number} {length, plural, one{character} other{characters}}.' => '{attribute} باید شامل {length, number} کارکتر باشد.',
+ '{compareAttribute} is invalid.' => '{compareAttribute} نامعتبر است.',
'{delta, plural, =1{1 day} other{# days}}' => '{delta} روز',
'{delta, plural, =1{1 hour} other{# hours}}' => '{delta} ساعت',
'{delta, plural, =1{1 minute} other{# minutes}}' => '{delta} دقیقه',
@@ -114,7 +126,6 @@
'{nFormatted} B' => '{nFormatted} B',
'{nFormatted} GB' => '{nFormatted} GB',
'{nFormatted} GiB' => '{nFormatted} GiB',
- '{nFormatted} kB' => '{nFormatted} kB',
'{nFormatted} KiB' => '{nFormatted} KiB',
'{nFormatted} MB' => '{nFormatted} MB',
'{nFormatted} MiB' => '{nFormatted} MiB',
@@ -122,6 +133,7 @@
'{nFormatted} PiB' => '{nFormatted} PiB',
'{nFormatted} TB' => '{nFormatted} TB',
'{nFormatted} TiB' => '{nFormatted} TiB',
+ '{nFormatted} kB' => '{nFormatted} kB',
'{nFormatted} {n, plural, =1{byte} other{bytes}}' => '{nFormatted} بایت',
'{nFormatted} {n, plural, =1{gibibyte} other{gibibytes}}' => '{nFormatted} گیبیبایت',
'{nFormatted} {n, plural, =1{gigabyte} other{gigabytes}}' => '{nFormatted} گیگابایت',
diff --git a/framework/messages/fi/yii.php b/framework/messages/fi/yii.php
index 938fd62d97c..092d46ae522 100644
--- a/framework/messages/fi/yii.php
+++ b/framework/messages/fi/yii.php
@@ -1,4 +1,5 @@
'Powered by {yii}',
- 'Yii Framework' => 'Yii Framework',
- '{attribute} must be equal to "{compareValueOrAttribute}".' => '{attribute} täytyy olla yhtä suuri kuin "{compareValueOrAttribute}".',
- '{attribute} must be greater than "{compareValueOrAttribute}".' => '{attribute} täytyy olla suurempi kuin "{compareValueOrAttribute}".',
- '{attribute} must be greater than or equal to "{compareValueOrAttribute}".' => '{attribute} täytyy olla suurempi tai yhtä suuri kuin "{compareValueOrAttribute}".',
- '{attribute} must be less than "{compareValueOrAttribute}".' => '{attribute} täytyy olla pienempi kuin "{compareValueOrAttribute}".',
- '{attribute} must be less than or equal to "{compareValueOrAttribute}".' => '{attribute} täytyy olla pienempi tai yhtä suuri kuin "{compareValueOrAttribute}".',
- '{attribute} must not be equal to "{compareValueOrAttribute}".' => '{attribute} ei saa olla yhtä suuri kuin "{compareValueOrAttribute}".',
+ ' and ' => '',
+ '"{attribute}" does not support operator "{operator}".' => '',
'(not set)' => '(ei asetettu)',
+ 'Action not found.' => '',
+ 'Aliases available: {aliases}' => '',
'An internal server error occurred.' => 'Sisäinen palvelinvirhe.',
'Are you sure you want to delete this item?' => 'Haluatko varmasti poistaa tämän?',
+ 'Condition for "{attribute}" should be either a value or valid operator specification.' => '',
'Delete' => 'Poista',
'Error' => 'Virhe',
'File upload failed.' => 'Tiedoston lähetys epäonnistui.',
@@ -46,14 +44,19 @@
'No results found.' => 'Ei tuloksia.',
'Only files with these MIME types are allowed: {mimeTypes}.' => 'Sallittuja ovat vain tiedostot, joiden MIME-tyyppi on: {mimeTypes}.',
'Only files with these extensions are allowed: {extensions}.' => 'Sallittuja ovat vain tiedostot, joiden tiedostopääte on: {extensions}.',
+ 'Operator "{operator}" must be used with a search attribute.' => '',
+ 'Operator "{operator}" requires multiple operands.' => '',
+ 'Options available: {options}' => '',
'Page not found.' => 'Sivua ei löytynyt.',
'Please fix the following errors:' => 'Korjaa seuraavat virheet:',
'Please upload a file.' => 'Lähetä tiedosto.',
'Showing {begin, number}-{end, number} of {totalCount, number} {totalCount, plural, one{item} other{items}}.' => 'Näytetään {begin, number}-{end, number} kaikkiaan {totalCount, number} {totalCount, plural, one{tuloksesta} other{tuloksesta}}.',
+ 'The combination {values} of {attributes} has already been taken.' => '',
'The file "{file}" is not an image.' => 'Tiedosto "{file}" ei ole kuva.',
'The file "{file}" is too big. Its size cannot exceed {formattedLimit}.' => 'Tiedosto "{file}" on liian iso. Sen koko ei voi olla suurempi kuin {formattedLimit}.',
'The file "{file}" is too small. Its size cannot be smaller than {formattedLimit}.' => 'Tiedosto "{file}" on liian pieni. Sen koko ei voi olla pienempi kuin {formattedLimit}.',
'The format of {attribute} is invalid.' => 'Attribuutin {attribute} formaatti on virheellinen.',
+ 'The format of {filter} is invalid.' => '',
'The image "{file}" is too large. The height cannot be larger than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'Kuva "{file}" on liian suuri. Korkeus ei voi olla suurempi kuin {limit, number} {limit, plural, one{pikseli} other{pikseliä}}.',
'The image "{file}" is too large. The width cannot be larger than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'Kuva "{file}" on liian suuri. Leveys ei voi olla suurempi kuin {limit, number} {limit, plural, one{pikseli} other{pikseliä}}.',
'The image "{file}" is too small. The height cannot be smaller than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'Kuva "{file}" on liian pieni. Korkeus ei voi olla pienempi kuin {limit, number} {limit, plural, one{pikseli} other{pikseliä}}.',
@@ -62,12 +65,15 @@
'The verification code is incorrect.' => 'Vahvistuskoodi on virheellinen.',
'Total {count, number} {count, plural, one{item} other{items}}.' => 'Yhteensä {count, number} {count, plural, one{tulos} other{tulosta}}.',
'Unable to verify your data submission.' => 'Tietojen lähetystä ei voida varmistaa.',
+ 'Unknown alias: -{name}' => '',
+ 'Unknown filter attribute "{attribute}"' => '',
'Unknown option: --{name}' => 'Tuntematon valinta: --{name}',
'Update' => 'Päivitä',
'View' => 'Näytä',
'Yes' => 'Kyllä',
'You are not allowed to perform this action.' => 'Sinulla ei ole tarvittavia oikeuksia toiminnon suorittamiseen.',
'You can upload at most {limit, number} {limit, plural, one{file} other{files}}.' => 'Voit lähettää enintään {limit, number} {limit, plural, one{tiedoston} other{tiedostoa}}.',
+ 'You should upload at least {limit, number} {limit, plural, one{file} other{files}}.' => '',
'in {delta, plural, =1{a day} other{# days}}' => '{delta, plural, =1{päivässä} other{# päivässä}}',
'in {delta, plural, =1{a minute} other{# minutes}}' => '{delta, plural, =1{minuutissa} other{# minuutissa}}',
'in {delta, plural, =1{a month} other{# months}}' => '{delta, plural, =1{kuukaudessa} other{# kuukaudessa}}',
@@ -90,14 +96,21 @@
'{attribute} must be an IP address with specified subnet.' => '{attribute} täytyy olla määritetyllä aliverkolla oleva IP-osoite.',
'{attribute} must be an integer.' => '{attribute} täytyy olla kokonaisluku.',
'{attribute} must be either "{true}" or "{false}".' => '{attribute} täytyy olla joko {true} tai {false}.',
+ '{attribute} must be equal to "{compareValueOrAttribute}".' => '{attribute} täytyy olla yhtä suuri kuin "{compareValueOrAttribute}".',
+ '{attribute} must be greater than "{compareValueOrAttribute}".' => '{attribute} täytyy olla suurempi kuin "{compareValueOrAttribute}".',
+ '{attribute} must be greater than or equal to "{compareValueOrAttribute}".' => '{attribute} täytyy olla suurempi tai yhtä suuri kuin "{compareValueOrAttribute}".',
+ '{attribute} must be less than "{compareValueOrAttribute}".' => '{attribute} täytyy olla pienempi kuin "{compareValueOrAttribute}".',
+ '{attribute} must be less than or equal to "{compareValueOrAttribute}".' => '{attribute} täytyy olla pienempi tai yhtä suuri kuin "{compareValueOrAttribute}".',
'{attribute} must be no greater than {max}.' => '{attribute} ei saa olla suurempi kuin "{max}".',
'{attribute} must be no less than {min}.' => '{attribute} ei saa olla pienempi kuin "{min}".',
'{attribute} must not be a subnet.' => '{attribute} ei saa olla aliverkko.',
'{attribute} must not be an IPv4 address.' => '{attribute} ei saa olla IPv4-osoite.',
'{attribute} must not be an IPv6 address.' => '{attribute} ei saa olla IPv6-osoite.',
+ '{attribute} must not be equal to "{compareValueOrAttribute}".' => '{attribute} ei saa olla yhtä suuri kuin "{compareValueOrAttribute}".',
'{attribute} should contain at least {min, number} {min, plural, one{character} other{characters}}.' => '{attribute} tulisi sisältää vähintään {min, number} {min, plural, one{merkki} other{merkkiä}}.',
'{attribute} should contain at most {max, number} {max, plural, one{character} other{characters}}.' => '{attribute} tulisi sisältää enintään {max, number} {max, plural, one{merkki} other{merkkiä}}.',
'{attribute} should contain {length, number} {length, plural, one{character} other{characters}}.' => '{attribute} tulisi sisältää {length, number} {length, plural, one{merkki} other{merkkiä}}.',
+ '{compareAttribute} is invalid.' => '',
'{delta, plural, =1{1 day} other{# days}}' => '{delta, plural, =1{1 päivä} other{# päivää}}',
'{delta, plural, =1{1 hour} other{# hours}}' => '{delta, plural, =1{1 tunti} other{# tuntia}}',
'{delta, plural, =1{1 minute} other{# minutes}}' => '{delta, plural, =1{1 minuutti} other{# minuuttia}}',
@@ -113,7 +126,6 @@
'{nFormatted} B' => '{nFormatted} t',
'{nFormatted} GB' => '{nFormatted} Gt',
'{nFormatted} GiB' => '{nFormatted} GiB',
- '{nFormatted} kB' => '{nFormatted} kt',
'{nFormatted} KiB' => '{nFormatted} KiB',
'{nFormatted} MB' => '{nFormatted} Mt',
'{nFormatted} MiB' => '{nFormatted} MiB',
@@ -121,6 +133,7 @@
'{nFormatted} PiB' => '{nFormatted} PiB',
'{nFormatted} TB' => '{nFormatted} Tt',
'{nFormatted} TiB' => '{nFormatted} TiB',
+ '{nFormatted} kB' => '{nFormatted} kt',
'{nFormatted} {n, plural, =1{byte} other{bytes}}' => '{nFormatted} {n, plural, =1{tavu} other{tavua}}',
'{nFormatted} {n, plural, =1{gibibyte} other{gibibytes}}' => '{nFormatted} {n, plural, =1{gibitavu} other{gibitavua}}',
'{nFormatted} {n, plural, =1{gigabyte} other{gigabytes}}' => '{nFormatted} {n, plural, =1{gigatavu} other{gigatavua}}',
diff --git a/framework/messages/fr/yii.php b/framework/messages/fr/yii.php
index 458d7e738e7..7a29b60a570 100644
--- a/framework/messages/fr/yii.php
+++ b/framework/messages/fr/yii.php
@@ -1,4 +1,5 @@
' et ',
+ '"{attribute}" does not support operator "{operator}".' => '"{attribute}" ne supporte pas l\'opérateur "{operator}".',
'(not set)' => '(non défini)',
+ 'Action not found.' => '',
+ 'Aliases available: {aliases}' => '',
'An internal server error occurred.' => 'Une erreur de serveur interne s\'est produite.',
'Are you sure you want to delete this item?' => 'Êtes-vous sûr de vouloir supprimer cet élément ?',
'Condition for "{attribute}" should be either a value or valid operator specification.' => 'La condition pour "{atttribute}" doit être soit une valeur, soit une spécification d\'opérateur valide.',
@@ -42,10 +46,10 @@
'Only files with these extensions are allowed: {extensions}.' => 'Les extensions de fichiers autorisées sont : {extensions}.',
'Operator "{operator}" must be used with a search attribute.' => 'L\'opérateur "{operator}" doit être utilisé avec un attribut de recherche.',
'Operator "{operator}" requires multiple operands.' => 'L\'opérateur "{operator}" requière plusieurs opérandes.',
+ 'Options available: {options}' => '',
'Page not found.' => 'Page non trouvée.',
'Please fix the following errors:' => 'Veuillez vérifier les erreurs suivantes :',
'Please upload a file.' => 'Veuillez télécharger un fichier.',
- 'Powered by {yii}' => 'Propulsé par {yii}',
'Showing {begin, number}-{end, number} of {totalCount, number} {totalCount, plural, one{item} other{items}}.' => 'Affichage de {begin, number}-{end, number} sur {totalCount, number} {totalCount, plural, one{élément} other{éléments}}.',
'The combination {values} of {attributes} has already been taken.' => 'La combinaison {values} de {attributes} est déjà utilisée.',
'The file "{file}" is not an image.' => 'Le fichier « {file} » n\'est pas une image.',
@@ -67,7 +71,6 @@
'Update' => 'Modifier',
'View' => 'Voir',
'Yes' => 'Oui',
- 'Yii Framework' => 'Yii Framework',
'You are not allowed to perform this action.' => 'Vous n\'êtes pas autorisé à effectuer cette action.',
'You can upload at most {limit, number} {limit, plural, one{file} other{files}}.' => 'Vous pouvez télécharger au maximum {limit, number} {limit, plural, one{fichier} other{fichiers}}.',
'You should upload at least {limit, number} {limit, plural, one{file} other{files}}.' => 'Vous devez télécharger au moins {limit, number} {limit, plural, one{fichier} other{fichiers}}.',
@@ -107,6 +110,7 @@
'{attribute} should contain at least {min, number} {min, plural, one{character} other{characters}}.' => '{attribute} doit comporter au moins {min, number} {min, plural, one{caractère} other{caractères}}.',
'{attribute} should contain at most {max, number} {max, plural, one{character} other{characters}}.' => '{attribute} doit comporter au plus {max, number} {max, plural, one{caractère} other{caractères}}.',
'{attribute} should contain {length, number} {length, plural, one{character} other{characters}}.' => '{attribute} doit comporter {length, number} {length, plural, one{caractère} other{caractères}}.',
+ '{compareAttribute} is invalid.' => '',
'{delta, plural, =1{1 day} other{# days}}' => '{delta, plural, =1{1 jour} other{# jours}}',
'{delta, plural, =1{1 hour} other{# hours}}' => '{delta, plural, =1{1 heure} other{# heures}}',
'{delta, plural, =1{1 minute} other{# minutes}}' => '{delta, plural, =1{1 minute} other{# minutes}}',
@@ -122,7 +126,6 @@
'{nFormatted} B' => '{nFormatted} o',
'{nFormatted} GB' => '{nFormatted} Go',
'{nFormatted} GiB' => '{nFormatted} Gio',
- '{nFormatted} kB' => '{nFormatted} Ko',
'{nFormatted} KiB' => '{nFormatted} Kio',
'{nFormatted} MB' => '{nFormatted} Mo',
'{nFormatted} MiB' => '{nFormatted} Mio',
@@ -130,6 +133,7 @@
'{nFormatted} PiB' => '{nFormatted} Pio',
'{nFormatted} TB' => '{nFormatted} To',
'{nFormatted} TiB' => '{nFormatted} Tio',
+ '{nFormatted} kB' => '{nFormatted} Ko',
'{nFormatted} {n, plural, =1{byte} other{bytes}}' => '{nFormatted} {n, plural, =1{octet} other{octets}}',
'{nFormatted} {n, plural, =1{gibibyte} other{gibibytes}}' => '{nFormatted} {n, plural, =1{# gigaoctet} other{# gigaoctets}}',
'{nFormatted} {n, plural, =1{gigabyte} other{gigabytes}}' => '{nFormatted} {n, plural, =1{gibioctet} other{gibioctets}}',
@@ -141,5 +145,4 @@
'{nFormatted} {n, plural, =1{petabyte} other{petabytes}}' => '{nFormatted} {n, plural, =1{# petaoctet} other{# petaoctets}}',
'{nFormatted} {n, plural, =1{tebibyte} other{tebibytes}}' => '{nFormatted} {n, plural, =1{# teraoctet} other{# teraoctets}}',
'{nFormatted} {n, plural, =1{terabyte} other{terabytes}}' => '{nFormatted} {n, plural, =1{# teraoctet} other{# teraoctets}}',
- '"{attribute}" does not support operator "{operator}".' => '"{attribute}" ne supporte pas l\'opérateur "{operator}".',
];
diff --git a/framework/messages/he/yii.php b/framework/messages/he/yii.php
index 4613b419139..535a80a3f0b 100644
--- a/framework/messages/he/yii.php
+++ b/framework/messages/he/yii.php
@@ -1,4 +1,5 @@
'',
+ '"{attribute}" does not support operator "{operator}".' => '',
'(not set)' => '(לא הוגדר)',
+ 'Action not found.' => '',
+ 'Aliases available: {aliases}' => '',
'An internal server error occurred.' => 'שגיאת שרת פנימית',
'Are you sure you want to delete this item?' => 'האם אתה בטוח שברצונך למחוק פריט זה?',
+ 'Condition for "{attribute}" should be either a value or valid operator specification.' => '',
'Delete' => 'מחק',
'Error' => 'שגיאה',
'File upload failed.' => 'העלאת קובץ נכשלה',
@@ -35,52 +41,108 @@
'Missing required arguments: {params}' => 'חסרים ארגומנטים נדרשים: {params}',
'Missing required parameters: {params}' => 'חסרים פרמטרים נדרשים: {params}',
'No' => 'לא',
- 'No help for unknown command "{command}".' => 'פקודה "{command}" לא מוכרת ואין לה עזרה',
- 'No help for unknown sub-command "{command}".' => 'תת-פקודה "{command}" לא מוכרת ואין לה עזרה',
'No results found.' => 'לא נמצאו תוצאות',
+ 'Only files with these MIME types are allowed: {mimeTypes}.' => '',
'Only files with these extensions are allowed: {extensions}.' => 'רק קבצים עם ההרחבות הבאות מותרים: {extensions}.',
+ 'Operator "{operator}" must be used with a search attribute.' => '',
+ 'Operator "{operator}" requires multiple operands.' => '',
+ 'Options available: {options}' => '',
'Page not found.' => 'דף לא נמצא',
'Please fix the following errors:' => 'בבקשה, תקן את השגיאות הבאות: ',
'Please upload a file.' => 'נא העלה קובץ.',
'Showing {begin, number}-{end, number} of {totalCount, number} {totalCount, plural, one{item} other{items}}.' => 'מציג {begin, number}-{end, number} מתוך {totalCount, number} {totalCount, plural, one{רשומה} other{רשומות}}.',
+ 'The combination {values} of {attributes} has already been taken.' => '',
'The file "{file}" is not an image.' => 'הקובץ "{file}" אינו קובץ תמונה.',
'The file "{file}" is too big. Its size cannot exceed {formattedLimit}.' => 'הקובץ "{file}" גדול מדי. גודל זה אינו מצליח {formattedLimit}.',
'The file "{file}" is too small. Its size cannot be smaller than {formattedLimit}.' => 'הקובץ "{file}" קטן מדי. הקובץ אינו יכול להיות קטן מ {formattedLimit}.',
'The format of {attribute} is invalid.' => 'הפורמט של {attribute} אינו חוקי.',
+ 'The format of {filter} is invalid.' => '',
'The image "{file}" is too large. The height cannot be larger than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'התמונה "{file}" גדולה מדי. הגובה לא יכול להיות גדול מ {limit, number} {limit, plural, one{pixel} other{pixels}}.',
'The image "{file}" is too large. The width cannot be larger than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'התמונה "{file}" גדולה מדי. הרוחב לא יכול להיות גדול מ {limit, number} {limit, plural, one{pixel} other{pixels}}.',
'The image "{file}" is too small. The height cannot be smaller than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'התמונה "{file}" קטנה מדי. הגובה לא יכול להיות קטן מ {limit, number} {limit, plural, one{pixel} other{pixels}}.',
'The image "{file}" is too small. The width cannot be smaller than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'התמונה "{file}" קטנה מדי. הרוחב לא יכול להיות קטן מ {limit, number} {limit, plural, one{pixel} other{pixels}}.',
+ 'The requested view "{name}" was not found.' => '',
'The verification code is incorrect.' => 'קוד האימות אינו תקין.',
'Total {count, number} {count, plural, one{item} other{items}}.' => 'סך הכל {count, number} {count, plural, one{אייטם} other{אייטמים}}.',
'Unable to verify your data submission.' => 'אין אפשרות לאמת את המידע שהתקבל.',
- 'Unknown command "{command}".' => 'Unknown command "{command}".',
+ 'Unknown alias: -{name}' => '',
+ 'Unknown filter attribute "{attribute}"' => '',
'Unknown option: --{name}' => 'Unknown option: --{name}',
'Update' => 'עדכון',
'View' => 'תצוגה',
'Yes' => 'כן',
'You are not allowed to perform this action.' => 'אינך מורשה לבצע את הפעולה הזו.',
'You can upload at most {limit, number} {limit, plural, one{file} other{files}}.' => 'אתה יכול להעלות לכל היותר {limit, number} {limit, plural, one{קובץ} other{קבצים}}.',
+ 'You should upload at least {limit, number} {limit, plural, one{file} other{files}}.' => '',
+ 'in {delta, plural, =1{a day} other{# days}}' => '',
+ 'in {delta, plural, =1{a minute} other{# minutes}}' => '',
+ 'in {delta, plural, =1{a month} other{# months}}' => '',
+ 'in {delta, plural, =1{a second} other{# seconds}}' => '',
+ 'in {delta, plural, =1{a year} other{# years}}' => '',
+ 'in {delta, plural, =1{an hour} other{# hours}}' => '',
+ 'just now' => '',
'the input value' => 'הערך המוכנס',
'{attribute} "{value}" has already been taken.' => '{attribute} "{value}" כבר בשימוש',
'{attribute} cannot be blank.' => '{attribute} לא יכול להיות ריק.',
+ '{attribute} contains wrong subnet mask.' => '',
'{attribute} is invalid.' => '{attribute} לא חוקי.',
'{attribute} is not a valid URL.' => '{attribute} איננו כתובת אינטרנט חוקית.',
'{attribute} is not a valid email address.' => '{attribute} לא כתובת מייל חוקית.',
+ '{attribute} is not in the allowed range.' => '',
'{attribute} must be "{requiredValue}".' => '{attribute} חייב להיות "{requiredValue}".',
'{attribute} must be a number.' => '{attribute} חייב להיות מספר',
'{attribute} must be a string.' => '{attribute} חייב להיות מחרוזת טקסט',
+ '{attribute} must be a valid IP address.' => '',
+ '{attribute} must be an IP address with specified subnet.' => '',
'{attribute} must be an integer.' => '{attribute} חייב להיות מספר שלם',
'{attribute} must be either "{true}" or "{false}".' => '{attribute} חייב להיות "{true}" או "{false}".',
- '{attribute} must be greater than "{compareValue}".' => '{attribute} חייב להיות גדול מ "{compareValue}".',
- '{attribute} must be greater than or equal to "{compareValue}".' => '{attribute} חייב להיות גדול מ או שווה "{compareValue}".',
- '{attribute} must be less than "{compareValue}".' => '{attribute} חייב להיות פחות מ "{compareValue}".',
- '{attribute} must be less than or equal to "{compareValue}".' => '{attribute} חייב להיות פחות מ או שווה "{compareValue}".',
+ '{attribute} must be equal to "{compareValueOrAttribute}".' => '',
+ '{attribute} must be greater than "{compareValueOrAttribute}".' => '{attribute} חייב להיות גדול מ "{compareValueOrAttribute}".',
+ '{attribute} must be greater than or equal to "{compareValueOrAttribute}".' => '{attribute} חייב להיות גדול מ או שווה "{compareValueOrAttribute}".',
+ '{attribute} must be less than "{compareValueOrAttribute}".' => '{attribute} חייב להיות פחות מ "{compareValueOrAttribute}".',
+ '{attribute} must be less than or equal to "{compareValueOrAttribute}".' => '{attribute} חייב להיות פחות מ או שווה "{compareValueOrAttribute}".',
'{attribute} must be no greater than {max}.' => '{attribute} חייב להיות לא יותר מ "{max}".',
'{attribute} must be no less than {min}.' => '{attribute} חייב להיות לא פחות מ "{min}".',
- '{attribute} must be repeated exactly.' => '{attribute} חייב להיות מוחזר בדיוק.',
- '{attribute} must not be equal to "{compareValue}".' => '{attribute} חייב להיות שווה ל "{compareValue}"',
+ '{attribute} must not be a subnet.' => '',
+ '{attribute} must not be an IPv4 address.' => '',
+ '{attribute} must not be an IPv6 address.' => '',
+ '{attribute} must not be equal to "{compareValueOrAttribute}".' => '{attribute} חייב להיות שווה ל "{compareValueOrAttribute}"',
'{attribute} should contain at least {min, number} {min, plural, one{character} other{characters}}.' => '{attribute} אמור לכלול לפחות {min, number} {min, plural, one{תו} other{תוים}}.',
'{attribute} should contain at most {max, number} {max, plural, one{character} other{characters}}.' => '{attribute} אמור לא לכלול יותר מ{max, number} {max, plural, one{תו} other{תוים}}.',
'{attribute} should contain {length, number} {length, plural, one{character} other{characters}}.' => '{attribute} אמור לכלול {length, number} {length, plural, one{תו} other{תוים}}.',
+ '{compareAttribute} is invalid.' => '',
+ '{delta, plural, =1{1 day} other{# days}}' => '',
+ '{delta, plural, =1{1 hour} other{# hours}}' => '',
+ '{delta, plural, =1{1 minute} other{# minutes}}' => '',
+ '{delta, plural, =1{1 month} other{# months}}' => '',
+ '{delta, plural, =1{1 second} other{# seconds}}' => '',
+ '{delta, plural, =1{1 year} other{# years}}' => '',
+ '{delta, plural, =1{a day} other{# days}} ago' => '',
+ '{delta, plural, =1{a minute} other{# minutes}} ago' => '',
+ '{delta, plural, =1{a month} other{# months}} ago' => '',
+ '{delta, plural, =1{a second} other{# seconds}} ago' => '',
+ '{delta, plural, =1{a year} other{# years}} ago' => '',
+ '{delta, plural, =1{an hour} other{# hours}} ago' => '',
+ '{nFormatted} B' => '',
+ '{nFormatted} GB' => '',
+ '{nFormatted} GiB' => '',
+ '{nFormatted} KiB' => '',
+ '{nFormatted} MB' => '',
+ '{nFormatted} MiB' => '',
+ '{nFormatted} PB' => '',
+ '{nFormatted} PiB' => '',
+ '{nFormatted} TB' => '',
+ '{nFormatted} TiB' => '',
+ '{nFormatted} kB' => '',
+ '{nFormatted} {n, plural, =1{byte} other{bytes}}' => '',
+ '{nFormatted} {n, plural, =1{gibibyte} other{gibibytes}}' => '',
+ '{nFormatted} {n, plural, =1{gigabyte} other{gigabytes}}' => '',
+ '{nFormatted} {n, plural, =1{kibibyte} other{kibibytes}}' => '',
+ '{nFormatted} {n, plural, =1{kilobyte} other{kilobytes}}' => '',
+ '{nFormatted} {n, plural, =1{mebibyte} other{mebibytes}}' => '',
+ '{nFormatted} {n, plural, =1{megabyte} other{megabytes}}' => '',
+ '{nFormatted} {n, plural, =1{pebibyte} other{pebibytes}}' => '',
+ '{nFormatted} {n, plural, =1{petabyte} other{petabytes}}' => '',
+ '{nFormatted} {n, plural, =1{tebibyte} other{tebibytes}}' => '',
+ '{nFormatted} {n, plural, =1{terabyte} other{terabytes}}' => '',
];
diff --git a/framework/messages/hi/yii.php b/framework/messages/hi/yii.php
index 6c79f0c2620..f86efd54b4c 100644
--- a/framework/messages/hi/yii.php
+++ b/framework/messages/hi/yii.php
@@ -1,4 +1,5 @@
' और ',
+ '"{attribute}" does not support operator "{operator}".' => '',
'(not set)' => '(स्थापित नहीं)',
+ 'Action not found.' => '',
+ 'Aliases available: {aliases}' => '',
'An internal server error occurred.' => 'सर्वर में एक आंतरिक दोष उत्पन्न हुआ है।',
'Are you sure you want to delete this item?' => 'क्या आप सुनिश्चित रूप से इस आइटम को मिटाना चाहते हैं?',
+ 'Condition for "{attribute}" should be either a value or valid operator specification.' => '',
'Delete' => 'मिटाएँ',
'Error' => 'खामी',
'File upload failed.' => 'फ़ाइल अपलोड असफल रहा।',
@@ -39,16 +44,19 @@
'No results found.' => 'कोई परिणाम नहीं मिला।',
'Only files with these MIME types are allowed: {mimeTypes}.' => 'केवल इन MIME प्रकारों वाली फ़ाइलों की अनुमति है: {mimeTypes}।',
'Only files with these extensions are allowed: {extensions}.' => 'केवल इन एक्सटेंशन वाली फाइलों की अनुमति है: {extensions}।',
+ 'Operator "{operator}" must be used with a search attribute.' => '',
+ 'Operator "{operator}" requires multiple operands.' => '',
+ 'Options available: {options}' => '',
'Page not found.' => 'पृष्ठ नहीं मिला।',
'Please fix the following errors:' => 'कृपया निम्नलिखित खामीयां सुधारें:',
'Please upload a file.' => 'कृपया एक फ़ाइल अपलोड करें।',
- 'Powered by {yii}' => '{yii} द्वारा संचालित',
'Showing {begin, number}-{end, number} of {totalCount, number} {totalCount, plural, one{item} other{items}}.' => 'दिखाया गया है {totalCount, number} {totalCount, plural, one{चीज} other{चीज़े}} में से {begin, number}-{end, number} ।',
'The combination {values} of {attributes} has already been taken.' => '{attributes} और {values} का संयोजन पहले से ही लिया जा चुका है।',
'The file "{file}" is not an image.' => 'यह फ़ाइल "{file}" एक चित्र नहीं है।',
'The file "{file}" is too big. Its size cannot exceed {formattedLimit}.' => 'यह फ़ाइल "{file}" बहुत बड़ी है। इसका आकार {formattedLimit} से अधिक नहीं हो सकता है।',
'The file "{file}" is too small. Its size cannot be smaller than {formattedLimit}.' => 'यह फ़ाइल "{file}" बहुत छोटी है। इसका आकार {formattedLimit} से छोटा नहीं हो सकता।',
'The format of {attribute} is invalid.' => '{attribute} का प्रारूप गलत है।',
+ 'The format of {filter} is invalid.' => '',
'The image "{file}" is too large. The height cannot be larger than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'यह चित्र "{file}" बहुत बड़ी है। ऊंचाई {limit, number} {limit, plural, one{पिक्सेल} other{पिक्सेल}} से बड़ी नहीं हो सकती।',
'The image "{file}" is too large. The width cannot be larger than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'यह चित्र "{file}" बहुत बड़ी है। चौड़ाई {limit, number} {limit, plural, one{पिक्सेल} other{पिक्सेल}} से बड़ी नहीं हो सकती।',
'The image "{file}" is too small. The height cannot be smaller than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'यह चित्र "{file}" बहुत छोटी है। ऊंचाई {limit, number} {limit, plural, one{पिक्सेल} other{पिक्सेल}} से छोटी नहीं हो सकती।',
@@ -58,13 +66,14 @@
'Total {count, number} {count, plural, one{item} other{items}}.' => 'कुल {count, number} {count, plural, one{चीज} other{चीज़े}}।',
'Unable to verify your data submission.' => 'आपके डेटा सबमिशन को सत्यापित करने में असमर्थ।',
'Unknown alias: -{name}' => 'अज्ञात उपनाम: - {name}',
+ 'Unknown filter attribute "{attribute}"' => '',
'Unknown option: --{name}' => 'अज्ञात विकल्प: - {name}',
'Update' => 'अपडेट करें',
'View' => 'देखें',
'Yes' => 'हाँ',
- 'Yii Framework' => 'Yii फ़्रेमवर्क',
'You are not allowed to perform this action.' => 'आपको यह करने की अनुमति नहीं है।',
'You can upload at most {limit, number} {limit, plural, one{file} other{files}}.' => 'आप अधिकतम {limit, number} {limit, plural, one{फ़ाइल} other{फाइलें}} अपलोड कर सकते हैं।',
+ 'You should upload at least {limit, number} {limit, plural, one{file} other{files}}.' => '',
'in {delta, plural, =1{a day} other{# days}}' => '{delta, plural, =1{एक दिन} other{# दिनों}} में',
'in {delta, plural, =1{a minute} other{# minutes}}' => '{delta, plural, =1{एक मिनट} other{# मिनटों}} में',
'in {delta, plural, =1{a month} other{# months}}' => '{delta, plural, =1{एक महीना} other{# महीनों}} में',
@@ -101,6 +110,7 @@
'{attribute} should contain at least {min, number} {min, plural, one{character} other{characters}}.' => '{attribute} में कम से कम {min, number} {min, plural, one{अक्षर} other{अक्षर}} होना चाहिए।',
'{attribute} should contain at most {max, number} {max, plural, one{character} other{characters}}.' => '{attribute} में अधिकतम {max, number} {max, plural, one{अक्षर} other{अक्षर}} होना चाहिए।',
'{attribute} should contain {length, number} {length, plural, one{character} other{characters}}.' => '{attribute} में {length, number} {length, plural, one{अक्षर} other{अक्षर}} शामिल होना चाहिए।',
+ '{compareAttribute} is invalid.' => '',
'{delta, plural, =1{1 day} other{# days}}' => '{delta, plural, =1{1 दिन} other{# दिन}}',
'{delta, plural, =1{1 hour} other{# hours}}' => '{delta, plural, =1{1 घंटा} other{# घंटे}}',
'{delta, plural, =1{1 minute} other{# minutes}}' => '{delta, plural, =1{1 मिनट} other{# मिनिटे}}',
@@ -116,7 +126,6 @@
'{nFormatted} B' => '{nFormatted} B',
'{nFormatted} GB' => '{nFormatted} GB',
'{nFormatted} GiB' => '{nFormatted} GiB',
- '{nFormatted} kB' => '{nFormatted} KB',
'{nFormatted} KiB' => '{nFormatted} KiB',
'{nFormatted} MB' => '{nFormatted} MB',
'{nFormatted} MiB' => '{nFormatted} MiB',
@@ -124,6 +133,7 @@
'{nFormatted} PiB' => '{nFormatted} PiB',
'{nFormatted} TB' => '{nFormatted} TB',
'{nFormatted} TiB' => '{nFormatted} TiB',
+ '{nFormatted} kB' => '{nFormatted} KB',
'{nFormatted} {n, plural, =1{byte} other{bytes}}' => '{nFormatted} {n, plural, =1{बाइट} other{बाइट्स}}',
'{nFormatted} {n, plural, =1{gibibyte} other{gibibytes}}' => '{nFormatted} {n, plural, =1{गिबिबाइट} other{गिबिबाइटस}}',
'{nFormatted} {n, plural, =1{gigabyte} other{gigabytes}}' => '{nFormatted} {n, plural, =1{गीगाबाइट} other{गीगाबाइटस}}',
diff --git a/framework/messages/hr/yii.php b/framework/messages/hr/yii.php
index ac445e0908c..54d3e298942 100644
--- a/framework/messages/hr/yii.php
+++ b/framework/messages/hr/yii.php
@@ -1,4 +1,5 @@
'',
+ '"{attribute}" does not support operator "{operator}".' => '',
'(not set)' => '(nije postavljeno)',
+ 'Action not found.' => '',
+ 'Aliases available: {aliases}' => '',
'An internal server error occurred.' => 'Došlo je do interne pogreške servera.',
- 'Are you sure you want to delete this item' => 'Želiš li to obrisati?',
+ 'Are you sure you want to delete this item?' => '',
+ 'Condition for "{attribute}" should be either a value or valid operator specification.' => '',
'Delete' => 'Obrisati',
'Error' => 'Pogreška',
'File upload failed.' => 'Upload datoteke nije uspio.',
@@ -35,77 +41,108 @@
'Missing required arguments: {params}' => 'Nedostaju potrebni argunenti: {params}',
'Missing required parameters: {params}' => 'Nedostaju potrebni parametri: {params}',
'No' => 'Ne',
- 'No help for unknown command "{command}".' => 'Nema pomoći za nepoznatu naredbu "{command}"',
- 'No help for unknown sub-command "{command}".' => 'Nema pomoći za nepoznatu pod-naredbu "{command}"',
'No results found.' => 'Nema rezultata.',
'Only files with these MIME types are allowed: {mimeTypes}.' => 'Samo datoteke s ovim MIME vrstama su dopuštene: {mimeTypes}.',
'Only files with these extensions are allowed: {extensions}.' => 'Samo datoteke s ovim ekstenzijama su dopuštene: {extensions}',
+ 'Operator "{operator}" must be used with a search attribute.' => '',
+ 'Operator "{operator}" requires multiple operands.' => '',
+ 'Options available: {options}' => '',
'Page not found.' => 'Stranica nije pronađena.',
'Please fix the following errors:' => 'Molimo vas ispravite pogreške:',
'Please upload a file.' => 'Molimo vas da uploadate datoteku.',
'Showing {begin, number}-{end, number} of {totalCount, number} {totalCount, plural, one{item} other{items}}.' => 'Prikazuj {begin, number}-{end, number} od {totalCount, number} {totalCount, plural, one{stavka} few{stavke} many{stavki} other{stavki}}.',
+ 'The combination {values} of {attributes} has already been taken.' => '',
'The file "{file}" is not an image.' => 'Datoteka "{file}" nije slika.',
'The file "{file}" is too big. Its size cannot exceed {formattedLimit}.' => 'Datoteka "{file}" je prevelika. Ne smije biti veća od {formattedLimit}.',
'The file "{file}" is too small. Its size cannot be smaller than {formattedLimit}.' => 'Datoteka "{file}" je premalena. Ne smije biti manja od {formattedLimit}.',
'The format of {attribute} is invalid.' => 'Format od {attribute} je nevažeći.',
+ 'The format of {filter} is invalid.' => '',
'The image "{file}" is too large. The height cannot be larger than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'Slika "{file}" je prevelika. Visina slike ne smije biti veća od {limit, number} {limit, plural, one{piksel} other{piksela}}.',
'The image "{file}" is too large. The width cannot be larger than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'Slika "{file}" je prevelika. Širina slike ne smije biti veća od {limit, number} {limit, plural, one{piksel} other{piksela}}.',
'The image "{file}" is too small. The height cannot be smaller than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'Slika "{file}" je premalena. Visina slike ne smije biti manja od {limit, number} {limit, plural, one{piksel} other{piksela}}.',
'The image "{file}" is too small. The width cannot be smaller than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'Slika "{file}" je premalena. Širina slike ne smije biti manja od {limit, number} {limit, plural, one{piksel} other{piksela}}.',
+ 'The requested view "{name}" was not found.' => '',
'The verification code is incorrect.' => 'Kod za provjeru nije točan.',
'Total {count, number} {count, plural, one{item} other{items}}.' => 'Ukupno {count, number} {count, plural, =1{stavka} one{# stavka} few{# stavke} many{# stavki} other{# stavki}}.',
'Unable to verify your data submission.' => 'Nije moguće provjeriti poslane podatke.',
- 'Unknown command "{command}".' => 'Nepoznata naredba "{command}".',
+ 'Unknown alias: -{name}' => '',
+ 'Unknown filter attribute "{attribute}"' => '',
'Unknown option: --{name}' => 'Nepoznata opcija: --{name}',
'Update' => 'Uredi',
'View' => 'Pregled',
'Yes' => 'Da',
'You are not allowed to perform this action.' => 'Nije vam dopušteno obavljati tu radnju.',
'You can upload at most {limit, number} {limit, plural, one{file} other{files}}.' => 'Najviše možete uploadat {limit, number} {limit, plural, one{datoteku} few{datoteke} other{datoteka}}.',
+ 'You should upload at least {limit, number} {limit, plural, one{file} other{files}}.' => '',
'in {delta, plural, =1{a day} other{# days}}' => 'u {delta, plural, =1{dan} one{# dan} few{# dana} many{# dana} other{# dana}}',
'in {delta, plural, =1{a minute} other{# minutes}}' => 'u {delta, plural, =1{minuta} one{# minuta} few{# minute} many{# minuta} other{# minuta}}',
'in {delta, plural, =1{a month} other{# months}}' => 'u {delta, plural, =1{mjesec} one{# mjesec} few{# mjeseca} many{# mjeseci} other{# mjeseci}}',
'in {delta, plural, =1{a second} other{# seconds}}' => 'u {delta, plural, =1{sekunda} one{# sekunda} few{# sekunde} many{# sekundi} other{# sekundi}}',
'in {delta, plural, =1{a year} other{# years}}' => 'u {delta, plural, =1{godina} one{# godine} few{# godine} many{# godina} other{# godina}}',
'in {delta, plural, =1{an hour} other{# hours}}' => 'u {delta, plural, =1{sat} one{# sat} few{# sata} many{# sati} other{# sati}}',
+ 'just now' => '',
'the input value' => 'ulazna vrijednost',
'{attribute} "{value}" has already been taken.' => '{attribute} "{value}" već se koristi.',
'{attribute} cannot be blank.' => '{attribute} ne smije biti prazan.',
+ '{attribute} contains wrong subnet mask.' => '',
'{attribute} is invalid.' => 'Atribut "{attribute}" je neispravan.',
'{attribute} is not a valid URL.' => '{attribute} nije valjan URL.',
'{attribute} is not a valid email address.' => '{attribute} nije valjana email adresa.',
+ '{attribute} is not in the allowed range.' => '',
'{attribute} must be "{requiredValue}".' => '{attribute} mora biti "{requiredValue}".',
'{attribute} must be a number.' => '{attribute} mora biti broj.',
'{attribute} must be a string.' => '{attribute} mora biti string(riječ,tekst).',
+ '{attribute} must be a valid IP address.' => '',
+ '{attribute} must be an IP address with specified subnet.' => '',
'{attribute} must be an integer.' => '{attribute} mora biti cijeli broj.',
'{attribute} must be either "{true}" or "{false}".' => '{attribute} mora biti "{true}" ili "{false}".',
- '{attribute} must be greater than "{compareValue}".' => '{attribute} mora biti veći od "{compareValue}',
- '{attribute} must be greater than or equal to "{compareValue}".' => '{attribute} mora biti veći ili jednak "{compareValue}".',
- '{attribute} must be less than "{compareValue}".' => '{attribute} mora biti manji od "{compareValue}".',
- '{attribute} must be less than or equal to "{compareValue}".' => '{attribute} mora biti jednak "{compareValue}".',
+ '{attribute} must be equal to "{compareValueOrAttribute}".' => '',
+ '{attribute} must be greater than "{compareValueOrAttribute}".' => '{attribute} mora biti veći od "{compareValueOrAttribute}',
+ '{attribute} must be greater than or equal to "{compareValueOrAttribute}".' => '{attribute} mora biti veći ili jednak "{compareValueOrAttribute}".',
+ '{attribute} must be less than "{compareValueOrAttribute}".' => '{attribute} mora biti manji od "{compareValueOrAttribute}".',
+ '{attribute} must be less than or equal to "{compareValueOrAttribute}".' => '{attribute} mora biti jednak "{compareValueOrAttribute}".',
'{attribute} must be no greater than {max}.' => '{attribute} ne smije biti veći od {max}.',
'{attribute} must be no less than {min}.' => '{attribute} ne smije biti manji od {min}.',
- '{attribute} must be repeated exactly.' => '{attribute} mora biti točno ponovljeno.',
- '{attribute} must not be equal to "{compareValue}".' => '{attribute} ne smije biti jednak "{compareValue}".',
+ '{attribute} must not be a subnet.' => '',
+ '{attribute} must not be an IPv4 address.' => '',
+ '{attribute} must not be an IPv6 address.' => '',
+ '{attribute} must not be equal to "{compareValueOrAttribute}".' => '{attribute} ne smije biti jednak "{compareValueOrAttribute}".',
'{attribute} should contain at least {min, number} {min, plural, one{character} other{characters}}.' => '{attribute} mora najmanje sadržavati {min, number} {min, plural, =1{znak} one{znak} few{znaka} many{znakova} other{znakova}}.',
'{attribute} should contain at most {max, number} {max, plural, one{character} other{characters}}.' => '{attribute} moze sadržavati najviše do {max, number} {max, plural, =1{znak} one{znak} few{znaka} many{znakova} other{znakova}}.',
'{attribute} should contain {length, number} {length, plural, one{character} other{characters}}.' => '{attribute} mora sadržavati {length, number} {length, plural, =1{znak} one{znak} few{znaka} many{znakova} other{znakova}}.',
+ '{compareAttribute} is invalid.' => '',
+ '{delta, plural, =1{1 day} other{# days}}' => '',
+ '{delta, plural, =1{1 hour} other{# hours}}' => '',
+ '{delta, plural, =1{1 minute} other{# minutes}}' => '',
+ '{delta, plural, =1{1 month} other{# months}}' => '',
+ '{delta, plural, =1{1 second} other{# seconds}}' => '',
+ '{delta, plural, =1{1 year} other{# years}}' => '',
'{delta, plural, =1{a day} other{# days}} ago' => '{delta, plural, =1{dan} one{# dan} few{# dana} many{# dana} other{# dana}}',
'{delta, plural, =1{a minute} other{# minutes}} ago' => '{delta, plural, =1{minuta} one{# minuta} few{# minute} many{# minuta} other{# minuta}}',
'{delta, plural, =1{a month} other{# months}} ago' => '{delta, plural, =1{mjesec} one{# mjesec} few{# mjeseca} many{# mjeseci} other{# mjeseci}}',
'{delta, plural, =1{a second} other{# seconds}} ago' => '{delta, plural, =1{sekunda} one{# sekunda} few{# sekunde} many{# sekundi} other{# sekundi}}',
'{delta, plural, =1{a year} other{# years}} ago' => '{delta, plural, =1{godina} one{# godine} few{# godine} many{# godina} other{# godina}}',
'{delta, plural, =1{an hour} other{# hours}} ago' => ' {delta, plural, =1{sat} one{# sat} few{# sata} many{# sati} other{# sati}}',
- '{n, plural, =1{# byte} other{# bytes}}' => '{n, plural, =1{# bajt} other{# bajta}}',
- '{n, plural, =1{# gigabyte} other{# gigabytes}}' => '{n, plural, =1{# gigabajt} other{# gigabajta}}',
- '{n, plural, =1{# kilobyte} other{# kilobytes}}' => '{n, plural, =1{# kilobajt} other{# kilobajta}}',
- '{n, plural, =1{# megabyte} other{# megabytes}}' => '{n, plural, =1{# megabajt} other{# megabajta}}',
- '{n, plural, =1{# petabyte} other{# petabytes}}' => '{n, plural, =1{# petabajt} other{# petabajta}}',
- '{n, plural, =1{# terabyte} other{# terabytes}}' => '{n, plural, =1{# terabajt} other{# terabajta}}',
- '{n} B' => '{n} B',
- '{n} GB' => '{n} GB',
- '{n} KB' => '{n} KB',
- '{n} MB' => '{n} MB',
- '{n} PB' => '{n} PB',
- '{n} TB' => '{n} TB',
+ '{nFormatted} B' => '{nFormatted} B',
+ '{nFormatted} GB' => '{nFormatted} GB',
+ '{nFormatted} GiB' => '',
+ '{nFormatted} KiB' => '',
+ '{nFormatted} MB' => '{nFormatted} MB',
+ '{nFormatted} MiB' => '',
+ '{nFormatted} PB' => '{nFormatted} PB',
+ '{nFormatted} PiB' => '',
+ '{nFormatted} TB' => '{nFormatted} TB',
+ '{nFormatted} TiB' => '',
+ '{nFormatted} kB' => '{nFormatted} kB',
+ '{nFormatted} {n, plural, =1{byte} other{bytes}}' => '{nFormatted} {n, plural, =1{bajt} other{bajta}}',
+ '{nFormatted} {n, plural, =1{gibibyte} other{gibibytes}}' => '',
+ '{nFormatted} {n, plural, =1{gigabyte} other{gigabytes}}' => '{nFormatted} {n, plural, =1{gigabajt} other{gigabajta}}',
+ '{nFormatted} {n, plural, =1{kibibyte} other{kibibytes}}' => '',
+ '{nFormatted} {n, plural, =1{kilobyte} other{kilobytes}}' => '{nFormatted} {n, plural, =1{kilobajt} other{kilobajta}}',
+ '{nFormatted} {n, plural, =1{mebibyte} other{mebibytes}}' => '',
+ '{nFormatted} {n, plural, =1{megabyte} other{megabytes}}' => '{nFormatted} {n, plural, =1{megabajt} other{megabajta}}',
+ '{nFormatted} {n, plural, =1{pebibyte} other{pebibytes}}' => '',
+ '{nFormatted} {n, plural, =1{petabyte} other{petabytes}}' => '{nFormatted} {n, plural, =1{petabajt} other{petabajta}}',
+ '{nFormatted} {n, plural, =1{tebibyte} other{tebibytes}}' => '',
+ '{nFormatted} {n, plural, =1{terabyte} other{terabytes}}' => '{nFormatted} {n, plural, =1{terabajt} other{terabajta}}',
];
diff --git a/framework/messages/hu/yii.php b/framework/messages/hu/yii.php
index 88575242bd3..b16c0a35a3a 100644
--- a/framework/messages/hu/yii.php
+++ b/framework/messages/hu/yii.php
@@ -1,4 +1,5 @@
'(nincs beállítva)',
- 'An internal server error occurred.' => 'Egy belső szerver hiba történt.',
- 'Are you sure you want to delete this item?' => 'Biztos benne, hogy törli ezt az elemet?',
- 'Delete' => 'Törlés',
- 'Error' => 'Hiba',
- 'File upload failed.' => 'A fájlfeltöltés nem sikerült.',
- 'Home' => 'Főoldal',
- 'Invalid data received for parameter "{param}".' => 'Érvénytelen paraméter: {param}.',
- 'Login Required' => 'Bejelentkezés szükséges',
- 'Missing required arguments: {params}' => 'Hiányzó argumentumok: {params}',
- 'Missing required parameters: {params}' => 'Hiányzó paraméterek: {params}',
- 'No' => 'Nem',
- 'No help for unknown command "{command}".' => 'Nincs súgó az ismeretlen {command} parancshoz.',
- 'No help for unknown sub-command "{command}".' => 'Nincs súgó az ismeretlen {command} alparancshoz.',
- 'No results found.' => 'Nincs találat.',
- 'Only files with these MIME types are allowed: {mimeTypes}.' => 'Csak a következő MIME típusú fájlok engedélyezettek: {mimeTypes}.',
- 'Only files with these extensions are allowed: {extensions}.' => 'Csak a következő kiterjesztésű fájlok engedélyezettek: {extensions}.',
- 'Page not found.' => 'Az oldal nem található.',
- 'Please fix the following errors:' => 'Kérjük javítsa a következő hibákat:',
- 'Please upload a file.' => 'Kérjük töltsön fel egy fájlt.',
- 'Showing {begin, number}-{end, number} of {totalCount, number} {totalCount, plural, one{item} other{items}}.' => '{begin, number}-{end, number} megjelenítése a(z) {totalCount, number} elemből.',
- 'The file "{file}" is not an image.' => '"{file}" nem egy kép.',
- 'The file "{file}" is too big. Its size cannot exceed {formattedLimit}.' => '"{file}" túl nagy. A mérete nem lehet nagyobb {formattedLimit}.',
- 'The file "{file}" is too small. Its size cannot be smaller than {formattedLimit}.' => '"{file}" túl kicsi. A mérete nem lehet kisebb {formattedLimit}.',
- 'The format of {attribute} is invalid.' => 'A(z) {attribute} formátuma érvénytelen.',
- 'The image "{file}" is too large. The height cannot be larger than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'A(z) "{file}" kép túl nagy. A magassága nem lehet nagyobb {limit, number} pixelnél.',
- 'The image "{file}" is too large. The width cannot be larger than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'A(z) "{file}" kép túl nagy. A szélessége nem lehet nagyobb {limit, number} pixelnél.',
- 'The image "{file}" is too small. The height cannot be smaller than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'A(z) "{file}" kép túl kicsi. A magassága nem lehet kisebb {limit, number} pixelnél.',
- 'The image "{file}" is too small. The width cannot be smaller than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'A(z) "{file}" kép túl kicsi. A szélessége nem lehet kisebb {limit, number} pixelnél.',
- 'The requested view "{name}" was not found.' => 'A kért "{name}" nézet nem található.',
- 'The verification code is incorrect.' => 'A megerősítő kód helytelen.',
- 'Total {count, number} {count, plural, one{item} other{items}}.' => 'Összesen {count, number} elem.',
- 'Unable to verify your data submission.' => 'Nem sikerült ellenőrizni az adatokat.',
- 'Unknown command "{command}".' => 'Ismeretlen parancs: "{command}".',
- 'Unknown option: --{name}' => 'Ismeretlen kapcsoló: --{name}',
- 'Update' => 'Szerkesztés',
- 'View' => 'Megtekintés',
- 'just now' => 'éppen most',
- 'Yes' => 'Igen',
- 'You are not allowed to perform this action.' => 'Nincs jogosultsága a művelet végrehajtásához.',
- 'You can upload at most {limit, number} {limit, plural, one{file} other{files}}.' => 'Legfeljebb {limit, number} fájlt tölthet fel.',
- 'in {delta, plural, =1{a day} other{# days}}' => '{delta} napon belül',
- 'in {delta, plural, =1{a minute} other{# minutes}}' => '{delta} percen belül',
- 'in {delta, plural, =1{a month} other{# months}}' => '{delta} hónapon belül',
- 'in {delta, plural, =1{a second} other{# seconds}}' => '{delta} másodpercen belül',
- 'in {delta, plural, =1{a year} other{# years}}' => '{delta} éven belül',
- 'in {delta, plural, =1{an hour} other{# hours}}' => '{delta} órán belül',
- 'the input value' => 'a beviteli érték',
- '{attribute} "{value}" has already been taken.' => '{attribute} "{value}" már használatban van.',
- '{attribute} cannot be blank.' => '{attribute} nem lehet üres.',
- '{attribute} is invalid.' => '{attribute} érvénytelen.',
- '{attribute} is not a valid URL.' => '{attribute} nem valódi URL.',
- '{attribute} is not a valid email address.' => '{attribute} nem valódi e-mail cím.',
- '{attribute} must be "{requiredValue}".' => '{attribute} értéke "{requiredValue}" kell, hogy legyen.',
- '{attribute} must be a number.' => '{attribute} csak szám lehet.',
- '{attribute} must be a string.' => '{attribute} csak szöveg lehet.',
- '{attribute} must be an integer.' => '{attribute} csak egész szám lehet.',
- '{attribute} must be either "{true}" or "{false}".' => '{attribute} csak "{true}" vagy "{false}" lehet.',
- '{attribute} must be greater than "{compareValue}".' => '{attribute} nagyobbnak kell lennie, mint "{compareValue}".',
- '{attribute} must be greater than or equal to "{compareValue}".' => '{attribute} nagyobb vagy egyenlő kell legyen, mint "{compareValue}".',
- '{attribute} must be less than "{compareValue}".' => '{attribute} kisebbnek kell lennie, mint "{compareValue}".',
- '{attribute} must be less than or equal to "{compareValue}".' => '{attribute} kisebb vagy egyenlő kell legyen, mint "{compareValue}".',
- '{attribute} must be no greater than {max}.' => '{attribute} nem lehet nagyobb, mint {max}.',
- '{attribute} must be no less than {min}.' => '{attribute} nem lehet kisebb, mint {min}.',
- '{attribute} must be repeated exactly.' => 'Ismételje meg pontosan a(z) {attribute} mezőbe írtakat.',
- '{attribute} must not be equal to "{compareValue}".' => '{attribute} nem lehet egyenlő ezzel: "{compareValue}".',
- '{attribute} must be equal to "{compareValueOrAttribute}".' => '"{attribute}" mezőnek azonosnak kell lennie a "{compareValueOrAttribute}" mezőbe írtakkal.',
- '{attribute} should contain at least {min, number} {min, plural, one{character} other{characters}}.' => '{attribute} minimum {min, number} karakter kell, hogy legyen.',
- '{attribute} should contain at most {max, number} {max, plural, one{character} other{characters}}.' => '{attribute} maximum {max, number} karakter lehet.',
- '{attribute} should contain {length, number} {length, plural, one{character} other{characters}}.' => '{attribute} pontosan {length, number} kell, hogy legyen.',
- '{delta, plural, =1{a day} other{# days}} ago' => '{delta} nappal ezelőtt',
- '{delta, plural, =1{a minute} other{# minutes}} ago' => '{delta} perccel ezelőtt',
- '{delta, plural, =1{a month} other{# months}} ago' => '{delta} hónappal ezelőtt',
- '{delta, plural, =1{a second} other{# seconds}} ago' => '{delta} másodperccel ezelőtt',
- '{delta, plural, =1{a year} other{# years}} ago' => '{delta} évvel ezelőtt',
- '{delta, plural, =1{an hour} other{# hours}} ago' => '{delta} órával ezelőtt',
- '{n, plural, =1{# byte} other{# bytes}}' => '{n} bájt',
- '{n, plural, =1{# gigabyte} other{# gigabytes}}' => '{n} gigabájt',
- '{n, plural, =1{# kilobyte} other{# kilobytes}}' => '{n} kilobájt',
- '{n, plural, =1{# megabyte} other{# megabytes}}' => '{n} megabájt',
- '{n, plural, =1{# petabyte} other{# petabytes}}' => '{n} petabájt',
- '{n, plural, =1{# terabyte} other{# terabytes}}' => '{n} terabájt',
- '{n} B' => '{n} B',
- '{n} GB' => '{n} GB',
- '{n} KB' => '{n} KB',
- '{n} MB' => '{n} MB',
- '{n} PB' => '{n} PB',
- '{n} TB' => '{n} TB',
+ ' and ' => '',
+ '"{attribute}" does not support operator "{operator}".' => '',
+ '(not set)' => '(nincs beállítva)',
+ 'Action not found.' => '',
+ 'Aliases available: {aliases}' => '',
+ 'An internal server error occurred.' => 'Egy belső szerver hiba történt.',
+ 'Are you sure you want to delete this item?' => 'Biztos benne, hogy törli ezt az elemet?',
+ 'Condition for "{attribute}" should be either a value or valid operator specification.' => '',
+ 'Delete' => 'Törlés',
+ 'Error' => 'Hiba',
+ 'File upload failed.' => 'A fájlfeltöltés nem sikerült.',
+ 'Home' => 'Főoldal',
+ 'Invalid data received for parameter "{param}".' => 'Érvénytelen paraméter: {param}.',
+ 'Login Required' => 'Bejelentkezés szükséges',
+ 'Missing required arguments: {params}' => 'Hiányzó argumentumok: {params}',
+ 'Missing required parameters: {params}' => 'Hiányzó paraméterek: {params}',
+ 'No' => 'Nem',
+ 'No results found.' => 'Nincs találat.',
+ 'Only files with these MIME types are allowed: {mimeTypes}.' => 'Csak a következő MIME típusú fájlok engedélyezettek: {mimeTypes}.',
+ 'Only files with these extensions are allowed: {extensions}.' => 'Csak a következő kiterjesztésű fájlok engedélyezettek: {extensions}.',
+ 'Operator "{operator}" must be used with a search attribute.' => '',
+ 'Operator "{operator}" requires multiple operands.' => '',
+ 'Options available: {options}' => '',
+ 'Page not found.' => 'Az oldal nem található.',
+ 'Please fix the following errors:' => 'Kérjük javítsa a következő hibákat:',
+ 'Please upload a file.' => 'Kérjük töltsön fel egy fájlt.',
+ 'Showing {begin, number}-{end, number} of {totalCount, number} {totalCount, plural, one{item} other{items}}.' => '{begin, number}-{end, number} megjelenítése a(z) {totalCount, number} elemből.',
+ 'The combination {values} of {attributes} has already been taken.' => '',
+ 'The file "{file}" is not an image.' => '"{file}" nem egy kép.',
+ 'The file "{file}" is too big. Its size cannot exceed {formattedLimit}.' => '"{file}" túl nagy. A mérete nem lehet nagyobb {formattedLimit}.',
+ 'The file "{file}" is too small. Its size cannot be smaller than {formattedLimit}.' => '"{file}" túl kicsi. A mérete nem lehet kisebb {formattedLimit}.',
+ 'The format of {attribute} is invalid.' => 'A(z) {attribute} formátuma érvénytelen.',
+ 'The format of {filter} is invalid.' => '',
+ 'The image "{file}" is too large. The height cannot be larger than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'A(z) "{file}" kép túl nagy. A magassága nem lehet nagyobb {limit, number} pixelnél.',
+ 'The image "{file}" is too large. The width cannot be larger than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'A(z) "{file}" kép túl nagy. A szélessége nem lehet nagyobb {limit, number} pixelnél.',
+ 'The image "{file}" is too small. The height cannot be smaller than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'A(z) "{file}" kép túl kicsi. A magassága nem lehet kisebb {limit, number} pixelnél.',
+ 'The image "{file}" is too small. The width cannot be smaller than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'A(z) "{file}" kép túl kicsi. A szélessége nem lehet kisebb {limit, number} pixelnél.',
+ 'The requested view "{name}" was not found.' => 'A kért "{name}" nézet nem található.',
+ 'The verification code is incorrect.' => 'A megerősítő kód helytelen.',
+ 'Total {count, number} {count, plural, one{item} other{items}}.' => 'Összesen {count, number} elem.',
+ 'Unable to verify your data submission.' => 'Nem sikerült ellenőrizni az adatokat.',
+ 'Unknown alias: -{name}' => '',
+ 'Unknown filter attribute "{attribute}"' => '',
+ 'Unknown option: --{name}' => 'Ismeretlen kapcsoló: --{name}',
+ 'Update' => 'Szerkesztés',
+ 'View' => 'Megtekintés',
+ 'Yes' => 'Igen',
+ 'You are not allowed to perform this action.' => 'Nincs jogosultsága a művelet végrehajtásához.',
+ 'You can upload at most {limit, number} {limit, plural, one{file} other{files}}.' => 'Legfeljebb {limit, number} fájlt tölthet fel.',
+ 'You should upload at least {limit, number} {limit, plural, one{file} other{files}}.' => '',
+ 'in {delta, plural, =1{a day} other{# days}}' => '{delta} napon belül',
+ 'in {delta, plural, =1{a minute} other{# minutes}}' => '{delta} percen belül',
+ 'in {delta, plural, =1{a month} other{# months}}' => '{delta} hónapon belül',
+ 'in {delta, plural, =1{a second} other{# seconds}}' => '{delta} másodpercen belül',
+ 'in {delta, plural, =1{a year} other{# years}}' => '{delta} éven belül',
+ 'in {delta, plural, =1{an hour} other{# hours}}' => '{delta} órán belül',
+ 'just now' => 'éppen most',
+ 'the input value' => 'a beviteli érték',
+ '{attribute} "{value}" has already been taken.' => '{attribute} "{value}" már használatban van.',
+ '{attribute} cannot be blank.' => '{attribute} nem lehet üres.',
+ '{attribute} contains wrong subnet mask.' => '',
+ '{attribute} is invalid.' => '{attribute} érvénytelen.',
+ '{attribute} is not a valid URL.' => '{attribute} nem valódi URL.',
+ '{attribute} is not a valid email address.' => '{attribute} nem valódi e-mail cím.',
+ '{attribute} is not in the allowed range.' => '',
+ '{attribute} must be "{requiredValue}".' => '{attribute} értéke "{requiredValue}" kell, hogy legyen.',
+ '{attribute} must be a number.' => '{attribute} csak szám lehet.',
+ '{attribute} must be a string.' => '{attribute} csak szöveg lehet.',
+ '{attribute} must be a valid IP address.' => '',
+ '{attribute} must be an IP address with specified subnet.' => '',
+ '{attribute} must be an integer.' => '{attribute} csak egész szám lehet.',
+ '{attribute} must be either "{true}" or "{false}".' => '{attribute} csak "{true}" vagy "{false}" lehet.',
+ '{attribute} must be equal to "{compareValueOrAttribute}".' => '"{attribute}" mezőnek azonosnak kell lennie a "{compareValueOrAttribute}" mezőbe írtakkal.',
+ '{attribute} must be greater than "{compareValueOrAttribute}".' => '{attribute} nagyobbnak kell lennie, mint "{compareValueOrAttribute}".',
+ '{attribute} must be greater than or equal to "{compareValueOrAttribute}".' => '{attribute} nagyobb vagy egyenlő kell legyen, mint "{compareValueOrAttribute}".',
+ '{attribute} must be less than "{compareValueOrAttribute}".' => '{attribute} kisebbnek kell lennie, mint "{compareValueOrAttribute}".',
+ '{attribute} must be less than or equal to "{compareValueOrAttribute}".' => '{attribute} kisebb vagy egyenlő kell legyen, mint "{compareValueOrAttribute}".',
+ '{attribute} must be no greater than {max}.' => '{attribute} nem lehet nagyobb, mint {max}.',
+ '{attribute} must be no less than {min}.' => '{attribute} nem lehet kisebb, mint {min}.',
+ '{attribute} must not be a subnet.' => '',
+ '{attribute} must not be an IPv4 address.' => '',
+ '{attribute} must not be an IPv6 address.' => '',
+ '{attribute} must not be equal to "{compareValueOrAttribute}".' => '{attribute} nem lehet egyenlő ezzel: "{compareValueOrAttribute}".',
+ '{attribute} should contain at least {min, number} {min, plural, one{character} other{characters}}.' => '{attribute} minimum {min, number} karakter kell, hogy legyen.',
+ '{attribute} should contain at most {max, number} {max, plural, one{character} other{characters}}.' => '{attribute} maximum {max, number} karakter lehet.',
+ '{attribute} should contain {length, number} {length, plural, one{character} other{characters}}.' => '{attribute} pontosan {length, number} kell, hogy legyen.',
+ '{compareAttribute} is invalid.' => '',
+ '{delta, plural, =1{1 day} other{# days}}' => '',
+ '{delta, plural, =1{1 hour} other{# hours}}' => '',
+ '{delta, plural, =1{1 minute} other{# minutes}}' => '',
+ '{delta, plural, =1{1 month} other{# months}}' => '',
+ '{delta, plural, =1{1 second} other{# seconds}}' => '',
+ '{delta, plural, =1{1 year} other{# years}}' => '',
+ '{delta, plural, =1{a day} other{# days}} ago' => '{delta} nappal ezelőtt',
+ '{delta, plural, =1{a minute} other{# minutes}} ago' => '{delta} perccel ezelőtt',
+ '{delta, plural, =1{a month} other{# months}} ago' => '{delta} hónappal ezelőtt',
+ '{delta, plural, =1{a second} other{# seconds}} ago' => '{delta} másodperccel ezelőtt',
+ '{delta, plural, =1{a year} other{# years}} ago' => '{delta} évvel ezelőtt',
+ '{delta, plural, =1{an hour} other{# hours}} ago' => '{delta} órával ezelőtt',
+ '{nFormatted} B' => '{nFormatted} B',
+ '{nFormatted} GB' => '{nFormatted} GB',
+ '{nFormatted} GiB' => '',
+ '{nFormatted} KiB' => '',
+ '{nFormatted} MB' => '{nFormatted} MB',
+ '{nFormatted} MiB' => '',
+ '{nFormatted} PB' => '{nFormatted} PB',
+ '{nFormatted} PiB' => '',
+ '{nFormatted} TB' => '{nFormatted} TB',
+ '{nFormatted} TiB' => '',
+ '{nFormatted} kB' => '{nFormatted} kB',
+ '{nFormatted} {n, plural, =1{byte} other{bytes}}' => '{nFormatted} bájt',
+ '{nFormatted} {n, plural, =1{gibibyte} other{gibibytes}}' => '',
+ '{nFormatted} {n, plural, =1{gigabyte} other{gigabytes}}' => '{nFormatted} gigabájt',
+ '{nFormatted} {n, plural, =1{kibibyte} other{kibibytes}}' => '',
+ '{nFormatted} {n, plural, =1{kilobyte} other{kilobytes}}' => '{nFormatted} kilobájt',
+ '{nFormatted} {n, plural, =1{mebibyte} other{mebibytes}}' => '',
+ '{nFormatted} {n, plural, =1{megabyte} other{megabytes}}' => '{nFormatted} megabájt',
+ '{nFormatted} {n, plural, =1{pebibyte} other{pebibytes}}' => '',
+ '{nFormatted} {n, plural, =1{petabyte} other{petabytes}}' => '{nFormatted} petabájt',
+ '{nFormatted} {n, plural, =1{tebibyte} other{tebibytes}}' => '',
+ '{nFormatted} {n, plural, =1{terabyte} other{terabytes}}' => '{nFormatted} terabájt',
];
diff --git a/framework/messages/hy/yii.php b/framework/messages/hy/yii.php
index 8e2cb584548..6d29ee78bf1 100644
--- a/framework/messages/hy/yii.php
+++ b/framework/messages/hy/yii.php
@@ -1,4 +1,5 @@
+ * Message translations.
*
* This file is automatically generated by 'yii message/extract' command.
* It contains the localizable messages extracted from source code.
@@ -25,9 +25,13 @@
*/
return [
' and ' => ' և ',
+ '"{attribute}" does not support operator "{operator}".' => '«{attribute}»-ը չի սպասարկում «{operator}» օպերատորը։',
'(not set)' => '(չի նշված)',
+ 'Action not found.' => '',
+ 'Aliases available: {aliases}' => '',
'An internal server error occurred.' => 'Սերվերի ներքին սխալ է տեղի ունեցել։',
'Are you sure you want to delete this item?' => 'Վստա՞հ եք, որ ցանկանում եք ջնջել այս տարրը:',
+ 'Condition for "{attribute}" should be either a value or valid operator specification.' => '«{attribute}»-ի համար պետք է լինի արժեք կամ գործող օպերատորի հստակեցում:',
'Delete' => 'Ջնջել',
'Error' => 'Սխալ',
'File upload failed.' => 'Ֆայլի վերբեռնումը ձախողվեց։',
@@ -40,16 +44,19 @@
'No results found.' => 'Ոչ մի արդյունք չի գտնվել։',
'Only files with these MIME types are allowed: {mimeTypes}.' => 'Թույլատրվում են միայն {mimeTypes} MIME տեսակի ֆայլերը։',
'Only files with these extensions are allowed: {extensions}.' => 'Թույլատրվում են միայն {extensions} վերջավորությամբ ֆայլերը։',
+ 'Operator "{operator}" must be used with a search attribute.' => '«{operator}» օպերատորը պետք է օգտագործվի որոնման ատրիբուտի հետ միասին:',
+ 'Operator "{operator}" requires multiple operands.' => '«{operator}» օպերատորը պահանջում բազմակի օպերանդներ։',
+ 'Options available: {options}' => '',
'Page not found.' => 'Էջը չի գտնվել։',
'Please fix the following errors:' => 'Խնդրում ենք ուղղել հետևյալ սխալները՝',
'Please upload a file.' => 'Խնդրում ենք վերբեռնել ֆայլ:',
- 'Powered by {yii}' => 'Աշխատում է {yii}ով։',
'Showing {begin, number}-{end, number} of {totalCount, number} {totalCount, plural, one{item} other{items}}.' => 'Ցուցադրված են {begin, number}-ից {end, number}-ը ընդհանուր {totalCount, number}-ից։',
'The combination {values} of {attributes} has already been taken.' => '{attributes}-ի {values} արժեքների կոմբինացիան արդեն զբաղված է։',
'The file "{file}" is not an image.' => '«{file}» ֆայլը վավեր նկար չէ։',
'The file "{file}" is too big. Its size cannot exceed {formattedLimit}.' => '«{file}» ֆայլը շատ մեծ է։ Նրա չափը չի կարող գերազանցել {formattedLimit}-ը։',
'The file "{file}" is too small. Its size cannot be smaller than {formattedLimit}.' => '«{file}» ֆայլը շատ փոքր է։ Նրա չափը չի կարող լինել {formattedLimit}-ից փոքր։',
'The format of {attribute} is invalid.' => '{attribute}-ի ֆորմատը անվավեր է։',
+ 'The format of {filter} is invalid.' => '{filter}-ի ֆորմատը անվավեր է։',
'The image "{file}" is too large. The height cannot be larger than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => '«{file}» նկարը շատ մեծ է։ Նրա բարձրությունը չի կարող գերազանցել {limit, number} {limit, plural, one{պիքսել} few{պիքսել} many{պիքսել} other{պիքսել}}ը։',
'The image "{file}" is too large. The width cannot be larger than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => '«{file}» նկարը շատ մեծ է։ Նրա երկարությունը չի կարող գերազանցել {limit, number} {limit, plural, one{պիքսել} few{պիքսել} many{պիքսել} other{պիքսել}}ը։',
'The image "{file}" is too small. The height cannot be smaller than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => '«{file}» նկարը շատ փոքր է։ Նրա բարձրությունը չի կարող լինել {limit, number} {limit, plural, one{պիքսել} few{պիքսել} many{պիքսել} other{պիքսել}}ից փոքր։',
@@ -59,13 +66,14 @@
'Total {count, number} {count, plural, one{item} other{items}}.' => 'Ընդհանուր {count, number} {count, plural, one{տարր} other{տարր}}։',
'Unable to verify your data submission.' => 'Հնարավոր չէ ստուգել ձեր տվյալների ներկայացումը:',
'Unknown alias: -{name}' => 'Անհայտ այլանուն՝ «{name}»։',
+ 'Unknown filter attribute "{attribute}"' => 'Անհայտ ֆիլտրի ատրիբուտ՝ «{attribute}»։',
'Unknown option: --{name}' => 'Անհայտ տարբերակ՝ «{name}»։',
'Update' => 'Թարմացնել',
'View' => 'Դիտել',
'Yes' => 'Այո',
- 'Yii Framework' => 'Yii Framework',
'You are not allowed to perform this action.' => 'Ձեզ չի թույլատրվում կատարել այս գործողությունը:',
'You can upload at most {limit, number} {limit, plural, one{file} other{files}}.' => 'Դուք կարող եք վերբեռնել առավելագույնը {limit, number} {limit, plural, one{ֆայլ} few{ֆայլ} many{ֆայլ} other{ֆայլ}}։',
+ 'You should upload at least {limit, number} {limit, plural, one{file} other{files}}.' => '',
'in {delta, plural, =1{a day} other{# days}}' => '{delta, plural, =1{օր} one{# օր} few{# օր} many{# օր} other{# օր}}ից',
'in {delta, plural, =1{a minute} other{# minutes}}' => '{delta, plural, =1{րոպե} one{# րոպե} few{# րոպե} many{# րոպե} other{# րոպե}}ից',
'in {delta, plural, =1{a month} other{# months}}' => '{delta, plural, =1{ամս} one{# ամս} few{# ամս} many{# ամս} other{# ամս}}ից',
@@ -102,6 +110,7 @@
'{attribute} should contain at least {min, number} {min, plural, one{character} other{characters}}.' => '{attribute}-ի արժեքը պետք է պարունակի առնվազն {min, number} {min, plural, one{նիշ} other{նիշ}}։',
'{attribute} should contain at most {max, number} {max, plural, one{character} other{characters}}.' => '{attribute}-ի արժեքը պետք է պարունակի առավելագույնը {max, number} {max, plural, one{նիշ} other{նիշ}}։',
'{attribute} should contain {length, number} {length, plural, one{character} other{characters}}.' => '{attribute}-ի արժեքը պետք է պարունակի {length, number} {length, plural, one{նիշ} other{նիշ}}։',
+ '{compareAttribute} is invalid.' => '',
'{delta, plural, =1{1 day} other{# days}}' => '{delta, plural, =1{1 օր} other{# օր}}',
'{delta, plural, =1{1 hour} other{# hours}}' => '{delta, plural, =1{1 ժամ} other{# ժամ}}',
'{delta, plural, =1{1 minute} other{# minutes}}' => '{delta, plural, =1{1 րոպե} other{# րոպե}}',
@@ -117,7 +126,6 @@
'{nFormatted} B' => '{nFormatted} Բ',
'{nFormatted} GB' => '{nFormatted} ԳԲ',
'{nFormatted} GiB' => '{nFormatted} ԳիԲ',
- '{nFormatted} kB' => '{nFormatted} ԿԲ',
'{nFormatted} KiB' => '{nFormatted} ԿիԲ',
'{nFormatted} MB' => '{nFormatted} ՄԲ',
'{nFormatted} MiB' => '{nFormatted} ՄիԲ',
@@ -125,6 +133,7 @@
'{nFormatted} PiB' => '{nFormatted} ՊիԲ',
'{nFormatted} TB' => '{nFormatted} ՏԲ',
'{nFormatted} TiB' => '{nFormatted} ՏիԲ',
+ '{nFormatted} kB' => '{nFormatted} ԿԲ',
'{nFormatted} {n, plural, =1{byte} other{bytes}}' => '{nFormatted} {n, plural, =1{բայթ} other{բայթ}}',
'{nFormatted} {n, plural, =1{gibibyte} other{gibibytes}}' => '{nFormatted} {n, plural, =1{գիգաբիթ} other{գիգաբիթ}}',
'{nFormatted} {n, plural, =1{gigabyte} other{gigabytes}}' => '{nFormatted} {n, plural, =1{գիգաբայթ} other{գիգաբայթ}}',
@@ -136,10 +145,4 @@
'{nFormatted} {n, plural, =1{petabyte} other{petabytes}}' => '{nFormatted} {n, plural, =1{պետաբայթ} other{պետաբայթ}}',
'{nFormatted} {n, plural, =1{tebibyte} other{tebibytes}}' => '{nFormatted} {n, plural, =1{տեբիբայթ} other{տեբիբայթ}}',
'{nFormatted} {n, plural, =1{terabyte} other{terabytes}}' => '{nFormatted} {n, plural, =1{տերաբայթ} other{տերաբայթ}}',
- '"{attribute}" does not support operator "{operator}".' => '«{attribute}»-ը չի սպասարկում «{operator}» օպերատորը։',
- 'Condition for "{attribute}" should be either a value or valid operator specification.' => '«{attribute}»-ի համար պետք է լինի արժեք կամ գործող օպերատորի հստակեցում:',
- 'Operator "{operator}" must be used with a search attribute.' => '«{operator}» օպերատորը պետք է օգտագործվի որոնման ատրիբուտի հետ միասին:',
- 'Operator "{operator}" requires multiple operands.' => '«{operator}» օպերատորը պահանջում բազմակի օպերանդներ։',
- 'The format of {filter} is invalid.' => '{filter}-ի ֆորմատը անվավեր է։',
- 'Unknown filter attribute "{attribute}"' => 'Անհայտ ֆիլտրի ատրիբուտ՝ «{attribute}»։',
];
diff --git a/framework/messages/id/yii.php b/framework/messages/id/yii.php
index b8a08f73f52..f9e5bb52463 100644
--- a/framework/messages/id/yii.php
+++ b/framework/messages/id/yii.php
@@ -1,4 +1,5 @@
'View "{name}" yang diminta tidak ditemukan.',
- 'You are requesting with an invalid access token.' => 'Anda melakukan permintaan dengan akses token yang tidak valid.',
+ ' and ' => '',
+ '"{attribute}" does not support operator "{operator}".' => '',
'(not set)' => '(belum diset)',
+ 'Action not found.' => '',
+ 'Aliases available: {aliases}' => '',
'An internal server error occurred.' => 'Terjadi kesalahan internal server.',
'Are you sure you want to delete this item?' => 'Apakah Anda yakin ingin menghapus item ini?',
+ 'Condition for "{attribute}" should be either a value or valid operator specification.' => '',
'Delete' => 'Hapus',
'Error' => 'Kesalahan',
'File upload failed.' => 'Mengunggah berkas gagal.',
@@ -37,11 +41,12 @@
'Missing required arguments: {params}' => 'Argumen yang diperlukan tidak ada: {params}',
'Missing required parameters: {params}' => 'Parameter yang diperlukan tidak ada: {params}',
'No' => 'Tidak',
- 'No help for unknown command "{command}".' => 'Tidak ada bantuan untuk perintah yang tidak diketahui "{command}".',
- 'No help for unknown sub-command "{command}".' => 'Tidak ada bantuan untuk sub perintah yang tidak diketahui "{command}".',
'No results found.' => 'Tidak ada data yang ditemukan.',
'Only files with these MIME types are allowed: {mimeTypes}.' => 'Hanya berkas dengan tipe MIME ini yang diperbolehkan: {mimeTypes}.',
'Only files with these extensions are allowed: {extensions}.' => 'Hanya berkas dengan ekstensi ini yang diperbolehkan: {extensions}.',
+ 'Operator "{operator}" must be used with a search attribute.' => '',
+ 'Operator "{operator}" requires multiple operands.' => '',
+ 'Options available: {options}' => '',
'Page not found.' => 'Halaman tidak ditemukan.',
'Please fix the following errors:' => 'Silahkan perbaiki kesalahan berikut:',
'Please upload a file.' => 'Silahkan mengunggah berkas.',
@@ -51,64 +56,93 @@
'The file "{file}" is too big. Its size cannot exceed {formattedLimit}.' => 'Berkas "{file}" terlalu besar. Ukurannya tidak boleh lebih besar dari {formattedLimit}.',
'The file "{file}" is too small. Its size cannot be smaller than {formattedLimit}.' => 'Berkas "{file}" terlalu kecil. Ukurannya tidak boleh lebih kecil dari {formattedLimit}.',
'The format of {attribute} is invalid.' => 'Format dari {attribute} tidak valid.',
+ 'The format of {filter} is invalid.' => '',
'The image "{file}" is too large. The height cannot be larger than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'Gambar "{file}" terlalu besar. Tingginya tidak boleh lebih besar dari {limit, number} {limit, plural, one{piksel} other{piksel}}.',
'The image "{file}" is too large. The width cannot be larger than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'Gambar "{file}" terlalu besar. Lebarnya tidak boleh lebih besar dari {limit, number} {limit, plural, one{piksel} other{piksel}}.',
'The image "{file}" is too small. The height cannot be smaller than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'Gambar "{file}" terlalu kecil. Tingginya tidak boleh lebih kecil dari {limit, number} {limit, plural, one{piksel} other{piksel}}.',
'The image "{file}" is too small. The width cannot be smaller than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'Gambar "{file}" terlalu kecil. Lebarnya tidak boleh lebih kecil dari {limit, number} {limit, plural, one{piksel} other{piksel}}.',
+ 'The requested view "{name}" was not found.' => 'View "{name}" yang diminta tidak ditemukan.',
'The verification code is incorrect.' => 'Kode verifikasi tidak benar.',
'Total {count, number} {count, plural, one{item} other{items}}.' => 'Total {count, number} {count, plural, one{item} other{item}}.',
'Unable to verify your data submission.' => 'Tidak dapat mem-verifikasi pengiriman data Anda.',
- 'Unknown command "{command}".' => 'Perintah tidak dikenal "{command}".',
+ 'Unknown alias: -{name}' => '',
+ 'Unknown filter attribute "{attribute}"' => '',
'Unknown option: --{name}' => 'Opsi tidak dikenal: --{name}',
'Update' => 'Ubah',
'View' => 'Lihat',
'Yes' => 'Ya',
'You are not allowed to perform this action.' => 'Anda tidak diperbolehkan untuk melakukan aksi ini.',
'You can upload at most {limit, number} {limit, plural, one{file} other{files}}.' => 'Anda dapat mengunggah paling banyak {limit, number} {limit, plural, one{file} other{file}}.',
+ 'You should upload at least {limit, number} {limit, plural, one{file} other{files}}.' => '',
'in {delta, plural, =1{a day} other{# days}}' => 'dalam {delta, plural, =1{satu hari} other{# hari}}',
'in {delta, plural, =1{a minute} other{# minutes}}' => 'dalam {delta, plural, =1{satu menit} other{# menit}}',
'in {delta, plural, =1{a month} other{# months}}' => 'dalam {delta, plural, =1{satu bulan} other{# bulan}}',
'in {delta, plural, =1{a second} other{# seconds}}' => 'dalam {delta, plural, =1{satu detik} other{# detik}}',
'in {delta, plural, =1{a year} other{# years}}' => 'dalam {delta, plural, =1{satu tahun} other{# tahun}}',
'in {delta, plural, =1{an hour} other{# hours}}' => 'dalam {delta, plural, =1{satu jam} other{# jam}}',
+ 'just now' => '',
'the input value' => 'nilai input',
'{attribute} "{value}" has already been taken.' => '{attribute} "{value}" telah dipergunakan.',
'{attribute} cannot be blank.' => '{attribute} tidak boleh kosong.',
+ '{attribute} contains wrong subnet mask.' => '',
'{attribute} is invalid.' => '{attribute} tidak valid.',
'{attribute} is not a valid URL.' => '{attribute} bukan URL yang valid.',
'{attribute} is not a valid email address.' => '{attribute} bukan alamat email yang valid.',
+ '{attribute} is not in the allowed range.' => '',
'{attribute} must be "{requiredValue}".' => '{attribute} harus berupa "{requiredValue}".',
'{attribute} must be a number.' => '{attribute} harus berupa angka.',
'{attribute} must be a string.' => '{attribute} harus berupa string.',
+ '{attribute} must be a valid IP address.' => '',
+ '{attribute} must be an IP address with specified subnet.' => '',
'{attribute} must be an integer.' => '{attribute} harus berupa integer.',
'{attribute} must be either "{true}" or "{false}".' => '{attribute} harus berupa "{true}" atau "{false}".',
- '{attribute} must be greater than "{compareValue}".' => '{attribute} harus lebih besar dari "{compareValue}".',
- '{attribute} must be greater than or equal to "{compareValue}".' => '{attribute} harus lebih besar dari atau sama dengan "{compareValue}".',
- '{attribute} must be less than "{compareValue}".' => '{attribute} harus lebih kecil dari "{compareValue}".',
- '{attribute} must be less than or equal to "{compareValue}".' => '{attribute} harus lebih kecil dari atau sama dengan "{compareValue}".',
+ '{attribute} must be equal to "{compareValueOrAttribute}".' => '',
+ '{attribute} must be greater than "{compareValueOrAttribute}".' => '{attribute} harus lebih besar dari "{compareValueOrAttribute}".',
+ '{attribute} must be greater than or equal to "{compareValueOrAttribute}".' => '{attribute} harus lebih besar dari atau sama dengan "{compareValueOrAttribute}".',
+ '{attribute} must be less than "{compareValueOrAttribute}".' => '{attribute} harus lebih kecil dari "{compareValueOrAttribute}".',
+ '{attribute} must be less than or equal to "{compareValueOrAttribute}".' => '{attribute} harus lebih kecil dari atau sama dengan "{compareValueOrAttribute}".',
'{attribute} must be no greater than {max}.' => '{attribute} harus tidak boleh lebih besar dari {max}.',
'{attribute} must be no less than {min}.' => '{attribute} harus tidak boleh lebih kecil dari {min}.',
- '{attribute} must be repeated exactly.' => '{attribute} harus diulang sama persis.',
- '{attribute} must not be equal to "{compareValue}".' => '{attribute} harus tidak boleh sama dengan "{compareValue}".',
+ '{attribute} must not be a subnet.' => '',
+ '{attribute} must not be an IPv4 address.' => '',
+ '{attribute} must not be an IPv6 address.' => '',
+ '{attribute} must not be equal to "{compareValueOrAttribute}".' => '{attribute} harus tidak boleh sama dengan "{compareValueOrAttribute}".',
'{attribute} should contain at least {min, number} {min, plural, one{character} other{characters}}.' => '{attribute} harus memiliki paling sedikit {min, number} {min, plural, one{karakter} other{karakter}}.',
'{attribute} should contain at most {max, number} {max, plural, one{character} other{characters}}.' => '{attribute} harus memiliki paling banyak {max, number} {max, plural, one{karakter} other{karakter}}.',
'{attribute} should contain {length, number} {length, plural, one{character} other{characters}}.' => '{attribute} harus memiliki {length, number} {length, plural, one{karakter} other{karakter}}.',
+ '{compareAttribute} is invalid.' => '',
+ '{delta, plural, =1{1 day} other{# days}}' => '',
+ '{delta, plural, =1{1 hour} other{# hours}}' => '',
+ '{delta, plural, =1{1 minute} other{# minutes}}' => '',
+ '{delta, plural, =1{1 month} other{# months}}' => '',
+ '{delta, plural, =1{1 second} other{# seconds}}' => '',
+ '{delta, plural, =1{1 year} other{# years}}' => '',
'{delta, plural, =1{a day} other{# days}} ago' => '{delta, plural, =1{satu hari} other{# hari}} yang lalu',
'{delta, plural, =1{a minute} other{# minutes}} ago' => '{delta, plural, =1{satu menit} other{# menit}} yang lalu',
'{delta, plural, =1{a month} other{# months}} ago' => '{delta, plural, =1{satu bulan} other{# bulan}} yang lalu',
'{delta, plural, =1{a second} other{# seconds}} ago' => '{delta, plural, =1{satu detik} other{# detik}} yang lalu',
'{delta, plural, =1{a year} other{# years}} ago' => '{delta, plural, =1{satu tahun} other{# tahun}} yang lalu',
'{delta, plural, =1{an hour} other{# hours}} ago' => '{delta, plural, =1{satu jam} other{# jam}} yang lalu',
- '{n, plural, =1{# byte} other{# bytes}}' => '{n, plural, =1{# bita} other{# bita}}',
- '{n, plural, =1{# gigabyte} other{# gigabytes}}' => '{n, plural, =1{# gigabita} other{# gigabita}}',
- '{n, plural, =1{# kilobyte} other{# kilobytes}}' => '{n, plural, =1{# kilobita} other{# kilobita}}',
- '{n, plural, =1{# megabyte} other{# megabytes}}' => '{n, plural, =1{# megabita} other{# megabita}}',
- '{n, plural, =1{# petabyte} other{# petabytes}}' => '{n, plural, =1{# petabita} other{# petabita}}',
- '{n, plural, =1{# terabyte} other{# terabytes}}' => '{n, plural, =1{# petabita} other{# petabita}}',
- '{n} B' => '{n} B',
- '{n} GB' => '{n} GB',
- '{n} KB' => '{n} KB',
- '{n} MB' => '{n} MB',
- '{n} PB' => '{n} PB',
- '{n} TB' => '{n} TB',
+ '{nFormatted} B' => '{nFormatted} B',
+ '{nFormatted} GB' => '{nFormatted} GB',
+ '{nFormatted} GiB' => '',
+ '{nFormatted} KiB' => '',
+ '{nFormatted} MB' => '{nFormatted} MB',
+ '{nFormatted} MiB' => '',
+ '{nFormatted} PB' => '{nFormatted} PB',
+ '{nFormatted} PiB' => '',
+ '{nFormatted} TB' => '{nFormatted} TB',
+ '{nFormatted} TiB' => '',
+ '{nFormatted} kB' => '{nFormatted} kB',
+ '{nFormatted} {n, plural, =1{byte} other{bytes}}' => '{nFormatted} {n, plural, =1{bita} other{bita}}',
+ '{nFormatted} {n, plural, =1{gibibyte} other{gibibytes}}' => '',
+ '{nFormatted} {n, plural, =1{gigabyte} other{gigabytes}}' => '{nFormatted} {n, plural, =1{gigabita} other{gigabita}}',
+ '{nFormatted} {n, plural, =1{kibibyte} other{kibibytes}}' => '',
+ '{nFormatted} {n, plural, =1{kilobyte} other{kilobytes}}' => '{nFormatted} {n, plural, =1{kilobita} other{kilobita}}',
+ '{nFormatted} {n, plural, =1{mebibyte} other{mebibytes}}' => '',
+ '{nFormatted} {n, plural, =1{megabyte} other{megabytes}}' => '{nFormatted} {n, plural, =1{megabita} other{megabita}}',
+ '{nFormatted} {n, plural, =1{pebibyte} other{pebibytes}}' => '',
+ '{nFormatted} {n, plural, =1{petabyte} other{petabytes}}' => '{nFormatted} {n, plural, =1{petabita} other{petabita}}',
+ '{nFormatted} {n, plural, =1{tebibyte} other{tebibytes}}' => '',
+ '{nFormatted} {n, plural, =1{terabyte} other{terabytes}}' => '{nFormatted} {n, plural, =1{petabita} other{petabita}}',
];
diff --git a/framework/messages/it/yii.php b/framework/messages/it/yii.php
index c16a9c18912..f69090f334d 100644
--- a/framework/messages/it/yii.php
+++ b/framework/messages/it/yii.php
@@ -1,4 +1,5 @@
'Alias sconosciuto: -{name}',
- '{attribute} contains wrong subnet mask.' => '{attribute} contiene una subnet mask errata.',
- '{attribute} is not in the allowed range.' => '{attribute} non rientra nell\'intervallo permesso',
- '{attribute} must be a valid IP address.' => '{attribute} deve essere un indirizzo IP valido.',
- '{attribute} must be an IP address with specified subnet.' => '{attribute} deve essere un indirizzo IP valido con subnet specificata.',
- '{attribute} must be equal to "{compareValueOrAttribute}".' => '{attribute} deve essere uguale a "{compareValueOrAttribute}".',
- '{attribute} must be greater than "{compareValueOrAttribute}".' => '{attribute} deve essere maggiore di "{compareValueOrAttribute}".',
- '{attribute} must be greater than or equal to "{compareValueOrAttribute}".' => '{attribute} deve essere maggiore o uguale a "{compareValueOrAttribute}".',
- '{attribute} must be less than "{compareValueOrAttribute}".' => '{attribute} deve essere minore di "{compareValueOrAttribute}".',
- '{attribute} must be less than or equal to "{compareValueOrAttribute}".' => '{attribute} deve essere minore o uguale a "{compareValueOrAttribute}".',
- '{attribute} must not be a subnet.' => '{attribute} non deve essere una subnet.',
- '{attribute} must not be an IPv4 address.' => '{attribute} non deve essere un indirizzo IPv4.',
- '{attribute} must not be an IPv6 address.' => '{attribute} non deve essere un indirizzo IPv6.',
- '{attribute} must not be equal to "{compareValueOrAttribute}".' => '{attribute} non deve essere uguale a "{compareValueOrAttribute}".',
- '{delta, plural, =1{1 day} other{# days}}' => '{delta, plural, =1{1 giorno} other{# giorni}}',
- '{delta, plural, =1{1 hour} other{# hours}}' => '{delta, plural, =1{1 ora} other{# ore}}',
- '{delta, plural, =1{1 minute} other{# minutes}}' => '{delta, plural, =1{1 minuto} other{# minuti}}',
- '{delta, plural, =1{1 month} other{# months}}' => '{delta, plural, =1{1 mese} other{# mesi}}',
- '{delta, plural, =1{1 second} other{# seconds}}' => '{delta, plural, =1{1 secondo} other{# secondi}}',
- '{delta, plural, =1{1 year} other{# years}}' => '{delta, plural, =1{1 anno} other{# anni}}',
- '{attribute} must be greater than "{compareValue}".' => '@@{attribute} deve essere maggiore di "{compareValue}".@@',
- '{attribute} must be greater than or equal to "{compareValue}".' => '@@{attribute} deve essere maggiore o uguale a "{compareValue}".@@',
- '{attribute} must be less than "{compareValue}".' => '@@{attribute} deve essere minore di "{compareValue}".@@',
- '{attribute} must be less than or equal to "{compareValue}".' => '@@{attribute} deve essere minore o uguale a "{compareValue}".@@',
- '{attribute} must be repeated exactly.' => '@@{attribute} deve essere ripetuto esattamente.@@',
- '{attribute} must not be equal to "{compareValue}".' => '@@{attribute} non deve essere uguale a "{compareValue}".@@',
+ ' and ' => '',
+ '"{attribute}" does not support operator "{operator}".' => '',
'(not set)' => '(nessun valore)',
+ 'Action not found.' => '',
+ 'Aliases available: {aliases}' => '',
'An internal server error occurred.' => 'Si è verificato un errore interno',
'Are you sure you want to delete this item?' => 'Sei sicuro di voler eliminare questo elemento?',
+ 'Condition for "{attribute}" should be either a value or valid operator specification.' => '',
'Delete' => 'Elimina',
'Error' => 'Errore',
'File upload failed.' => 'Upload file fallito.',
@@ -64,14 +44,19 @@
'No results found.' => 'Nessun risultato trovato',
'Only files with these MIME types are allowed: {mimeTypes}.' => 'Solo i file con questi tipi MIME sono consentiti: {mimeTypes}.',
'Only files with these extensions are allowed: {extensions}.' => 'Solo i file con queste estensioni sono permessi: {extensions}.',
+ 'Operator "{operator}" must be used with a search attribute.' => '',
+ 'Operator "{operator}" requires multiple operands.' => '',
+ 'Options available: {options}' => '',
'Page not found.' => 'Pagina non trovata.',
'Please fix the following errors:' => 'Per favore correggi i seguenti errori:',
'Please upload a file.' => 'Per favore carica un file.',
'Showing {begin, number}-{end, number} of {totalCount, number} {totalCount, plural, one{item} other{items}}.' => 'Visualizzo {begin, number}-{end, number} di {totalCount, number} {totalCount, plural, one{elemento} other{elementi}}.',
+ 'The combination {values} of {attributes} has already been taken.' => '',
'The file "{file}" is not an image.' => 'Il file "{file}" non è una immagine.',
'The file "{file}" is too big. Its size cannot exceed {formattedLimit}.' => 'Il file "{file}" è troppo grande. La dimensione non può superare i {formattedLimit}.',
'The file "{file}" is too small. Its size cannot be smaller than {formattedLimit}.' => 'Il file "{file}" è troppo piccolo. La dimensione non può essere inferiore a {formattedLimit}.',
'The format of {attribute} is invalid.' => 'Il formato di {attribute} non è valido.',
+ 'The format of {filter} is invalid.' => '',
'The image "{file}" is too large. The height cannot be larger than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'L\'immagine "{file}" è troppo grande. La sua altezza non può essere maggiore di {limit, number} {limit, plural, one{pixel} other{pixel}}.',
'The image "{file}" is too large. The width cannot be larger than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'L immagine "{file}" è troppo grande. La sua larghezza non può essere maggiore di {limit, number} {limit, plural, one{pixel} other{pixel}}.',
'The image "{file}" is too small. The height cannot be smaller than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'L immagine "{file}" è troppo piccola. La sua altezza non può essere minore di {limit, number} {limit, plural, one{pixel} other{pixel}}.',
@@ -80,12 +65,15 @@
'The verification code is incorrect.' => 'Il codice di verifica non è corretto.',
'Total {count, number} {count, plural, one{item} other{items}}.' => '{count, plural, one{Elementi} other{Elementi}} totali {count, number}.',
'Unable to verify your data submission.' => 'Impossibile verificare i dati inviati.',
+ 'Unknown alias: -{name}' => 'Alias sconosciuto: -{name}',
+ 'Unknown filter attribute "{attribute}"' => '',
'Unknown option: --{name}' => 'Opzione Sconosciuta: --{name}',
'Update' => 'Aggiorna',
'View' => 'Visualizza',
'Yes' => 'Si',
'You are not allowed to perform this action.' => 'Non sei autorizzato ad eseguire questa operazione.',
'You can upload at most {limit, number} {limit, plural, one{file} other{files}}.' => 'Puoi caricare al massimo {limit, number} {limit, plural, one{file} other{file}}.',
+ 'You should upload at least {limit, number} {limit, plural, one{file} other{files}}.' => '',
'in {delta, plural, =1{a day} other{# days}}' => 'in {delta, plural, =1{un giorno} other{# giorni}}',
'in {delta, plural, =1{a minute} other{# minutes}}' => 'in {delta, plural, =1{un minuto} other{# minuti}}',
'in {delta, plural, =1{a month} other{# months}}' => 'in {delta, plural, =1{un mese} other{# mesi}}',
@@ -96,19 +84,39 @@
'the input value' => 'il valore del campo',
'{attribute} "{value}" has already been taken.' => '{attribute} "{value}" è già presente.',
'{attribute} cannot be blank.' => '{attribute} non può essere vuoto.',
+ '{attribute} contains wrong subnet mask.' => '{attribute} contiene una subnet mask errata.',
'{attribute} is invalid.' => '{attribute} non è valido.',
'{attribute} is not a valid URL.' => '{attribute} non è un URL valido.',
'{attribute} is not a valid email address.' => '{attribute} non è un indirizzo email valido.',
+ '{attribute} is not in the allowed range.' => '{attribute} non rientra nell\'intervallo permesso',
'{attribute} must be "{requiredValue}".' => '{attribute} deve essere "{requiredValue}".',
'{attribute} must be a number.' => '{attribute} deve essere un numero.',
'{attribute} must be a string.' => '{attribute} deve essere una stringa.',
+ '{attribute} must be a valid IP address.' => '{attribute} deve essere un indirizzo IP valido.',
+ '{attribute} must be an IP address with specified subnet.' => '{attribute} deve essere un indirizzo IP valido con subnet specificata.',
'{attribute} must be an integer.' => '{attribute} deve essere un numero intero.',
'{attribute} must be either "{true}" or "{false}".' => '{attribute} deve essere "{true}" oppure "{false}".',
+ '{attribute} must be equal to "{compareValueOrAttribute}".' => '{attribute} deve essere uguale a "{compareValueOrAttribute}".',
+ '{attribute} must be greater than "{compareValueOrAttribute}".' => '{attribute} deve essere maggiore di "{compareValueOrAttribute}".',
+ '{attribute} must be greater than or equal to "{compareValueOrAttribute}".' => '{attribute} deve essere maggiore o uguale a "{compareValueOrAttribute}".',
+ '{attribute} must be less than "{compareValueOrAttribute}".' => '{attribute} deve essere minore di "{compareValueOrAttribute}".',
+ '{attribute} must be less than or equal to "{compareValueOrAttribute}".' => '{attribute} deve essere minore o uguale a "{compareValueOrAttribute}".',
'{attribute} must be no greater than {max}.' => '{attribute} non deve essere maggiore di {max}.',
'{attribute} must be no less than {min}.' => '{attribute} non deve essere minore di {min}.',
+ '{attribute} must not be a subnet.' => '{attribute} non deve essere una subnet.',
+ '{attribute} must not be an IPv4 address.' => '{attribute} non deve essere un indirizzo IPv4.',
+ '{attribute} must not be an IPv6 address.' => '{attribute} non deve essere un indirizzo IPv6.',
+ '{attribute} must not be equal to "{compareValueOrAttribute}".' => '{attribute} non deve essere uguale a "{compareValueOrAttribute}".',
'{attribute} should contain at least {min, number} {min, plural, one{character} other{characters}}.' => '{attribute} dovrebbe contenere almeno {min, number} {min, plural, one{carattere} other{caratteri}}.',
'{attribute} should contain at most {max, number} {max, plural, one{character} other{characters}}.' => '{attribute} dovrebbe contenere al massimo {max, number} {max, plural, one{carattere} other{caratteri}}.',
'{attribute} should contain {length, number} {length, plural, one{character} other{characters}}.' => '{attribute} dovrebbe contenere {length, number} {length, plural, one{carattere} other{caratteri}}.',
+ '{compareAttribute} is invalid.' => '',
+ '{delta, plural, =1{1 day} other{# days}}' => '{delta, plural, =1{1 giorno} other{# giorni}}',
+ '{delta, plural, =1{1 hour} other{# hours}}' => '{delta, plural, =1{1 ora} other{# ore}}',
+ '{delta, plural, =1{1 minute} other{# minutes}}' => '{delta, plural, =1{1 minuto} other{# minuti}}',
+ '{delta, plural, =1{1 month} other{# months}}' => '{delta, plural, =1{1 mese} other{# mesi}}',
+ '{delta, plural, =1{1 second} other{# seconds}}' => '{delta, plural, =1{1 secondo} other{# secondi}}',
+ '{delta, plural, =1{1 year} other{# years}}' => '{delta, plural, =1{1 anno} other{# anni}}',
'{delta, plural, =1{a day} other{# days}} ago' => '{delta, plural, =1{un giorno} other{# giorni}} fa',
'{delta, plural, =1{a minute} other{# minutes}} ago' => '{delta, plural, =1{un minuto} other{# minuti}} fa',
'{delta, plural, =1{a month} other{# months}} ago' => '{delta, plural, =1{un mese} other{# mesi}} fa',
@@ -118,7 +126,6 @@
'{nFormatted} B' => '{nFormatted} B',
'{nFormatted} GB' => '{nFormatted} GB',
'{nFormatted} GiB' => '{nFormatted} GiB',
- '{nFormatted} kB' => '{nFormatted} kB',
'{nFormatted} KiB' => '{nFormatted} KiB',
'{nFormatted} MB' => '{nFormatted} MB',
'{nFormatted} MiB' => '{nFormatted} MiB',
@@ -126,6 +133,7 @@
'{nFormatted} PiB' => '{nFormatted} PiB',
'{nFormatted} TB' => '{nFormatted} TB',
'{nFormatted} TiB' => '{nFormatted} TiB',
+ '{nFormatted} kB' => '{nFormatted} kB',
'{nFormatted} {n, plural, =1{byte} other{bytes}}' => '{nFormatted} {n, plural, =1{byte} other{byte}}',
'{nFormatted} {n, plural, =1{gibibyte} other{gibibytes}}' => '{nFormatted} {n, plural, =1{gibibyte} other{gibibyte}}',
'{nFormatted} {n, plural, =1{gigabyte} other{gigabytes}}' => '{nFormatted} {n, plural, =1{gigabyte} other{gigabyte}}',
diff --git a/framework/messages/ja/yii.php b/framework/messages/ja/yii.php
index 42d26beba54..c67f6bd9cb1 100644
--- a/framework/messages/ja/yii.php
+++ b/framework/messages/ja/yii.php
@@ -1,4 +1,11 @@
' および ',
'"{attribute}" does not support operator "{operator}".' => '"{attribute}" は演算子 "{operator}" をサポートしていません。',
'(not set)' => '(未設定)',
+ 'Action not found.' => 'アクションがありません。',
+ 'Aliases available: {aliases}' => '利用可能なエイリアス: {aliases}',
'An internal server error occurred.' => '内部サーバーエラーが発生しました。',
'Are you sure you want to delete this item?' => 'このアイテムを削除したいというのは本当ですか?',
'Condition for "{attribute}" should be either a value or valid operator specification.' => '"{attribute}" のための条件は値であるか有効な演算子の定義でなければなりません。',
@@ -37,6 +46,7 @@
'Only files with these extensions are allowed: {extensions}.' => '次の拡張子を持つファイルだけが許可されています : {extensions}',
'Operator "{operator}" must be used with a search attribute.' => '演算子 "{operator}" はサーチ属性とともに使用されなければなりません。',
'Operator "{operator}" requires multiple operands.' => '演算子 "{operator}" は複数の被演算子を要求します。',
+ 'Options available: {options}' => '利用可能なオプション: {options}',
'Page not found.' => 'ページが見つかりません。',
'Please fix the following errors:' => '次のエラーを修正してください :',
'Please upload a file.' => 'ファイルをアップロードしてください。',
@@ -100,6 +110,7 @@
'{attribute} should contain at least {min, number} {min, plural, one{character} other{characters}}.' => '{attribute} は {min} 文字以上でなければいけません。',
'{attribute} should contain at most {max, number} {max, plural, one{character} other{characters}}.' => '{attribute} は {max} 文字以下でなければいけません。',
'{attribute} should contain {length, number} {length, plural, one{character} other{characters}}.' => '{attribute} は {length} 文字でなければいけません。',
+ '{compareAttribute} is invalid.' => '{compareAttribute} は無効です。',
'{delta, plural, =1{1 day} other{# days}}' => '{delta} 日間',
'{delta, plural, =1{1 hour} other{# hours}}' => '{delta} 時間',
'{delta, plural, =1{1 minute} other{# minutes}}' => '{delta} 分間',
@@ -115,7 +126,6 @@
'{nFormatted} B' => '{nFormatted} B',
'{nFormatted} GB' => '{nFormatted} GB',
'{nFormatted} GiB' => '{nFormatted} GiB',
- '{nFormatted} kB' => '{nFormatted} kB',
'{nFormatted} KiB' => '{nFormatted} KiB',
'{nFormatted} MB' => '{nFormatted} MB',
'{nFormatted} MiB' => '{nFormatted} MiB',
@@ -123,6 +133,7 @@
'{nFormatted} PiB' => '{nFormatted} PiB',
'{nFormatted} TB' => '{nFormatted} TB',
'{nFormatted} TiB' => '{nFormatted} TiB',
+ '{nFormatted} kB' => '{nFormatted} kB',
'{nFormatted} {n, plural, =1{byte} other{bytes}}' => '{nFormatted} バイト',
'{nFormatted} {n, plural, =1{gibibyte} other{gibibytes}}' => '{nFormatted} ギビバイト',
'{nFormatted} {n, plural, =1{gigabyte} other{gigabytes}}' => '{nFormatted} ギガバイト',
diff --git a/framework/messages/ka/yii.php b/framework/messages/ka/yii.php
index 96eaaeb621d..abc94f26009 100644
--- a/framework/messages/ka/yii.php
+++ b/framework/messages/ka/yii.php
@@ -1,4 +1,5 @@
'',
+ '"{attribute}" does not support operator "{operator}".' => '',
'(not set)' => '(არ არის მითითებული)',
+ 'Action not found.' => '',
+ 'Aliases available: {aliases}' => '',
'An internal server error occurred.' => 'წარმოიშვა სერვერის შიდა შეცდომა.',
'Are you sure you want to delete this item?' => 'დარწმუნებული ხართ, რომ გინდათ ამ ელემენტის წაშლა?',
+ 'Condition for "{attribute}" should be either a value or valid operator specification.' => '',
'Delete' => 'წაშლა',
'Error' => 'შეცდომა',
'File upload failed.' => 'ფაილის ჩამოტვირთვა ვერ მოხერხდა.',
@@ -38,14 +44,19 @@
'No results found.' => 'არაფერი მოიძებნა.',
'Only files with these MIME types are allowed: {mimeTypes}.' => 'ნებადართულია ფაილების ჩამოტვირთვა მხოლოდ შემდეგი MIME-ტიპებით: {mimeTypes}.',
'Only files with these extensions are allowed: {extensions}.' => 'ნებადართულია ფაილების ჩამოტვირთვა მხოლოდ შემდეგი გაფართოებებით: {extensions}.',
+ 'Operator "{operator}" must be used with a search attribute.' => '',
+ 'Operator "{operator}" requires multiple operands.' => '',
+ 'Options available: {options}' => '',
'Page not found.' => 'გვერდი ვერ მოიძებნა.',
'Please fix the following errors:' => 'შეასწორეთ შემდეგი შეცდომები:',
'Please upload a file.' => 'ჩამოტვირთეთ ფაილი.',
'Showing {begin, number}-{end, number} of {totalCount, number} {totalCount, plural, one{item} other{items}}.' => 'ნაჩვენებია ჩანაწერები {begin, number}-{end, number} из {totalCount, number}.',
+ 'The combination {values} of {attributes} has already been taken.' => '',
'The file "{file}" is not an image.' => 'ფაილი «{file}» არ წარმოადგენს გამოსახულებას.',
'The file "{file}" is too big. Its size cannot exceed {formattedLimit}.' => 'ფაილი «{file}» ძალიან დიდია. ზომა არ უნდა აღემატებოდეს {formattedLimit}.',
'The file "{file}" is too small. Its size cannot be smaller than {formattedLimit}.' => 'ფაილი «{file}» ძალიან პატარაა. ზომა უნდა აღემატებოდეს {formattedLimit}.',
'The format of {attribute} is invalid.' => 'მნიშვნელობის «{attribute}» არასწორი ფორმატი.',
+ 'The format of {filter} is invalid.' => '',
'The image "{file}" is too large. The height cannot be larger than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'ფაილი «{file}» ძალიან დიდია. სიმაღლე არ უნდა აღემატებოდეს {limit, number} {limit, plural, one{პიქსელს} few{პიქსელს} many{პიქსელს} other{პიქსელს}}.',
'The image "{file}" is too large. The width cannot be larger than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'ფაილი «{file}» ძალიან დიდია. სიგანე არ უნდა აღემატებოდეს {limit, number} {limit, plural, one{პიქსელს} few{პიქსელს} many{პიქსელს} other{პიქსელს}}.',
'The image "{file}" is too small. The height cannot be smaller than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'ფაილი «{file}» ძალიან პატარაა. სიმაღლე უნდა აღემატებოდეს {limit, number} {limit, plural, one{პიქსელს} few{პიქსელს} many{პიქსელს} other{პიქსელს}}.',
@@ -54,12 +65,15 @@
'The verification code is incorrect.' => 'არასწორი შემამოწმებელი კოდი.',
'Total {count, number} {count, plural, one{item} other{items}}.' => 'სულ {count, number} {count, plural, one{ჩანაწერი} few{ჩანაწერი} many{ჩანაწერი}} other{ჩანაწერი}}.',
'Unable to verify your data submission.' => 'ვერ მოხერხდა გადაცემული მონაცემების შემოწმება.',
+ 'Unknown alias: -{name}' => '',
+ 'Unknown filter attribute "{attribute}"' => '',
'Unknown option: --{name}' => 'უცნობი ოფცია: --{name}',
'Update' => 'რედაქტირება',
'View' => 'ნახვა',
'Yes' => 'დიახ',
'You are not allowed to perform this action.' => 'თქვენ არ გაქვთ მოცემული ქმედების შესრულების ნებართვა.',
'You can upload at most {limit, number} {limit, plural, one{file} other{files}}.' => 'თქვენ არ შეგიძლიათ ჩამოტვირთოთ {limit, number}-ზე მეტი {limit, plural, one{ფაილი} few{ფაილი} many{ფაილი} other{ფაილი}}.',
+ 'You should upload at least {limit, number} {limit, plural, one{file} other{files}}.' => '',
'in {delta, plural, =1{a day} other{# days}}' => '{delta, plural, =1{დღის} one{# დღის} few{# დღის} many{# დღის} other{# დღის}} შემდეგ',
'in {delta, plural, =1{a minute} other{# minutes}}' => '{delta, plural, =1{წუთის} one{# წუთის} few{# წუთის} many{# წუთის} other{# წუთის}} შემდეგ',
'in {delta, plural, =1{a month} other{# months}}' => '{delta, plural, =1{თვის} one{# თვის} few{# თვის} many{# თვის} other{# თვის}} შემდეგ',
@@ -70,25 +84,39 @@
'the input value' => 'შეყვანილი მნიშვნელობა',
'{attribute} "{value}" has already been taken.' => '{attribute} «{value}» უკვე დაკავებულია.',
'{attribute} cannot be blank.' => 'საჭიროა შევსება «{attribute}».',
+ '{attribute} contains wrong subnet mask.' => '',
'{attribute} is invalid.' => 'მნიშვნელობა «{attribute}» არასწორია.',
'{attribute} is not a valid URL.' => 'მნიშვნელობა «{attribute}» არ წარმოადგენს სწორ URL-ს.',
'{attribute} is not a valid email address.' => 'მნიშვნელობა «{attribute}» არ წარმოადგენს სწორ email მისამართს.',
+ '{attribute} is not in the allowed range.' => '',
'{attribute} must be "{requiredValue}".' => 'მნიშვნელობა «{attribute}» უნდა იყოს «{requiredValue}-ს ტოლი».',
'{attribute} must be a number.' => 'მნიშვნელობა «{attribute}» უნდა იყოს რიცხვი.',
'{attribute} must be a string.' => 'მნიშვნელობა «{attribute}» უნდა იყოს სტრიქონი.',
+ '{attribute} must be a valid IP address.' => '',
+ '{attribute} must be an IP address with specified subnet.' => '',
'{attribute} must be an integer.' => 'მნიშვნელობა «{attribute}» უნდა იყოს მთელი რიცხვი.',
'{attribute} must be either "{true}" or "{false}".' => 'მნიშვნელობა «{attribute}» უნდა იყოს «{true}»-ს ან «{false}»-ს ტოლი.',
- '{attribute} must be greater than "{compareValue}".' => 'მნიშვნელობა «{attribute}» უნდა იყოს «{compareValue}» მნიშვნელობაზე მეტი.',
- '{attribute} must be greater than or equal to "{compareValue}".' => 'მნიშვნელობა «{attribute}» უნდა იყოს «{compareValue}» მნიშვნელობაზე მეტი ან ტოლი.',
- '{attribute} must be less than "{compareValue}".' => 'მნიშვნელობა «{attribute}» უნდა იყოს «{compareValue}» მნიშვნელობაზე ნაკლები.',
- '{attribute} must be less than or equal to "{compareValue}".' => 'მნიშვნელობა «{attribute}» უნდა იყოს «{compareValue}» მნიშვნელობაზე ნაკლები ან ტოლი.',
+ '{attribute} must be equal to "{compareValueOrAttribute}".' => '',
+ '{attribute} must be greater than "{compareValueOrAttribute}".' => 'მნიშვნელობა «{attribute}» უნდა იყოს «{compareValueOrAttribute}» მნიშვნელობაზე მეტი.',
+ '{attribute} must be greater than or equal to "{compareValueOrAttribute}".' => 'მნიშვნელობა «{attribute}» უნდა იყოს «{compareValueOrAttribute}» მნიშვნელობაზე მეტი ან ტოლი.',
+ '{attribute} must be less than "{compareValueOrAttribute}".' => 'მნიშვნელობა «{attribute}» უნდა იყოს «{compareValueOrAttribute}» მნიშვნელობაზე ნაკლები.',
+ '{attribute} must be less than or equal to "{compareValueOrAttribute}".' => 'მნიშვნელობა «{attribute}» უნდა იყოს «{compareValueOrAttribute}» მნიშვნელობაზე ნაკლები ან ტოლი.',
'{attribute} must be no greater than {max}.' => 'მნიშვნელობა «{attribute}» არ უნდა აღემატებოდეს {max}.',
'{attribute} must be no less than {min}.' => 'მნიშვნელობა «{attribute}» უნდა იყოს არანაკლები {min}.',
- '{attribute} must be repeated exactly.' => 'მნიშვნელობა «{attribute}» უნდა განმეორდეს ზუსტად.',
- '{attribute} must not be equal to "{compareValue}".' => 'მნიშვნელობა «{attribute}» არ უნდა იყოს «{compareValue}»-ს ტოლი.',
+ '{attribute} must not be a subnet.' => '',
+ '{attribute} must not be an IPv4 address.' => '',
+ '{attribute} must not be an IPv6 address.' => '',
+ '{attribute} must not be equal to "{compareValueOrAttribute}".' => 'მნიშვნელობა «{attribute}» არ უნდა იყოს «{compareValueOrAttribute}»-ს ტოლი.',
'{attribute} should contain at least {min, number} {min, plural, one{character} other{characters}}.' => 'მნიშვნელობა «{attribute}» უნდა შეიცავდეს მინიმუმ {min, number} {min, plural, one{სიმბოლს} few{სიმბოლს} many{სიმბოლს} other{სიმბოლს}}.',
'{attribute} should contain at most {max, number} {max, plural, one{character} other{characters}}.' => 'მნიშვნელობა «{attribute}» უნდა შეიცავდეს მაქსიმუმ {max, number} {max, plural, one{სიმბოლს} few{სიმბოლს} many{სიმბოლს} other{სიმბოლს}}.',
'{attribute} should contain {length, number} {length, plural, one{character} other{characters}}.' => 'მნიშვნელობა «{attribute}» უნდა შეიცავდეს {length, number} {length, plural, one{სიმბოლს} few{სიმბოლს} many{სიმბოლს} other{სიმბოლს}}.',
+ '{compareAttribute} is invalid.' => '',
+ '{delta, plural, =1{1 day} other{# days}}' => '',
+ '{delta, plural, =1{1 hour} other{# hours}}' => '',
+ '{delta, plural, =1{1 minute} other{# minutes}}' => '',
+ '{delta, plural, =1{1 month} other{# months}}' => '',
+ '{delta, plural, =1{1 second} other{# seconds}}' => '',
+ '{delta, plural, =1{1 year} other{# years}}' => '',
'{delta, plural, =1{a day} other{# days}} ago' => '{delta, plural, =1{დღის} one{# დღის} few{# დღის} many{# დღის} other{# დღის}} უკან',
'{delta, plural, =1{a minute} other{# minutes}} ago' => '{delta, plural, =1{წუთის} one{# წუთის} few{# წუთის} many{# წუთის} other{# წუთის}} უკან',
'{delta, plural, =1{a month} other{# months}} ago' => '{delta, plural, =1{თვის} one{# თვის} few{# თვის} many{# თვის} other{# თვის}} უკან',
@@ -98,7 +126,6 @@
'{nFormatted} B' => '{nFormatted} ბ',
'{nFormatted} GB' => '{nFormatted} გბ',
'{nFormatted} GiB' => '{nFormatted} გიბ',
- '{nFormatted} kB' => '{nFormatted} კბ',
'{nFormatted} KiB' => '{nFormatted} კიბ',
'{nFormatted} MB' => '{nFormatted} მბ',
'{nFormatted} MiB' => '{nFormatted} მიბ',
@@ -106,6 +133,7 @@
'{nFormatted} PiB' => '{nFormatted} პიბ',
'{nFormatted} TB' => '{nFormatted} ტბ',
'{nFormatted} TiB' => '{nFormatted} ტიბ',
+ '{nFormatted} kB' => '{nFormatted} კბ',
'{nFormatted} {n, plural, =1{byte} other{bytes}}' => '{nFormatted} {n, plural, one{ბაიტი} few{ბაიტს} many{ბაიტი} other{ბაიტს}}',
'{nFormatted} {n, plural, =1{gibibyte} other{gibibytes}}' => '{nFormatted} {n, plural, one{გიბიბაიტი} few{გიბიბაიტს} many{გიბიბაიტი} other{გიბიბაიტს}}',
'{nFormatted} {n, plural, =1{gigabyte} other{gigabytes}}' => '{nFormatted} {n, plural, one{გიგაბაიტი} few{გიგაბაიტს} many{გიგაბაიტი} other{გიგაბაიტს}}',
diff --git a/framework/messages/kk/yii.php b/framework/messages/kk/yii.php
index b33338dbab8..7ccf9dcc4d7 100644
--- a/framework/messages/kk/yii.php
+++ b/framework/messages/kk/yii.php
@@ -1,4 +1,5 @@
'',
+ '"{attribute}" does not support operator "{operator}".' => '',
'(not set)' => '(берілмеген)',
+ 'Action not found.' => '',
+ 'Aliases available: {aliases}' => '',
'An internal server error occurred.' => 'Сервердің ішкі қатесі туды.',
'Are you sure you want to delete this item?' => 'Бұл элементті жоюға сенімдісіз бе?',
+ 'Condition for "{attribute}" should be either a value or valid operator specification.' => '',
'Delete' => 'Жою',
'Error' => 'Қате',
'File upload failed.' => 'Файлды жүктеу сәтті болмады',
@@ -35,52 +41,108 @@
'Missing required arguments: {params}' => 'Қажетті аргументтер жоқ: {params}',
'Missing required parameters: {params}' => 'Қажетті параметрлер жоқ: {params}',
'No' => 'Жоқ',
- 'No help for unknown command "{command}".' => 'Белгісіз "{command}" командасы үшін көмек табылмады.',
- 'No help for unknown sub-command "{command}".' => 'Белгісіз "{command}" ішкі командасы үшін көмек табылмады.',
'No results found.' => 'Нәтиже табылған жок.',
+ 'Only files with these MIME types are allowed: {mimeTypes}.' => '',
'Only files with these extensions are allowed: {extensions}.' => 'Тек мына кеңейтімдегі файлдарға ғана рұқсат етілген: {extensions}.',
+ 'Operator "{operator}" must be used with a search attribute.' => '',
+ 'Operator "{operator}" requires multiple operands.' => '',
+ 'Options available: {options}' => '',
'Page not found.' => 'Бет табылған жок.',
'Please fix the following errors:' => 'Өтінеміз, мына қателерді түзеңіз:',
'Please upload a file.' => 'Файлды жүктеңіз.',
'Showing {begin, number}-{end, number} of {totalCount, number} {totalCount, plural, one{item} other{items}}.' => '{totalCount, number} жазбадан {begin, number}-{end, number} аралығы көрсетілген.',
+ 'The combination {values} of {attributes} has already been taken.' => '',
'The file "{file}" is not an image.' => '«{file}» файлы сурет емес.',
'The file "{file}" is too big. Its size cannot exceed {formattedLimit}.' => '«{file}» файлының өлшемі тым үлкен. Көлемі {formattedLimit} аспау керек.',
'The file "{file}" is too small. Its size cannot be smaller than {formattedLimit}.' => '«{file}» файлының өлшемі тым кіші. Көлемі {formattedLimit} кем болмауы керек.',
'The format of {attribute} is invalid.' => '«{attribute}» аттрибутының форматы дұрыс емес.',
+ 'The format of {filter} is invalid.' => '',
'The image "{file}" is too large. The height cannot be larger than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => '«{file}» суретінің өлшемі тым үлкен. Биіктігі {limit, number} пиксельден аспауы қажет.',
'The image "{file}" is too large. The width cannot be larger than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => '«{file}» суретінің өлшемі тым үлкен. Ені {limit, number} пиксельден аспауы қажет.',
'The image "{file}" is too small. The height cannot be smaller than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => '«{file}» суретінің өлшемі тым кіші. Биіктігі {limit, number} пиксельден кем болмауы қажет.',
'The image "{file}" is too small. The width cannot be smaller than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => '«{file}» суретінің өлшемі тым кіші. Ені {limit, number} пиксельден кем болмауы қажет.',
+ 'The requested view "{name}" was not found.' => '',
'The verification code is incorrect.' => 'Тексеріс коды қате.',
'Total {count, number} {count, plural, one{item} other{items}}.' => 'Барлығы {count, number} жазба.',
'Unable to verify your data submission.' => 'Жіберілген мәліметерді тексеру мүмкін емес.',
- 'Unknown command "{command}".' => '"{command}" командасы белгісіз.',
+ 'Unknown alias: -{name}' => '',
+ 'Unknown filter attribute "{attribute}"' => '',
'Unknown option: --{name}' => 'Белгісіз опция: --{name}',
'Update' => 'Жаңарту',
'View' => 'Көру',
'Yes' => 'Иә',
'You are not allowed to perform this action.' => 'Сізге бұл әрекетті жасауға рұқсат жоқ',
'You can upload at most {limit, number} {limit, plural, one{file} other{files}}.' => 'Сіз {limit} файлдан көп жүктей алмайсыз.',
+ 'You should upload at least {limit, number} {limit, plural, one{file} other{files}}.' => '',
+ 'in {delta, plural, =1{a day} other{# days}}' => '',
+ 'in {delta, plural, =1{a minute} other{# minutes}}' => '',
+ 'in {delta, plural, =1{a month} other{# months}}' => '',
+ 'in {delta, plural, =1{a second} other{# seconds}}' => '',
+ 'in {delta, plural, =1{a year} other{# years}}' => '',
+ 'in {delta, plural, =1{an hour} other{# hours}}' => '',
+ 'just now' => '',
'the input value' => 'енгізілген мән',
'{attribute} "{value}" has already been taken.' => '{attribute} «{value}» Бұл бос емес мән.',
'{attribute} cannot be blank.' => '«{attribute}» толтыруды қажет етеді.',
+ '{attribute} contains wrong subnet mask.' => '',
'{attribute} is invalid.' => '«{attribute}» мәні жарамсыз.',
'{attribute} is not a valid URL.' => '«{attribute}» жарамды URL емес.',
'{attribute} is not a valid email address.' => '«{attribute}» жарамды email адрес емес.',
+ '{attribute} is not in the allowed range.' => '',
'{attribute} must be "{requiredValue}".' => '«{attribute}» мәні «{requiredValue}» болу керек.',
'{attribute} must be a number.' => '«{attribute}» мәні сан болуы керек.',
'{attribute} must be a string.' => '«{attribute}» мәні мәтін болуы керек.',
+ '{attribute} must be a valid IP address.' => '',
+ '{attribute} must be an IP address with specified subnet.' => '',
'{attribute} must be an integer.' => '«{attribute}» мәні бүтін сан болу керек.',
'{attribute} must be either "{true}" or "{false}".' => '«{attribute}» мәні «{true}» немесе «{false}» болуы керек.',
- '{attribute} must be greater than "{compareValue}".' => '«{attribute}» мәні мынадан үлкен болуы керек: «{compareValue}».',
- '{attribute} must be greater than or equal to "{compareValue}".' => '«{attribute}» мәні мынадан үлкен немесе тең болуы керек: «{compareValue}».',
- '{attribute} must be less than "{compareValue}".' => '«{attribute}» мәні мынадан кіші болуы керек: «{compareValue}».',
- '{attribute} must be less than or equal to "{compareValue}".' => '«{attribute}» мәні мынадан кіші немесе тең болуы керек: «{compareValue}».',
+ '{attribute} must be equal to "{compareValueOrAttribute}".' => '',
+ '{attribute} must be greater than "{compareValueOrAttribute}".' => '«{attribute}» мәні мынадан үлкен болуы керек: «{compareValueOrAttribute}».',
+ '{attribute} must be greater than or equal to "{compareValueOrAttribute}".' => '«{attribute}» мәні мынадан үлкен немесе тең болуы керек: «{compareValueOrAttribute}».',
+ '{attribute} must be less than "{compareValueOrAttribute}".' => '«{attribute}» мәні мынадан кіші болуы керек: «{compareValueOrAttribute}».',
+ '{attribute} must be less than or equal to "{compareValueOrAttribute}".' => '«{attribute}» мәні мынадан кіші немесе тең болуы керек: «{compareValueOrAttribute}».',
'{attribute} must be no greater than {max}.' => '«{attribute}» мәні мынадан аспауы керек: {max}.',
'{attribute} must be no less than {min}.' => '«{attribute}» мәні мынадан кем болмауы керек: {min}.',
- '{attribute} must be repeated exactly.' => '«{attribute}» мәні дәлме-дәл қайталану керек.',
- '{attribute} must not be equal to "{compareValue}".' => '«{attribute}» мәні мынаған тең болмауы керек: «{compareValue}».',
+ '{attribute} must not be a subnet.' => '',
+ '{attribute} must not be an IPv4 address.' => '',
+ '{attribute} must not be an IPv6 address.' => '',
+ '{attribute} must not be equal to "{compareValueOrAttribute}".' => '«{attribute}» мәні мынаған тең болмауы керек: «{compareValueOrAttribute}».',
'{attribute} should contain at least {min, number} {min, plural, one{character} other{characters}}.' => '«{attribute}» мәні кемінде {min} таңбадан тұруы керек.',
'{attribute} should contain at most {max, number} {max, plural, one{character} other{characters}}.' => '«{attribute}» мәні {max} таңбадан аспауы қажет.',
'{attribute} should contain {length, number} {length, plural, one{character} other{characters}}.' => '«{attribute}» {length} таңбадан тұруы керек.',
+ '{compareAttribute} is invalid.' => '',
+ '{delta, plural, =1{1 day} other{# days}}' => '',
+ '{delta, plural, =1{1 hour} other{# hours}}' => '',
+ '{delta, plural, =1{1 minute} other{# minutes}}' => '',
+ '{delta, plural, =1{1 month} other{# months}}' => '',
+ '{delta, plural, =1{1 second} other{# seconds}}' => '',
+ '{delta, plural, =1{1 year} other{# years}}' => '',
+ '{delta, plural, =1{a day} other{# days}} ago' => '',
+ '{delta, plural, =1{a minute} other{# minutes}} ago' => '',
+ '{delta, plural, =1{a month} other{# months}} ago' => '',
+ '{delta, plural, =1{a second} other{# seconds}} ago' => '',
+ '{delta, plural, =1{a year} other{# years}} ago' => '',
+ '{delta, plural, =1{an hour} other{# hours}} ago' => '',
+ '{nFormatted} B' => '',
+ '{nFormatted} GB' => '',
+ '{nFormatted} GiB' => '',
+ '{nFormatted} KiB' => '',
+ '{nFormatted} MB' => '',
+ '{nFormatted} MiB' => '',
+ '{nFormatted} PB' => '',
+ '{nFormatted} PiB' => '',
+ '{nFormatted} TB' => '',
+ '{nFormatted} TiB' => '',
+ '{nFormatted} kB' => '',
+ '{nFormatted} {n, plural, =1{byte} other{bytes}}' => '',
+ '{nFormatted} {n, plural, =1{gibibyte} other{gibibytes}}' => '',
+ '{nFormatted} {n, plural, =1{gigabyte} other{gigabytes}}' => '',
+ '{nFormatted} {n, plural, =1{kibibyte} other{kibibytes}}' => '',
+ '{nFormatted} {n, plural, =1{kilobyte} other{kilobytes}}' => '',
+ '{nFormatted} {n, plural, =1{mebibyte} other{mebibytes}}' => '',
+ '{nFormatted} {n, plural, =1{megabyte} other{megabytes}}' => '',
+ '{nFormatted} {n, plural, =1{pebibyte} other{pebibytes}}' => '',
+ '{nFormatted} {n, plural, =1{petabyte} other{petabytes}}' => '',
+ '{nFormatted} {n, plural, =1{tebibyte} other{tebibytes}}' => '',
+ '{nFormatted} {n, plural, =1{terabyte} other{terabytes}}' => '',
];
diff --git a/framework/messages/ko/yii.php b/framework/messages/ko/yii.php
index b0ad872fe72..735ed5dbd4c 100644
--- a/framework/messages/ko/yii.php
+++ b/framework/messages/ko/yii.php
@@ -1,4 +1,5 @@
'',
+ '"{attribute}" does not support operator "{operator}".' => '',
'(not set)' => '(설정되어있지않습니다)',
+ 'Action not found.' => '',
+ 'Aliases available: {aliases}' => '',
'An internal server error occurred.' => '서버 오류가 발생하였습니다.',
+ 'Are you sure you want to delete this item?' => '',
+ 'Condition for "{attribute}" should be either a value or valid operator specification.' => '',
'Delete' => '삭제',
'Error' => '오류',
'File upload failed.' => '파일 업로드 실패하였습니다.',
@@ -34,52 +41,108 @@
'Missing required arguments: {params}' => '필요한 인수가 없습니다: {params}',
'Missing required parameters: {params}' => '필요한 매개변수가 없습니다: {params}',
'No' => '아니오',
- 'No help for unknown command "{command}".' => '알 수 없는 명령 "{command}"에 대한 도움말이 없습니다.',
- 'No help for unknown sub-command "{command}".' => '알 수 없는 하위명령 "{command}"에 대한 도움말이 없습니다.',
'No results found.' => '결과가 없습니다.',
+ 'Only files with these MIME types are allowed: {mimeTypes}.' => '',
'Only files with these extensions are allowed: {extensions}.' => '다음의 확장명을 가진 파일만 허용됩니다: {extensions}',
+ 'Operator "{operator}" must be used with a search attribute.' => '',
+ 'Operator "{operator}" requires multiple operands.' => '',
+ 'Options available: {options}' => '',
'Page not found.' => '페이지를 찾을 수 없습니다.',
'Please fix the following errors:' => '다음 오류를 수정하십시오:',
'Please upload a file.' => '파일을 업로드하십시오.',
'Showing {begin, number}-{end, number} of {totalCount, number} {totalCount, plural, one{item} other{items}}.' => '{totalCount} 중 {begin} 에서 {end} 까지 표시하고 있습니다.',
+ 'The combination {values} of {attributes} has already been taken.' => '',
'The file "{file}" is not an image.' => '파일 "{file}"은 이미지 파일이 아닙니다.',
- 'The file "{file}" is too big. Its size cannot exceed {limit, number} {limit, plural, one{byte} other{bytes}}.' => '파일 "{file}"는 크기가 너무 큽니다. 파일 크기는 {limit} 바이트를 초과할 수 없습니다.',
- 'The file "{file}" is too small. Its size cannot be smaller than {limit, number} {limit, plural, one{byte} other{bytes}}.' => '파일 "{file}"는 크기가 너무 작습니다. 크기는 {limit} 바이트 보다 작을 수 없습니다.',
+ 'The file "{file}" is too big. Its size cannot exceed {formattedLimit}.' => '',
+ 'The file "{file}" is too small. Its size cannot be smaller than {formattedLimit}.' => '',
'The format of {attribute} is invalid.' => '{attribute}의 형식이 올바르지 않습니다.',
+ 'The format of {filter} is invalid.' => '',
'The image "{file}" is too large. The height cannot be larger than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => '이미지 "{file}"가 너무 큽니다. 높이는 {limit} 보다 클 수 없습니다.',
'The image "{file}" is too large. The width cannot be larger than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => '이미지 "{file}"가 너무 큽니다. 넓이는 {limit} 보다 클 수 없습니다.',
'The image "{file}" is too small. The height cannot be smaller than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => '이미지 "{file}"가 너무 작습니다. 높이는 {limit} 보다 작을 수 없습니다.',
'The image "{file}" is too small. The width cannot be smaller than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => '이미지 "{file}"가 너무 작습니다. 넒이는 {limit} 보다 작을 수 없습니다.',
+ 'The requested view "{name}" was not found.' => '',
'The verification code is incorrect.' => '확인코드가 올바르지않습니다.',
'Total {count, number} {count, plural, one{item} other{items}}.' => '모두 {count} 개',
'Unable to verify your data submission.' => '데이터 전송을 확인하지 못했습니다.',
- 'Unknown command "{command}".' => '알 수 없는 명령 "{command}".',
+ 'Unknown alias: -{name}' => '',
+ 'Unknown filter attribute "{attribute}"' => '',
'Unknown option: --{name}' => '알 수 없는 옵션: --{name}',
'Update' => '갱신',
'View' => '보기',
'Yes' => '예',
'You are not allowed to perform this action.' => '이 작업의 실행을 허가받지못하였습니다.',
'You can upload at most {limit, number} {limit, plural, one{file} other{files}}.' => '최대 {limit} 개의 파일을 업로드할 수 있습니다.',
+ 'You should upload at least {limit, number} {limit, plural, one{file} other{files}}.' => '',
+ 'in {delta, plural, =1{a day} other{# days}}' => '',
+ 'in {delta, plural, =1{a minute} other{# minutes}}' => '',
+ 'in {delta, plural, =1{a month} other{# months}}' => '',
+ 'in {delta, plural, =1{a second} other{# seconds}}' => '',
+ 'in {delta, plural, =1{a year} other{# years}}' => '',
+ 'in {delta, plural, =1{an hour} other{# hours}}' => '',
+ 'just now' => '',
'the input value' => '입력 값',
'{attribute} "{value}" has already been taken.' => '{attribute}에 "{value}"이 이미 사용되고 있습니다.',
'{attribute} cannot be blank.' => '{attribute}는 공백일 수 없습니다.',
+ '{attribute} contains wrong subnet mask.' => '',
'{attribute} is invalid.' => '{attribute}가 잘못되었습니다.',
'{attribute} is not a valid URL.' => '{attribute}는 올바른 URL 형식이 아닙니다.',
'{attribute} is not a valid email address.' => '{attribute}는 올바른 이메일 주소 형식이 아닙니다.',
+ '{attribute} is not in the allowed range.' => '',
'{attribute} must be "{requiredValue}".' => '{attribute}는 {value}이어야 합니다.',
'{attribute} must be a number.' => '{attribute}는 반드시 숫자이어야 합니다.',
'{attribute} must be a string.' => '{attribute}는 반드시 문자이어야 합니다.',
+ '{attribute} must be a valid IP address.' => '',
+ '{attribute} must be an IP address with specified subnet.' => '',
'{attribute} must be an integer.' => '{attribute}는 반드시 정수이어야 합니다.',
'{attribute} must be either "{true}" or "{false}".' => '{attribute}는 {true} 또는 {false} 이어야 합니다.',
- '{attribute} must be greater than "{compareValue}".' => '{attribute}는 "{compareValue}" 보다 커야 합니다.',
- '{attribute} must be greater than or equal to "{compareValue}".' => '{attribute}는 "{compareValue}" 보다 크거나 같아야 합니다.',
- '{attribute} must be less than "{compareValue}".' => '{attribute}는 "{compareValue}" 보다 작아야 합니다.',
- '{attribute} must be less than or equal to "{compareValue}".' => '{attribute}는 "{compareValue}" 보다 작거나 같아야 합니다.',
+ '{attribute} must be equal to "{compareValueOrAttribute}".' => '',
+ '{attribute} must be greater than "{compareValueOrAttribute}".' => '{attribute}는 "{compareValueOrAttribute}" 보다 커야 합니다.',
+ '{attribute} must be greater than or equal to "{compareValueOrAttribute}".' => '{attribute}는 "{compareValueOrAttribute}" 보다 크거나 같아야 합니다.',
+ '{attribute} must be less than "{compareValueOrAttribute}".' => '{attribute}는 "{compareValueOrAttribute}" 보다 작아야 합니다.',
+ '{attribute} must be less than or equal to "{compareValueOrAttribute}".' => '{attribute}는 "{compareValueOrAttribute}" 보다 작거나 같아야 합니다.',
'{attribute} must be no greater than {max}.' => '{attribute}는 "{max}" 보다 클 수 없습니다.',
'{attribute} must be no less than {min}.' => '{attribute}는 "{min}" 보다 작을 수 없습니다.',
- '{attribute} must be repeated exactly.' => '{attribute}는 정확하게 반복합니다.',
- '{attribute} must not be equal to "{compareValue}".' => '{attribute}는 "{compareValue}"와 같을 수 없습니다.',
+ '{attribute} must not be a subnet.' => '',
+ '{attribute} must not be an IPv4 address.' => '',
+ '{attribute} must not be an IPv6 address.' => '',
+ '{attribute} must not be equal to "{compareValueOrAttribute}".' => '{attribute}는 "{compareValueOrAttribute}"와 같을 수 없습니다.',
'{attribute} should contain at least {min, number} {min, plural, one{character} other{characters}}.' => '{attribute}는 최소 {min}자 이어야합니다.',
'{attribute} should contain at most {max, number} {max, plural, one{character} other{characters}}.' => '{attribute}는 최대 {max}자 이어야합니다.',
'{attribute} should contain {length, number} {length, plural, one{character} other{characters}}.' => '{attribute}는 {length}자 이어야합니다.',
+ '{compareAttribute} is invalid.' => '',
+ '{delta, plural, =1{1 day} other{# days}}' => '',
+ '{delta, plural, =1{1 hour} other{# hours}}' => '',
+ '{delta, plural, =1{1 minute} other{# minutes}}' => '',
+ '{delta, plural, =1{1 month} other{# months}}' => '',
+ '{delta, plural, =1{1 second} other{# seconds}}' => '',
+ '{delta, plural, =1{1 year} other{# years}}' => '',
+ '{delta, plural, =1{a day} other{# days}} ago' => '',
+ '{delta, plural, =1{a minute} other{# minutes}} ago' => '',
+ '{delta, plural, =1{a month} other{# months}} ago' => '',
+ '{delta, plural, =1{a second} other{# seconds}} ago' => '',
+ '{delta, plural, =1{a year} other{# years}} ago' => '',
+ '{delta, plural, =1{an hour} other{# hours}} ago' => '',
+ '{nFormatted} B' => '',
+ '{nFormatted} GB' => '',
+ '{nFormatted} GiB' => '',
+ '{nFormatted} KiB' => '',
+ '{nFormatted} MB' => '',
+ '{nFormatted} MiB' => '',
+ '{nFormatted} PB' => '',
+ '{nFormatted} PiB' => '',
+ '{nFormatted} TB' => '',
+ '{nFormatted} TiB' => '',
+ '{nFormatted} kB' => '',
+ '{nFormatted} {n, plural, =1{byte} other{bytes}}' => '',
+ '{nFormatted} {n, plural, =1{gibibyte} other{gibibytes}}' => '',
+ '{nFormatted} {n, plural, =1{gigabyte} other{gigabytes}}' => '',
+ '{nFormatted} {n, plural, =1{kibibyte} other{kibibytes}}' => '',
+ '{nFormatted} {n, plural, =1{kilobyte} other{kilobytes}}' => '',
+ '{nFormatted} {n, plural, =1{mebibyte} other{mebibytes}}' => '',
+ '{nFormatted} {n, plural, =1{megabyte} other{megabytes}}' => '',
+ '{nFormatted} {n, plural, =1{pebibyte} other{pebibytes}}' => '',
+ '{nFormatted} {n, plural, =1{petabyte} other{petabytes}}' => '',
+ '{nFormatted} {n, plural, =1{tebibyte} other{tebibytes}}' => '',
+ '{nFormatted} {n, plural, =1{terabyte} other{terabytes}}' => '',
];
diff --git a/framework/messages/kz/yii.php b/framework/messages/kz/yii.php
index d8a3cf94b5a..77472859907 100644
--- a/framework/messages/kz/yii.php
+++ b/framework/messages/kz/yii.php
@@ -1,8 +1,15 @@
'{nFormatted} Б',
- '{nFormatted} GB' => '{nFormatted} ГБ',
- '{nFormatted} GiB' => '{nFormatted} ГиБ',
- '{nFormatted} kB' => '{nFormatted} КБ',
- '{nFormatted} KiB' => '{nFormatted} КиБ',
- '{nFormatted} MB' => '{nFormatted} МБ',
- '{nFormatted} MiB' => '{nFormatted} МиБ',
- '{nFormatted} PB' => '{nFormatted} ПБ',
- '{nFormatted} PiB' => '{nFormatted} ПиБ',
- '{nFormatted} TB' => '{nFormatted} ТБ',
- '{nFormatted} TiB' => '{nFormatted} ТиБ',
- '{nFormatted} {n, plural, =1{byte} other{bytes}}' => '{nFormatted} {n, plural, one{байттар} few{байт} many{байттар} other{байт}}',
- '{nFormatted} {n, plural, =1{gibibyte} other{gibibytes}}' => '{nFormatted} {n, plural, one{гибибайт} few{гибибайта} many{гибибайтов} other{гибибайта}}',
- '{nFormatted} {n, plural, =1{gigabyte} other{gigabytes}}' => '{nFormatted} {n, plural, one{гигабайт} few{гигабайта} many{гигабайтов} other{гигабайта}}',
- '{nFormatted} {n, plural, =1{kibibyte} other{kibibytes}}' => '{nFormatted} {n, plural, one{кибибайт} few{кибибайта} many{кибибайтов} other{кибибайта}}',
- '{nFormatted} {n, plural, =1{kilobyte} other{kilobytes}}' => '{nFormatted} {n, plural, one{килобайт} few{килобайта} many{килобайтов} other{килобайта}}',
- '{nFormatted} {n, plural, =1{mebibyte} other{mebibytes}}' => '{nFormatted} {n, plural, one{мебибайт} few{мебибайта} many{мебибайтов} other{мебибайта}}',
- '{nFormatted} {n, plural, =1{megabyte} other{megabytes}}' => '{nFormatted} {n, plural, one{мегабайт} few{мегабайта} many{мегабайтов} other{мегабайта}}',
- '{nFormatted} {n, plural, =1{pebibyte} other{pebibytes}}' => '{nFormatted} {n, plural, one{пебибайт} few{пебибайта} many{пебибайтов} other{пебибайта}}',
- '{nFormatted} {n, plural, =1{petabyte} other{petabytes}}' => '{nFormatted} {n, plural, one{петабайт} few{петабайта} many{петабайтов} other{петабайта}}',
- '{nFormatted} {n, plural, =1{tebibyte} other{tebibytes}}' => '{nFormatted} {n, plural, one{тебибайт} few{тебибайта} many{тебибайтов} other{тебибайта}}',
- '{nFormatted} {n, plural, =1{terabyte} other{terabytes}}' => '{nFormatted} {n, plural, one{терабайт} few{терабайта} many{терабайтов} other{терабайта}}',
+ ' and ' => '',
+ '"{attribute}" does not support operator "{operator}".' => '',
'(not set)' => '(көрсетілмеген)',
+ 'Action not found.' => '',
+ 'Aliases available: {aliases}' => '',
'An internal server error occurred.' => 'Ішкі сервер қатесі орын алды.',
'Are you sure you want to delete this item?' => 'Бұл элементті жою керек пе?',
+ 'Condition for "{attribute}" should be either a value or valid operator specification.' => '',
'Delete' => 'Жою',
'Error' => 'Қате',
'File upload failed.' => 'Файл жүктелмеді.',
@@ -51,19 +41,22 @@
'Missing required arguments: {params}' => 'Қажетті дәлелдер жоқ: {params}',
'Missing required parameters: {params}' => 'Қажетті параметрлер жоқ: {params}',
'No' => 'Жоқ',
- 'No help for unknown command "{command}".' => 'Анық емес "{command}" пәрменіне көмек жоқ.',
- 'No help for unknown sub-command "{command}".' => 'Анық емес субкоманда "{command}" үшін көмек жоқ.',
'No results found.' => 'Еш нәрсе табылмады.',
'Only files with these MIME types are allowed: {mimeTypes}.' => 'Тек келесі MIME-түріндегі файлдарға рұқсат етіледі: {mimeTypes}.',
'Only files with these extensions are allowed: {extensions}.' => 'Тек келесі кеңейтілімдері бар файлдарға рұқсат етіледі: {extensions}.',
+ 'Operator "{operator}" must be used with a search attribute.' => '',
+ 'Operator "{operator}" requires multiple operands.' => '',
+ 'Options available: {options}' => '',
'Page not found.' => 'Бет табылмады.',
'Please fix the following errors:' => 'Келесі қателерді түзетіңіз:',
'Please upload a file.' => 'Файлды жүктеп алыңыз.',
'Showing {begin, number}-{end, number} of {totalCount, number} {totalCount, plural, one{item} other{items}}.' => 'Жазбаларды көрсету {begin, number}-{end, number} из {totalCount, number}.',
+ 'The combination {values} of {attributes} has already been taken.' => '',
'The file "{file}" is not an image.' => '"{file}" файлы сурет емес.',
- 'The file "{file}" is too big. Its size cannot exceed {limit, number} {limit, plural, one{byte} other{bytes}}.' => '«{file}» файлы тым үлкен. Өлшемі {шектеу, сан} {limit, plural, one{байттар} few{байт} many{байттар} other{байта}}.',
- 'The file "{file}" is too small. Its size cannot be smaller than {limit, number} {limit, plural, one{byte} other{bytes}}.' => '«{file}» файлы тым кішкентай. Өлшем көп болуы керек {limit, number} {limit, plural, one{байттар} few{байта} many{байт} other{байта}}.',
+ 'The file "{file}" is too big. Its size cannot exceed {formattedLimit}.' => '',
+ 'The file "{file}" is too small. Its size cannot be smaller than {formattedLimit}.' => '',
'The format of {attribute} is invalid.' => '{attribute} мәнінің пішімі дұрыс емес.',
+ 'The format of {filter} is invalid.' => '',
'The image "{file}" is too large. The height cannot be larger than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => '«{file}» файлы тым үлкен. Биіктігі аспауы керек {limit, number} {limit, plural, other{пиксел}}.',
'The image "{file}" is too large. The width cannot be larger than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => '«{file}» файлы тым үлкен. Ені аспауы тиіс {limit, number} {limit, plural, other{пиксел}}.',
'The image "{file}" is too small. The height cannot be smaller than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => '«{file}» файлы тым кішкентай. Биіктігі көп болуы керек {limit, number} {limit, plural, other{пиксел}}.',
@@ -72,13 +65,15 @@
'The verification code is incorrect.' => 'Растау коды дұрыс емес.',
'Total {count, number} {count, plural, one{item} other{items}}.' => 'Барлығы {count, number} {count, plural, one{кіру} few{жазбалар} many{жазбалар} other{жазбалар}}.',
'Unable to verify your data submission.' => 'Жіберілген деректерді тексере алмадық.',
- 'Unknown command "{command}".' => 'Белгісіз команда "{command}".',
+ 'Unknown alias: -{name}' => '',
+ 'Unknown filter attribute "{attribute}"' => '',
'Unknown option: --{name}' => 'Белгісіз опция: --{name}',
'Update' => 'Өңдеу',
'View' => 'Ішінде қараңыз',
'Yes' => 'Ия',
'You are not allowed to perform this action.' => 'Сіз бұл әрекетті орындауға рұқсатыңыз жоқ.',
'You can upload at most {limit, number} {limit, plural, one{file} other{files}}.' => 'Көбірек жүктей алмайсыз {limit, number} {limit, plural, one{файл} few{файлдар} many{файлдар} other{файл}}.',
+ 'You should upload at least {limit, number} {limit, plural, one{file} other{files}}.' => '',
'in {delta, plural, =1{a day} other{# days}}' => 'арқылы {delta, plural, =1{күн} one{# күн} few{# күн} many{# күндер} other{# күн}}',
'in {delta, plural, =1{a minute} other{# minutes}}' => 'арқылы {delta, plural, =1{минутына} one{# минутына} few{# минуттар} many{# минуттар} other{# минуттар}}',
'in {delta, plural, =1{a month} other{# months}}' => 'арқылы {delta, plural, =1{ай} one{# ай} few{# айлар} many{# айлар} other{# айлар}}',
@@ -89,29 +84,65 @@
'the input value' => 'енгізілген мән',
'{attribute} "{value}" has already been taken.' => '{attribute} «{value}» қазірдің өзінде қабылданды.',
'{attribute} cannot be blank.' => 'Толтырылуы керек «{attribute}».',
+ '{attribute} contains wrong subnet mask.' => '',
'{attribute} is invalid.' => '«{attribute}» мәні жарамсыз.',
'{attribute} is not a valid URL.' => '«{attribute}» мәні жарамды URL емес.',
'{attribute} is not a valid email address.' => '«{attribute}» мәні жарамды электрондық пошта мекенжайы емес.',
+ '{attribute} is not in the allowed range.' => '',
'{attribute} must be "{requiredValue}".' => '«{attribute}» мәні «{requiredValue}» дегенге тең болуы керек.',
'{attribute} must be a number.' => '«{attribute}» мәні сан болуы керек.',
'{attribute} must be a string.' => '«{attribute}» мәні жол болуы керек.',
+ '{attribute} must be a valid IP address.' => '',
+ '{attribute} must be an IP address with specified subnet.' => '',
'{attribute} must be an integer.' => '«{attribute}» мәні бүтін сан болуы керек.',
'{attribute} must be either "{true}" or "{false}".' => '«{attribute}» мәні «{true}» немесе «{false}» мәніне тең болуы керек.',
- '{attribute} must be greater than "{compareValue}".' => '«{attribute}» мәні «{compareValue}» мәнінен үлкен болуы керек.',
- '{attribute} must be greater than or equal to "{compareValue}".' => '«{attribute}» мәні «{compareValue}» мәнінен үлкен немесе тең болуы керек.',
- '{attribute} must be less than "{compareValue}".' => '«{attribute}» мәні «{compareValue}» мәнінен аз болуы керек.',
- '{attribute} must be less than or equal to "{compareValue}".' => '«{attribute}» мәні «{compareValue}» мәнінен аз немесе тең болуы керек.',
+ '{attribute} must be equal to "{compareValueOrAttribute}".' => '',
+ '{attribute} must be greater than "{compareValueOrAttribute}".' => '«{attribute}» мәні «{compareValueOrAttribute}» мәнінен үлкен болуы керек.',
+ '{attribute} must be greater than or equal to "{compareValueOrAttribute}".' => '«{attribute}» мәні «{compareValueOrAttribute}» мәнінен үлкен немесе тең болуы керек.',
+ '{attribute} must be less than "{compareValueOrAttribute}".' => '«{attribute}» мәні «{compareValueOrAttribute}» мәнінен аз болуы керек.',
+ '{attribute} must be less than or equal to "{compareValueOrAttribute}".' => '«{attribute}» мәні «{compareValueOrAttribute}» мәнінен аз немесе тең болуы керек.',
'{attribute} must be no greater than {max}.' => '«{attribute}» мәні {max} аспауы керек.',
'{attribute} must be no less than {min}.' => '«{attribute}» мәні кем дегенде {min} болуы керек.',
- '{attribute} must be repeated exactly.' => '«{attribute}» мәні дәл қайталануы керек.',
- '{attribute} must not be equal to "{compareValue}".' => '«{attribute}» мәні «{compareValue}» тең болмауы керек.',
+ '{attribute} must not be a subnet.' => '',
+ '{attribute} must not be an IPv4 address.' => '',
+ '{attribute} must not be an IPv6 address.' => '',
+ '{attribute} must not be equal to "{compareValueOrAttribute}".' => '«{attribute}» мәні «{compareValueOrAttribute}» тең болмауы керек.',
'{attribute} should contain at least {min, number} {min, plural, one{character} other{characters}}.' => '«{attribute}» мәні минималды {min, number} болуы керек {min, number} {min, plural, one{таңба} few{таңба} many{таңбалар} other{таңба}}.',
'{attribute} should contain at most {max, number} {max, plural, one{character} other{characters}}.' => '«{attribute}» мәні ең көп {max, number} {max, plural, one{таңба} few{таңба} many{таңбалар} other{таңба}}.',
'{attribute} should contain {length, number} {length, plural, one{character} other{characters}}.' => '«{attribute}» мәні {length, number} болуы керек {length, plural, one{таңба} few{таңба} many{таңбалар} other{таңба}}.',
+ '{compareAttribute} is invalid.' => '',
+ '{delta, plural, =1{1 day} other{# days}}' => '',
+ '{delta, plural, =1{1 hour} other{# hours}}' => '',
+ '{delta, plural, =1{1 minute} other{# minutes}}' => '',
+ '{delta, plural, =1{1 month} other{# months}}' => '',
+ '{delta, plural, =1{1 second} other{# seconds}}' => '',
+ '{delta, plural, =1{1 year} other{# years}}' => '',
'{delta, plural, =1{a day} other{# days}} ago' => '{delta, plural, =1{күн} one{күн} few{# күн} many{# күндер} other{# күн}} артқа қарай',
'{delta, plural, =1{a minute} other{# minutes}} ago' => '{delta, plural, =1{минутына} one{# минутына} few{# минуттар} many{# минуттар} other{# минуттар}} артқа қарай',
'{delta, plural, =1{a month} other{# months}} ago' => '{delta, plural, =1{ай} one{# ай} few{# айлар} many{# айлар} other{# айлар}} артқа қарай',
'{delta, plural, =1{a second} other{# seconds}} ago' => '{delta, plural, other{# екіншіден}} артқа қарай',
'{delta, plural, =1{a year} other{# years}} ago' => '{delta, plural, =1{жыл} one{# жыл} few{# жыл} many{# жастағы} other{# жыл}} артқа қарай',
'{delta, plural, =1{an hour} other{# hours}} ago' => '{delta, plural, other{# сағат}} артқа қарай',
-];
\ No newline at end of file
+ '{nFormatted} B' => '{nFormatted} Б',
+ '{nFormatted} GB' => '{nFormatted} ГБ',
+ '{nFormatted} GiB' => '{nFormatted} ГиБ',
+ '{nFormatted} KiB' => '{nFormatted} КиБ',
+ '{nFormatted} MB' => '{nFormatted} МБ',
+ '{nFormatted} MiB' => '{nFormatted} МиБ',
+ '{nFormatted} PB' => '{nFormatted} ПБ',
+ '{nFormatted} PiB' => '{nFormatted} ПиБ',
+ '{nFormatted} TB' => '{nFormatted} ТБ',
+ '{nFormatted} TiB' => '{nFormatted} ТиБ',
+ '{nFormatted} kB' => '{nFormatted} КБ',
+ '{nFormatted} {n, plural, =1{byte} other{bytes}}' => '{nFormatted} {n, plural, one{байттар} few{байт} many{байттар} other{байт}}',
+ '{nFormatted} {n, plural, =1{gibibyte} other{gibibytes}}' => '{nFormatted} {n, plural, one{гибибайт} few{гибибайта} many{гибибайтов} other{гибибайта}}',
+ '{nFormatted} {n, plural, =1{gigabyte} other{gigabytes}}' => '{nFormatted} {n, plural, one{гигабайт} few{гигабайта} many{гигабайтов} other{гигабайта}}',
+ '{nFormatted} {n, plural, =1{kibibyte} other{kibibytes}}' => '{nFormatted} {n, plural, one{кибибайт} few{кибибайта} many{кибибайтов} other{кибибайта}}',
+ '{nFormatted} {n, plural, =1{kilobyte} other{kilobytes}}' => '{nFormatted} {n, plural, one{килобайт} few{килобайта} many{килобайтов} other{килобайта}}',
+ '{nFormatted} {n, plural, =1{mebibyte} other{mebibytes}}' => '{nFormatted} {n, plural, one{мебибайт} few{мебибайта} many{мебибайтов} other{мебибайта}}',
+ '{nFormatted} {n, plural, =1{megabyte} other{megabytes}}' => '{nFormatted} {n, plural, one{мегабайт} few{мегабайта} many{мегабайтов} other{мегабайта}}',
+ '{nFormatted} {n, plural, =1{pebibyte} other{pebibytes}}' => '{nFormatted} {n, plural, one{пебибайт} few{пебибайта} many{пебибайтов} other{пебибайта}}',
+ '{nFormatted} {n, plural, =1{petabyte} other{petabytes}}' => '{nFormatted} {n, plural, one{петабайт} few{петабайта} many{петабайтов} other{петабайта}}',
+ '{nFormatted} {n, plural, =1{tebibyte} other{tebibytes}}' => '{nFormatted} {n, plural, one{тебибайт} few{тебибайта} many{тебибайтов} other{тебибайта}}',
+ '{nFormatted} {n, plural, =1{terabyte} other{terabytes}}' => '{nFormatted} {n, plural, one{терабайт} few{терабайта} many{терабайтов} other{терабайта}}',
+];
diff --git a/framework/messages/lt/yii.php b/framework/messages/lt/yii.php
index fce59c5471b..fdd0cb75fdf 100644
--- a/framework/messages/lt/yii.php
+++ b/framework/messages/lt/yii.php
@@ -1,4 +1,5 @@
'dabar',
- '{nFormatted} B' => '{nFormatted} B',
- '{nFormatted} GB' => '{nFormatted} GB',
- '{nFormatted} GiB' => '{nFormatted} GiB',
- '{nFormatted} kB' => '{nFormatted} kB',
- '{nFormatted} KiB' => '{nFormatted} KiB',
- '{nFormatted} MB' => '{nFormatted} MB',
- '{nFormatted} MiB' => '{nFormatted} MiB',
- '{nFormatted} PB' => '{nFormatted} PB',
- '{nFormatted} PiB' => '{nFormatted} PiB',
- '{nFormatted} TB' => '{nFormatted} TB',
- '{nFormatted} TiB' => '{nFormatted} TiB',
- '{nFormatted} {n, plural, =1{byte} other{bytes}}' => '{nFormatted} {n, plural, one{baitas} few{baitai} other{baitų}}',
- '{nFormatted} {n, plural, =1{gibibyte} other{gibibytes}}' => '{nFormatted} gibi{n, plural, one{baitas} few{baitai} other{baitų}}',
- '{nFormatted} {n, plural, =1{gigabyte} other{gigabytes}}' => '{nFormatted} giga{n, plural, one{baitas} few{baitai} other{baitų}}',
- '{nFormatted} {n, plural, =1{kibibyte} other{kibibytes}}' => '{nFormatted} kibi{n, plural, one{baitas} few{baitai} other{baitų}}',
- '{nFormatted} {n, plural, =1{kilobyte} other{kilobytes}}' => '{nFormatted} kilo{n, plural, one{baitas} few{baitai} other{baitų}}',
- '{nFormatted} {n, plural, =1{mebibyte} other{mebibytes}}' => '{nFormatted} mebi{n, plural, one{baitas} few{baitai} other{baitų}}',
- '{nFormatted} {n, plural, =1{megabyte} other{megabytes}}' => '{nFormatted} mega{n, plural, one{baitas} few{baitai} other{baitų}}',
- '{nFormatted} {n, plural, =1{pebibyte} other{pebibytes}}' => '{nFormatted} pebi{n, plural, one{baitas} few{baitai} other{baitų}}',
- '{nFormatted} {n, plural, =1{petabyte} other{petabytes}}' => '{nFormatted} peta{n, plural, one{baitas} few{baitai} other{baitų}}',
- '{nFormatted} {n, plural, =1{tebibyte} other{tebibytes}}' => '{nFormatted} tebi{n, plural, one{baitas} few{baitai} other{baitų}}',
- '{nFormatted} {n, plural, =1{terabyte} other{terabytes}}' => '{nFormatted} tera{n, plural, one{baitas} few{baitai} other{baitų}}',
+ ' and ' => '',
+ '"{attribute}" does not support operator "{operator}".' => '',
'(not set)' => '(nenustatyta)',
+ 'Action not found.' => '',
+ 'Aliases available: {aliases}' => '',
'An internal server error occurred.' => 'Įvyko vidinė serverio klaida',
'Are you sure you want to delete this item?' => 'Ar tikrai norite ištrinti šį elementą?',
+ 'Condition for "{attribute}" should be either a value or valid operator specification.' => '',
'Delete' => 'Ištrinti',
'Error' => 'Klaida',
'File upload failed.' => 'Nepavyko įkelti failo.',
@@ -61,14 +44,19 @@
'No results found.' => 'Nėra užklausą atitinkančių įrašų.',
'Only files with these MIME types are allowed: {mimeTypes}.' => 'Leidžiama įkelti tik šių MIME tipų failus: {mimeTypes}.',
'Only files with these extensions are allowed: {extensions}.' => 'Leidžiama įkelti failus tik su šiais plėtiniais: {extensions}.',
+ 'Operator "{operator}" must be used with a search attribute.' => '',
+ 'Operator "{operator}" requires multiple operands.' => '',
+ 'Options available: {options}' => '',
'Page not found.' => 'Puslapis nerastas.',
'Please fix the following errors:' => 'Prašytume ištaisyti nurodytas klaidas:',
'Please upload a file.' => 'Prašome įkelti failą.',
'Showing {begin, number}-{end, number} of {totalCount, number} {totalCount, plural, one{item} other{items}}.' => 'Rodomi rezultatai {begin, number}-{end, number} iš {totalCount, number}.',
+ 'The combination {values} of {attributes} has already been taken.' => '',
'The file "{file}" is not an image.' => 'Failas „{file}“ nėra paveikslėlis.',
'The file "{file}" is too big. Its size cannot exceed {formattedLimit}.' => 'Failas „{file}“ yra per didelis. Dydis negali viršyti {formattedLimit}.',
'The file "{file}" is too small. Its size cannot be smaller than {formattedLimit}.' => 'Failas „{file}“ yra per mažas. Dydis negali būti mažesnis už {formattedLimit}.',
'The format of {attribute} is invalid.' => 'Atributo „{attribute}“ formatas yra netinkamas.',
+ 'The format of {filter} is invalid.' => '',
'The image "{file}" is too large. The height cannot be larger than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'Paveikslėlis „{file}“ yra per didelis. Aukštis negali viršyti {limit, number} {limit, plural, one{taško} few{taškų} other{taškų}}.',
'The image "{file}" is too large. The width cannot be larger than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'Paveikslėlis „{file}“ yra per didelis. Plotis negali viršyti {limit, number} {limit, plural, one{taško} few{taškų} other{taškų}}.',
'The image "{file}" is too small. The height cannot be smaller than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'Paveikslėlis „{file}“ yra per mažas. Aukštis turi viršyti {limit, number} {limit, plural, one{tašką} few{taškus} other{taškų}}.',
@@ -77,44 +65,84 @@
'The verification code is incorrect.' => 'Neteisingas patikrinimo kodas.',
'Total {count, number} {count, plural, one{item} other{items}}.' => 'Iš viso {count, number} {count, plural, one{elementas} few{elementai} other{elementų}}.',
'Unable to verify your data submission.' => 'Neįmanoma patikrinti jūsų siunčiamų duomenų.',
+ 'Unknown alias: -{name}' => '',
+ 'Unknown filter attribute "{attribute}"' => '',
'Unknown option: --{name}' => 'Nežinomas pasirinkimas: --{name}',
'Update' => 'Atnaujinti',
'View' => 'Peržiūrėti',
'Yes' => 'Taip',
'You are not allowed to perform this action.' => 'Jums neleidžiama atlikti šio veiksmo.',
'You can upload at most {limit, number} {limit, plural, one{file} other{files}}.' => 'Leidžiama įkelti ne daugiau nei {limit, number} {limit, plural, one{failą} few{failus} other{failų}}.',
+ 'You should upload at least {limit, number} {limit, plural, one{file} other{files}}.' => '',
'in {delta, plural, =1{a day} other{# days}}' => 'po {delta, plural, =1{dienos} one{# dienos} other{# dienų}}',
'in {delta, plural, =1{a minute} other{# minutes}}' => 'po {delta, plural, =1{minutės} one{# minutės} other{# minučių}}',
'in {delta, plural, =1{a month} other{# months}}' => 'po {delta, plural, =1{mėnesio} one{# mėnesio} other{# mėnesių}}',
'in {delta, plural, =1{a second} other{# seconds}}' => 'po {delta, plural, =1{sekundės} one{# sekundės} other{# sekundžių}}',
'in {delta, plural, =1{a year} other{# years}}' => 'po {delta, plural, =1{metų} other{# metų}}',
'in {delta, plural, =1{an hour} other{# hours}}' => 'po {delta, plural, =1{valandos} one{# valandos} other{# valandų}}',
+ 'just now' => 'dabar',
'the input value' => 'įvesties reikšmė',
'{attribute} "{value}" has already been taken.' => '{attribute} reikšmė „{value}“ jau naudojama.',
'{attribute} cannot be blank.' => '„{attribute}“ negali būti tuščias.',
+ '{attribute} contains wrong subnet mask.' => '',
'{attribute} is invalid.' => '„{attribute}“ reikšmė netinkama.',
'{attribute} is not a valid URL.' => '„{attribute}“ įvestas netinkamas URL.',
'{attribute} is not a valid email address.' => '„{attribute}“ įvestas netinkamas el. pašto adresas.',
+ '{attribute} is not in the allowed range.' => '',
'{attribute} must be "{requiredValue}".' => '„{attribute}“ privalo būti „{requiredValue}“.',
'{attribute} must be a number.' => '„{attribute}“ privalo būti skaičius.',
'{attribute} must be a string.' => '„{attribute}“ privalo būti eilutė.',
+ '{attribute} must be a valid IP address.' => '',
+ '{attribute} must be an IP address with specified subnet.' => '',
'{attribute} must be an integer.' => '„{attribute}“ privalo būti sveikas skaičius.',
'{attribute} must be either "{true}" or "{false}".' => '„{attribute}“ privalo būti „{true}“ arba „{false}“.',
- '{attribute} must be greater than "{compareValue}".' => 'Laukelio „{attribute}“ reikšmė privalo būti didesnė nei „{compareValue}“.',
- '{attribute} must be greater than or equal to "{compareValue}".' => 'Laukelio „{attribute}“ reikšmė privalo būti didesnė arba lygi „{compareValue}“.',
- '{attribute} must be less than "{compareValue}".' => 'Laukelio „{attribute}“ reikšmė privalo būti mažesnė nei „{compareValue}“.',
- '{attribute} must be less than or equal to "{compareValue}".' => 'Laukelio „{attribute}“ reikšmė privalo būti mažesnė arba lygi „{compareValue}“.',
+ '{attribute} must be equal to "{compareValueOrAttribute}".' => '',
+ '{attribute} must be greater than "{compareValueOrAttribute}".' => 'Laukelio „{attribute}“ reikšmė privalo būti didesnė nei „{compareValueOrAttribute}“.',
+ '{attribute} must be greater than or equal to "{compareValueOrAttribute}".' => 'Laukelio „{attribute}“ reikšmė privalo būti didesnė arba lygi „{compareValueOrAttribute}“.',
+ '{attribute} must be less than "{compareValueOrAttribute}".' => 'Laukelio „{attribute}“ reikšmė privalo būti mažesnė nei „{compareValueOrAttribute}“.',
+ '{attribute} must be less than or equal to "{compareValueOrAttribute}".' => 'Laukelio „{attribute}“ reikšmė privalo būti mažesnė arba lygi „{compareValueOrAttribute}“.',
'{attribute} must be no greater than {max}.' => 'Laukelio „{attribute}“ reikšmė privalo būti ne didesnė nei {max}.',
'{attribute} must be no less than {min}.' => 'Laukelio „{attribute}“ reikšmė privalo būti ne mažesnė nei {min}.',
- '{attribute} must be repeated exactly.' => 'Laukelio „{attribute}“ reikšmė privalo būti pakartota tiksliai.',
- '{attribute} must not be equal to "{compareValue}".' => 'Laukelio „{attribute}“ reikšmė negali būti lygi „{compareValue}“.',
+ '{attribute} must not be a subnet.' => '',
+ '{attribute} must not be an IPv4 address.' => '',
+ '{attribute} must not be an IPv6 address.' => '',
+ '{attribute} must not be equal to "{compareValueOrAttribute}".' => 'Laukelio „{attribute}“ reikšmė negali būti lygi „{compareValueOrAttribute}“.',
'{attribute} should contain at least {min, number} {min, plural, one{character} other{characters}}.' => 'Laukelio „{attribute}“ reikšmę privalo sudaryti mažiausiai {min, number} {min, plural, one{ženklas} few{ženklai} other{ženklų}}.',
'{attribute} should contain at most {max, number} {max, plural, one{character} other{characters}}.' => 'Laukelio „{attribute}“ reikšmę privalo sudaryti daugiausiai {max, number} {max, plural, one{ženklas} few{ženklai} other{ženklų}}.',
'{attribute} should contain {length, number} {length, plural, one{character} other{characters}}.' => 'Laukelio „{attribute}“ reikšmę privalo sudaryti {length, number} {length, plural, one{ženklas} few{ženklai} other{ženklų}}.',
+ '{compareAttribute} is invalid.' => '',
+ '{delta, plural, =1{1 day} other{# days}}' => '',
+ '{delta, plural, =1{1 hour} other{# hours}}' => '',
+ '{delta, plural, =1{1 minute} other{# minutes}}' => '',
+ '{delta, plural, =1{1 month} other{# months}}' => '',
+ '{delta, plural, =1{1 second} other{# seconds}}' => '',
+ '{delta, plural, =1{1 year} other{# years}}' => '',
'{delta, plural, =1{a day} other{# days}} ago' => 'prieš {delta, plural, =1{dieną} one{# dieną} few{# dienas} other{# dienų}}',
'{delta, plural, =1{a minute} other{# minutes}} ago' => 'prieš {delta, plural, =1{minutę} one{# minutę} few{# minutes} other{# minučių}}',
'{delta, plural, =1{a month} other{# months}} ago' => 'prieš {delta, plural, =1{mėnesį} one{# mėnesį} few{# mėnesius} other{# mėnesių}}',
'{delta, plural, =1{a second} other{# seconds}} ago' => 'prieš {delta, plural, =1{sekundę} one{# sekundę} few{# sekundes} other{# sekundžių}}',
'{delta, plural, =1{a year} other{# years}} ago' => 'prieš {delta, plural, =1{metus} one{# metus} few{# metus} other{# metų}}',
'{delta, plural, =1{an hour} other{# hours}} ago' => 'prieš {delta, plural, =1{valandą} one{# valandą} few{# valandas} other{# valandų}}',
+ '{nFormatted} B' => '{nFormatted} B',
+ '{nFormatted} GB' => '{nFormatted} GB',
+ '{nFormatted} GiB' => '{nFormatted} GiB',
+ '{nFormatted} KiB' => '{nFormatted} KiB',
+ '{nFormatted} MB' => '{nFormatted} MB',
+ '{nFormatted} MiB' => '{nFormatted} MiB',
+ '{nFormatted} PB' => '{nFormatted} PB',
+ '{nFormatted} PiB' => '{nFormatted} PiB',
+ '{nFormatted} TB' => '{nFormatted} TB',
+ '{nFormatted} TiB' => '{nFormatted} TiB',
+ '{nFormatted} kB' => '{nFormatted} kB',
+ '{nFormatted} {n, plural, =1{byte} other{bytes}}' => '{nFormatted} {n, plural, one{baitas} few{baitai} other{baitų}}',
+ '{nFormatted} {n, plural, =1{gibibyte} other{gibibytes}}' => '{nFormatted} gibi{n, plural, one{baitas} few{baitai} other{baitų}}',
+ '{nFormatted} {n, plural, =1{gigabyte} other{gigabytes}}' => '{nFormatted} giga{n, plural, one{baitas} few{baitai} other{baitų}}',
+ '{nFormatted} {n, plural, =1{kibibyte} other{kibibytes}}' => '{nFormatted} kibi{n, plural, one{baitas} few{baitai} other{baitų}}',
+ '{nFormatted} {n, plural, =1{kilobyte} other{kilobytes}}' => '{nFormatted} kilo{n, plural, one{baitas} few{baitai} other{baitų}}',
+ '{nFormatted} {n, plural, =1{mebibyte} other{mebibytes}}' => '{nFormatted} mebi{n, plural, one{baitas} few{baitai} other{baitų}}',
+ '{nFormatted} {n, plural, =1{megabyte} other{megabytes}}' => '{nFormatted} mega{n, plural, one{baitas} few{baitai} other{baitų}}',
+ '{nFormatted} {n, plural, =1{pebibyte} other{pebibytes}}' => '{nFormatted} pebi{n, plural, one{baitas} few{baitai} other{baitų}}',
+ '{nFormatted} {n, plural, =1{petabyte} other{petabytes}}' => '{nFormatted} peta{n, plural, one{baitas} few{baitai} other{baitų}}',
+ '{nFormatted} {n, plural, =1{tebibyte} other{tebibytes}}' => '{nFormatted} tebi{n, plural, one{baitas} few{baitai} other{baitų}}',
+ '{nFormatted} {n, plural, =1{terabyte} other{terabytes}}' => '{nFormatted} tera{n, plural, one{baitas} few{baitai} other{baitų}}',
];
diff --git a/framework/messages/lv/yii.php b/framework/messages/lv/yii.php
index e49ca559500..2f8bcd29bd0 100644
--- a/framework/messages/lv/yii.php
+++ b/framework/messages/lv/yii.php
@@ -1,4 +1,5 @@
'{nFormatted} B',
- '{nFormatted} GB' => '{nFormatted} Gb',
- '{nFormatted} GiB' => '{nFormatted} GiB',
- '{nFormatted} kB' => '{nFormatted} kB',
- '{nFormatted} KiB' => '{nFormatted} KiB',
- '{nFormatted} MB' => '{nFormatted} MB',
- '{nFormatted} MiB' => '{nFormatted} MiB',
- '{nFormatted} PB' => '{nFormatted} PB',
- '{nFormatted} PiB' => '{nFormatted} PiB',
- '{nFormatted} TB' => '{nFormatted} TB',
- '{nFormatted} TiB' => '{nFormatted} TiB',
- '{nFormatted} {n, plural, =1{byte} other{bytes}}' => '{nFormatted} {n, plural, zero{baitu} one{baits} other{baiti}}',
- '{nFormatted} {n, plural, =1{gibibyte} other{gibibytes}}' => '{nFormatted} gibi{n, plural, zero{baitu} one{baits} other{baiti}}',
- '{nFormatted} {n, plural, =1{gigabyte} other{gigabytes}}' => '{nFormatted} giga{n, plural, zero{baitu} one{baits} other{baiti}}',
- '{nFormatted} {n, plural, =1{kibibyte} other{kibibytes}}' => '{nFormatted} kibi{n, plural, zero{baitu} one{baits} other{baiti}}',
- '{nFormatted} {n, plural, =1{kilobyte} other{kilobytes}}' => '{nFormatted} kilo{n, plural, zero{baitu} one{baits} other{baiti}}',
- '{nFormatted} {n, plural, =1{mebibyte} other{mebibytes}}' => '{nFormatted} mebi{n, plural, zero{baitu} one{baits} other{baiti}}',
- '{nFormatted} {n, plural, =1{megabyte} other{megabytes}}' => '{nFormatted} mega{n, plural, zero{baitu} one{baits} other{baiti}}',
- '{nFormatted} {n, plural, =1{pebibyte} other{pebibytes}}' => '{nFormatted} pebi{n, plural, zero{baitu} one{baits} other{baiti}}',
- '{nFormatted} {n, plural, =1{petabyte} other{petabytes}}' => '{nFormatted} peta{n, plural, zero{baitu} one{baits} other{baiti}}',
- '{nFormatted} {n, plural, =1{tebibyte} other{tebibytes}}' => '{nFormatted} tebi{n, plural, zero{baitu} one{baits} other{baiti}}',
- '{nFormatted} {n, plural, =1{terabyte} other{terabytes}}' => '{nFormatted} tera{n, plural, zero{baitu} one{baits} other{baiti}}',
+ ' and ' => ' un ',
+ '"{attribute}" does not support operator "{operator}".' => '"{attribute}" neatbalsta operātoru "{operator}".',
'(not set)' => '(nav uzstādīts)',
+ 'Action not found.' => 'Darbība nav atrasta',
+ 'Aliases available: {aliases}' => 'Pieejamie pseidonīmi: {aliases}',
'An internal server error occurred.' => 'Notika servera iekšējā kļūda.',
'Are you sure you want to delete this item?' => 'Vai jūs esat pārliecināti, ka vēlaties dzēst šo vienumu?',
+ 'Condition for "{attribute}" should be either a value or valid operator specification.' => '"{attribute}" nosacījumam jābūt vai nu vērtībai, vai derīgai operatora specifikācijai.',
'Delete' => 'Dzēst',
'Error' => 'Kļūda',
'File upload failed.' => 'Neizdevās augšupielādēt datni.',
@@ -57,23 +41,22 @@
'Missing required arguments: {params}' => 'Trūkst nepieciešamie argumenti: {params}',
'Missing required parameters: {params}' => 'Trūkst nepieciešamie parametri: {params}',
'No' => 'Nē',
- '{delta, plural, =1{1 day} other{# days}}' => '{delta, plural, zero{# dienas} one{# diena} other{# dienas}}',
- '{delta, plural, =1{1 hour} other{# hours}}' => '{delta, plural, zero{# stundas} one{# stunda} other{# stundas}}',
- '{delta, plural, =1{1 minute} other{# minutes}}' => '{delta, plural, zero{# minūtes} one{# minūte} other{# minūtes}}',
- '{delta, plural, =1{1 month} other{# months}}' => '{delta, plural, zero{# mēneši} one{# mēnesis} other{# mēneši}}',
- '{delta, plural, =1{1 second} other{# seconds}}' => '{delta, plural, zero{# sekundes} one{# sekunde} other{# sekundes}}',
- '{delta, plural, =1{1 year} other{# years}}' => '{delta, plural, zero{# gadi} one{# gads} other{# gadi}}',
'No results found.' => 'Nekas netika atrasts.',
'Only files with these MIME types are allowed: {mimeTypes}.' => 'Ir atļauts augšupielādēt datnes tikai ar šādiem MIME-tipiem: {mimeTypes}.',
'Only files with these extensions are allowed: {extensions}.' => 'Ir atļauts augšupielādēt datnes tikai ar šādiem paplašinājumiem: {extensions}.',
+ 'Operator "{operator}" must be used with a search attribute.' => 'Operātoru "{operator}" jāizmanto meklēšanas atribūtā',
+ 'Operator "{operator}" requires multiple operands.' => 'Operātoram "{operator}" nepieciešami vairāki operandi',
+ 'Options available: {options}' => 'Pieejamas opvijas: {options}',
'Page not found.' => 'Pieprasītā lapa netika atrasta.',
'Please fix the following errors:' => 'Nepieciešams izlabot šādas kļūdas:',
'Please upload a file.' => 'Lūdzu, augšupielādēt datni.',
'Showing {begin, number}-{end, number} of {totalCount, number} {totalCount, plural, one{item} other{items}}.' => 'Tiek rādīti ieraksti {begin, number}-{end, number} no {totalCount, number}.',
+ 'The combination {values} of {attributes} has already been taken.' => 'Kombinācija {values} priekš {attributes} ir jau aizņemta.',
'The file "{file}" is not an image.' => 'Saņemtā "{file}" datne nav attēls.',
'The file "{file}" is too big. Its size cannot exceed {formattedLimit}.' => 'Saņemtās "{file}" datnes izmērs pārsniedz pieļaujamo ierobežojumu {formattedLimit} apmērā.',
'The file "{file}" is too small. Its size cannot be smaller than {formattedLimit}.' => 'Saņemtās "{file}" datnes izmērs ir pārāk maza, tai ir jābūt vismaz {formattedLimit} apmērā.',
'The format of {attribute} is invalid.' => '{attribute} vērtības formāts ir nepareizs.',
+ 'The format of {filter} is invalid.' => '{filter} formāts ir kļūdains',
'The image "{file}" is too large. The height cannot be larger than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'Attēls "{file}" ir pārāk liels. Augstumam ir jābūt mazākam par {limit, number} {limit, plural, one{pikseli} other{pikseļiem}}.',
'The image "{file}" is too large. The width cannot be larger than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'Attēls "{file}" ir pārāk liels. Platumam ir jābūt mazākam par {limit, number} {limit, plural, one{pikseli} other{pikseļiem}}.',
'The image "{file}" is too small. The height cannot be smaller than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'Attēls "{file}" ir pārāk mazs. Augstumam ir jābūt lielākam par {limit, number} {limit, plural, one{pikseli} other{pikseļiem}}.',
@@ -82,67 +65,84 @@
'The verification code is incorrect.' => 'Cilvēktesta kods bija nepareizs.',
'Total {count, number} {count, plural, one{item} other{items}}.' => 'Kopā {count, number} {count, plural, zero{ierakstu} one{ieraksts} other{ieraksti}}.',
'Unable to verify your data submission.' => 'Neizdevās apstiprināt saņemtos datus.',
+ 'Unknown alias: -{name}' => 'Neatpazīts preidonīms {name}',
+ 'Unknown filter attribute "{attribute}"' => 'Neatpazīts filtra attribūts "{attribute}"',
'Unknown option: --{name}' => 'Nezināma iespēja: --{name}',
'Update' => 'Labot',
'View' => 'Apskatīt',
'Yes' => 'Jā',
'You are not allowed to perform this action.' => 'Jūs neesat autorizēts veikt šo darbību.',
'You can upload at most {limit, number} {limit, plural, one{file} other{files}}.' => 'Jūs nevarat augšupielādēt vairāk par {limit, number} {limit, plural, one{failu} other{failiem}}.',
+ 'You should upload at least {limit, number} {limit, plural, one{file} other{files}}.' => 'Jums jāaugšupielādē vismaz {limit, number} {limit, mulural, one {file} other {files}}.',
'in {delta, plural, =1{a day} other{# days}}' => 'pēc {delta, plural, =1{dienas} one{# dienas} other{# dienām}}',
'in {delta, plural, =1{a minute} other{# minutes}}' => 'pēc {delta, plural, =1{minūtes} one{# minūtes} other{# minūtēm}}',
'in {delta, plural, =1{a month} other{# months}}' => 'pēc {delta, plural, =1{mēneša} one{# mēneša} other{# mēnešiem}}',
'in {delta, plural, =1{a second} other{# seconds}}' => 'pēc {delta, plural, =1{sekundes} one{# sekundes} other{# sekundēm}}',
'in {delta, plural, =1{a year} other{# years}}' => 'pēc {delta, plural, =1{gada} one{# gada} other{# gadiem}}',
'in {delta, plural, =1{an hour} other{# hours}}' => 'pēc {delta, plural, =1{stundas} one{# stundas} other{# stundām}}',
+ 'just now' => 'tikko',
'the input value' => 'ievadītā vērtība',
'{attribute} "{value}" has already been taken.' => '{attribute} "{value}" jau ir aizņemts.',
'{attribute} cannot be blank.' => 'Ir jāaizpilda {attribute}.',
+ '{attribute} contains wrong subnet mask.' => '{attribute} satur kļūdainu apakštīklu.',
'{attribute} is invalid.' => '{attribute} vērtība ir nepareiza.',
'{attribute} is not a valid URL.' => '{attribute} vērtība nav pareiza URL formātā.',
'{attribute} is not a valid email address.' => '{attribute} vērtība nav pareizas e-pasta adreses formātā.',
+ '{attribute} is not in the allowed range.' => '{attribute} nav atļautajā diapazonā.',
'{attribute} must be "{requiredValue}".' => '{attribute} vērtībai ir jābūt vienādai ar "{requiredValue}".',
'{attribute} must be a number.' => '{attribute} vērtībai ir jābūt skaitlim.',
'{attribute} must be a string.' => '{attribute} vērtībai ir jābūt simbolu virknei.',
+ '{attribute} must be a valid IP address.' => '{attribute} jābūt derīgai IP adresei.',
+ '{attribute} must be an IP address with specified subnet.' => '{attribute} jābūt IP adresei ar norādīto apakštīklu.',
'{attribute} must be an integer.' => '{attribute} vērtībai ir jābūt veselam skaitlim.',
'{attribute} must be either "{true}" or "{false}".' => '{attribute} vērtībai ir jābūt "{true}" vai "{false}".',
+ '{attribute} must be equal to "{compareValueOrAttribute}".' => '{attribute} vērtībai ir jābūt vienādai ar "{compareValueOrAttribute}".',
'{attribute} must be greater than "{compareValueOrAttribute}".' => '{attribute} vērtībai ir jābūt lielākai par "{compareValueOrAttribute}" vērtību.',
'{attribute} must be greater than or equal to "{compareValueOrAttribute}".' => '{attribute} vērtībai ir jābūt lielākai vai vienādai ar "{compareValueOrAttribute}" vērtību.',
'{attribute} must be less than "{compareValueOrAttribute}".' => '{attribute} vērtībai ir jābūt mazākai par "{compareValueOrAttribute}" vērtību.',
'{attribute} must be less than or equal to "{compareValueOrAttribute}".' => '{attribute} vērtībai ir jābūt mazākai vai vienādai ar "{compareValueOrAttribute}" vērtību.',
'{attribute} must be no greater than {max}.' => '{attribute} vērtībai ir jābūt ne lielākai par {max}.',
'{attribute} must be no less than {min}.' => '{attribute} vērtībai ir jābūt ne mazākai par {min}.',
- '{attribute} must be equal to "{compareValueOrAttribute}".' => '{attribute} vērtībai ir jābūt vienādai ar "{compareValueOrAttribute}".',
+ '{attribute} must not be a subnet.' => '{attribute} nedrīkst būt apakštīkls.',
+ '{attribute} must not be an IPv4 address.' => '{attribute} nedrīkst būt IPv4 adrese.',
+ '{attribute} must not be an IPv6 address.' => '{attribute} nedrīkst būt IPv6 adrese.',
'{attribute} must not be equal to "{compareValueOrAttribute}".' => '{attribute} vērtība nedrīkst būt vienāda ar "{compareValueOrAttribute}" vērtību.',
'{attribute} should contain at least {min, number} {min, plural, one{character} other{characters}}.' => '{attribute} vērtībai ir jābūt ne īsākai par {min, number} {min, plural, one{simbolu} other{simboliem}}.',
'{attribute} should contain at most {max, number} {max, plural, one{character} other{characters}}.' => '{attribute} vērtībai ir jābūt ne garākai par {max, number} {max, plural, one{simbolu} other{simboliem}}.',
'{attribute} should contain {length, number} {length, plural, one{character} other{characters}}.' => '{attribute} vērtībai ir jāsastāv no {length, number} {length, plural, one{simbola} other{simboliem}}.',
+ '{compareAttribute} is invalid.' => '',
+ '{delta, plural, =1{1 day} other{# days}}' => '{delta, plural, zero{# dienas} one{# diena} other{# dienas}}',
+ '{delta, plural, =1{1 hour} other{# hours}}' => '{delta, plural, zero{# stundas} one{# stunda} other{# stundas}}',
+ '{delta, plural, =1{1 minute} other{# minutes}}' => '{delta, plural, zero{# minūtes} one{# minūte} other{# minūtes}}',
+ '{delta, plural, =1{1 month} other{# months}}' => '{delta, plural, zero{# mēneši} one{# mēnesis} other{# mēneši}}',
+ '{delta, plural, =1{1 second} other{# seconds}}' => '{delta, plural, zero{# sekundes} one{# sekunde} other{# sekundes}}',
+ '{delta, plural, =1{1 year} other{# years}}' => '{delta, plural, zero{# gadi} one{# gads} other{# gadi}}',
'{delta, plural, =1{a day} other{# days}} ago' => 'pirms {delta, plural, =1{dienas} one{# dienas} other{# dienām}}',
'{delta, plural, =1{a minute} other{# minutes}} ago' => 'pirms {delta, plural, =1{minūtes} one{# minūtes} other{# minūtēm}}',
'{delta, plural, =1{a month} other{# months}} ago' => 'pirms {delta, plural, =1{mēneša} one{# mēneša} other{# mēnešiem}}',
'{delta, plural, =1{a second} other{# seconds}} ago' => 'pirms {delta, plural, =1{sekundes} one{# sekundes} other{# sekundēm}}',
'{delta, plural, =1{a year} other{# years}} ago' => 'pirms {delta, plural, =1{gada} one{# gada} other{# gadiem}}',
'{delta, plural, =1{an hour} other{# hours}} ago' => 'pirms {delta, plural, =1{stundas} one{# stundas} other{# stundām}}',
- ' and ' => ' un ',
- '"{attribute}" does not support operator "{operator}".' => '"{attribute}" neatbalsta operātoru "{operator}".',
- 'Action not found.' => 'Darbība nav atrasta',
- 'Aliases available: {aliases}' => 'Pieejamie pseidonīmi: {aliases}',
- 'Condition for "{attribute}" should be either a value or valid operator specification.' => '"{attribute}" nosacījumam jābūt vai nu vērtībai, vai derīgai operatora specifikācijai.',
- 'Operator "{operator}" must be used with a search attribute.' => 'Operātoru "{operator}" jāizmanto meklēšanas atribūtā',
- 'Operator "{operator}" requires multiple operands.' => 'Operātoram "{operator}" nepieciešami vairāki operandi',
- 'Options available: {options}' => 'Pieejamas opvijas: {options}',
- 'Powered by {yii}' => 'Darbojas ar {yii}',
- 'The combination {values} of {attributes} has already been taken.' => 'Kombinācija {values} priekš {attributes} ir jau aizņemta.',
- 'The format of {filter} is invalid.' => '{filter} formāts ir kļūdains',
- 'Unknown alias: -{name}' => 'Neatpazīts preidonīms {name}',
- 'Unknown filter attribute "{attribute}"' => 'Neatpazīts filtra attribūts "{attribute}"',
- 'Yii Framework' => 'Yii ietvars',
- 'You should upload at least {limit, number} {limit, plural, one{file} other{files}}.' => 'Jums jāaugšupielādē vismaz {limit, number} {limit, mulural, one {file} other {files}}.',
- 'just now' => 'tikko',
- '{attribute} contains wrong subnet mask.' => '{attribute} satur kļūdainu apakštīklu.',
- '{attribute} is not in the allowed range.' => '{attribute} nav atļautajā diapazonā.',
- '{attribute} must be a valid IP address.' => '{attribute} jābūt derīgai IP adresei.',
- '{attribute} must be an IP address with specified subnet.' => '{attribute} jābūt IP adresei ar norādīto apakštīklu.',
- '{attribute} must not be a subnet.' => '{attribute} nedrīkst būt apakštīkls.',
- '{attribute} must not be an IPv4 address.' => '{attribute} nedrīkst būt IPv4 adrese.',
- '{attribute} must not be an IPv6 address.' => '{attribute} nedrīkst būt IPv6 adrese.',
+ '{nFormatted} B' => '{nFormatted} B',
+ '{nFormatted} GB' => '{nFormatted} Gb',
+ '{nFormatted} GiB' => '{nFormatted} GiB',
+ '{nFormatted} KiB' => '{nFormatted} KiB',
+ '{nFormatted} MB' => '{nFormatted} MB',
+ '{nFormatted} MiB' => '{nFormatted} MiB',
+ '{nFormatted} PB' => '{nFormatted} PB',
+ '{nFormatted} PiB' => '{nFormatted} PiB',
+ '{nFormatted} TB' => '{nFormatted} TB',
+ '{nFormatted} TiB' => '{nFormatted} TiB',
+ '{nFormatted} kB' => '{nFormatted} kB',
+ '{nFormatted} {n, plural, =1{byte} other{bytes}}' => '{nFormatted} {n, plural, zero{baitu} one{baits} other{baiti}}',
+ '{nFormatted} {n, plural, =1{gibibyte} other{gibibytes}}' => '{nFormatted} gibi{n, plural, zero{baitu} one{baits} other{baiti}}',
+ '{nFormatted} {n, plural, =1{gigabyte} other{gigabytes}}' => '{nFormatted} giga{n, plural, zero{baitu} one{baits} other{baiti}}',
+ '{nFormatted} {n, plural, =1{kibibyte} other{kibibytes}}' => '{nFormatted} kibi{n, plural, zero{baitu} one{baits} other{baiti}}',
+ '{nFormatted} {n, plural, =1{kilobyte} other{kilobytes}}' => '{nFormatted} kilo{n, plural, zero{baitu} one{baits} other{baiti}}',
+ '{nFormatted} {n, plural, =1{mebibyte} other{mebibytes}}' => '{nFormatted} mebi{n, plural, zero{baitu} one{baits} other{baiti}}',
+ '{nFormatted} {n, plural, =1{megabyte} other{megabytes}}' => '{nFormatted} mega{n, plural, zero{baitu} one{baits} other{baiti}}',
+ '{nFormatted} {n, plural, =1{pebibyte} other{pebibytes}}' => '{nFormatted} pebi{n, plural, zero{baitu} one{baits} other{baiti}}',
+ '{nFormatted} {n, plural, =1{petabyte} other{petabytes}}' => '{nFormatted} peta{n, plural, zero{baitu} one{baits} other{baiti}}',
+ '{nFormatted} {n, plural, =1{tebibyte} other{tebibytes}}' => '{nFormatted} tebi{n, plural, zero{baitu} one{baits} other{baiti}}',
+ '{nFormatted} {n, plural, =1{terabyte} other{terabytes}}' => '{nFormatted} tera{n, plural, zero{baitu} one{baits} other{baiti}}',
];
diff --git a/framework/messages/ms/yii.php b/framework/messages/ms/yii.php
index 72212cbb3ed..0fa2da9eda6 100644
--- a/framework/messages/ms/yii.php
+++ b/framework/messages/ms/yii.php
@@ -1,4 +1,5 @@
'',
+ '"{attribute}" does not support operator "{operator}".' => '',
'(not set)' => '(tidak ditetapkan)',
+ 'Action not found.' => '',
+ 'Aliases available: {aliases}' => '',
'An internal server error occurred.' => 'Ralat dalaman pelayan web telah berlaku',
'Are you sure you want to delete this item?' => 'Adakah anda pasti untuk menghapuskan item ini?',
+ 'Condition for "{attribute}" should be either a value or valid operator specification.' => '',
'Delete' => 'Padam',
'Error' => 'Ralat',
'File upload failed.' => 'Gagal memuat naik fail',
@@ -38,14 +44,19 @@
'No results found.' => 'Tiada keputusan dijumpai',
'Only files with these MIME types are allowed: {mimeTypes}.' => 'Hanya fail yang berjenis MIME dibenarkan: {mimeTypes}.',
'Only files with these extensions are allowed: {extensions}.' => 'Hanya fail yang mempunyai sambungan berikut dibenarkan: {extensions}.',
+ 'Operator "{operator}" must be used with a search attribute.' => '',
+ 'Operator "{operator}" requires multiple operands.' => '',
+ 'Options available: {options}' => '',
'Page not found.' => 'Halaman tidak dijumpai.',
'Please fix the following errors:' => 'Sila betulkan ralat berikut:',
'Please upload a file.' => 'Sila muat naik fail',
'Showing {begin, number}-{end, number} of {totalCount, number} {totalCount, plural, one{item} other{items}}.' => 'Memaparkan {begin, number}-{end, number} daripada {totalCount, number} {totalCount, plural, one{item} other{items}}.',
+ 'The combination {values} of {attributes} has already been taken.' => '',
'The file "{file}" is not an image.' => 'Fail ini "{file}" bukan berjenis gambar.',
'The file "{file}" is too big. Its size cannot exceed {formattedLimit}.' => 'Fail ini "{file}" terlalu besar. Saiz tidak boleh lebih besar daripada {formattedLimit}.',
'The file "{file}" is too small. Its size cannot be smaller than {formattedLimit}.' => 'Fail ini "{file}" terlalu kecil. Saiznya tidak boleh lebih kecil daripada {formattedLimit}.',
'The format of {attribute} is invalid.' => 'Format untuk atribut ini {attribute} tidak sah.',
+ 'The format of {filter} is invalid.' => '',
'The image "{file}" is too large. The height cannot be larger than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'Gambar "{file}" terlalu panjang. Panjang gambar tidak boleh lebih besar daripada {limit, number} {limit, plural, one{pixel} other{pixels}}.',
'The image "{file}" is too large. The width cannot be larger than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'Gambar "{file}" terlalu lebar. Gambar tidak boleh lebih lebar daripada {limit, number} {limit, plural, one{pixel} other{pixels}}.',
'The image "{file}" is too small. The height cannot be smaller than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'Gambar "{file}" terlalu singkat. Panjang tidak boleh lebih singkat daripada {limit, number} {limit, plural, one{pixel} other{pixels}}.',
@@ -54,12 +65,15 @@
'The verification code is incorrect.' => 'Kod penyesah tidak tepat.',
'Total {count, number} {count, plural, one{item} other{items}}.' => 'Jumlah {count, number} {count, plural, one{item} other{items}}.',
'Unable to verify your data submission.' => 'Tidak bejaya mengesahkan data yang dihantar.',
+ 'Unknown alias: -{name}' => '',
+ 'Unknown filter attribute "{attribute}"' => '',
'Unknown option: --{name}' => 'Pilihan lain: --{name}',
'Update' => 'Kemaskini',
'View' => 'Paparan',
'Yes' => 'Ya',
'You are not allowed to perform this action.' => 'Anda tidak dibenarkan untuk mengunakan fungsi ini.',
'You can upload at most {limit, number} {limit, plural, one{file} other{files}}.' => 'Anda boleh memuat naik tidak lebih daripada {limit, number} {limit, plural, one{file} other{files}}.',
+ 'You should upload at least {limit, number} {limit, plural, one{file} other{files}}.' => '',
'in {delta, plural, =1{a day} other{# days}}' => 'dalam {delta, plural, =1{1 hari} other{# hari}}',
'in {delta, plural, =1{a minute} other{# minutes}}' => 'dalam {delta, plural, =1{1 minit} other{# minit}}',
'in {delta, plural, =1{a month} other{# months}}' => 'dalam {delta, plural, =1{1 bulan} other{# bulan}}',
@@ -70,25 +84,39 @@
'the input value' => 'nilai input',
'{attribute} "{value}" has already been taken.' => '{attribute} "{value}" telah digunakan.',
'{attribute} cannot be blank.' => '{attribute} tidak boleh dibiarkan kosong.',
+ '{attribute} contains wrong subnet mask.' => '',
'{attribute} is invalid.' => '{attribute} tidak sah.',
'{attribute} is not a valid URL.' => '{attribute} alamat URL yang tidak sah.',
'{attribute} is not a valid email address.' => '{attribute} adalah alamat email yang tidak sah.',
+ '{attribute} is not in the allowed range.' => '',
'{attribute} must be "{requiredValue}".' => '{attribute} mestilah "{requiredValue}".',
'{attribute} must be a number.' => '{attribute} mestilah nombor.',
'{attribute} must be a string.' => '{attribute} mestilah perkataan.',
+ '{attribute} must be a valid IP address.' => '',
+ '{attribute} must be an IP address with specified subnet.' => '',
'{attribute} must be an integer.' => '{attribute} mestilah nombor tanpa titik perpuluhan.',
'{attribute} must be either "{true}" or "{false}".' => '{attribute} mestilah "{true}" atau "{false}".',
- '{attribute} must be greater than "{compareValue}".' => '{attribute} mestilah lebih besar daripada "{compareValue}".',
- '{attribute} must be greater than or equal to "{compareValue}".' => '{attribute} mestilah lebih besar atau sama dengan "{compareValue}".',
- '{attribute} must be less than "{compareValue}".' => '{attribute} mestilah kurang daripada "{compareValue}".',
- '{attribute} must be less than or equal to "{compareValue}".' => '{attribute} mestilah kurang daripada atau sama dengan "{compareValue}".',
+ '{attribute} must be equal to "{compareValueOrAttribute}".' => '',
+ '{attribute} must be greater than "{compareValueOrAttribute}".' => '{attribute} mestilah lebih besar daripada "{compareValueOrAttribute}".',
+ '{attribute} must be greater than or equal to "{compareValueOrAttribute}".' => '{attribute} mestilah lebih besar atau sama dengan "{compareValueOrAttribute}".',
+ '{attribute} must be less than "{compareValueOrAttribute}".' => '{attribute} mestilah kurang daripada "{compareValueOrAttribute}".',
+ '{attribute} must be less than or equal to "{compareValueOrAttribute}".' => '{attribute} mestilah kurang daripada atau sama dengan "{compareValueOrAttribute}".',
'{attribute} must be no greater than {max}.' => '{attribute} tidak boleh lebih besar daripada {max}.',
'{attribute} must be no less than {min}.' => '{attribute} tidak boleh kurang daripada {min}.',
- '{attribute} must be repeated exactly.' => '{attribute} mestilah diulang dengan tepat.',
- '{attribute} must not be equal to "{compareValue}".' => '{attribute} mestilah tidak sama dengan "{compareValue}".',
+ '{attribute} must not be a subnet.' => '',
+ '{attribute} must not be an IPv4 address.' => '',
+ '{attribute} must not be an IPv6 address.' => '',
+ '{attribute} must not be equal to "{compareValueOrAttribute}".' => '{attribute} mestilah tidak sama dengan "{compareValueOrAttribute}".',
'{attribute} should contain at least {min, number} {min, plural, one{character} other{characters}}.' => '{attribute} mesti mengandungi sekurang-kurangnya {min, number} {min, plural, one{character} other{characters}}.',
'{attribute} should contain at most {max, number} {max, plural, one{character} other{characters}}.' => '{attribute} mesti mengangungi paling banyak {max, number} {max, plural, one{character} other{characters}}.',
'{attribute} should contain {length, number} {length, plural, one{character} other{characters}}.' => '{attribute} mesti mengandungi {length, number} {length, plural, one{character} other{characters}}.',
+ '{compareAttribute} is invalid.' => '',
+ '{delta, plural, =1{1 day} other{# days}}' => '',
+ '{delta, plural, =1{1 hour} other{# hours}}' => '',
+ '{delta, plural, =1{1 minute} other{# minutes}}' => '',
+ '{delta, plural, =1{1 month} other{# months}}' => '',
+ '{delta, plural, =1{1 second} other{# seconds}}' => '',
+ '{delta, plural, =1{1 year} other{# years}}' => '',
'{delta, plural, =1{a day} other{# days}} ago' => '{delta, plural, =1{1 hari} other{# hari}} lalu',
'{delta, plural, =1{a minute} other{# minutes}} ago' => '{delta, plural, =1{1 minit} other{# minit}} lalu',
'{delta, plural, =1{a month} other{# months}} ago' => '{delta, plural, =1{1 bulan} other{# bulan}} lalu',
@@ -98,7 +126,6 @@
'{nFormatted} B' => '',
'{nFormatted} GB' => '',
'{nFormatted} GiB' => '',
- '{nFormatted} kB' => '',
'{nFormatted} KiB' => '',
'{nFormatted} MB' => '',
'{nFormatted} MiB' => '',
@@ -106,6 +133,7 @@
'{nFormatted} PiB' => '',
'{nFormatted} TB' => '',
'{nFormatted} TiB' => '',
+ '{nFormatted} kB' => '',
'{nFormatted} {n, plural, =1{byte} other{bytes}}' => '',
'{nFormatted} {n, plural, =1{gibibyte} other{gibibytes}}' => '',
'{nFormatted} {n, plural, =1{gigabyte} other{gigabytes}}' => '',
diff --git a/framework/messages/nb-NO/yii.php b/framework/messages/nb-NO/yii.php
index 9f9870c5e0a..8edd70d2c0f 100644
--- a/framework/messages/nb-NO/yii.php
+++ b/framework/messages/nb-NO/yii.php
@@ -1,4 +1,5 @@
'',
+ '"{attribute}" does not support operator "{operator}".' => '',
'(not set)' => '(ikke angitt)',
+ 'Action not found.' => '',
+ 'Aliases available: {aliases}' => '',
'An internal server error occurred.' => 'En intern serverfeil oppstod.',
'Are you sure you want to delete this item?' => 'Er du sikker på at du vil slette dette elementet?',
+ 'Condition for "{attribute}" should be either a value or valid operator specification.' => '',
'Delete' => 'Slett',
'Error' => 'Feil',
'File upload failed.' => 'Filopplasting feilet.',
@@ -38,14 +44,19 @@
'No results found.' => 'Ingen resultater funnet.',
'Only files with these MIME types are allowed: {mimeTypes}.' => 'Bare filer med disse MIME-typene er tillatt: {mimeTypes}.',
'Only files with these extensions are allowed: {extensions}.' => 'Bare filer med disse filendelsene er tillatt: {extensions}.',
+ 'Operator "{operator}" must be used with a search attribute.' => '',
+ 'Operator "{operator}" requires multiple operands.' => '',
+ 'Options available: {options}' => '',
'Page not found.' => 'Siden finnes ikke.',
'Please fix the following errors:' => 'Vennligs fiks følgende feil:',
'Please upload a file.' => 'Vennligs last opp en fil.',
'Showing {begin, number}-{end, number} of {totalCount, number} {totalCount, plural, one{item} other{items}}.' => 'Viser {begin, number}-{end, number} av {totalCount, number} {totalCount, plural, one{element} other{elementer}}.',
+ 'The combination {values} of {attributes} has already been taken.' => '',
'The file "{file}" is not an image.' => 'Filen "{file}" er ikke et bilde.',
'The file "{file}" is too big. Its size cannot exceed {formattedLimit}.' => 'Filen "{file}" er for stor. Størrelsen kan ikke overskride {formattedLimit}.',
'The file "{file}" is too small. Its size cannot be smaller than {formattedLimit}.' => 'Filen "{file}" er for liten. Størrelsen kan ikke være mindre enn {formattedLimit}.',
'The format of {attribute} is invalid.' => 'Formatet til {attribute} er ugyldig.',
+ 'The format of {filter} is invalid.' => '',
'The image "{file}" is too large. The height cannot be larger than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'Bildet "{file}" er for stort. Høyden kan ikke overskride {limit, number} {limit, plural, one{piksel} other{piksler}}.',
'The image "{file}" is too large. The width cannot be larger than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'Bildet "{file}" er for stort. Bredden kan ikke overskride {limit, number} {limit, plural, one{piksel} other{piksler}}.',
'The image "{file}" is too small. The height cannot be smaller than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'Bildet "{file}" er for lite. Høyden kan ikke være mindre enn {limit, number} {limit, plural, one{piksel} other{piksler}}.',
@@ -54,12 +65,15 @@
'The verification code is incorrect.' => 'Verifiseringskoden er feil.',
'Total {count, number} {count, plural, one{item} other{items}}.' => 'Totalt {count, number} {count, plural, one{element} other{elementer}}.',
'Unable to verify your data submission.' => 'Kunne ikke verifisere innsendt data.',
+ 'Unknown alias: -{name}' => '',
+ 'Unknown filter attribute "{attribute}"' => '',
'Unknown option: --{name}' => 'Ukjent alternativ: --{name}',
'Update' => 'Oppdater',
'View' => 'Vis',
'Yes' => 'Ja',
'You are not allowed to perform this action.' => 'Du har ikke tilatelse til å gjennomføre denne handlingen.',
'You can upload at most {limit, number} {limit, plural, one{file} other{files}}.' => 'Du kan laste opp maks {limit, number} {limit, plural, one{fil} other{filer}}.',
+ 'You should upload at least {limit, number} {limit, plural, one{file} other{files}}.' => '',
'in {delta, plural, =1{a day} other{# days}}' => 'om {delta, plural, =1{en dag} other{# dager}}',
'in {delta, plural, =1{a minute} other{# minutes}}' => 'om {delta, plural, =1{ett minutt} other{# minutter}}',
'in {delta, plural, =1{a month} other{# months}}' => 'om {delta, plural, =1{en måned} other{# måneder}}',
@@ -70,25 +84,39 @@
'the input value' => 'inndataverdien',
'{attribute} "{value}" has already been taken.' => '{attribute} "{value}" er allerede tatt i bruk.',
'{attribute} cannot be blank.' => '{attribute} kan ikke være tomt.',
+ '{attribute} contains wrong subnet mask.' => '',
'{attribute} is invalid.' => '{attribute} er ugyldig.',
'{attribute} is not a valid URL.' => '{attribute} er ikke en gyldig URL.',
'{attribute} is not a valid email address.' => '{attribute} er ikke en gyldig e-postadresse.',
+ '{attribute} is not in the allowed range.' => '',
'{attribute} must be "{requiredValue}".' => '{attribute} må være "{requiredValue}".',
'{attribute} must be a number.' => '{attribute} må være et nummer.',
'{attribute} must be a string.' => '{attribute} må være en tekststreng.',
+ '{attribute} must be a valid IP address.' => '',
+ '{attribute} must be an IP address with specified subnet.' => '',
'{attribute} must be an integer.' => '{attribute} må være et heltall.',
'{attribute} must be either "{true}" or "{false}".' => '{attribute} må være enten "{true}" eller "{false}".',
- '{attribute} must be greater than "{compareValue}".' => '{attribute} må være større enn "{compareValue}".',
- '{attribute} must be greater than or equal to "{compareValue}".' => '{attribute} må være større enn eller lik "{compareValue}".',
- '{attribute} must be less than "{compareValue}".' => '{attribute} må være mindre enn "{compareValue}".',
- '{attribute} must be less than or equal to "{compareValue}".' => '{attribute} må være mindre enn eller lik "{compareValue}".',
+ '{attribute} must be equal to "{compareValueOrAttribute}".' => '',
+ '{attribute} must be greater than "{compareValueOrAttribute}".' => '{attribute} må være større enn "{compareValueOrAttribute}".',
+ '{attribute} must be greater than or equal to "{compareValueOrAttribute}".' => '{attribute} må være større enn eller lik "{compareValueOrAttribute}".',
+ '{attribute} must be less than "{compareValueOrAttribute}".' => '{attribute} må være mindre enn "{compareValueOrAttribute}".',
+ '{attribute} must be less than or equal to "{compareValueOrAttribute}".' => '{attribute} må være mindre enn eller lik "{compareValueOrAttribute}".',
'{attribute} must be no greater than {max}.' => '{attribute} kan ikke være større enn {max}.',
'{attribute} must be no less than {min}.' => '{attribute} kan ikke være mindre enn {min}.',
- '{attribute} must be repeated exactly.' => '{attribute} må gjentas nøyaktig.',
- '{attribute} must not be equal to "{compareValue}".' => '{attribute} kan ikke være lik "{compareValue}".',
+ '{attribute} must not be a subnet.' => '',
+ '{attribute} must not be an IPv4 address.' => '',
+ '{attribute} must not be an IPv6 address.' => '',
+ '{attribute} must not be equal to "{compareValueOrAttribute}".' => '{attribute} kan ikke være lik "{compareValueOrAttribute}".',
'{attribute} should contain at least {min, number} {min, plural, one{character} other{characters}}.' => '{attribute} må inneholde minst {min, number} {min, plural, one{tegn} other{tegn}}.',
'{attribute} should contain at most {max, number} {max, plural, one{character} other{characters}}.' => '{attribute} kan inneholde maks {max, number} {max, plural, one{tegn} other{tegn}}.',
'{attribute} should contain {length, number} {length, plural, one{character} other{characters}}.' => '{attribute} må inneholde {length, number} {length, plural, one{tegn} other{tegn}}.',
+ '{compareAttribute} is invalid.' => '',
+ '{delta, plural, =1{1 day} other{# days}}' => '',
+ '{delta, plural, =1{1 hour} other{# hours}}' => '',
+ '{delta, plural, =1{1 minute} other{# minutes}}' => '',
+ '{delta, plural, =1{1 month} other{# months}}' => '',
+ '{delta, plural, =1{1 second} other{# seconds}}' => '',
+ '{delta, plural, =1{1 year} other{# years}}' => '',
'{delta, plural, =1{a day} other{# days}} ago' => '{delta, plural, =1{en dag} other{# dager}} siden',
'{delta, plural, =1{a minute} other{# minutes}} ago' => '{delta, plural, =1{ett minutt} other{# minutter}} siden',
'{delta, plural, =1{a month} other{# months}} ago' => '{delta, plural, =1{en måned} other{# måneder}} siden',
@@ -98,7 +126,6 @@
'{nFormatted} B' => '{nFormatted} B',
'{nFormatted} GB' => '{nFormatted} GB',
'{nFormatted} GiB' => '{nFormatted} GiB',
- '{nFormatted} kB' => '{nFormatted} kB',
'{nFormatted} KiB' => '{nFormatted} KiB',
'{nFormatted} MB' => '{nFormatted} MB',
'{nFormatted} MiB' => '{nFormatted} MiB',
@@ -106,15 +133,16 @@
'{nFormatted} PiB' => '{nFormatted} PiB',
'{nFormatted} TB' => '{nFormatted} TB',
'{nFormatted} TiB' => '{nFormatted} TiB',
+ '{nFormatted} kB' => '{nFormatted} kB',
'{nFormatted} {n, plural, =1{byte} other{bytes}}' => '{nFormatted} {n, plural, =1{byte} other{byte}}',
- '{nFormatted} {n, plural, =1{gibibyte} other{gibibyte}}' => '{nFormatted} {n, plural, =1{gibibyte} other{gibibyte}}',
- '{nFormatted} {n, plural, =1{gigabyte} other{gigabyte}}' => '{nFormatted} {n, plural, =1{gigabyte} other{gigabyte}}',
- '{nFormatted} {n, plural, =1{kibibyte} other{kibibyte}}' => '{nFormatted} {n, plural, =1{kibibyte} other{kibibyte}}',
- '{nFormatted} {n, plural, =1{kilobyte} other{kilobyte}}' => '{nFormatted} {n, plural, =1{kilobyte} other{kilobyte}}',
- '{nFormatted} {n, plural, =1{mebibyte} other{mebibyte}}' => '{nFormatted} {n, plural, =1{mebibyte} other{mebibyte}}',
- '{nFormatted} {n, plural, =1{megabyte} other{megabyte}}' => '{nFormatted} {n, plural, =1{megabyte} other{megabyte}}',
- '{nFormatted} {n, plural, =1{pebibyte} other{pebibyte}}' => '{nFormatted} {n, plural, =1{pebibyte} other{pebibyte}}',
- '{nFormatted} {n, plural, =1{petabyte} other{petabyte}}' => '{nFormatted} {n, plural, =1{petabyte} other{petabyte}}',
- '{nFormatted} {n, plural, =1{tebibyte} other{tebibyte}}' => '{nFormatted} {n, plural, =1{tebibyte} other{tebibyte}}',
- '{nFormatted} {n, plural, =1{terabyte} other{terabyte}}' => '{nFormatted} {n, plural, =1{terabyte} other{terabyte}}',
+ '{nFormatted} {n, plural, =1{gibibyte} other{gibibytes}}' => '',
+ '{nFormatted} {n, plural, =1{gigabyte} other{gigabytes}}' => '',
+ '{nFormatted} {n, plural, =1{kibibyte} other{kibibytes}}' => '',
+ '{nFormatted} {n, plural, =1{kilobyte} other{kilobytes}}' => '',
+ '{nFormatted} {n, plural, =1{mebibyte} other{mebibytes}}' => '',
+ '{nFormatted} {n, plural, =1{megabyte} other{megabytes}}' => '',
+ '{nFormatted} {n, plural, =1{pebibyte} other{pebibytes}}' => '',
+ '{nFormatted} {n, plural, =1{petabyte} other{petabytes}}' => '',
+ '{nFormatted} {n, plural, =1{tebibyte} other{tebibytes}}' => '',
+ '{nFormatted} {n, plural, =1{terabyte} other{terabytes}}' => '',
];
diff --git a/framework/messages/nl/yii.php b/framework/messages/nl/yii.php
index 24261d0520b..89d9403f8d1 100644
--- a/framework/messages/nl/yii.php
+++ b/framework/messages/nl/yii.php
@@ -1,4 +1,5 @@
'',
+ '"{attribute}" does not support operator "{operator}".' => '',
'(not set)' => '(niet ingesteld)',
+ 'Action not found.' => '',
+ 'Aliases available: {aliases}' => '',
'An internal server error occurred.' => 'Er is een interne serverfout opgetreden.',
'Are you sure you want to delete this item?' => 'Weet je zeker dat je dit item wilt verwijderen?',
+ 'Condition for "{attribute}" should be either a value or valid operator specification.' => '',
'Delete' => 'Verwijderen',
'Error' => 'Fout',
'File upload failed.' => 'Bestand uploaden mislukt.',
@@ -38,14 +44,19 @@
'No results found.' => 'Geen resultaten gevonden',
'Only files with these MIME types are allowed: {mimeTypes}.' => 'Alleen bestanden met de volgende MIME types zijn toegestaan: {mimeTypes}',
'Only files with these extensions are allowed: {extensions}.' => 'Alleen bestanden met de volgende extensies zijn toegestaan: {extensions}.',
+ 'Operator "{operator}" must be used with a search attribute.' => '',
+ 'Operator "{operator}" requires multiple operands.' => '',
+ 'Options available: {options}' => '',
'Page not found.' => 'Pagina niet gevonden.',
'Please fix the following errors:' => 'Corrigeer de volgende fouten:',
'Please upload a file.' => 'Upload een bestand.',
'Showing {begin, number}-{end, number} of {totalCount, number} {totalCount, plural, one{item} other{items}}.' => 'Resultaat {begin, number}-{end, number} van {totalCount, number} {totalCount, plural, one{item} other{items}}.',
+ 'The combination {values} of {attributes} has already been taken.' => '',
'The file "{file}" is not an image.' => 'Het bestand "{file}" is geen afbeelding.',
'The file "{file}" is too big. Its size cannot exceed {formattedLimit}.' => 'Het bestand "{file}" is te groot. Het kan niet groter zijn dan {formattedLimit}.',
'The file "{file}" is too small. Its size cannot be smaller than {formattedLimit}.' => 'Het bestand "{file}" is te klein. Het kan niet kleiner zijn dan {formattedLimit}.',
'The format of {attribute} is invalid.' => 'Het formaat van {attribute} is ongeldig',
+ 'The format of {filter} is invalid.' => '',
'The image "{file}" is too large. The height cannot be larger than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'De afbeelding "{file}" is te groot. Het mag maximaal {limit, number} {limit, plural, one{pixel} other{pixels}} hoog zijn.',
'The image "{file}" is too large. The width cannot be larger than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'De afbeelding "{file}" is te groot. Het mag maximaal {limit, number} {limit, plural, one{pixel} other{pixels}} breed zijn.',
'The image "{file}" is too small. The height cannot be smaller than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'De afbeelding "{file}" is te klein. Het moet minimaal {limit, number} {limit, plural, one{pixel} other{pixels}} hoog zijn.',
@@ -54,12 +65,15 @@
'The verification code is incorrect.' => 'De verificatiecode is onjuist.',
'Total {count, number} {count, plural, one{item} other{items}}.' => 'Totaal {count, number} {count, plural, one{item} other{items}}.',
'Unable to verify your data submission.' => 'Het is niet mogelijk uw verstrekte gegevens te verifiëren.',
+ 'Unknown alias: -{name}' => '',
+ 'Unknown filter attribute "{attribute}"' => '',
'Unknown option: --{name}' => 'Onbekende optie: --{name}',
'Update' => 'Bewerk',
'View' => 'Bekijk',
'Yes' => 'Ja',
'You are not allowed to perform this action.' => 'U bent niet gemachtigd om deze actie uit te voeren.',
'You can upload at most {limit, number} {limit, plural, one{file} other{files}}.' => 'U kunt maximaal {limit, number} {limit, plural, one{ander bestand} other{andere bestander}} uploaden.',
+ 'You should upload at least {limit, number} {limit, plural, one{file} other{files}}.' => '',
'in {delta, plural, =1{a day} other{# days}}' => 'binnen {delta, plural, =1{een dag} other{# dagen}}',
'in {delta, plural, =1{a minute} other{# minutes}}' => 'binnen {delta, plural, =1{een minuut} other{# minuten}}',
'in {delta, plural, =1{a month} other{# months}}' => 'binnen {delta, plural, =1{een maand} other{# maanden}}',
@@ -70,31 +84,39 @@
'the input value' => 'de invoerwaarde',
'{attribute} "{value}" has already been taken.' => '{attribute} "{value}" is reeds in gebruik.',
'{attribute} cannot be blank.' => '{attribute} mag niet leeg zijn.',
+ '{attribute} contains wrong subnet mask.' => '',
'{attribute} is invalid.' => '{attribute} is ongeldig.',
'{attribute} is not a valid URL.' => '{attribute} is geen geldige URL.',
'{attribute} is not a valid email address.' => '{attribute} is geen geldig emailadres.',
+ '{attribute} is not in the allowed range.' => '',
'{attribute} must be "{requiredValue}".' => '{attribute} moet "{requiredValue}" zijn.',
'{attribute} must be a number.' => '{attribute} moet een getal zijn.',
'{attribute} must be a string.' => '{attribute} moet een string zijn.',
+ '{attribute} must be a valid IP address.' => '',
+ '{attribute} must be an IP address with specified subnet.' => '',
'{attribute} must be an integer.' => '{attribute} moet een geheel getal zijn.',
'{attribute} must be either "{true}" or "{false}".' => '{attribute} moet "{true}" of "{false}" zijn.',
- '{attribute} must be greater than "{compareValue}".' => '{attribute} moet groter zijn dan "{compareValue}".',
- '{attribute} must be greater than or equal to "{compareValue}".' => '{attribute} moet groter dan of gelijk aan "{compareValue}" zijn.',
- '{attribute} must be less than "{compareValue}".' => '{attribute} moet minder zijn dan "{compareValue}".',
- '{attribute} must be less than or equal to "{compareValue}".' => '{attribute} moet minder dan of gelijk aan "{compareValue}" zijn.',
+ '{attribute} must be equal to "{compareValueOrAttribute}".' => '',
+ '{attribute} must be greater than "{compareValueOrAttribute}".' => '{attribute} moet groter zijn dan "{compareValueOrAttribute}".',
+ '{attribute} must be greater than or equal to "{compareValueOrAttribute}".' => '{attribute} moet groter dan of gelijk aan "{compareValueOrAttribute}" zijn.',
+ '{attribute} must be less than "{compareValueOrAttribute}".' => '{attribute} moet minder zijn dan "{compareValueOrAttribute}".',
+ '{attribute} must be less than or equal to "{compareValueOrAttribute}".' => '{attribute} moet minder dan of gelijk aan "{compareValueOrAttribute}" zijn.',
'{attribute} must be no greater than {max}.' => '{attribute} mag niet groter zijn dan {max}.',
'{attribute} must be no less than {min}.' => '{attribute} mag niet kleiner zijn dan {min}.',
- '{attribute} must be repeated exactly.' => '{attribute} moet exact herhaald worden.',
- '{attribute} must not be equal to "{compareValue}".' => '{attribute} mag niet gelijk zijn aan "{compareValue}".',
+ '{attribute} must not be a subnet.' => '',
+ '{attribute} must not be an IPv4 address.' => '',
+ '{attribute} must not be an IPv6 address.' => '',
+ '{attribute} must not be equal to "{compareValueOrAttribute}".' => '{attribute} mag niet gelijk zijn aan "{compareValueOrAttribute}".',
'{attribute} should contain at least {min, number} {min, plural, one{character} other{characters}}.' => '{attribute} moet minstens {min, number} {min, plural, one{karakter} other{karakters}} bevatten.',
'{attribute} should contain at most {max, number} {max, plural, one{character} other{characters}}.' => '{attribute} mag maximaal {max, number} {max, plural, one{karakter} other{karakters}} bevatten.',
'{attribute} should contain {length, number} {length, plural, one{character} other{characters}}.' => '{attribute} moet precies {min, number} {min, plural, one{karakter} other{karakters}} bevatten.',
+ '{compareAttribute} is invalid.' => '',
'{delta, plural, =1{1 day} other{# days}}' => '{delta, plural, one{# dag} other{# dagen}}',
+ '{delta, plural, =1{1 hour} other{# hours}}' => '{delta, plural, one{# uur} other{# uur}}',
'{delta, plural, =1{1 minute} other{# minutes}}' => '{delta, plural, one{# minuut} other{# minuten}}',
'{delta, plural, =1{1 month} other{# months}}' => '{delta, plural, one{# maand} other{# maanden}}',
'{delta, plural, =1{1 second} other{# seconds}}' => '{delta, plural, one{# seconde} other{# seconden}}',
'{delta, plural, =1{1 year} other{# years}}' => '{delta, plural, one{# jaar} other{# jaar}}',
- '{delta, plural, =1{1 hour} other{# hours}}' => '{delta, plural, one{# uur} other{# uur}}',
'{delta, plural, =1{a day} other{# days}} ago' => '{delta, plural, =1{een dag} other{# dagen}} geleden',
'{delta, plural, =1{a minute} other{# minutes}} ago' => '{delta, plural, =1{een minuut} other{# minuten}} geleden',
'{delta, plural, =1{a month} other{# months}} ago' => '{delta, plural, =1{een maand} other{# maanden}} geleden',
@@ -104,7 +126,6 @@
'{nFormatted} B' => '{nFormatted} B',
'{nFormatted} GB' => '{nFormatted} GB',
'{nFormatted} GiB' => '{nFormatted} GiB',
- '{nFormatted} kB' => '{nFormatted} kB',
'{nFormatted} KiB' => '{nFormatted} KiB',
'{nFormatted} MB' => '{nFormatted} MB',
'{nFormatted} MiB' => '{nFormatted} MiB',
@@ -112,6 +133,7 @@
'{nFormatted} PiB' => '{nFormatted} PiB',
'{nFormatted} TB' => '{nFormatted} TB',
'{nFormatted} TiB' => '{nFormatted} TiB',
+ '{nFormatted} kB' => '{nFormatted} kB',
'{nFormatted} {n, plural, =1{byte} other{bytes}}' => '{nFormatted} {n, plural, =1{byte} other{bytes}}',
'{nFormatted} {n, plural, =1{gibibyte} other{gibibytes}}' => '{nFormatted} {n, plural, =1{gibibyte} other{gibibytes}}',
'{nFormatted} {n, plural, =1{gigabyte} other{gigabytes}}' => '{nFormatted} {n, plural, =1{gigabyte} other{gigabytes}}',
diff --git a/framework/messages/pl/yii.php b/framework/messages/pl/yii.php
index 9bd176f5052..49972125bc8 100644
--- a/framework/messages/pl/yii.php
+++ b/framework/messages/pl/yii.php
@@ -1,4 +1,5 @@
' i ',
'"{attribute}" does not support operator "{operator}".' => 'Operator "{operator}" nie jest dozwolony dla "{attribute}".',
'(not set)' => '(brak wartości)',
+ 'Action not found.' => '',
+ 'Aliases available: {aliases}' => '',
'An internal server error occurred.' => 'Wystąpił wewnętrzny błąd serwera.',
'Are you sure you want to delete this item?' => 'Czy na pewno usunąć ten element?',
'Condition for "{attribute}" should be either a value or valid operator specification.' => 'Warunek dla "{attribute}" powinien mieć określoną wartość lub być operatorem o prawidłowej konstrukcji.',
@@ -33,27 +36,20 @@
'Error' => 'Błąd',
'File upload failed.' => 'Wgrywanie pliku nie powiodło się.',
'Home' => 'Strona domowa',
- 'in {delta, plural, =1{a day} other{# days}}' => 'za {delta, plural, =1{jeden dzień} other{# dni}}',
- 'in {delta, plural, =1{a minute} other{# minutes}}' => 'za {delta, plural, =1{minutę} few{# minuty} many{# minut} other{# minuty}}',
- 'in {delta, plural, =1{a month} other{# months}}' => 'za {delta, plural, =1{miesiąc} few{# miesiące} many{# miesięcy} other{# miesiąca}}',
- 'in {delta, plural, =1{a second} other{# seconds}}' => 'za {delta, plural, =1{sekundę} few{# sekundy} many{# sekund} other{# sekundy}}',
- 'in {delta, plural, =1{a year} other{# years}}' => 'za {delta, plural, =1{rok} few{# lata} many{# lat} other{# roku}}',
- 'in {delta, plural, =1{an hour} other{# hours}}' => 'za {delta, plural, =1{godzinę} few{# godziny} many{# godzin} other{# godziny}}',
'Invalid data received for parameter "{param}".' => 'Otrzymano nieprawidłowe dane dla parametru "{param}".',
- 'just now' => 'przed chwilą',
'Login Required' => 'Wymagane zalogowanie się',
'Missing required arguments: {params}' => 'Brak wymaganych argumentów: {params}',
'Missing required parameters: {params}' => 'Brak wymaganych parametrów: {params}',
- 'No results found.' => 'Brak wyników.',
'No' => 'Nie',
- 'Only files with these extensions are allowed: {extensions}.' => 'Dozwolone są tylko pliki z następującymi rozszerzeniami: {extensions}.',
+ 'No results found.' => 'Brak wyników.',
'Only files with these MIME types are allowed: {mimeTypes}.' => 'Dozwolone są tylko pliki z następującymi typami MIME: {mimeTypes}.',
+ 'Only files with these extensions are allowed: {extensions}.' => 'Dozwolone są tylko pliki z następującymi rozszerzeniami: {extensions}.',
'Operator "{operator}" must be used with a search attribute.' => 'Operator "{operator}" musi być użyty razem z atrybutem wyszukiwania.',
'Operator "{operator}" requires multiple operands.' => 'Operator "{operator}" wymaga więcej niż jednego argumentu.',
+ 'Options available: {options}' => '',
'Page not found.' => 'Nie odnaleziono strony.',
'Please fix the following errors:' => 'Proszę poprawić następujące błędy:',
'Please upload a file.' => 'Proszę wgrać plik.',
- 'Powered by {yii}' => 'Powered by {yii}',
'Showing {begin, number}-{end, number} of {totalCount, number} {totalCount, plural, one{item} other{items}}.' => 'Wyświetlone {begin, number}-{end, number} z {totalCount, number} {totalCount, plural, one{rekordu} other{rekordów}}.',
'The combination {values} of {attributes} has already been taken.' => 'Zestawienie {values} dla {attributes} jest już w użyciu.',
'The file "{file}" is not an image.' => 'Plik "{file}" nie jest obrazem.',
@@ -65,7 +61,6 @@
'The image "{file}" is too large. The width cannot be larger than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'Obraz "{file}" jest zbyt duży. Szerokość nie może być większa niż {limit, number} {limit, plural, one{piksela} few{pikseli} many{pikseli} other{piksela}}.',
'The image "{file}" is too small. The height cannot be smaller than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'Obraz "{file}" jest za mały. Wysokość nie może być mniejsza niż {limit, number} {limit, plural, one{piksela} few{pikseli} many{pikseli} other{piksela}}.',
'The image "{file}" is too small. The width cannot be smaller than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'Obraz "{file}" jest za mały. Szerokość nie może być mniejsza niż {limit, number} {limit, plural, one{piksela} few{pikseli} many{pikseli} other{piksela}}.',
- 'the input value' => 'wartość wejściowa',
'The requested view "{name}" was not found.' => 'Żądany widok "{name}" nie został odnaleziony.',
'The verification code is incorrect.' => 'Kod weryfikacyjny jest nieprawidłowy.',
'Total {count, number} {count, plural, one{item} other{items}}.' => 'Razem {count, number} {count, plural, one{rekord} few{rekordy} many{rekordów} other{rekordu}}.',
@@ -76,23 +71,30 @@
'Update' => 'Aktualizuj',
'View' => 'Zobacz szczegóły',
'Yes' => 'Tak',
- 'Yii Framework' => 'Yii Framework',
'You are not allowed to perform this action.' => 'Brak upoważnienia do wykonania tej czynności.',
'You can upload at most {limit, number} {limit, plural, one{file} other{files}}.' => 'Możliwe wgranie najwyżej {limit, number} {limit, plural, one{pliku} few{plików} many{plików} other{pliku}}.',
'You should upload at least {limit, number} {limit, plural, one{file} other{files}}.' => 'Należy wgrać przynajmniej {limit, number} {limit, plural, one{plik} few{pliki} many{plików} other{pliku}}.',
+ 'in {delta, plural, =1{a day} other{# days}}' => 'za {delta, plural, =1{jeden dzień} other{# dni}}',
+ 'in {delta, plural, =1{a minute} other{# minutes}}' => 'za {delta, plural, =1{minutę} few{# minuty} many{# minut} other{# minuty}}',
+ 'in {delta, plural, =1{a month} other{# months}}' => 'za {delta, plural, =1{miesiąc} few{# miesiące} many{# miesięcy} other{# miesiąca}}',
+ 'in {delta, plural, =1{a second} other{# seconds}}' => 'za {delta, plural, =1{sekundę} few{# sekundy} many{# sekund} other{# sekundy}}',
+ 'in {delta, plural, =1{a year} other{# years}}' => 'za {delta, plural, =1{rok} few{# lata} many{# lat} other{# roku}}',
+ 'in {delta, plural, =1{an hour} other{# hours}}' => 'za {delta, plural, =1{godzinę} few{# godziny} many{# godzin} other{# godziny}}',
+ 'just now' => 'przed chwilą',
+ 'the input value' => 'wartość wejściowa',
'{attribute} "{value}" has already been taken.' => '{attribute} "{value}" jest już w użyciu.',
'{attribute} cannot be blank.' => '{attribute} nie może pozostać bez wartości.',
'{attribute} contains wrong subnet mask.' => '{attribute} posiada złą maskę podsieci.',
'{attribute} is invalid.' => '{attribute} zawiera nieprawidłową wartość.',
- '{attribute} is not a valid email address.' => '{attribute} nie zawiera prawidłowego adresu email.',
'{attribute} is not a valid URL.' => '{attribute} nie zawiera prawidłowego adresu URL.',
+ '{attribute} is not a valid email address.' => '{attribute} nie zawiera prawidłowego adresu email.',
'{attribute} is not in the allowed range.' => '{attribute} nie jest w dozwolonym zakresie.',
'{attribute} must be "{requiredValue}".' => '{attribute} musi mieć wartość "{requiredValue}".',
'{attribute} must be a number.' => '{attribute} musi być liczbą.',
'{attribute} must be a string.' => '{attribute} musi być tekstem.',
'{attribute} must be a valid IP address.' => '{attribute} musi być poprawnym adresem IP.',
- '{attribute} must be an integer.' => '{attribute} musi być liczbą całkowitą.',
'{attribute} must be an IP address with specified subnet.' => '{attribute} musi być adresem IP w określonej podsieci.',
+ '{attribute} must be an integer.' => '{attribute} musi być liczbą całkowitą.',
'{attribute} must be either "{true}" or "{false}".' => '{attribute} musi mieć wartość "{true}" lub "{false}".',
'{attribute} must be equal to "{compareValueOrAttribute}".' => '{attribute} musi mieć tę samą wartość co "{compareValueOrAttribute}".',
'{attribute} must be greater than "{compareValueOrAttribute}".' => '{attribute} musi mieć wartość większą od "{compareValueOrAttribute}".',
@@ -108,6 +110,7 @@
'{attribute} should contain at least {min, number} {min, plural, one{character} other{characters}}.' => '{attribute} musi zawierać co najmniej {min, number} {min, plural, one{znak} few{znaki} many{znaków} other{znaku}}.',
'{attribute} should contain at most {max, number} {max, plural, one{character} other{characters}}.' => '{attribute} musi zawierać nie więcej niż {max, number} {max, plural, one{znak} few{znaki} many{znaków} other{znaku}}.',
'{attribute} should contain {length, number} {length, plural, one{character} other{characters}}.' => '{attribute} musi zawierać dokładnie {length, number} {length, plural, one{znak} few{znaki} many{znaków} other{znaku}}.',
+ '{compareAttribute} is invalid.' => '',
'{delta, plural, =1{1 day} other{# days}}' => '{delta, plural, =1{1 dzień} few{# dni} many{# dni} other{# dnia}}',
'{delta, plural, =1{1 hour} other{# hours}}' => '{delta, plural, =1{1 godzina} few{# godziny} many{# godzin} other{# godziny}}',
'{delta, plural, =1{1 minute} other{# minutes}}' => '{delta, plural, =1{1 minuta} few{# minuty} many{# minut} other{# minuty}}',
@@ -123,7 +126,6 @@
'{nFormatted} B' => '{nFormatted} B',
'{nFormatted} GB' => '{nFormatted} GB',
'{nFormatted} GiB' => '{nFormatted} GiB',
- '{nFormatted} kB' => '{nFormatted} kB',
'{nFormatted} KiB' => '{nFormatted} KiB',
'{nFormatted} MB' => '{nFormatted} MB',
'{nFormatted} MiB' => '{nFormatted} MiB',
@@ -131,6 +133,7 @@
'{nFormatted} PiB' => '{nFormatted} PiB',
'{nFormatted} TB' => '{nFormatted} TB',
'{nFormatted} TiB' => '{nFormatted} TiB',
+ '{nFormatted} kB' => '{nFormatted} kB',
'{nFormatted} {n, plural, =1{byte} other{bytes}}' => '{nFormatted} {n, plural, =1{bajt} few{bajty} many{bajtów} other{bajta}}',
'{nFormatted} {n, plural, =1{gibibyte} other{gibibytes}}' => '{nFormatted} {n, plural, =1{gibibajt} few{gibibajty} many{gibibajtów} other{gibibajta}}',
'{nFormatted} {n, plural, =1{gigabyte} other{gigabytes}}' => '{nFormatted} {n, plural, =1{gigabajt} few{gigabajty} many{gigabajtów} other{gigabajta}}',
diff --git a/framework/messages/pt-BR/yii.php b/framework/messages/pt-BR/yii.php
index c626562c9c8..083cd109bd3 100644
--- a/framework/messages/pt-BR/yii.php
+++ b/framework/messages/pt-BR/yii.php
@@ -1,4 +1,5 @@
'"{attribute}" não suporta o operador "{operator}".',
- 'Condition for "{attribute}" should be either a value or valid operator specification.' => 'A condição para "{attribute}" deve ser um valor ou a especificação de um operador válido.',
- 'Operator "{operator}" must be used with a search attribute.' => 'O operador "{operator}" deve ser usado com um atributo de busca.',
- 'Operator "{operator}" requires multiple operands.' => 'O operador "{operator}" requer múltiplos operandos.',
- 'The format of {filter} is invalid.' => 'O formato de {filter} é inválido.',
- 'Unknown filter attribute "{attribute}"' => 'Atributo de filtro desconhecido "{attribute}"',
- 'You should upload at least {limit, number} {limit, plural, one{file} other{files}}.' => 'Você deve enviar ao menos {limit, number} {limit, plural, one{arquivo} other{arquivos}}.',
' and ' => ' e ',
+ '"{attribute}" does not support operator "{operator}".' => '"{attribute}" não suporta o operador "{operator}".',
'(not set)' => '(não definido)',
+ 'Action not found.' => '',
+ 'Aliases available: {aliases}' => '',
'An internal server error occurred.' => 'Ocorreu um erro interno do servidor.',
'Are you sure you want to delete this item?' => 'Deseja realmente excluir este item?',
+ 'Condition for "{attribute}" should be either a value or valid operator specification.' => 'A condição para "{attribute}" deve ser um valor ou a especificação de um operador válido.',
'Delete' => 'Excluir',
'Error' => 'Erro',
'File upload failed.' => 'O upload do arquivo falhou.',
@@ -46,16 +44,19 @@
'No results found.' => 'Nenhum resultado foi encontrado.',
'Only files with these MIME types are allowed: {mimeTypes}.' => 'São permitidos somente arquivos com os seguintes tipos MIME: {mimeTypes}.',
'Only files with these extensions are allowed: {extensions}.' => 'São permitidos somente arquivos com as seguintes extensões: {extensions}.',
+ 'Operator "{operator}" must be used with a search attribute.' => 'O operador "{operator}" deve ser usado com um atributo de busca.',
+ 'Operator "{operator}" requires multiple operands.' => 'O operador "{operator}" requer múltiplos operandos.',
+ 'Options available: {options}' => '',
'Page not found.' => 'Página não encontrada.',
'Please fix the following errors:' => 'Por favor, corrija os seguintes erros:',
'Please upload a file.' => 'Por favor, faça upload de um arquivo.',
- 'Powered by {yii}' => 'Desenvolvido com {yii}',
'Showing {begin, number}-{end, number} of {totalCount, number} {totalCount, plural, one{item} other{items}}.' => 'Exibindo {begin, number}-{end, number} de {totalCount, number} {totalCount, plural, one{item} other{itens}}.',
'The combination {values} of {attributes} has already been taken.' => 'A combinação {values} de {attributes} já foi utilizado.',
'The file "{file}" is not an image.' => 'O arquivo "{file}" não é uma imagem.',
'The file "{file}" is too big. Its size cannot exceed {formattedLimit}.' => 'O arquivo "{file}" é grande demais. Seu tamanho não pode exceder {formattedLimit}.',
'The file "{file}" is too small. Its size cannot be smaller than {formattedLimit}.' => 'O arquivo "{file}" é pequeno demais. Seu tamanho não pode ser menor que {formattedLimit}.',
'The format of {attribute} is invalid.' => 'O formato de "{attribute}" é inválido.',
+ 'The format of {filter} is invalid.' => 'O formato de {filter} é inválido.',
'The image "{file}" is too large. The height cannot be larger than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'O arquivo "{file}" é grande demais. A altura não pode ser maior que {limit, number} {limit, plural, one{pixel} other{pixels}}.',
'The image "{file}" is too large. The width cannot be larger than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'O arquivo "{file}" é grande demais. A largura não pode ser maior que {limit, number} {limit, plural, one{pixel} other{pixels}}.',
'The image "{file}" is too small. The height cannot be smaller than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'O arquivo "{file}" é pequeno demais. A altura não pode ser menor que {limit, number} {limit, plural, one{pixel} other{pixels}}.',
@@ -65,13 +66,14 @@
'Total {count, number} {count, plural, one{item} other{items}}.' => 'Total {count, number} {count, plural, one{item} other{itens}}.',
'Unable to verify your data submission.' => 'Não foi possível verificar o seu envio de dados.',
'Unknown alias: -{name}' => 'Alias desconhecido: -{name}',
+ 'Unknown filter attribute "{attribute}"' => 'Atributo de filtro desconhecido "{attribute}"',
'Unknown option: --{name}' => 'Opção desconhecida : --{name}',
'Update' => 'Alterar',
'View' => 'Exibir',
'Yes' => 'Sim',
- 'Yii Framework' => 'Yii Framework',
'You are not allowed to perform this action.' => 'Você não está autorizado a realizar essa ação.',
'You can upload at most {limit, number} {limit, plural, one{file} other{files}}.' => 'Você pode fazer o upload de, no máximo, {limit, number} {limit, plural, one{arquivo} other{arquivos}}.',
+ 'You should upload at least {limit, number} {limit, plural, one{file} other{files}}.' => 'Você deve enviar ao menos {limit, number} {limit, plural, one{arquivo} other{arquivos}}.',
'in {delta, plural, =1{a day} other{# days}}' => 'em {delta, plural, =1{1 dia} other{# dias}}',
'in {delta, plural, =1{a minute} other{# minutes}}' => 'em {delta, plural, =1{1 minuto} other{# minutos}}',
'in {delta, plural, =1{a month} other{# months}}' => 'em {delta, plural, =1{1 mês} other{# meses}}',
@@ -108,6 +110,7 @@
'{attribute} should contain at least {min, number} {min, plural, one{character} other{characters}}.' => '"{attribute}" deve conter pelo menos {min, number} {min, plural, one{caractere} other{caracteres}}.',
'{attribute} should contain at most {max, number} {max, plural, one{character} other{characters}}.' => '"{attribute}" deve conter no máximo {max, number} {max, plural, one{caractere} other{caracteres}}.',
'{attribute} should contain {length, number} {length, plural, one{character} other{characters}}.' => '"{attribute}" deve conter {length, number} {length, plural, one{caractere} other{caracteres}}.',
+ '{compareAttribute} is invalid.' => '',
'{delta, plural, =1{1 day} other{# days}}' => '{delta, plural, =1{1 dia} other{# dias}}',
'{delta, plural, =1{1 hour} other{# hours}}' => '{delta, plural, =1{1 hora} other{# horas}}',
'{delta, plural, =1{1 minute} other{# minutes}}' => '{delta, plural, =1{1 minuto} other{# minutos}}',
@@ -123,7 +126,6 @@
'{nFormatted} B' => '{nFormatted} B',
'{nFormatted} GB' => '{nFormatted} GB',
'{nFormatted} GiB' => '{nFormatted} GiB',
- '{nFormatted} kB' => '{nFormatted} kB',
'{nFormatted} KiB' => '{nFormatted} KiB',
'{nFormatted} MB' => '{nFormatted} MB',
'{nFormatted} MiB' => '{nFormatted} MiB',
@@ -131,6 +133,7 @@
'{nFormatted} PiB' => '{nFormatted} PiB',
'{nFormatted} TB' => '{nFormatted} TB',
'{nFormatted} TiB' => '{nFormatted} TiB',
+ '{nFormatted} kB' => '{nFormatted} kB',
'{nFormatted} {n, plural, =1{byte} other{bytes}}' => '{nFormatted} {n, plural, =1{byte} other{bytes}}',
'{nFormatted} {n, plural, =1{gibibyte} other{gibibytes}}' => '{nFormatted} {n, plural, =1{gibibyte} other{gibibytes}}',
'{nFormatted} {n, plural, =1{gigabyte} other{gigabytes}}' => '{nFormatted} {n, plural, =1{gigabyte} other{gigabytes}}',
diff --git a/framework/messages/pt/yii.php b/framework/messages/pt/yii.php
index 4c83fc423c9..64e552b3f25 100644
--- a/framework/messages/pt/yii.php
+++ b/framework/messages/pt/yii.php
@@ -1,4 +1,5 @@
' e ',
'"{attribute}" does not support operator "{operator}".' => '"{attribute}" não suporta o operador "{operator}".',
+ '(not set)' => '(não definido)',
+ 'Action not found.' => '',
+ 'Aliases available: {aliases}' => '',
+ 'An internal server error occurred.' => 'Ocorreu um erro interno do servidor.',
'Are you sure you want to delete this item?' => 'Tens a certeza que queres apagar este item?',
'Condition for "{attribute}" should be either a value or valid operator specification.' => 'A condição para "{attribute}" tem de ser ou um valor ou uma especificação válida do operador.',
+ 'Delete' => 'Apagar',
+ 'Error' => 'Erro',
+ 'File upload failed.' => 'O upload do ficheiro falhou.',
+ 'Home' => 'Página Inicial',
+ 'Invalid data received for parameter "{param}".' => 'Dados inválidos recebidos para o parâmetro “{param}”.',
+ 'Login Required' => 'Login Necessário.',
+ 'Missing required arguments: {params}' => 'Argumentos obrigatórios em falta: {params}',
+ 'Missing required parameters: {params}' => 'Parâmetros obrigatórios em falta: {params}',
+ 'No' => 'Não',
+ 'No results found.' => 'Não foram encontrados resultados.',
'Only files with these MIME types are allowed: {mimeTypes}.' => 'Apenas ficheiros com este tipo de MIME são permitidos: {mimeTypes}.',
+ 'Only files with these extensions are allowed: {extensions}.' => 'Só são permitidos ficheiros com as seguintes extensões: {extensions}.',
'Operator "{operator}" must be used with a search attribute.' => 'O operador "{operator}" tem de ser usado com um atributo de pesquisa.',
'Operator "{operator}" requires multiple operands.' => 'O operador "{operator}" requer vários operandos.',
- 'Powered by {yii}' => 'Distribuído por {yii}',
+ 'Options available: {options}' => '',
+ 'Page not found.' => 'Página não encontrada.',
+ 'Please fix the following errors:' => 'Por favor, corrija os seguintes erros:',
+ 'Please upload a file.' => 'Por favor faça upload de um ficheiro.',
+ 'Showing {begin, number}-{end, number} of {totalCount, number} {totalCount, plural, one{item} other{items}}.' => 'A exibir {begin, number}-{end, number} de {totalCount, number} {totalCount, plural, one{item} other{itens}}.',
'The combination {values} of {attributes} has already been taken.' => 'A combinação {values} de {attributes} já está a ser utilizada.',
+ 'The file "{file}" is not an image.' => 'O ficheiro “{file}” não é uma imagem.',
+ 'The file "{file}" is too big. Its size cannot exceed {formattedLimit}.' => 'O ficheiro “{file}” é grande demais. O tamanho não pode exceder {formattedLimit}.',
+ 'The file "{file}" is too small. Its size cannot be smaller than {formattedLimit}.' => 'O ficheiro “{file}” é pequeno demais. O tamanho não pode ser menor do que {formattedLimit}.',
+ 'The format of {attribute} is invalid.' => 'O formato de “{attribute}” é inválido.',
'The format of {filter} is invalid.' => 'O formato de {filter} é inválido.',
+ 'The image "{file}" is too large. The height cannot be larger than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'O ficheiro “{file}” é grande demais. A altura não pode ser maior do que {limit, number} {limit, plural, one{pixel} other{pixels}}.',
+ 'The image "{file}" is too large. The width cannot be larger than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'O ficheiro “{file}” é grande demais. A largura não pode ser maior do que {limit, number} {limit, plural, one{pixel} other{pixels}}.',
+ 'The image "{file}" is too small. The height cannot be smaller than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'O ficheiro “{file}” é pequeno demais. A altura não pode ser menor do que {limit, number} {limit, plural, one{pixel} other{pixels}}.',
+ 'The image "{file}" is too small. The width cannot be smaller than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'O ficheiro “{file}” é pequeno demais. A largura não pode ser menor do que {limit, number} {limit, plural, one{pixel} other{pixels}}.',
'The requested view "{name}" was not found.' => 'A visualização solicitada "{name}" não foi encontrada.',
+ 'The verification code is incorrect.' => 'O código de verificação está incorreto.',
+ 'Total {count, number} {count, plural, one{item} other{items}}.' => 'Total {count, number} {count, plural, one{item} other{itens}}.',
+ 'Unable to verify your data submission.' => 'Não foi possível verificar a sua submissão de dados.',
'Unknown alias: -{name}' => 'Alias desconhecido: -{name}',
'Unknown filter attribute "{attribute}"' => 'Atributo de filtro desconhecido "{attribute}"',
+ 'Unknown option: --{name}' => 'Opção desconhecida : --{name}',
+ 'Update' => 'Atualizar',
'View' => 'Ver',
- 'Yii Framework' => 'Yii Framework',
+ 'Yes' => 'Sim',
+ 'You are not allowed to perform this action.' => 'Você não está autorizado a realizar essa ação.',
+ 'You can upload at most {limit, number} {limit, plural, one{file} other{files}}.' => 'Você pode fazer o upload de no máximo {limit, number} {limit, plural, one{ficheiro} other{ficheiros}}.',
'You should upload at least {limit, number} {limit, plural, one{file} other{files}}.' => 'A transferência deve ser pelo menos {limit, number} {limit, plural, one{ficheiro} other{ficheiros}}. ',
'in {delta, plural, =1{a day} other{# days}}' => 'em {delta, plural, =1{um dia} other{# dias}}',
'in {delta, plural, =1{a minute} other{# minutes}}' => 'em {delta, plural, =1{um minuto} other{# minutos}}',
@@ -46,19 +81,36 @@
'in {delta, plural, =1{a year} other{# years}}' => 'em {delta, plural, =1{um ano} other{# anos}}',
'in {delta, plural, =1{an hour} other{# hours}}' => 'em {delta, plural, =1{uma hora} other{# horas}}',
'just now' => 'agora mesmo',
+ 'the input value' => 'o valor de entrada',
+ '{attribute} "{value}" has already been taken.' => '{attribute} “{value}” já foi atribuido.',
+ '{attribute} cannot be blank.' => '“{attribute}” não pode ficar em branco.',
'{attribute} contains wrong subnet mask.' => '{attribute} contém uma máscara de sub-rede errada.',
+ '{attribute} is invalid.' => '“{attribute}” é inválido.',
+ '{attribute} is not a valid URL.' => '“{attribute}” não é uma URL válida.',
+ '{attribute} is not a valid email address.' => '“{attribute}” não é um endereço de e-mail válido.',
'{attribute} is not in the allowed range.' => '{attribute} não está no alcance permitido.',
+ '{attribute} must be "{requiredValue}".' => '“{attribute}” deve ser “{requiredValue}”.',
+ '{attribute} must be a number.' => '“{attribute}” deve ser um número.',
+ '{attribute} must be a string.' => '“{attribute}” deve ser uma string.',
'{attribute} must be a valid IP address.' => '{attribute} tem de ser um endereço IP válido.',
'{attribute} must be an IP address with specified subnet.' => '{attribute} tem de ser um endereço IP com a sub-rede especificada.',
+ '{attribute} must be an integer.' => '“{attribute}” deve ser um número inteiro.',
+ '{attribute} must be either "{true}" or "{false}".' => '“{attribute}” deve ser “{true}” ou “{false}”.',
'{attribute} must be equal to "{compareValueOrAttribute}".' => '{attribute} tem de ser igual a "{compareValueOrAttribute}".',
'{attribute} must be greater than "{compareValueOrAttribute}".' => '{attribute} tem de ser maior que "{compareValueOrAttribute}".',
'{attribute} must be greater than or equal to "{compareValueOrAttribute}".' => '{attribute} tem de ser maior ou igual a "{compareValueOrAttribute}".',
'{attribute} must be less than "{compareValueOrAttribute}".' => '{attribute} tem de ser menor que "{compareValueOrAttribute}".',
'{attribute} must be less than or equal to "{compareValueOrAttribute}".' => '{attribute} tem de ser menor ou igual a "{compareValueOrAttribute}".',
+ '{attribute} must be no greater than {max}.' => '“{attribute}” não pode ser maior do que {max}.',
+ '{attribute} must be no less than {min}.' => '“{attribute}” não pode ser menor do que {min}.',
'{attribute} must not be a subnet.' => '{attribute} não pode ser uma sub-rede.',
'{attribute} must not be an IPv4 address.' => '{attribute} não pode ser um endereço IPv4.',
'{attribute} must not be an IPv6 address.' => '{attribute} não pode ser um endereço IPv6.',
'{attribute} must not be equal to "{compareValueOrAttribute}".' => '{attribute} não pode ser igual a "{compareValueOrAttribute}".',
+ '{attribute} should contain at least {min, number} {min, plural, one{character} other{characters}}.' => '“{attribute}” deve conter pelo menos {min, number} {min, plural, one{caractere} other{caracteres}}.',
+ '{attribute} should contain at most {max, number} {max, plural, one{character} other{characters}}.' => '“{attribute}” deve conter no máximo {max, number} {max, plural, one{caractere} other{caracteres}}.',
+ '{attribute} should contain {length, number} {length, plural, one{character} other{characters}}.' => '“{attribute}” deve conter {length, number} {length, plural, one{caractere} other{caracteres}}.',
+ '{compareAttribute} is invalid.' => '',
'{delta, plural, =1{1 day} other{# days}}' => '{delta, plural, =1{1 dia} other{# dias}}',
'{delta, plural, =1{1 hour} other{# hours}}' => '{delta, plural, =1{1 hora} other{# horas}}',
'{delta, plural, =1{1 minute} other{# minutes}}' => '{delta, plural, =1{1 minuto} other{# minutos}}',
@@ -74,7 +126,6 @@
'{nFormatted} B' => '{nFormatted} B',
'{nFormatted} GB' => '{nFormatted} GB',
'{nFormatted} GiB' => '{nFormatted} GiB',
- '{nFormatted} kB' => '{nFormatted} kB',
'{nFormatted} KiB' => '{nFormatted} KiB',
'{nFormatted} MB' => '{nFormatted} MB',
'{nFormatted} MiB' => '{nFormatted} MiB',
@@ -82,6 +133,7 @@
'{nFormatted} PiB' => '{nFormatted} PiB',
'{nFormatted} TB' => '{nFormatted} TB',
'{nFormatted} TiB' => '{nFormatted} TiB',
+ '{nFormatted} kB' => '{nFormatted} kB',
'{nFormatted} {n, plural, =1{byte} other{bytes}}' => '{nFormatted} {n, plural, =1{byte} other{bytes}}',
'{nFormatted} {n, plural, =1{gibibyte} other{gibibytes}}' => '{nFormatted} {n, plural, =1{gibibyte} other{gibibytes}}',
'{nFormatted} {n, plural, =1{gigabyte} other{gigabytes}}' => '{nFormatted} {n, plural, =1{gigabyte} other{gigabytes}}',
@@ -93,53 +145,4 @@
'{nFormatted} {n, plural, =1{petabyte} other{petabytes}}' => '{nFormatted} {n, plural, =1{petabyte} other{petabytes}}',
'{nFormatted} {n, plural, =1{tebibyte} other{tebibytes}}' => '{nFormatted} {n, plural, =1{tebibyte} other{tebibytes}}',
'{nFormatted} {n, plural, =1{terabyte} other{terabytes}}' => '{nFormatted} {n, plural, =1{terabyte} other{terabytes}}',
- '(not set)' => '(não definido)',
- 'An internal server error occurred.' => 'Ocorreu um erro interno do servidor.',
- 'Delete' => 'Apagar',
- 'Error' => 'Erro',
- 'File upload failed.' => 'O upload do ficheiro falhou.',
- 'Home' => 'Página Inicial',
- 'Invalid data received for parameter "{param}".' => 'Dados inválidos recebidos para o parâmetro “{param}”.',
- 'Login Required' => 'Login Necessário.',
- 'Missing required arguments: {params}' => 'Argumentos obrigatórios em falta: {params}',
- 'Missing required parameters: {params}' => 'Parâmetros obrigatórios em falta: {params}',
- 'No' => 'Não',
- 'No results found.' => 'Não foram encontrados resultados.',
- 'Only files with these extensions are allowed: {extensions}.' => 'Só são permitidos ficheiros com as seguintes extensões: {extensions}.',
- 'Page not found.' => 'Página não encontrada.',
- 'Please fix the following errors:' => 'Por favor, corrija os seguintes erros:',
- 'Please upload a file.' => 'Por favor faça upload de um ficheiro.',
- 'Showing {begin, number}-{end, number} of {totalCount, number} {totalCount, plural, one{item} other{items}}.' => 'A exibir {begin, number}-{end, number} de {totalCount, number} {totalCount, plural, one{item} other{itens}}.',
- 'The file "{file}" is not an image.' => 'O ficheiro “{file}” não é uma imagem.',
- 'The file "{file}" is too big. Its size cannot exceed {formattedLimit}.' => 'O ficheiro “{file}” é grande demais. O tamanho não pode exceder {formattedLimit}.',
- 'The file "{file}" is too small. Its size cannot be smaller than {formattedLimit}.' => 'O ficheiro “{file}” é pequeno demais. O tamanho não pode ser menor do que {formattedLimit}.',
- 'The format of {attribute} is invalid.' => 'O formato de “{attribute}” é inválido.',
- 'The image "{file}" is too large. The height cannot be larger than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'O ficheiro “{file}” é grande demais. A altura não pode ser maior do que {limit, number} {limit, plural, one{pixel} other{pixels}}.',
- 'The image "{file}" is too large. The width cannot be larger than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'O ficheiro “{file}” é grande demais. A largura não pode ser maior do que {limit, number} {limit, plural, one{pixel} other{pixels}}.',
- 'The image "{file}" is too small. The height cannot be smaller than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'O ficheiro “{file}” é pequeno demais. A altura não pode ser menor do que {limit, number} {limit, plural, one{pixel} other{pixels}}.',
- 'The image "{file}" is too small. The width cannot be smaller than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'O ficheiro “{file}” é pequeno demais. A largura não pode ser menor do que {limit, number} {limit, plural, one{pixel} other{pixels}}.',
- 'The verification code is incorrect.' => 'O código de verificação está incorreto.',
- 'Total {count, number} {count, plural, one{item} other{items}}.' => 'Total {count, number} {count, plural, one{item} other{itens}}.',
- 'Unable to verify your data submission.' => 'Não foi possível verificar a sua submissão de dados.',
- 'Unknown option: --{name}' => 'Opção desconhecida : --{name}',
- 'Update' => 'Atualizar',
- 'Yes' => 'Sim',
- 'You are not allowed to perform this action.' => 'Você não está autorizado a realizar essa ação.',
- 'You can upload at most {limit, number} {limit, plural, one{file} other{files}}.' => 'Você pode fazer o upload de no máximo {limit, number} {limit, plural, one{ficheiro} other{ficheiros}}.',
- 'the input value' => 'o valor de entrada',
- '{attribute} "{value}" has already been taken.' => '{attribute} “{value}” já foi atribuido.',
- '{attribute} cannot be blank.' => '“{attribute}” não pode ficar em branco.',
- '{attribute} is invalid.' => '“{attribute}” é inválido.',
- '{attribute} is not a valid URL.' => '“{attribute}” não é uma URL válida.',
- '{attribute} is not a valid email address.' => '“{attribute}” não é um endereço de e-mail válido.',
- '{attribute} must be "{requiredValue}".' => '“{attribute}” deve ser “{requiredValue}”.',
- '{attribute} must be a number.' => '“{attribute}” deve ser um número.',
- '{attribute} must be a string.' => '“{attribute}” deve ser uma string.',
- '{attribute} must be an integer.' => '“{attribute}” deve ser um número inteiro.',
- '{attribute} must be either "{true}" or "{false}".' => '“{attribute}” deve ser “{true}” ou “{false}”.',
- '{attribute} must be no greater than {max}.' => '“{attribute}” não pode ser maior do que {max}.',
- '{attribute} must be no less than {min}.' => '“{attribute}” não pode ser menor do que {min}.',
- '{attribute} should contain at least {min, number} {min, plural, one{character} other{characters}}.' => '“{attribute}” deve conter pelo menos {min, number} {min, plural, one{caractere} other{caracteres}}.',
- '{attribute} should contain at most {max, number} {max, plural, one{character} other{characters}}.' => '“{attribute}” deve conter no máximo {max, number} {max, plural, one{caractere} other{caracteres}}.',
- '{attribute} should contain {length, number} {length, plural, one{character} other{characters}}.' => '“{attribute}” deve conter {length, number} {length, plural, one{caractere} other{caracteres}}.',
];
diff --git a/framework/messages/ro/yii.php b/framework/messages/ro/yii.php
index 6042d0bd695..4268605ff72 100644
--- a/framework/messages/ro/yii.php
+++ b/framework/messages/ro/yii.php
@@ -1,4 +1,5 @@
'',
+ '"{attribute}" does not support operator "{operator}".' => '',
'(not set)' => '(nu este setat)',
+ 'Action not found.' => '',
+ 'Aliases available: {aliases}' => '',
'An internal server error occurred.' => 'A aparut o eroare internă de server.',
+ 'Are you sure you want to delete this item?' => '',
+ 'Condition for "{attribute}" should be either a value or valid operator specification.' => '',
'Delete' => 'Șterge',
'Error' => 'Eroare',
'File upload failed.' => 'Încărcarea fișierului a eșuat.',
@@ -34,52 +41,108 @@
'Missing required arguments: {params}' => 'Lipsesc argumente obligatorii: {params}',
'Missing required parameters: {params}' => 'Lipsesc parametrii obligatori: {params}',
'No' => 'Nu',
- 'No help for unknown command "{command}".' => 'Nu sunt referințe pentru comanda necunoscută "{command}".',
- 'No help for unknown sub-command "{command}".' => 'Nu sunt referințe pentru sub-comanda necunoscută "{command}".',
'No results found.' => 'Nu a fost găsit niciun rezultat.',
+ 'Only files with these MIME types are allowed: {mimeTypes}.' => '',
'Only files with these extensions are allowed: {extensions}.' => 'Se acceptă numai fișiere cu următoarele extensii: {extensions}.',
+ 'Operator "{operator}" must be used with a search attribute.' => '',
+ 'Operator "{operator}" requires multiple operands.' => '',
+ 'Options available: {options}' => '',
'Page not found.' => 'Pagina nu a fost găsită.',
'Please fix the following errors:' => 'Vă rugăm sa corectați următoarele erori:',
'Please upload a file.' => 'Vă rugăm sa încărcați un fișier.',
'Showing {begin, number}-{end, number} of {totalCount, number} {totalCount, plural, one{item} other{items}}.' => 'Sunt afișați itemii {begin, number}-{end, number} din {totalCount, number}.',
+ 'The combination {values} of {attributes} has already been taken.' => '',
'The file "{file}" is not an image.' => 'Fișierul «{file}» nu este o imagine.',
'The file "{file}" is too big. Its size cannot exceed {formattedLimit}.' => 'Fișierul «{file}» este prea mare. Dimensiunea acestuia nu trebuie să fie mai mare de {formattedLimit}.',
'The file "{file}" is too small. Its size cannot be smaller than {formattedLimit}.' => 'Fișierul «{file}» este prea mic. Dimensiunea acestuia nu trebuie sa fie mai mică de {formattedLimit}.',
'The format of {attribute} is invalid.' => 'Formatul «{attribute}» nu este valid.',
+ 'The format of {filter} is invalid.' => '',
'The image "{file}" is too large. The height cannot be larger than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'Imaginea «{file}» este prea mare. Înălțimea nu trebuie să fie mai mare de {limit, number} {limit, plural, one{pixel} other{pixeli}}.',
'The image "{file}" is too large. The width cannot be larger than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'Imaginea «{file}» este prea mare. Lățimea nu trebuie să fie mai mare de {limit, number} {limit, plural, one{pixel} other{pixeli}}.',
'The image "{file}" is too small. The height cannot be smaller than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'Imaginea «{file}» este prea mică. Înălțimea nu trebuie să fie mai mică de {limit, number} {limit, plural, one{pixel} other{pixeli}}.',
'The image "{file}" is too small. The width cannot be smaller than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'Imaginea «{file}» este prea mică. Lățimea nu trebuie sa fie mai mică de {limit, number} {limit, plural, one{pixel} other{pixeli}}.',
+ 'The requested view "{name}" was not found.' => '',
'The verification code is incorrect.' => 'Codul de verificare este incorect.',
'Total {count, number} {count, plural, one{item} other{items}}.' => 'Total {count, number} {count, plural, one{item} other{itemi}}.',
'Unable to verify your data submission.' => 'Datele trimise nu au putut fi verificate.',
- 'Unknown command "{command}".' => 'Comandă necunoscută "{command}".',
+ 'Unknown alias: -{name}' => '',
+ 'Unknown filter attribute "{attribute}"' => '',
'Unknown option: --{name}' => 'Opțiune necunoscută : --{name}',
'Update' => 'Redactare',
'View' => 'Vizualizare',
'Yes' => 'Da',
'You are not allowed to perform this action.' => 'Nu aveți dreptul să efectuați această acțiunea.',
'You can upload at most {limit, number} {limit, plural, one{file} other{files}}.' => 'Puteți încărca maxim {limit, number} {limit, plural, one{fișier} other{fișiere}}.',
+ 'You should upload at least {limit, number} {limit, plural, one{file} other{files}}.' => '',
+ 'in {delta, plural, =1{a day} other{# days}}' => '',
+ 'in {delta, plural, =1{a minute} other{# minutes}}' => '',
+ 'in {delta, plural, =1{a month} other{# months}}' => '',
+ 'in {delta, plural, =1{a second} other{# seconds}}' => '',
+ 'in {delta, plural, =1{a year} other{# years}}' => '',
+ 'in {delta, plural, =1{an hour} other{# hours}}' => '',
+ 'just now' => '',
'the input value' => 'valoarea introdusă',
'{attribute} "{value}" has already been taken.' => '{attribute} «{value}» este deja ocupat.',
'{attribute} cannot be blank.' => '«{attribute}» nu poate fi gol.',
+ '{attribute} contains wrong subnet mask.' => '',
'{attribute} is invalid.' => '«{attribute}» este incorect.',
'{attribute} is not a valid URL.' => '«{attribute}» nu este un URL valid.',
'{attribute} is not a valid email address.' => '«{attribute}» nu este o adresă de email validă.',
+ '{attribute} is not in the allowed range.' => '',
'{attribute} must be "{requiredValue}".' => '«{attribute}» trebuie să fie «{requiredValue}».',
'{attribute} must be a number.' => '«{attribute}» trebuie să fie un număr.',
'{attribute} must be a string.' => '«{attribute}» trebuie să fie un șir de caractere.',
+ '{attribute} must be a valid IP address.' => '',
+ '{attribute} must be an IP address with specified subnet.' => '',
'{attribute} must be an integer.' => '«{attribute}» trebuie să fie un număr întreg.',
'{attribute} must be either "{true}" or "{false}".' => '«{attribute}» trebuie să fie «{true}» sau «{false}».',
- '{attribute} must be greater than "{compareValue}".' => '«{attribute}» trebuie să fie mai mare ca «{compareValue}».',
- '{attribute} must be greater than or equal to "{compareValue}".' => '«{attribute}» trebuie să fie mai mare sau egal cu «{compareValue}».',
- '{attribute} must be less than "{compareValue}".' => '«{attribute}» trebuie să fie mai mic ca «{compareValue}».',
- '{attribute} must be less than or equal to "{compareValue}".' => '«{attribute}» trebuie să fie mai mic sau egal cu «{compareValue}».',
+ '{attribute} must be equal to "{compareValueOrAttribute}".' => '',
+ '{attribute} must be greater than "{compareValueOrAttribute}".' => '«{attribute}» trebuie să fie mai mare ca «{compareValueOrAttribute}».',
+ '{attribute} must be greater than or equal to "{compareValueOrAttribute}".' => '«{attribute}» trebuie să fie mai mare sau egal cu «{compareValueOrAttribute}».',
+ '{attribute} must be less than "{compareValueOrAttribute}".' => '«{attribute}» trebuie să fie mai mic ca «{compareValueOrAttribute}».',
+ '{attribute} must be less than or equal to "{compareValueOrAttribute}".' => '«{attribute}» trebuie să fie mai mic sau egal cu «{compareValueOrAttribute}».',
'{attribute} must be no greater than {max}.' => '«{attribute}» nu trebuie să fie mai mare ca {max}.',
'{attribute} must be no less than {min}.' => '«{attribute}» nu trebuie să fie mai mic ca {min}.',
- '{attribute} must be repeated exactly.' => '«{attribute}» trebuie să fie repetat exact.',
- '{attribute} must not be equal to "{compareValue}".' => '«{attribute}» nu trebuie să fie egală cu «{compareValue}».',
+ '{attribute} must not be a subnet.' => '',
+ '{attribute} must not be an IPv4 address.' => '',
+ '{attribute} must not be an IPv6 address.' => '',
+ '{attribute} must not be equal to "{compareValueOrAttribute}".' => '«{attribute}» nu trebuie să fie egală cu «{compareValueOrAttribute}».',
'{attribute} should contain at least {min, number} {min, plural, one{character} other{characters}}.' => '«{attribute}» trebuie să conțină minim {min, number} {min, plural, one{caracter} other{caractere}}.',
'{attribute} should contain at most {max, number} {max, plural, one{character} other{characters}}.' => '«{attribute}» trebuie să conțină maxim {max, number} {max, plural, one{caracter} other{caractere}}.',
'{attribute} should contain {length, number} {length, plural, one{character} other{characters}}.' => '«{attribute}» trebuie să conțină {length, number} {length, plural, one{caracter} other{caractere}}.',
+ '{compareAttribute} is invalid.' => '',
+ '{delta, plural, =1{1 day} other{# days}}' => '',
+ '{delta, plural, =1{1 hour} other{# hours}}' => '',
+ '{delta, plural, =1{1 minute} other{# minutes}}' => '',
+ '{delta, plural, =1{1 month} other{# months}}' => '',
+ '{delta, plural, =1{1 second} other{# seconds}}' => '',
+ '{delta, plural, =1{1 year} other{# years}}' => '',
+ '{delta, plural, =1{a day} other{# days}} ago' => '',
+ '{delta, plural, =1{a minute} other{# minutes}} ago' => '',
+ '{delta, plural, =1{a month} other{# months}} ago' => '',
+ '{delta, plural, =1{a second} other{# seconds}} ago' => '',
+ '{delta, plural, =1{a year} other{# years}} ago' => '',
+ '{delta, plural, =1{an hour} other{# hours}} ago' => '',
+ '{nFormatted} B' => '',
+ '{nFormatted} GB' => '',
+ '{nFormatted} GiB' => '',
+ '{nFormatted} KiB' => '',
+ '{nFormatted} MB' => '',
+ '{nFormatted} MiB' => '',
+ '{nFormatted} PB' => '',
+ '{nFormatted} PiB' => '',
+ '{nFormatted} TB' => '',
+ '{nFormatted} TiB' => '',
+ '{nFormatted} kB' => '',
+ '{nFormatted} {n, plural, =1{byte} other{bytes}}' => '',
+ '{nFormatted} {n, plural, =1{gibibyte} other{gibibytes}}' => '',
+ '{nFormatted} {n, plural, =1{gigabyte} other{gigabytes}}' => '',
+ '{nFormatted} {n, plural, =1{kibibyte} other{kibibytes}}' => '',
+ '{nFormatted} {n, plural, =1{kilobyte} other{kilobytes}}' => '',
+ '{nFormatted} {n, plural, =1{mebibyte} other{mebibytes}}' => '',
+ '{nFormatted} {n, plural, =1{megabyte} other{megabytes}}' => '',
+ '{nFormatted} {n, plural, =1{pebibyte} other{pebibytes}}' => '',
+ '{nFormatted} {n, plural, =1{petabyte} other{petabytes}}' => '',
+ '{nFormatted} {n, plural, =1{tebibyte} other{tebibytes}}' => '',
+ '{nFormatted} {n, plural, =1{terabyte} other{terabytes}}' => '',
];
diff --git a/framework/messages/ru/yii.php b/framework/messages/ru/yii.php
index 31b27234323..e987ac21b6d 100644
--- a/framework/messages/ru/yii.php
+++ b/framework/messages/ru/yii.php
@@ -1,4 +1,5 @@
' и ',
'"{attribute}" does not support operator "{operator}".' => '"{attribute}" не поддерживает оператор "{operator}".',
'(not set)' => '(не задано)',
+ 'Action not found.' => '',
+ 'Aliases available: {aliases}' => '',
'An internal server error occurred.' => 'Возникла внутренняя ошибка сервера.',
'Are you sure you want to delete this item?' => 'Вы уверены, что хотите удалить этот элемент?',
'Condition for "{attribute}" should be either a value or valid operator specification.' => 'Условие для "{attribute}" должно быть или значением или верной спецификацией оператора.',
@@ -43,10 +46,10 @@
'Only files with these extensions are allowed: {extensions}.' => 'Разрешена загрузка файлов только со следующими расширениями: {extensions}.',
'Operator "{operator}" must be used with a search attribute.' => 'Оператор "{operator}" должен использоваться через атрибут поиска.',
'Operator "{operator}" requires multiple operands.' => 'Оператор "{operator}" требует несколько операндов.',
+ 'Options available: {options}' => '',
'Page not found.' => 'Страница не найдена.',
'Please fix the following errors:' => 'Исправьте следующие ошибки:',
'Please upload a file.' => 'Загрузите файл.',
- 'Powered by {yii}' => 'Работает на {yii}',
'Showing {begin, number}-{end, number} of {totalCount, number} {totalCount, plural, one{item} other{items}}.' => 'Показаны записи {begin, number}-{end, number} из {totalCount, number}.',
'The combination {values} of {attributes} has already been taken.' => 'Комбинация {values} параметров {attributes} уже существует.',
'The file "{file}" is not an image.' => 'Файл «{file}» не является изображением.',
@@ -68,9 +71,9 @@
'Update' => 'Редактировать',
'View' => 'Просмотр',
'Yes' => 'Да',
- 'Yii Framework' => 'Yii Framework',
'You are not allowed to perform this action.' => 'Вам не разрешено производить данное действие.',
'You can upload at most {limit, number} {limit, plural, one{file} other{files}}.' => 'Вы не можете загружать более {limit, number} {limit, plural, one{файла} few{файлов} many{файлов} other{файла}}.',
+ 'You should upload at least {limit, number} {limit, plural, one{file} other{files}}.' => 'Вы должны загрузить как минимум {limit, number} {limit, plural, one{файл} few{файла} many{файлов} other{файла}}.',
'in {delta, plural, =1{a day} other{# days}}' => 'через {delta, plural, =1{день} one{# день} few{# дня} many{# дней} other{# дня}}',
'in {delta, plural, =1{a minute} other{# minutes}}' => 'через {delta, plural, =1{минуту} one{# минуту} few{# минуты} many{# минут} other{# минуты}}',
'in {delta, plural, =1{a month} other{# months}}' => 'через {delta, plural, =1{месяц} one{# месяц} few{# месяца} many{# месяцев} other{# месяца}}',
@@ -107,6 +110,7 @@
'{attribute} should contain at least {min, number} {min, plural, one{character} other{characters}}.' => 'Значение «{attribute}» должно содержать минимум {min, number} {min, plural, one{символ} few{символа} many{символов} other{символа}}.',
'{attribute} should contain at most {max, number} {max, plural, one{character} other{characters}}.' => 'Значение «{attribute}» должно содержать максимум {max, number} {max, plural, one{символ} few{символа} many{символов} other{символа}}.',
'{attribute} should contain {length, number} {length, plural, one{character} other{characters}}.' => 'Значение «{attribute}» должно содержать {length, number} {length, plural, one{символ} few{символа} many{символов} other{символа}}.',
+ '{compareAttribute} is invalid.' => '',
'{delta, plural, =1{1 day} other{# days}}' => '{delta, plural, one{# день} few{# дня} many{# дней} other{# дня}}',
'{delta, plural, =1{1 hour} other{# hours}}' => '{delta, plural, one{# час} few{# часа} many{# часов} other{# часа}}',
'{delta, plural, =1{1 minute} other{# minutes}}' => '{delta, plural, one{# минута} few{# минуты} many{# минут} other{# минуты}}',
@@ -122,7 +126,6 @@
'{nFormatted} B' => '{nFormatted} Б',
'{nFormatted} GB' => '{nFormatted} ГБ',
'{nFormatted} GiB' => '{nFormatted} ГиБ',
- '{nFormatted} kB' => '{nFormatted} КБ',
'{nFormatted} KiB' => '{nFormatted} КиБ',
'{nFormatted} MB' => '{nFormatted} МБ',
'{nFormatted} MiB' => '{nFormatted} МиБ',
@@ -130,6 +133,7 @@
'{nFormatted} PiB' => '{nFormatted} ПиБ',
'{nFormatted} TB' => '{nFormatted} ТБ',
'{nFormatted} TiB' => '{nFormatted} ТиБ',
+ '{nFormatted} kB' => '{nFormatted} КБ',
'{nFormatted} {n, plural, =1{byte} other{bytes}}' => '{nFormatted} {n, plural, one{байт} few{байта} many{байтов} other{байта}}',
'{nFormatted} {n, plural, =1{gibibyte} other{gibibytes}}' => '{nFormatted} {n, plural, one{гибибайт} few{гибибайта} many{гибибайтов} other{гибибайта}}',
'{nFormatted} {n, plural, =1{gigabyte} other{gigabytes}}' => '{nFormatted} {n, plural, one{гигабайт} few{гигабайта} many{гигабайтов} other{гигабайта}}',
@@ -141,5 +145,4 @@
'{nFormatted} {n, plural, =1{petabyte} other{petabytes}}' => '{nFormatted} {n, plural, one{петабайт} few{петабайта} many{петабайтов} other{петабайта}}',
'{nFormatted} {n, plural, =1{tebibyte} other{tebibytes}}' => '{nFormatted} {n, plural, one{тебибайт} few{тебибайта} many{тебибайтов} other{тебибайта}}',
'{nFormatted} {n, plural, =1{terabyte} other{terabytes}}' => '{nFormatted} {n, plural, one{терабайт} few{терабайта} many{терабайтов} other{терабайта}}',
- 'You should upload at least {limit, number} {limit, plural, one{file} other{files}}.' => 'Вы должны загрузить как минимум {limit, number} {limit, plural, one{файл} few{файла} many{файлов} other{файла}}.',
];
diff --git a/framework/messages/sk/yii.php b/framework/messages/sk/yii.php
index 28aaaa78de1..20aa403344d 100644
--- a/framework/messages/sk/yii.php
+++ b/framework/messages/sk/yii.php
@@ -1,4 +1,5 @@
' a ',
'"{attribute}" does not support operator "{operator}".' => '"{attribute}" nepodporuje operátor "{operator}".',
'(not set)' => '(nie je nastavené)',
+ 'Action not found.' => 'Akcia nebola nájdená.',
+ 'Aliases available: {aliases}' => 'Dostupné aliasy: {aliases}',
'An internal server error occurred.' => 'Vyskytla sa interná chyba servera.',
'Are you sure you want to delete this item?' => 'Skutočne chcete odstrániť tento záznam?',
'Condition for "{attribute}" should be either a value or valid operator specification.' => 'Podmienkou pre "{attribute}" by mala byť hodnota alebo platná špecifikácia operátora.',
@@ -43,10 +46,10 @@
'Only files with these extensions are allowed: {extensions}.' => 'Povolené sú len súbory s nasledovnými príponami: {extensions}.',
'Operator "{operator}" must be used with a search attribute.' => 'Operátor "{operator}" musí byť použitý s atribútom vyhľadávania.',
'Operator "{operator}" requires multiple operands.' => 'Operátor "{operator}" vyžaduje viac operandov.',
+ 'Options available: {options}' => 'Dostupné možnosti: {options}',
'Page not found.' => 'Stránka nebola nájdená.',
'Please fix the following errors:' => 'Opravte prosím nasledujúce chyby:',
'Please upload a file.' => 'Nahrajte prosím súbor.',
- 'Powered by {yii}' => 'Beží na {yii}',
'Showing {begin, number}-{end, number} of {totalCount, number} {totalCount, plural, one{item} other{items}}.' => 'Zobrazujem {begin, number}-{end, number} z {totalCount, number} záznamov.',
'The combination {values} of {attributes} has already been taken.' => 'Kombinácia {values} pre {attributes} je už použitá.',
'The file "{file}" is not an image.' => 'Súbor "{file}" nie je obrázok.',
@@ -68,7 +71,6 @@
'Update' => 'Upraviť',
'View' => 'Náhľad',
'Yes' => 'Áno',
- 'Yii Framework' => 'Yii Framework',
'You are not allowed to perform this action.' => 'Nemáte oprávnenie pre požadovanú akciu.',
'You can upload at most {limit, number} {limit, plural, one{file} other{files}}.' => 'Nahrať môžete najviac {limit, number} {limit, plural, =1{súbor} =2{súbory} =3{súbory} =4{súbory} other{súborov}}.',
'You should upload at least {limit, number} {limit, plural, one{file} other{files}}.' => 'Je potrebné nahrať aspoň {limit, number} {limit, plural, =1{súbor} =2{súbory} =3{súbory} =4{súbory} other{súborov}}.',
@@ -108,6 +110,7 @@
'{attribute} should contain at least {min, number} {min, plural, one{character} other{characters}}.' => '{attribute} musí obsahovať aspoň {min, number} {min, plural, =1{znak} =2{znaky} =3{znaky} =4{znaky} other{znakov}}.',
'{attribute} should contain at most {max, number} {max, plural, one{character} other{characters}}.' => '{attribute} môže obsahovať najviac {max, number} {max, plural, =1{znak} =2{znaky} =3{znaky} =4{znaky} other{znakov}}.',
'{attribute} should contain {length, number} {length, plural, one{character} other{characters}}.' => '{attribute} musí obsahovať {length, number} {length, plural, =1{znak} =2{znaky} =3{znaky} =4{znaky} other{znakov}}.',
+ '{compareAttribute} is invalid.' => '',
'{delta, plural, =1{1 day} other{# days}}' => '{delta, plural, =1{1 deň} =2{2 dni} =3{3 dni} =4{4 dni} other{# dní}}',
'{delta, plural, =1{1 hour} other{# hours}}' => '{delta, plural, =1{1 hodina} =2{2 hodiny} =3{3 hodiny} =4{4 hodiny} other{# hodín}}',
'{delta, plural, =1{1 minute} other{# minutes}}' => '{delta, plural, =1{1 minúta} =2{2 minúty} =3{3 minúty} =4{4 minúty} other{# minút}}',
@@ -142,7 +145,4 @@
'{nFormatted} {n, plural, =1{petabyte} other{petabytes}}' => '{nFormatted} {n, plural, =1{petabajt} =2{petabajty} =3{petabajty} =4{petabajty} other{petabajtov}}',
'{nFormatted} {n, plural, =1{tebibyte} other{tebibytes}}' => '{nFormatted} {n, plural, =1{tebibajt} =2{tebibajty} =3{tebibajty} =4{tebibajty} other{tebibajtov}}',
'{nFormatted} {n, plural, =1{terabyte} other{terabytes}}' => '{nFormatted} {n, plural, =1{terabajt} =2{terabajty} =3{terabajty} =4{terabajty} other{terabajtov}}',
- 'Action not found.' => 'Akcia nebola nájdená.',
- 'Aliases available: {aliases}' => 'Dostupné aliasy: {aliases}',
- 'Options available: {options}' => 'Dostupné možnosti: {options}',
];
diff --git a/framework/messages/sl/yii.php b/framework/messages/sl/yii.php
index 7fa542489bb..24c94838759 100644
--- a/framework/messages/sl/yii.php
+++ b/framework/messages/sl/yii.php
@@ -1,4 +1,5 @@
'ravno zdaj',
+ ' and ' => '',
+ '"{attribute}" does not support operator "{operator}".' => '',
'(not set)' => '(ni nastavljeno)',
+ 'Action not found.' => '',
+ 'Aliases available: {aliases}' => '',
'An internal server error occurred.' => 'Prišlo je do notranje napake na strežniku.',
'Are you sure you want to delete this item?' => 'Ste prepričani, da želite izbrisati ta element?',
+ 'Condition for "{attribute}" should be either a value or valid operator specification.' => '',
'Delete' => 'Izbrišite',
'Error' => 'Napaka',
'File upload failed.' => 'Nalaganje datoteke ni bilo uspešno.',
@@ -36,19 +41,22 @@
'Missing required arguments: {params}' => 'Manjkajo zahtevani argumenti: {params}',
'Missing required parameters: {params}' => 'Manjkajo zahtevani parametri: {params}',
'No' => 'Ne',
- 'No help for unknown command "{command}".' => 'Pomoči za neznani ukaz "{command}" ni mogoče najti.',
- 'No help for unknown sub-command "{command}".' => 'Pomoči za neznani pod-ukaz "{command}" ni mogoče najti.',
'No results found.' => 'Rezultatov ni bilo mogoče najti.',
'Only files with these MIME types are allowed: {mimeTypes}.' => 'Dovoljene so samo datoteke s temi MIME tipi: {mimeTypes}.',
'Only files with these extensions are allowed: {extensions}.' => 'Dovoljene so samo datoteke s temi končnicami: {extensions}.',
+ 'Operator "{operator}" must be used with a search attribute.' => '',
+ 'Operator "{operator}" requires multiple operands.' => '',
+ 'Options available: {options}' => '',
'Page not found.' => 'Strani ni mogoče najti.',
'Please fix the following errors:' => 'Prosimo, popravite sledeče napake:',
'Please upload a file.' => 'Prosimo, naložite datoteko.',
'Showing {begin, number}-{end, number} of {totalCount, number} {totalCount, plural, one{item} other{items}}.' => 'Prikaz {begin, number}-{end, number} od {totalCount, number} {totalCount, plural, one{Element} two{Elementa} few{Elementi} other{Elementov}}.',
+ 'The combination {values} of {attributes} has already been taken.' => '',
'The file "{file}" is not an image.' => 'Datoteka "{file}" ni slika.',
'The file "{file}" is too big. Its size cannot exceed {formattedLimit}.' => 'Datoteka "{file}" je prevelika. Njena velikost {formattedLimit}.',
'The file "{file}" is too small. Its size cannot be smaller than {formattedLimit}.' => 'Datoteka "{file}" je premajhna. Njena velikost ne sme biti manjša od {formattedLimit}.',
'The format of {attribute} is invalid.' => 'Format {attribute} ni veljaven.',
+ 'The format of {filter} is invalid.' => '',
'The image "{file}" is too large. The height cannot be larger than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'Slika "{file}" je prevelika. Višina ne sme biti večja od {limit, number} {limit, plural, one{piksla} other{pikslov}}.',
'The image "{file}" is too large. The width cannot be larger than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'Slika "{file}" je prevelika. Širina ne sme biti večja od {limit, number} {limit, plural, one{piksla} other{pikslov}}.',
'The image "{file}" is too small. The height cannot be smaller than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'Slika "{file}" je premajhna. Višina ne sme biti manjša od {limit, number} {limit, plural, one{piksla} other{pikslov}}.',
@@ -57,41 +65,58 @@
'The verification code is incorrect.' => 'Koda za preverjanje je napačna.',
'Total {count, number} {count, plural, one{item} other{items}}.' => 'Skupaj {count, number} {count, plural, one{element} two{elementa} few{elementi} other{elementov}}.',
'Unable to verify your data submission.' => 'Preverjanje vaših poslanih podatkov ni uspelo.',
- 'Unknown command "{command}".' => 'Neznani ukaz "{command}".',
+ 'Unknown alias: -{name}' => '',
+ 'Unknown filter attribute "{attribute}"' => '',
'Unknown option: --{name}' => 'Neznana opcija: --{name}',
'Update' => 'Posodobitev',
'View' => 'Pogled',
'Yes' => 'Da',
'You are not allowed to perform this action.' => 'Ta akcija ni dovoljena za izvajanje.',
'You can upload at most {limit, number} {limit, plural, one{file} other{files}}.' => 'Naložite lahko največ {limit, number} {limit, plural, one{datoteko} two{datoteki} few{datoteke} other{datotek}}.',
+ 'You should upload at least {limit, number} {limit, plural, one{file} other{files}}.' => '',
'in {delta, plural, =1{a day} other{# days}}' => 'v {delta, plural, one{# dnevu} other{# dneh}}',
'in {delta, plural, =1{a minute} other{# minutes}}' => 'v {delta, plural, one{# minuti} other{# minutah}}',
'in {delta, plural, =1{a month} other{# months}}' => 'v {delta, plural, one{# mesecu} other{# mesecih}}',
'in {delta, plural, =1{a second} other{# seconds}}' => 'v {delta, plural, one{# sekundi} other{# sekundah}}',
'in {delta, plural, =1{a year} other{# years}}' => 'v {delta, plural, one{# letu} other{# letih}}',
'in {delta, plural, =1{an hour} other{# hours}}' => 'v {delta, plural, one{# uri} other{# urah}}',
+ 'just now' => 'ravno zdaj',
'the input value' => 'vhodna vrednost',
'{attribute} "{value}" has already been taken.' => 'Atribut {attribute} "{value}" je že nastavljen.',
'{attribute} cannot be blank.' => 'Atribut {attribute} ne more biti prazen',
+ '{attribute} contains wrong subnet mask.' => '',
'{attribute} is invalid.' => 'Atribut {attribute} je neveljaven.',
'{attribute} is not a valid URL.' => 'Atribut {attribute} ni veljaven URL.',
'{attribute} is not a valid email address.' => 'Atribut {attribute} ni veljaven e-poštni naslov.',
+ '{attribute} is not in the allowed range.' => '',
'{attribute} must be "{requiredValue}".' => '{attribute} mora biti "{requiredValue}".',
'{attribute} must be a number.' => '{attribute} mora biti število.',
'{attribute} must be a string.' => '{attribute} mora biti niz.',
+ '{attribute} must be a valid IP address.' => '',
+ '{attribute} must be an IP address with specified subnet.' => '',
'{attribute} must be an integer.' => '{attribute} mora biti celo število.',
'{attribute} must be either "{true}" or "{false}".' => '{attribute} mora biti ali "{true}" ali "{false}".',
- '{attribute} must be greater than "{compareValue}".' => 'Atribut {attribute} mora biti večji od "{compareValue}".',
- '{attribute} must be greater than or equal to "{compareValue}".' => 'Atribut {attribute} mora biti večji ali enak "{compareValue}".',
- '{attribute} must be less than "{compareValue}".' => 'Atribut {attribute} mora biti manjši od "{compareValue}".',
- '{attribute} must be less than or equal to "{compareValue}".' => 'Atribut {attribute} mora biti manjši ali enak "{compareValue}".',
+ '{attribute} must be equal to "{compareValueOrAttribute}".' => '',
+ '{attribute} must be greater than "{compareValueOrAttribute}".' => 'Atribut {attribute} mora biti večji od "{compareValueOrAttribute}".',
+ '{attribute} must be greater than or equal to "{compareValueOrAttribute}".' => 'Atribut {attribute} mora biti večji ali enak "{compareValueOrAttribute}".',
+ '{attribute} must be less than "{compareValueOrAttribute}".' => 'Atribut {attribute} mora biti manjši od "{compareValueOrAttribute}".',
+ '{attribute} must be less than or equal to "{compareValueOrAttribute}".' => 'Atribut {attribute} mora biti manjši ali enak "{compareValueOrAttribute}".',
'{attribute} must be no greater than {max}.' => 'Atribut {attribute} ne sme biti večji od {max}',
'{attribute} must be no less than {min}.' => 'Atribut {attribute} ne sme biti manjši od {min}.',
- '{attribute} must be repeated exactly.' => 'Atribut {attribute} mora biti točno ponovljen.',
- '{attribute} must not be equal to "{compareValue}".' => 'Atribut {attribute} ne sme biti enak "{compareValue}".',
+ '{attribute} must not be a subnet.' => '',
+ '{attribute} must not be an IPv4 address.' => '',
+ '{attribute} must not be an IPv6 address.' => '',
+ '{attribute} must not be equal to "{compareValueOrAttribute}".' => 'Atribut {attribute} ne sme biti enak "{compareValueOrAttribute}".',
'{attribute} should contain at least {min, number} {min, plural, one{character} other{characters}}.' => 'Atribut {attribute} mora vsebovati vsaj {min, number} {min, plural, one{znak} two{znaka} few{znake} other{znakov}}.',
'{attribute} should contain at most {max, number} {max, plural, one{character} other{characters}}.' => 'Atribut {attribute} mora vsebovati največ {max, number} {max, plural, one{znak} two{znaka} few{znake} other{znakov}}.',
'{attribute} should contain {length, number} {length, plural, one{character} other{characters}}.' => 'Atribut {attribute} mora vsebovati {length, number} {length, plural, one{znak} two{znaka} few{znake} other{znakov}}.',
+ '{compareAttribute} is invalid.' => '',
+ '{delta, plural, =1{1 day} other{# days}}' => '',
+ '{delta, plural, =1{1 hour} other{# hours}}' => '',
+ '{delta, plural, =1{1 minute} other{# minutes}}' => '',
+ '{delta, plural, =1{1 month} other{# months}}' => '',
+ '{delta, plural, =1{1 second} other{# seconds}}' => '',
+ '{delta, plural, =1{1 year} other{# years}}' => '',
'{delta, plural, =1{a day} other{# days}} ago' => 'pred {delta, plural, one{# dnevom} two{# dnevoma} other{# dnevi}}',
'{delta, plural, =1{a minute} other{# minutes}} ago' => 'pred {delta, plural, one{# minuto} two{# minutama} other{# minutami}}',
'{delta, plural, =1{a month} other{# months}} ago' => 'pred {delta, plural, one{# mesecem} two{# mesecema} other{# meseci}}',
@@ -101,7 +126,6 @@
'{nFormatted} B' => '{nFormatted} B',
'{nFormatted} GB' => '{nFormatted} GB',
'{nFormatted} GiB' => '{nFormatted} GiB',
- '{nFormatted} kB' => '{nFormatted} kB',
'{nFormatted} KiB' => '{nFormatted} KiB',
'{nFormatted} MB' => '{nFormatted} MB',
'{nFormatted} MiB' => '{nFormatted} MiB',
@@ -109,6 +133,7 @@
'{nFormatted} PiB' => '{nFormatted} PiB',
'{nFormatted} TB' => '{nFormatted} TB',
'{nFormatted} TiB' => '{nFormatted} TiB',
+ '{nFormatted} kB' => '{nFormatted} kB',
'{nFormatted} {n, plural, =1{byte} other{bytes}}' => '{nFormatted} {n, plural, one{bajt} two{bajta} few{bajti} other{bajtov}}',
'{nFormatted} {n, plural, =1{gibibyte} other{gibibytes}}' => '{nFormatted} {n, plural, one{gibibajt} two{gibibajta} few{gibibajti} other{gibibajtov}}',
'{nFormatted} {n, plural, =1{gigabyte} other{gigabytes}}' => '{nFormatted} {n, plural, one{gigabajt} two{gigabajta} few{gigabajti} other{gigabajtov}}',
diff --git a/framework/messages/sr-Latn/yii.php b/framework/messages/sr-Latn/yii.php
index e4467b9a679..e31c9c89243 100644
--- a/framework/messages/sr-Latn/yii.php
+++ b/framework/messages/sr-Latn/yii.php
@@ -1,4 +1,5 @@
'upravo sada',
- 'Only files with these MIME types are allowed: {mimeTypes}.' => 'Samo sledeći MIME tipovi su dozvoljeni: {mimeTypes}.',
- 'The requested view "{name}" was not found.' => 'Traženi prikaz "{name}" nije pronađen.',
- 'in {delta, plural, =1{a day} other{# days}}' => 'za {delta, plural, =1{dan} one{# dan} few{# dana} many{# dana} other{# dana}}',
- 'in {delta, plural, =1{a minute} other{# minutes}}' => 'za {delta, plural, =1{minut} one{# minut} few{# minuta} many{# minuta} other{# minuta}}',
- 'in {delta, plural, =1{a month} other{# months}}' => 'za {delta, plural, =1{mesec} one{# mesec} few{# meseca} many{# meseci} other{# meseci}}',
- 'in {delta, plural, =1{a second} other{# seconds}}' => 'za {delta, plural, =1{sekundu} one{# sekundu} few{# sekunde} many{# sekundi} other{# sekundi}}',
- 'in {delta, plural, =1{a year} other{# years}}' => 'za {delta, plural, =1{godinu} one{# godinu} few{# godine} many{# godina} other{# godina}}',
- 'in {delta, plural, =1{an hour} other{# hours}}' => 'za {delta, plural, =1{sat} one{# sat} few{# sata} many{# sati} other{# sati}}',
- '{delta, plural, =1{a day} other{# days}} ago' => 'pre {delta, plural, =1{dan} one{# dan} few{# dana} many{# dana} other{# dana}}',
- '{delta, plural, =1{a minute} other{# minutes}} ago' => 'pre {delta, plural, =1{minut} one{# minut} few{# minuta} many{# minuta} other{# minuta}}',
- '{delta, plural, =1{a month} other{# months}} ago' => 'pre {delta, plural, =1{mesec} one{# meseca} few{# meseca} many{# meseci} other{# meseci}}',
- '{delta, plural, =1{a second} other{# seconds}} ago' => 'pre {delta, plural, =1{sekundu} one{# sekunde} few{# sekunde} many{# sekundi} other{# sekundi}}',
- '{delta, plural, =1{a year} other{# years}} ago' => 'pre {delta, plural, =1{godinu} one{# godine} few{# godine} many{# godina} other{# godina}}',
- '{delta, plural, =1{an hour} other{# hours}} ago' => 'pre {delta, plural, =1{sat} one{# sat} few{# sata} many{# sati} other{# sati}}',
- '{n, plural, =1{# byte} other{# bytes}}' => '{n, plural, one{# bajt} few{# bajta} many{# bajtova} other{# bajta}}',
- '{n, plural, =1{# gigabyte} other{# gigabytes}}' => '{n, plural, one{# gigabajt} few{# gigabajta} many{# gigabajta} other{# gigabajta}}',
- '{n, plural, =1{# kilobyte} other{# kilobytes}}' => '{n, plural, one{# kilobajt} few{# kilobajta} many{# kilobajta} other{# kilobajta}}',
- '{n, plural, =1{# megabyte} other{# megabytes}}' => '{n, plural, one{# megabajt} few{# megabajta} many{# megabajta} other{# megabajta}}',
- '{n, plural, =1{# petabyte} other{# petabytes}}' => '{n, plural, one{# petabajt} few{# petabajta} many{# petabajta} other{# petabajta}}',
- '{n, plural, =1{# terabyte} other{# terabytes}}' => '{n, plural, one{# terabajt} few{# terabajta} many{# terabajta} other{# terabajta}}',
- '{n} B' => '{n} B',
- '{n} GB' => '{n} GB',
- '{n} KB' => '{n} KB',
- '{n} MB' => '{n} MB',
- '{n} PB' => '{n} PB',
- '{n} TB' => '{n} TB',
+ ' and ' => '',
+ '"{attribute}" does not support operator "{operator}".' => '',
'(not set)' => '(bez vrednosti)',
+ 'Action not found.' => '',
+ 'Aliases available: {aliases}' => '',
'An internal server error occurred.' => 'Došlo je do interne greške na serveru.',
'Are you sure you want to delete this item?' => 'Da li ste sigurni da želite da obrišete ovu stavku?',
+ 'Condition for "{attribute}" should be either a value or valid operator specification.' => '',
'Delete' => 'Obriši',
'Error' => 'Greška',
'File upload failed.' => 'Postavljanje fajla nije uspelo.',
@@ -62,52 +41,108 @@
'Missing required arguments: {params}' => 'Nedostaju obavezni argumenti: {params}',
'Missing required parameters: {params}' => 'Nedostaju obavezni parametri: {params}',
'No' => 'Ne',
- 'No help for unknown command "{command}".' => 'Ne postoji pomoć za nepoznatu komandu "{command}".',
- 'No help for unknown sub-command "{command}".' => 'Ne postoji pomoć za nepoznatu pod-komandu "{command}".',
'No results found.' => 'Nema rezultata.',
+ 'Only files with these MIME types are allowed: {mimeTypes}.' => 'Samo sledeći MIME tipovi su dozvoljeni: {mimeTypes}.',
'Only files with these extensions are allowed: {extensions}.' => 'Samo fajlovi sa sledećim ekstenzijama su dozvoljeni: {extensions}.',
+ 'Operator "{operator}" must be used with a search attribute.' => '',
+ 'Operator "{operator}" requires multiple operands.' => '',
+ 'Options available: {options}' => '',
'Page not found.' => 'Stranica nije pronađena.',
'Please fix the following errors:' => 'Molimo vas ispravite sledeće greške:',
'Please upload a file.' => 'Molimo vas postavite fajl.',
'Showing {begin, number}-{end, number} of {totalCount, number} {totalCount, plural, one{item} other{items}}.' => 'Prikazano {begin, number}-{end, number} od {totalCount, number} {totalCount, plural, =1{stavke} one{stavke} few{stavke} many{stavki} other{stavki}}.',
+ 'The combination {values} of {attributes} has already been taken.' => '',
'The file "{file}" is not an image.' => 'Fajl "{file}" nije slika.',
'The file "{file}" is too big. Its size cannot exceed {formattedLimit}.' => 'Fajl "{file}" je prevelik. Veličina ne može biti veća od {formattedLimit}.',
'The file "{file}" is too small. Its size cannot be smaller than {formattedLimit}.' => 'Fajl "{file}" je premali. Veličina ne može biti manja od {formattedLimit}.',
'The format of {attribute} is invalid.' => 'Format atributa "{attribute}" je neispravan.',
+ 'The format of {filter} is invalid.' => '',
'The image "{file}" is too large. The height cannot be larger than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'Slika "{file}" je prevelika. Visina ne sme biti veća od {limit, number} {limit, plural, one{piksel} other{piksela}}.',
'The image "{file}" is too large. The width cannot be larger than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'Slika "{file}" je prevelika. Širina ne sme biti veća od {limit, number} {limit, plural, one{piksel} other{piksela}}.',
'The image "{file}" is too small. The height cannot be smaller than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'Slika "{file}" je premala. Visina ne sme biti manja od {limit, number} {limit, plural, one{piksel} other{piksela}}.',
'The image "{file}" is too small. The width cannot be smaller than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'Slika "{file}" je premala. Širina ne sme biti manja od {limit, number} {limit, plural, one{piksel} other{piksela}}.',
+ 'The requested view "{name}" was not found.' => 'Traženi prikaz "{name}" nije pronađen.',
'The verification code is incorrect.' => 'Kod za potvrdu nije ispravan.',
'Total {count, number} {count, plural, one{item} other{items}}.' => 'Ukupno {count, number} {count, plural, one{stavka} few{stavke} other{stavki}}.',
'Unable to verify your data submission.' => 'Nije moguće verifikovati vaše poslate podatke.',
- 'Unknown command "{command}".' => 'Nepoznata komanda "{command}".',
+ 'Unknown alias: -{name}' => '',
+ 'Unknown filter attribute "{attribute}"' => '',
'Unknown option: --{name}' => 'Nepoznata opcija: --{name}',
'Update' => 'Ispravi',
'View' => 'Prikaz',
'Yes' => 'Da',
'You are not allowed to perform this action.' => 'Nemate prava da izvršite ovu akciju.',
'You can upload at most {limit, number} {limit, plural, one{file} other{files}}.' => 'Možete postaviti najviše {limit, number} {limit, plural, one{fajl} few{fajla} other{fajlova}}.',
+ 'You should upload at least {limit, number} {limit, plural, one{file} other{files}}.' => '',
+ 'in {delta, plural, =1{a day} other{# days}}' => 'za {delta, plural, =1{dan} one{# dan} few{# dana} many{# dana} other{# dana}}',
+ 'in {delta, plural, =1{a minute} other{# minutes}}' => 'za {delta, plural, =1{minut} one{# minut} few{# minuta} many{# minuta} other{# minuta}}',
+ 'in {delta, plural, =1{a month} other{# months}}' => 'za {delta, plural, =1{mesec} one{# mesec} few{# meseca} many{# meseci} other{# meseci}}',
+ 'in {delta, plural, =1{a second} other{# seconds}}' => 'za {delta, plural, =1{sekundu} one{# sekundu} few{# sekunde} many{# sekundi} other{# sekundi}}',
+ 'in {delta, plural, =1{a year} other{# years}}' => 'za {delta, plural, =1{godinu} one{# godinu} few{# godine} many{# godina} other{# godina}}',
+ 'in {delta, plural, =1{an hour} other{# hours}}' => 'za {delta, plural, =1{sat} one{# sat} few{# sata} many{# sati} other{# sati}}',
+ 'just now' => 'upravo sada',
'the input value' => 'ulazna vrednost',
'{attribute} "{value}" has already been taken.' => '{attribute} "{value}" je već zauzet.',
'{attribute} cannot be blank.' => '{attribute} ne sme biti prazan.',
+ '{attribute} contains wrong subnet mask.' => '',
'{attribute} is invalid.' => '{attribute} je neispravan.',
'{attribute} is not a valid URL.' => '{attribute} nije ispravan URL.',
'{attribute} is not a valid email address.' => '{attribute} nije ispravna email adresa.',
+ '{attribute} is not in the allowed range.' => '',
'{attribute} must be "{requiredValue}".' => '{attribute} mora biti "{requiredValue}".',
'{attribute} must be a number.' => '{attribute} mora biti broj.',
'{attribute} must be a string.' => '{attribute} mora biti tekst.',
+ '{attribute} must be a valid IP address.' => '',
+ '{attribute} must be an IP address with specified subnet.' => '',
'{attribute} must be an integer.' => '{attribute} mora biti celi broj.',
'{attribute} must be either "{true}" or "{false}".' => '{attribute} mora biti "{true}" ili "{false}".',
- '{attribute} must be greater than "{compareValue}".' => '{attribute} mora biti veći od "{compareValue}".',
- '{attribute} must be greater than or equal to "{compareValue}".' => '{attribute} mora biti veći ili jednak "{compareValue}".',
- '{attribute} must be less than "{compareValue}".' => '{attribute} mora biti manji od "{compareValue}".',
- '{attribute} must be less than or equal to "{compareValue}".' => '{attribute} mora biti manji ili jednak "{compareValue}".',
+ '{attribute} must be equal to "{compareValueOrAttribute}".' => '',
+ '{attribute} must be greater than "{compareValueOrAttribute}".' => '{attribute} mora biti veći od "{compareValueOrAttribute}".',
+ '{attribute} must be greater than or equal to "{compareValueOrAttribute}".' => '{attribute} mora biti veći ili jednak "{compareValueOrAttribute}".',
+ '{attribute} must be less than "{compareValueOrAttribute}".' => '{attribute} mora biti manji od "{compareValueOrAttribute}".',
+ '{attribute} must be less than or equal to "{compareValueOrAttribute}".' => '{attribute} mora biti manji ili jednak "{compareValueOrAttribute}".',
'{attribute} must be no greater than {max}.' => '{attribute} ne sme biti veći od "{max}".',
'{attribute} must be no less than {min}.' => '{attribute} ne sme biti manji od {min}.',
- '{attribute} must be repeated exactly.' => '{attribute} mora biti ispravno ponovljen.',
- '{attribute} must not be equal to "{compareValue}".' => '{attribute} ne sme biti jednak "{compareValue}".',
+ '{attribute} must not be a subnet.' => '',
+ '{attribute} must not be an IPv4 address.' => '',
+ '{attribute} must not be an IPv6 address.' => '',
+ '{attribute} must not be equal to "{compareValueOrAttribute}".' => '{attribute} ne sme biti jednak "{compareValueOrAttribute}".',
'{attribute} should contain at least {min, number} {min, plural, one{character} other{characters}}.' => '{attribute} treba da sadrži bar {min, number} {min, plural, one{karakter} other{karaktera}}.',
'{attribute} should contain at most {max, number} {max, plural, one{character} other{characters}}.' => '{attribute} treba da sadrži najviše {max, number} {max, plural, one{karakter} other{karaktera}}.',
'{attribute} should contain {length, number} {length, plural, one{character} other{characters}}.' => '{attribute} treba da sadrži {length, number} {length, plural, one{karakter} other{karaktera}}.',
+ '{compareAttribute} is invalid.' => '',
+ '{delta, plural, =1{1 day} other{# days}}' => '',
+ '{delta, plural, =1{1 hour} other{# hours}}' => '',
+ '{delta, plural, =1{1 minute} other{# minutes}}' => '',
+ '{delta, plural, =1{1 month} other{# months}}' => '',
+ '{delta, plural, =1{1 second} other{# seconds}}' => '',
+ '{delta, plural, =1{1 year} other{# years}}' => '',
+ '{delta, plural, =1{a day} other{# days}} ago' => 'pre {delta, plural, =1{dan} one{# dan} few{# dana} many{# dana} other{# dana}}',
+ '{delta, plural, =1{a minute} other{# minutes}} ago' => 'pre {delta, plural, =1{minut} one{# minut} few{# minuta} many{# minuta} other{# minuta}}',
+ '{delta, plural, =1{a month} other{# months}} ago' => 'pre {delta, plural, =1{mesec} one{# meseca} few{# meseca} many{# meseci} other{# meseci}}',
+ '{delta, plural, =1{a second} other{# seconds}} ago' => 'pre {delta, plural, =1{sekundu} one{# sekunde} few{# sekunde} many{# sekundi} other{# sekundi}}',
+ '{delta, plural, =1{a year} other{# years}} ago' => 'pre {delta, plural, =1{godinu} one{# godine} few{# godine} many{# godina} other{# godina}}',
+ '{delta, plural, =1{an hour} other{# hours}} ago' => 'pre {delta, plural, =1{sat} one{# sat} few{# sata} many{# sati} other{# sati}}',
+ '{nFormatted} B' => '{nFormatted} B',
+ '{nFormatted} GB' => '{nFormatted} GB',
+ '{nFormatted} GiB' => '',
+ '{nFormatted} KiB' => '',
+ '{nFormatted} MB' => '{nFormatted} MB',
+ '{nFormatted} MiB' => '',
+ '{nFormatted} PB' => '{nFormatted} PB',
+ '{nFormatted} PiB' => '',
+ '{nFormatted} TB' => '{nFormatted} TB',
+ '{nFormatted} TiB' => '',
+ '{nFormatted} kB' => '{nFormatted} kB',
+ '{nFormatted} {n, plural, =1{byte} other{bytes}}' => '{nFormatted} {n, plural, one{bajt} few{bajta} many{bajtova} other{bajta}}',
+ '{nFormatted} {n, plural, =1{gibibyte} other{gibibytes}}' => '',
+ '{nFormatted} {n, plural, =1{gigabyte} other{gigabytes}}' => '{nFormatted} {n, plural, one{gigabajt} few{gigabajta} many{gigabajta} other{gigabajta}}',
+ '{nFormatted} {n, plural, =1{kibibyte} other{kibibytes}}' => '',
+ '{nFormatted} {n, plural, =1{kilobyte} other{kilobytes}}' => '{nFormatted} {n, plural, one{kilobajt} few{kilobajta} many{kilobajta} other{kilobajta}}',
+ '{nFormatted} {n, plural, =1{mebibyte} other{mebibytes}}' => '',
+ '{nFormatted} {n, plural, =1{megabyte} other{megabytes}}' => '{nFormatted} {n, plural, one{megabajt} few{megabajta} many{megabajta} other{megabajta}}',
+ '{nFormatted} {n, plural, =1{pebibyte} other{pebibytes}}' => '',
+ '{nFormatted} {n, plural, =1{petabyte} other{petabytes}}' => '{nFormatted} {n, plural, one{petabajt} few{petabajta} many{petabajta} other{petabajta}}',
+ '{nFormatted} {n, plural, =1{tebibyte} other{tebibytes}}' => '',
+ '{nFormatted} {n, plural, =1{terabyte} other{terabytes}}' => '{nFormatted} {n, plural, one{terabajt} few{terabajta} many{terabajta} other{terabajta}}',
];
diff --git a/framework/messages/sr/yii.php b/framework/messages/sr/yii.php
index 6e7ba378329..3206e8c296f 100644
--- a/framework/messages/sr/yii.php
+++ b/framework/messages/sr/yii.php
@@ -1,4 +1,5 @@
'управо сада',
- 'Only files with these MIME types are allowed: {mimeTypes}.' => 'Само следећи MIME типови су дозвољени: {mimeTypes}.',
- 'The requested view "{name}" was not found.' => 'Тражени приказ "{name}" није пронађен.',
- 'in {delta, plural, =1{a day} other{# days}}' => 'за {delta, plural, =1{дан} one{# дан} few{# дана} many{# дана} other{# дана}}',
- 'in {delta, plural, =1{a minute} other{# minutes}}' => 'за {delta, plural, =1{минут} one{# минут} few{# минута} many{# минута} other{# минута}}',
- 'in {delta, plural, =1{a month} other{# months}}' => 'за {delta, plural, =1{месец} one{# месец} few{# месеца} many{# месеци} other{# месеци}}',
- 'in {delta, plural, =1{a second} other{# seconds}}' => 'за {delta, plural, =1{секунду} one{# секунду} few{# секундe} many{# секунди} other{# секунди}}',
- 'in {delta, plural, =1{a year} other{# years}}' => 'за {delta, plural, =1{годину} one{# годину} few{# године} many{# година} other{# година}}',
- 'in {delta, plural, =1{an hour} other{# hours}}' => 'за {delta, plural, =1{сат} one{# сат} few{# сата} many{# сати} other{# сати}}',
- '{delta, plural, =1{a day} other{# days}} ago' => 'пре {delta, plural, =1{дан} one{дан} few{# дана} many{# дана} other{# дана}}',
- '{delta, plural, =1{a minute} other{# minutes}} ago' => 'пре {delta, plural, =1{минут} one{# минут} few{# минута} many{# минута} other{# минута}}',
- '{delta, plural, =1{a month} other{# months}} ago' => 'пре {delta, plural, =1{месец} one{# месец} few{# месеца} many{# месеци} other{# месеци}}',
- '{delta, plural, =1{a second} other{# seconds}} ago' => 'пре {delta, plural, =1{секунде} one{# секунде} few{# секунде} many{# секунди} other{# секунди}}',
- '{delta, plural, =1{a year} other{# years}} ago' => 'пре {delta, plural, =1{године} one{# године} few{# године} many{# година} other{# година}}',
- '{delta, plural, =1{an hour} other{# hours}} ago' => 'пре {delta, plural, =1{сат} one{# сат} few{# сата} many{# сати} other{# сати}}',
- '{n, plural, =1{# byte} other{# bytes}}' => '{n, plural, one{# бајт} few{# бајта} many{# бајтова} other{# бајта}}',
- '{n, plural, =1{# gigabyte} other{# gigabytes}}' => '{n, plural, one{# гигабајт} few{# гигабајта} many{# гигабајта} other{# гигабајта}}',
- '{n, plural, =1{# kilobyte} other{# kilobytes}}' => '{n, plural, one{# килобајт} few{# килобајта} many{# килобајта} other{# килобајта}}',
- '{n, plural, =1{# megabyte} other{# megabytes}}' => '{n, plural, one{# мегабајт} few{# мегабајта} many{# мегабајта} other{# мегабајта}}',
- '{n, plural, =1{# petabyte} other{# petabytes}}' => '{n, plural, one{# петабајт} few{# петабајта} many{# петабајта} other{# петабајта}}',
- '{n, plural, =1{# terabyte} other{# terabytes}}' => '{n, plural, one{# терабајт} few{# терабајта} many{# терабајта} other{# терабајта}}',
- '{n} B' => '{n} Б',
- '{n} GB' => '{n} ГБ',
- '{n} KB' => '{n} КБ',
- '{n} MB' => '{n} МБ',
- '{n} PB' => '{n} ПБ',
- '{n} TB' => '{n} ТБ',
+ ' and ' => '',
+ '"{attribute}" does not support operator "{operator}".' => '',
'(not set)' => '(без вредности)',
+ 'Action not found.' => '',
+ 'Aliases available: {aliases}' => '',
'An internal server error occurred.' => 'Дошло је до интерне грешке на серверу.',
'Are you sure you want to delete this item?' => 'Да ли сте сигурни да желите да обришете ову ставку?',
+ 'Condition for "{attribute}" should be either a value or valid operator specification.' => '',
'Delete' => 'Обриши',
'Error' => 'Грешка',
'File upload failed.' => 'Постављање фајла није успело.',
@@ -62,52 +41,108 @@
'Missing required arguments: {params}' => 'Недостају обавезни аргументи: {params}',
'Missing required parameters: {params}' => 'Недостају обавезни параметри: {params}',
'No' => 'Не',
- 'No help for unknown command "{command}".' => 'Не постоји помоћ за непознату команду "{command}".',
- 'No help for unknown sub-command "{command}".' => 'Не постоји помоћ за непознату под-команду "{command}".',
'No results found.' => 'Нема резултата.',
+ 'Only files with these MIME types are allowed: {mimeTypes}.' => 'Само следећи MIME типови су дозвољени: {mimeTypes}.',
'Only files with these extensions are allowed: {extensions}.' => 'Само фајлови са следећим екстензијама су дозвољени: {extensions}.',
+ 'Operator "{operator}" must be used with a search attribute.' => '',
+ 'Operator "{operator}" requires multiple operands.' => '',
+ 'Options available: {options}' => '',
'Page not found.' => 'Страница није пронађена.',
'Please fix the following errors:' => 'Молимо вас исправите следеће грешке:',
'Please upload a file.' => 'Молимо вас поставите фајл.',
'Showing {begin, number}-{end, number} of {totalCount, number} {totalCount, plural, one{item} other{items}}.' => 'Приказано {begin, number}-{end, number} од {totalCount, number} {totalCount, plural, =1{ставке} one{ставкe} few{ставке} many{ставки} other{ставки}}.',
+ 'The combination {values} of {attributes} has already been taken.' => '',
'The file "{file}" is not an image.' => 'Фајл "{file}" није слика.',
'The file "{file}" is too big. Its size cannot exceed {formattedLimit}.' => 'Фајл "{file}" је превелик. Величина не може бити већа од {formattedLimit}.',
'The file "{file}" is too small. Its size cannot be smaller than {formattedLimit}.' => 'Фајл "{file}" је премали. Величина не може бити мања од {formattedLimit}.',
'The format of {attribute} is invalid.' => 'Формат атрибута "{attribute}" је неисправан.',
+ 'The format of {filter} is invalid.' => '',
'The image "{file}" is too large. The height cannot be larger than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'Слика "{file}" је превелика. Висина не сме бити већа од {limit, number} {limit, plural, one{пиксел} other{пиксела}}.',
'The image "{file}" is too large. The width cannot be larger than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'Слика "{file}" је превелика. Ширина не сме бити већа од {limit, number} {limit, plural, one{пиксел} other{пиксела}}.',
'The image "{file}" is too small. The height cannot be smaller than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'Слика "{file}" је премала. Висина не сме бити мања од {limit, number} {limit, plural, one{пиксел} other{пиксела}}.',
'The image "{file}" is too small. The width cannot be smaller than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'Слика "{file}" је премала. Ширина не сме бити мања од {limit, number} {limit, plural, one{пиксел} other{пиксела}}.',
+ 'The requested view "{name}" was not found.' => 'Тражени приказ "{name}" није пронађен.',
'The verification code is incorrect.' => 'Код за потврду није исправан.',
'Total {count, number} {count, plural, one{item} other{items}}.' => 'Укупно {count, number} {count, plural, one{ставка} few{ставке} other{ставки}}.',
'Unable to verify your data submission.' => 'Није могуће верификовати ваше послате податке.',
- 'Unknown command "{command}".' => 'Непозната команда "{command}".',
+ 'Unknown alias: -{name}' => '',
+ 'Unknown filter attribute "{attribute}"' => '',
'Unknown option: --{name}' => 'Непозната опција: --{name}',
'Update' => 'Исправи',
'View' => 'Приказ',
'Yes' => 'Да',
'You are not allowed to perform this action.' => 'Немате права да извршите ову акцију.',
'You can upload at most {limit, number} {limit, plural, one{file} other{files}}.' => 'Можете поставити највише {limit, number} {limit, plural, one{фајл} few{фајлa} other{фајлова}}.',
+ 'You should upload at least {limit, number} {limit, plural, one{file} other{files}}.' => '',
+ 'in {delta, plural, =1{a day} other{# days}}' => 'за {delta, plural, =1{дан} one{# дан} few{# дана} many{# дана} other{# дана}}',
+ 'in {delta, plural, =1{a minute} other{# minutes}}' => 'за {delta, plural, =1{минут} one{# минут} few{# минута} many{# минута} other{# минута}}',
+ 'in {delta, plural, =1{a month} other{# months}}' => 'за {delta, plural, =1{месец} one{# месец} few{# месеца} many{# месеци} other{# месеци}}',
+ 'in {delta, plural, =1{a second} other{# seconds}}' => 'за {delta, plural, =1{секунду} one{# секунду} few{# секундe} many{# секунди} other{# секунди}}',
+ 'in {delta, plural, =1{a year} other{# years}}' => 'за {delta, plural, =1{годину} one{# годину} few{# године} many{# година} other{# година}}',
+ 'in {delta, plural, =1{an hour} other{# hours}}' => 'за {delta, plural, =1{сат} one{# сат} few{# сата} many{# сати} other{# сати}}',
+ 'just now' => 'управо сада',
'the input value' => 'улазна вредност',
'{attribute} "{value}" has already been taken.' => '{attribute} "{value}" је већ заузет.',
'{attribute} cannot be blank.' => '{attribute} не сме бити празан.',
+ '{attribute} contains wrong subnet mask.' => '',
'{attribute} is invalid.' => '{attribute} је неисправан.',
'{attribute} is not a valid URL.' => '{attribute} није исправан URL.',
'{attribute} is not a valid email address.' => '{attribute} није исправна email адреса.',
+ '{attribute} is not in the allowed range.' => '',
'{attribute} must be "{requiredValue}".' => '{attribute} мора бити "{requiredValue}".',
'{attribute} must be a number.' => '{attribute} мора бити број.',
'{attribute} must be a string.' => '{attribute} мора бити текст.',
+ '{attribute} must be a valid IP address.' => '',
+ '{attribute} must be an IP address with specified subnet.' => '',
'{attribute} must be an integer.' => '{attribute} мора бити цели број.',
'{attribute} must be either "{true}" or "{false}".' => '{attribute} мора бити "{true}" или "{false}".',
- '{attribute} must be greater than "{compareValue}".' => '{attribute} мора бити већи од "{compareValue}".',
- '{attribute} must be greater than or equal to "{compareValue}".' => '{attribute} мора бити већи или једнак "{compareValue}".',
- '{attribute} must be less than "{compareValue}".' => '{attribute} мора бити мањи од "{compareValue}".',
- '{attribute} must be less than or equal to "{compareValue}".' => '{attribute} мора бити мањи или једнак "{compareValue}".',
+ '{attribute} must be equal to "{compareValueOrAttribute}".' => '',
+ '{attribute} must be greater than "{compareValueOrAttribute}".' => '{attribute} мора бити већи од "{compareValueOrAttribute}".',
+ '{attribute} must be greater than or equal to "{compareValueOrAttribute}".' => '{attribute} мора бити већи или једнак "{compareValueOrAttribute}".',
+ '{attribute} must be less than "{compareValueOrAttribute}".' => '{attribute} мора бити мањи од "{compareValueOrAttribute}".',
+ '{attribute} must be less than or equal to "{compareValueOrAttribute}".' => '{attribute} мора бити мањи или једнак "{compareValueOrAttribute}".',
'{attribute} must be no greater than {max}.' => '{attribute} не сме бити већи од "{max}".',
'{attribute} must be no less than {min}.' => '{attribute} не сме бити мањи од {min}.',
- '{attribute} must be repeated exactly.' => '{attribute} мора бити исправно поновљен.',
- '{attribute} must not be equal to "{compareValue}".' => '{attribute} не сме бити једнак "{compareValue}".',
+ '{attribute} must not be a subnet.' => '',
+ '{attribute} must not be an IPv4 address.' => '',
+ '{attribute} must not be an IPv6 address.' => '',
+ '{attribute} must not be equal to "{compareValueOrAttribute}".' => '{attribute} не сме бити једнак "{compareValueOrAttribute}".',
'{attribute} should contain at least {min, number} {min, plural, one{character} other{characters}}.' => '{attribute} треба да садржи барем {min, number} {min, plural, one{карактер} other{карактера}}.',
'{attribute} should contain at most {max, number} {max, plural, one{character} other{characters}}.' => '{attribute} треба да садржи највише {max, number} {max, plural, one{карактер} other{карактера}}.',
'{attribute} should contain {length, number} {length, plural, one{character} other{characters}}.' => '{attribute} треба да садржи {length, number} {length, plural, one{карактер} other{карактера}}.',
+ '{compareAttribute} is invalid.' => '',
+ '{delta, plural, =1{1 day} other{# days}}' => '',
+ '{delta, plural, =1{1 hour} other{# hours}}' => '',
+ '{delta, plural, =1{1 minute} other{# minutes}}' => '',
+ '{delta, plural, =1{1 month} other{# months}}' => '',
+ '{delta, plural, =1{1 second} other{# seconds}}' => '',
+ '{delta, plural, =1{1 year} other{# years}}' => '',
+ '{delta, plural, =1{a day} other{# days}} ago' => 'пре {delta, plural, =1{дан} one{дан} few{# дана} many{# дана} other{# дана}}',
+ '{delta, plural, =1{a minute} other{# minutes}} ago' => 'пре {delta, plural, =1{минут} one{# минут} few{# минута} many{# минута} other{# минута}}',
+ '{delta, plural, =1{a month} other{# months}} ago' => 'пре {delta, plural, =1{месец} one{# месец} few{# месеца} many{# месеци} other{# месеци}}',
+ '{delta, plural, =1{a second} other{# seconds}} ago' => 'пре {delta, plural, =1{секунде} one{# секунде} few{# секунде} many{# секунди} other{# секунди}}',
+ '{delta, plural, =1{a year} other{# years}} ago' => 'пре {delta, plural, =1{године} one{# године} few{# године} many{# година} other{# година}}',
+ '{delta, plural, =1{an hour} other{# hours}} ago' => 'пре {delta, plural, =1{сат} one{# сат} few{# сата} many{# сати} other{# сати}}',
+ '{nFormatted} B' => '{nFormatted} Б',
+ '{nFormatted} GB' => '{nFormatted} ГБ',
+ '{nFormatted} GiB' => '',
+ '{nFormatted} KiB' => '',
+ '{nFormatted} MB' => '{nFormatted} МБ',
+ '{nFormatted} MiB' => '',
+ '{nFormatted} PB' => '{nFormatted} ПБ',
+ '{nFormatted} PiB' => '',
+ '{nFormatted} TB' => '{nFormatted} ТБ',
+ '{nFormatted} TiB' => '',
+ '{nFormatted} kB' => '{nFormatted} кБ',
+ '{nFormatted} {n, plural, =1{byte} other{bytes}}' => '{nFormatted} {n, plural, one{бајт} few{бајта} many{бајтова} other{бајта}}',
+ '{nFormatted} {n, plural, =1{gibibyte} other{gibibytes}}' => '',
+ '{nFormatted} {n, plural, =1{gigabyte} other{gigabytes}}' => '{nFormatted} {n, plural, one{гигабајт} few{гигабајта} many{гигабајта} other{гигабајта}}',
+ '{nFormatted} {n, plural, =1{kibibyte} other{kibibytes}}' => '',
+ '{nFormatted} {n, plural, =1{kilobyte} other{kilobytes}}' => '{nFormatted} {n, plural, one{килобајт} few{килобајта} many{килобајта} other{килобајта}}',
+ '{nFormatted} {n, plural, =1{mebibyte} other{mebibytes}}' => '',
+ '{nFormatted} {n, plural, =1{megabyte} other{megabytes}}' => '{nFormatted} {n, plural, one{мегабајт} few{мегабајта} many{мегабајта} other{мегабајта}}',
+ '{nFormatted} {n, plural, =1{pebibyte} other{pebibytes}}' => '',
+ '{nFormatted} {n, plural, =1{petabyte} other{petabytes}}' => '{nFormatted} {n, plural, one{петабајт} few{петабајта} many{петабајта} other{петабајта}}',
+ '{nFormatted} {n, plural, =1{tebibyte} other{tebibytes}}' => '',
+ '{nFormatted} {n, plural, =1{terabyte} other{terabytes}}' => '{nFormatted} {n, plural, one{терабајт} few{терабајта} many{терабајта} other{терабајта}}',
];
diff --git a/framework/messages/sv/yii.php b/framework/messages/sv/yii.php
index b3777626b02..40843a887c2 100644
--- a/framework/messages/sv/yii.php
+++ b/framework/messages/sv/yii.php
@@ -1,4 +1,5 @@
'',
+ '"{attribute}" does not support operator "{operator}".' => '',
'(not set)' => '(ej satt)',
+ 'Action not found.' => '',
+ 'Aliases available: {aliases}' => '',
'An internal server error occurred.' => 'Ett internt serverfel har inträffat.',
'Are you sure you want to delete this item?' => 'Är du säker på att du vill radera objektet?',
+ 'Condition for "{attribute}" should be either a value or valid operator specification.' => '',
'Delete' => 'Radera',
'Error' => 'Error',
'File upload failed.' => 'Uppladdningen misslyckades.',
@@ -38,14 +44,19 @@
'No results found.' => 'Inga resultat hittades.',
'Only files with these MIME types are allowed: {mimeTypes}.' => 'Endast filer med följande MIME-typer är tillåtna: {mimeTypes}',
'Only files with these extensions are allowed: {extensions}.' => 'Endast filer med följande filnamnstillägg är tillåtna: {extensions}',
+ 'Operator "{operator}" must be used with a search attribute.' => '',
+ 'Operator "{operator}" requires multiple operands.' => '',
+ 'Options available: {options}' => '',
'Page not found.' => 'Sidan hittades inte.',
'Please fix the following errors:' => 'Var god fixa följande fel:',
'Please upload a file.' => 'Var god ladda upp en fil.',
'Showing {begin, number}-{end, number} of {totalCount, number} {totalCount, plural, one{item} other{items}}.' => 'Visar {begin, number}-{end, number} av {totalCount, number} objekt.',
+ 'The combination {values} of {attributes} has already been taken.' => '',
'The file "{file}" is not an image.' => 'Filen "{file}" är inte en bild.',
'The file "{file}" is too big. Its size cannot exceed {formattedLimit}.' => 'Filen "{file}" är för stor. Filstorleken får inte överskrida {formattedLimit}.',
'The file "{file}" is too small. Its size cannot be smaller than {formattedLimit}.' => 'Filen "{file}" är för liten. Filstorleken måste vara minst {formattedLimit}.',
'The format of {attribute} is invalid.' => 'Formatet för "{attribute}" är ogiltigt.',
+ 'The format of {filter} is invalid.' => '',
'The image "{file}" is too large. The height cannot be larger than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'Bilden "{file}" är för stor. Höjden får inte överskrida {limit, number} {limit, plural, =1{pixel} other{pixlar}}.',
'The image "{file}" is too large. The width cannot be larger than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'Bilden "{file}" är för stor. Bredden får inte överskrida {limit, number} {limit, plural, =1{pixel} other{pixlar}}.',
'The image "{file}" is too small. The height cannot be smaller than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'Bilden "{file}" är för liten. Bilden måste vara minst {limit, number} {limit, plural, =1{pixel} other{pixlar}} hög.',
@@ -54,12 +65,15 @@
'The verification code is incorrect.' => 'Verifieringskoden är felaktig.',
'Total {count, number} {count, plural, one{item} other{items}}.' => 'Totalt {count, number} objekt.',
'Unable to verify your data submission.' => 'Det gick inte att verifiera skickad data.',
+ 'Unknown alias: -{name}' => '',
+ 'Unknown filter attribute "{attribute}"' => '',
'Unknown option: --{name}' => 'Okänt alternativ: --{name}',
'Update' => 'Uppdatera',
'View' => 'Visa',
'Yes' => 'Ja',
'You are not allowed to perform this action.' => 'Du har inte behörighet att utföra den här åtgärden.',
'You can upload at most {limit, number} {limit, plural, one{file} other{files}}.' => 'Du får inte ladda upp mer än {limit, number} {limit, plural, =1{fil} other{filer}}.',
+ 'You should upload at least {limit, number} {limit, plural, one{file} other{files}}.' => '',
'in {delta, plural, =1{a day} other{# days}}' => 'under {delta, plural, =1{en dag} other{# dagar}}',
'in {delta, plural, =1{a minute} other{# minutes}}' => 'under {delta, plural, =1{en minut} other{# minuter}}',
'in {delta, plural, =1{a month} other{# months}}' => 'under {delta, plural, =1{en månad} other{# månader}}',
@@ -70,25 +84,39 @@
'the input value' => 'inmatningsvärdet',
'{attribute} "{value}" has already been taken.' => '{attribute} "{value}" används redan.',
'{attribute} cannot be blank.' => 'Värdet för {attribute} får inte vara tomt.',
+ '{attribute} contains wrong subnet mask.' => '',
'{attribute} is invalid.' => 'Värdet för {attribute} är ogiltigt.',
'{attribute} is not a valid URL.' => '{attribute} är inte en giltig URL.',
'{attribute} is not a valid email address.' => '{attribute} är inte en giltig emailadress.',
+ '{attribute} is not in the allowed range.' => '',
'{attribute} must be "{requiredValue}".' => '{attribute} måste vara satt till "{requiredValue}".',
'{attribute} must be a number.' => '{attribute} måste vara ett nummer.',
'{attribute} must be a string.' => '{attribute} måste vara en sträng.',
+ '{attribute} must be a valid IP address.' => '',
+ '{attribute} must be an IP address with specified subnet.' => '',
'{attribute} must be an integer.' => '{attribute} måste vara ett heltal.',
'{attribute} must be either "{true}" or "{false}".' => '{attribute} måste vara satt till antingen "{true}" eller "{false}".',
- '{attribute} must be greater than "{compareValue}".' => '{attribute} måste vara större än "{compareValue}".',
- '{attribute} must be greater than or equal to "{compareValue}".' => '{attribute} måste vara större än eller lika med "{compareValue}".',
- '{attribute} must be less than "{compareValue}".' => '{attribute} måste vara mindre än "{compareValue}".',
- '{attribute} must be less than or equal to "{compareValue}".' => '{attribute} måste vara mindre än eller lika med "{compareValue}".',
+ '{attribute} must be equal to "{compareValueOrAttribute}".' => '',
+ '{attribute} must be greater than "{compareValueOrAttribute}".' => '{attribute} måste vara större än "{compareValueOrAttribute}".',
+ '{attribute} must be greater than or equal to "{compareValueOrAttribute}".' => '{attribute} måste vara större än eller lika med "{compareValueOrAttribute}".',
+ '{attribute} must be less than "{compareValueOrAttribute}".' => '{attribute} måste vara mindre än "{compareValueOrAttribute}".',
+ '{attribute} must be less than or equal to "{compareValueOrAttribute}".' => '{attribute} måste vara mindre än eller lika med "{compareValueOrAttribute}".',
'{attribute} must be no greater than {max}.' => '{attribute} får inte överskrida {max}.',
'{attribute} must be no less than {min}.' => '{attribute} får som minst vara {min}.',
- '{attribute} must be repeated exactly.' => '{attribute} måste upprepas exakt.',
- '{attribute} must not be equal to "{compareValue}".' => '{attribute} får inte vara satt till "{compareValue}".',
+ '{attribute} must not be a subnet.' => '',
+ '{attribute} must not be an IPv4 address.' => '',
+ '{attribute} must not be an IPv6 address.' => '',
+ '{attribute} must not be equal to "{compareValueOrAttribute}".' => '{attribute} får inte vara satt till "{compareValueOrAttribute}".',
'{attribute} should contain at least {min, number} {min, plural, one{character} other{characters}}.' => '{attribute} bör innehålla minst {min, number} tecken.',
'{attribute} should contain at most {max, number} {max, plural, one{character} other{characters}}.' => '{attribute} bör innehålla max {max, number} tecken.',
'{attribute} should contain {length, number} {length, plural, one{character} other{characters}}.' => '{attribute} bör innehålla {length, number} tecken.',
+ '{compareAttribute} is invalid.' => '',
+ '{delta, plural, =1{1 day} other{# days}}' => '',
+ '{delta, plural, =1{1 hour} other{# hours}}' => '',
+ '{delta, plural, =1{1 minute} other{# minutes}}' => '',
+ '{delta, plural, =1{1 month} other{# months}}' => '',
+ '{delta, plural, =1{1 second} other{# seconds}}' => '',
+ '{delta, plural, =1{1 year} other{# years}}' => '',
'{delta, plural, =1{a day} other{# days}} ago' => '{delta, plural, =1{en dag} other{# dagar}} sedan',
'{delta, plural, =1{a minute} other{# minutes}} ago' => '{delta, plural, =1{en minut} other{# minuter}} sedan',
'{delta, plural, =1{a month} other{# months}} ago' => '{delta, plural, =1{en månad} other{# månader}} sedan',
@@ -98,7 +126,6 @@
'{nFormatted} B' => '{nFormatted} B',
'{nFormatted} GB' => '{nFormatted} GB',
'{nFormatted} GiB' => '{nFormatted} GiB',
- '{nFormatted} kB' => '{nFormatted} kB',
'{nFormatted} KiB' => '{nFormatted} KiB',
'{nFormatted} MB' => '{nFormatted} MB',
'{nFormatted} MiB' => '{nFormatted} MiB',
@@ -106,6 +133,7 @@
'{nFormatted} PiB' => '{nFormatted} PiB',
'{nFormatted} TB' => '{nFormatted} TB',
'{nFormatted} TiB' => '{nFormatted} TiB',
+ '{nFormatted} kB' => '{nFormatted} kB',
'{nFormatted} {n, plural, =1{byte} other{bytes}}' => '{nFormatted} {n, plural, =1{byte} other{byte}}',
'{nFormatted} {n, plural, =1{gibibyte} other{gibibytes}}' => '{nFormatted} {n, plural, =1{gibibyte} other{gibibyte}}',
'{nFormatted} {n, plural, =1{gigabyte} other{gigabytes}}' => '{nFormatted} {n, plural, =1{gigabyte} other{gigabyte}}',
diff --git a/framework/messages/tg/yii.php b/framework/messages/tg/yii.php
index 76429c5874e..1af97508acc 100644
--- a/framework/messages/tg/yii.php
+++ b/framework/messages/tg/yii.php
@@ -1,4 +1,5 @@
'Дар {yii} кор мекунад',
- 'Unknown alias: -{name}' => 'Тахаллуси номаълум: -{name}',
- 'Yii Framework' => 'Yii Framework',
- '(not set)' => '(супориш дода нашуд)',
' and ' => ' ва ',
+ '"{attribute}" does not support operator "{operator}".' => '',
+ '(not set)' => '(супориш дода нашуд)',
+ 'Action not found.' => '',
+ 'Aliases available: {aliases}' => '',
'An internal server error occurred.' => 'Хатои дохилии сервер рух дод.',
'Are you sure you want to delete this item?' => 'Шумо боварманд ҳастед, ки ҳамин элементро нест кардан мехоҳед?',
+ 'Condition for "{attribute}" should be either a value or valid operator specification.' => '',
'Delete' => 'Нест кардан',
'Error' => 'Иштибоҳ',
'File upload failed.' => 'Фарокашии файл муяссар гашт.',
@@ -42,6 +44,9 @@
'No results found.' => 'Ҳеҷ чиз ёфт нашуд.',
'Only files with these MIME types are allowed: {mimeTypes}.' => 'Барои фарокашии файлҳо танҳо бо намудҳои зерини MIME иҷозат аст: {mimeTypes}.',
'Only files with these extensions are allowed: {extensions}.' => 'Барои фарокашии файлҳо танҳо тавассути зиёдкуни зерин иҷозат аст: {extensions}.',
+ 'Operator "{operator}" must be used with a search attribute.' => '',
+ 'Operator "{operator}" requires multiple operands.' => '',
+ 'Options available: {options}' => '',
'Page not found.' => 'Саҳифа ёфт нашуд.',
'Please fix the following errors:' => 'Лутфан, хатогиҳои зеринро ислоҳ намоед:',
'Please upload a file.' => 'Лутфан, файлро бор кунед.',
@@ -51,6 +56,7 @@
'The file "{file}" is too big. Its size cannot exceed {formattedLimit}.' => 'Ҳаҷми файли "{file}" азҳад зиёд калон аст. Андозаи он набояд аз {formattedLimit} зиёдтар бошад.',
'The file "{file}" is too small. Its size cannot be smaller than {formattedLimit}.' => 'Ҳаҷми файли "{file}" аз ҳад зиёд хурд аст. Он бояд аз {formattedLimit} калонтар бошад.',
'The format of {attribute} is invalid.' => 'Формати нодурусти маънӣ {attribute}.',
+ 'The format of {filter} is invalid.' => '',
'The image "{file}" is too large. The height cannot be larger than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'Ҳаҷми файли "{file}" аз ҳад зиёд калон аст. Баландияш набояд аз {limit, number} {limit, plural, one{пиксел} few{пиксел} many{пиксел} other{пиксел}} зиёд бошад.',
'The image "{file}" is too large. The width cannot be larger than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'Ҳаҷми файл "{file}" аз ҳад зиёд калон аст. Дарозияш набояд аз {limit, number} {limit, plural, one{пиксел} few{пиксел} many{пиксел} other{пиксел}} зиёд бошад.',
'The image "{file}" is too small. The height cannot be smaller than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'Ҳаҷми файл "{file}" аз ҳад зиёд хурд аст. Баландияш бояд аз {limit, number} {limit, plural, one{пиксел} few{пиксел} many{пиксел} other{пиксел}} зиёд бошад.',
@@ -59,12 +65,15 @@
'The verification code is incorrect.' => 'Рамзи нодурусти санҷишӣ.',
'Total {count, number} {count, plural, one{item} other{items}}.' => 'Ҳамаги {count, number} {count, plural, one{қайд} few{қайд} many{қайдҳо} other{қайд}}.',
'Unable to verify your data submission.' => 'Санҷидани маълумоти фиристодаи Шумо муяссар нагардид.',
+ 'Unknown alias: -{name}' => 'Тахаллуси номаълум: -{name}',
+ 'Unknown filter attribute "{attribute}"' => '',
'Unknown option: --{name}' => 'Гузинаи номаълум: --{name}',
'Update' => 'Таҳрир намудан',
'View' => 'Аз назар гузарондан',
'Yes' => 'Ҳа',
'You are not allowed to perform this action.' => 'Шумо барои анҷом додани амали мазкур иҷозат надоред.',
'You can upload at most {limit, number} {limit, plural, one{file} other{files}}.' => 'Шумо наметавонед зиёда аз {limit, number} {limit, plural,one{файлро} few{файлҳоро} many{файлро} other{файлро}} фаро бикашед.',
+ 'You should upload at least {limit, number} {limit, plural, one{file} other{files}}.' => '',
'in {delta, plural, =1{a day} other{# days}}' => 'баъд аз {delta, plural, =1{рӯз} one{# рӯз} few{# рӯз} many{# рӯз} other{# рӯз}}',
'in {delta, plural, =1{a minute} other{# minutes}}' => 'баъд аз {delta, plural, =1{дақиқа} one{# дақиқа} few{# дақиқа} many{# дақиқа} other{# дақиқа}}',
'in {delta, plural, =1{a month} other{# months}}' => 'баъд аз {delta, plural, =1{моҳ} one{# моҳ} few{# моҳ} many{# моҳ} other{# моҳ}}',
@@ -101,6 +110,7 @@
'{attribute} should contain at least {min, number} {min, plural, one{character} other{characters}}.' => 'Ҷадвали «{attribute}» бояд хади ақал {min, number} {min, plural, one{аломат} few{аломат} many{аломат} other{аломат}} дошта бошад.',
'{attribute} should contain at most {max, number} {max, plural, one{character} other{characters}}.' => 'Ҷадвали «{attribute}» бояд ҳади аксар {min, number} {min, plural, one{аломат} few{аломат} many{аломат} other{аломат}} дошта бошад.',
'{attribute} should contain {length, number} {length, plural, one{character} other{characters}}.' => 'Ҷадвали «{attribute}» бояд {length, number} {length, plural, one{аломат} few{аломат} many{аломат} other{аломат}} дошта бошад.',
+ '{compareAttribute} is invalid.' => '',
'{delta, plural, =1{1 day} other{# days}}' => '{delta, plural, one{# рӯз} few{# рӯз} many{# рӯз} other{# рӯз}}',
'{delta, plural, =1{1 hour} other{# hours}}' => '{delta, plural, one{# соат} few{# соат} many{# соат} other{# соат}}',
'{delta, plural, =1{1 minute} other{# minutes}}' => '{delta, plural, one{# дақиқа} few{# дақиқа} many{# дақиқа} other{# дақиқа}}',
@@ -116,7 +126,6 @@
'{nFormatted} B' => '{nFormatted} Б',
'{nFormatted} GB' => '{nFormatted} ГБ',
'{nFormatted} GiB' => '{nFormatted} ГиБ',
- '{nFormatted} kB' => '{nFormatted} КБ',
'{nFormatted} KiB' => '{nFormatted} КиБ',
'{nFormatted} MB' => '{nFormatted} МБ',
'{nFormatted} MiB' => '{nFormatted} МиБ',
@@ -124,6 +133,7 @@
'{nFormatted} PiB' => '{nFormatted} PiB',
'{nFormatted} TB' => '{nFormatted} TB',
'{nFormatted} TiB' => '{nFormatted} TiB',
+ '{nFormatted} kB' => '{nFormatted} КБ',
'{nFormatted} {n, plural, =1{byte} other{bytes}}' => '{nFormatted} {n, plural, one{байт} few{байт} many{байт} other{байт}}',
'{nFormatted} {n, plural, =1{gibibyte} other{gibibytes}}' => '{nFormatted} {n, plural, one{гибибайт} few{гибибайт} many{гибибайт} other{гибибайт}}',
'{nFormatted} {n, plural, =1{gigabyte} other{gigabytes}}' => '{nFormatted} {n, plural, one{гигабайт} few{гигабайт} many{гигабайт} other{гигабайт}}',
diff --git a/framework/messages/th/yii.php b/framework/messages/th/yii.php
index 0b2c056ed9f..51ceec41402 100644
--- a/framework/messages/th/yii.php
+++ b/framework/messages/th/yii.php
@@ -1,4 +1,5 @@
'',
+ '"{attribute}" does not support operator "{operator}".' => '',
'(not set)' => '(ไม่ได้ตั้ง)',
+ 'Action not found.' => '',
+ 'Aliases available: {aliases}' => '',
'An internal server error occurred.' => 'เกิดข้อผิดพลาดภายในเซิร์ฟเวอร์',
'Are you sure you want to delete this item?' => 'คุณแน่ใจหรือไม่ที่จะลบรายการนี้?',
+ 'Condition for "{attribute}" should be either a value or valid operator specification.' => '',
'Delete' => 'ลบ',
'Error' => 'ผิดพลาด',
'File upload failed.' => 'อัพโหลดไฟล์ล้มเหลว',
@@ -38,15 +44,19 @@
'No results found.' => 'ไม่พบผลลัพธ์',
'Only files with these MIME types are allowed: {mimeTypes}.' => 'เฉพาะไฟล์ที่มีชนิด MIME ต่อไปนี้ที่ได้รับการอนุญาต: {mimeTypes}',
'Only files with these extensions are allowed: {extensions}.' => 'เฉพาะไฟล์ที่มีนามสกุลต่อไปนี้ที่ได้รับอนุญาต: {extensions}',
+ 'Operator "{operator}" must be used with a search attribute.' => '',
+ 'Operator "{operator}" requires multiple operands.' => '',
+ 'Options available: {options}' => '',
'Page not found.' => 'ไม่พบหน้า',
'Please fix the following errors:' => 'โปรดแก้ไขข้อผิดพลาดต่อไปนี้:',
'Please upload a file.' => 'กรุณาอัพโหลดไฟล์',
- 'Powered by {yii}' => 'ขับเคลื่อนโดย {yii}',
'Showing {begin, number}-{end, number} of {totalCount, number} {totalCount, plural, one{item} other{items}}.' => 'แสดง {begin, number} ถึง {end, number} จาก {totalCount, number} ผลลัพธ์',
+ 'The combination {values} of {attributes} has already been taken.' => '',
'The file "{file}" is not an image.' => 'ไฟล์ "{file}" ไม่ใช่รูปภาพ',
'The file "{file}" is too big. Its size cannot exceed {formattedLimit}.' => 'ไฟล์ "{file}" มีขนาดใหญ่ไป ไฟล์จะต้องมีขนาดไม่เกิน {formattedLimit}',
'The file "{file}" is too small. Its size cannot be smaller than {formattedLimit}.' => 'ไฟล์ "{file}" มีขนาดเล็กเกินไป ไฟล์จะต้องมีขนาดมากกว่า {formattedLimit}',
'The format of {attribute} is invalid.' => 'รูปแบบ {attribute} ไม่ถูกต้อง',
+ 'The format of {filter} is invalid.' => '',
'The image "{file}" is too large. The height cannot be larger than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'รูปภาพ "{file}" ใหญ่เกินไป ความสูงต้องน้อยกว่า {limit, number} พิกเซล',
'The image "{file}" is too large. The width cannot be larger than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'รูปภาพ "{file}" ใหญ่เกินไป ความกว้างต้องน้อยกว่า {limit, number} พิกเซล',
'The image "{file}" is too small. The height cannot be smaller than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'รูปภาพ "{file}" เล็กเกินไป ความสูงต้องมากว่า {limit, number} พิกเซล',
@@ -55,28 +65,35 @@
'The verification code is incorrect.' => 'รหัสการยืนยันไม่ถูกต้อง',
'Total {count, number} {count, plural, one{item} other{items}}.' => 'ทั้งหมด {count, number} ผลลัพธ์',
'Unable to verify your data submission.' => 'ไม่สามารถตรวจสอบการส่งข้อมูลของคุณ',
+ 'Unknown alias: -{name}' => '',
+ 'Unknown filter attribute "{attribute}"' => '',
'Unknown option: --{name}' => 'ไม่รู้จักตัวเลือก: --{name}',
'Update' => 'ปรับปรุง',
'View' => 'ดู',
'Yes' => 'ใช่',
'You are not allowed to perform this action.' => 'คุณไม่ได้รับอนุญาตให้ดำเนินการนี้',
'You can upload at most {limit, number} {limit, plural, one{file} other{files}}.' => 'คุณสามารถอัพโหลดมากที่สุด {limit, number} ไฟล์',
- 'in {delta, plural, =1{a second} other{# seconds}}' => 'ใน {delta} วินาที',
- 'in {delta, plural, =1{a minute} other{# minutes}}' => 'ใน {delta} นาที',
- 'in {delta, plural, =1{an hour} other{# hours}}' => 'ใน {delta} ชั่วโมง',
+ 'You should upload at least {limit, number} {limit, plural, one{file} other{files}}.' => '',
'in {delta, plural, =1{a day} other{# days}}' => 'ใน {delta} วัน',
+ 'in {delta, plural, =1{a minute} other{# minutes}}' => 'ใน {delta} นาที',
'in {delta, plural, =1{a month} other{# months}}' => 'ใน {delta} เดือน',
+ 'in {delta, plural, =1{a second} other{# seconds}}' => 'ใน {delta} วินาที',
'in {delta, plural, =1{a year} other{# years}}' => 'ใน {delta} ปี',
+ 'in {delta, plural, =1{an hour} other{# hours}}' => 'ใน {delta} ชั่วโมง',
'just now' => 'เมื่อสักครู่นี้',
'the input value' => 'ค่าป้อนที่เข้ามา',
'{attribute} "{value}" has already been taken.' => '{attribute} "{value}" ถูกใช้ไปแล้ว',
'{attribute} cannot be blank.' => '{attribute}ต้องไม่ว่างเปล่า',
+ '{attribute} contains wrong subnet mask.' => '{attribute}ไม่ใช่ซับเน็ตที่ถูกต้อง',
'{attribute} is invalid.' => '{attribute}ไม่ถูกต้อง',
'{attribute} is not a valid URL.' => '{attribute}ไม่ใช่รูปแบบ URL ที่ถูกต้อง',
'{attribute} is not a valid email address.' => '{attribute}ไม่ใช่รูปแบบอีเมลที่ถูกต้อง',
+ '{attribute} is not in the allowed range.' => '{attribute}ไม่ได้อยู่ในช่วงที่ได้รับอนุญาต',
'{attribute} must be "{requiredValue}".' => '{attribute}ต้องการ "{requiredValue}"',
'{attribute} must be a number.' => '{attribute}ต้องเป็นตัวเลขเท่านั้น',
'{attribute} must be a string.' => '{attribute}ต้องเป็นตัวอักขระเท่านั้น',
+ '{attribute} must be a valid IP address.' => '{attribute}ต้องเป็นที่อยู่ไอพีที่ถูกต้อง',
+ '{attribute} must be an IP address with specified subnet.' => '{attribute}ต้องเป็นที่อยู่ไอพีกับซับเน็ตที่ระบุ',
'{attribute} must be an integer.' => '{attribute}ต้องเป็นจำนวนเต็มเท่านั้น',
'{attribute} must be either "{true}" or "{false}".' => '{attribute}ต้องเป็น "{true}" หรือ "{false}"',
'{attribute} must be equal to "{compareValueOrAttribute}".' => '{attribute}ต้องเหมือนกับ "{compareValueOrAttribute}"',
@@ -86,27 +103,46 @@
'{attribute} must be less than or equal to "{compareValueOrAttribute}".' => '{attribute}ต้องน้อยกว่าหรือเท่ากับ "{compareValueOrAttribute}"',
'{attribute} must be no greater than {max}.' => '{attribute}ต้องไม่มากกว่า {max}.',
'{attribute} must be no less than {min}.' => '{attribute}ต้องไม่น้อยกว่า {min}',
+ '{attribute} must not be a subnet.' => '{attribute}ต้องไม่ใช่ซับเน็ต',
+ '{attribute} must not be an IPv4 address.' => '{attribute}ต้องไม่ใช่ที่อยู่ไอพีรุ่น 4',
+ '{attribute} must not be an IPv6 address.' => '{attribute}ต้องไม่ใช่ที่อยู่ไอพีรุ่น 6',
'{attribute} must not be equal to "{compareValueOrAttribute}".' => '{attribute}ต้องมีค่าไม่เหมือนกับ "{compareValueOrAttribute}"',
'{attribute} should contain at least {min, number} {min, plural, one{character} other{characters}}.' => '{attribute}ควรประกอบด้วยอักขระอย่างน้อย {min, number} อักขระ',
'{attribute} should contain at most {max, number} {max, plural, one{character} other{characters}}.' => '{attribute}ควรประกอบด้วยอักขระอย่างมาก {max, number} อักขระ',
'{attribute} should contain {length, number} {length, plural, one{character} other{characters}}.' => '{attribute}ควรประกอบด้วย {length, number} อักขระ',
- '{attribute} contains wrong subnet mask.' => '{attribute}ไม่ใช่ซับเน็ตที่ถูกต้อง',
- '{attribute} is not in the allowed range.' => '{attribute}ไม่ได้อยู่ในช่วงที่ได้รับอนุญาต',
- '{attribute} must be a valid IP address.' => '{attribute}ต้องเป็นที่อยู่ไอพีที่ถูกต้อง',
- '{attribute} must be an IP address with specified subnet.' => '{attribute}ต้องเป็นที่อยู่ไอพีกับซับเน็ตที่ระบุ',
- '{attribute} must not be a subnet.' => '{attribute}ต้องไม่ใช่ซับเน็ต',
- '{attribute} must not be an IPv4 address.' => '{attribute}ต้องไม่ใช่ที่อยู่ไอพีรุ่น 4',
- '{attribute} must not be an IPv6 address.' => '{attribute}ต้องไม่ใช่ที่อยู่ไอพีรุ่น 6',
- '{delta, plural, =1{1 second} other{# seconds}}' => '{delta} วินาที',
+ '{compareAttribute} is invalid.' => '',
+ '{delta, plural, =1{1 day} other{# days}}' => '{delta} วัน',
'{delta, plural, =1{1 hour} other{# hours}}' => '{delta} ชั่วโมง',
'{delta, plural, =1{1 minute} other{# minutes}}' => '{delta} นาที',
- '{delta, plural, =1{1 day} other{# days}}' => '{delta} วัน',
'{delta, plural, =1{1 month} other{# months}}' => '{delta} เดือน',
+ '{delta, plural, =1{1 second} other{# seconds}}' => '{delta} วินาที',
'{delta, plural, =1{1 year} other{# years}}' => '{delta} ปี',
- '{delta, plural, =1{a second} other{# seconds}} ago' => '{delta} วินาทีที่ผ่านมา',
- '{delta, plural, =1{a minute} other{# minutes}} ago' => '{delta} นาทีที่ผ่านมา',
- '{delta, plural, =1{an hour} other{# hours}} ago' => '{delta} ชั่วโมงที่ผ่านมา',
'{delta, plural, =1{a day} other{# days}} ago' => '{delta} วันที่ผ่านมา',
+ '{delta, plural, =1{a minute} other{# minutes}} ago' => '{delta} นาทีที่ผ่านมา',
'{delta, plural, =1{a month} other{# months}} ago' => '{delta} เดือนที่ผ่านมา',
+ '{delta, plural, =1{a second} other{# seconds}} ago' => '{delta} วินาทีที่ผ่านมา',
'{delta, plural, =1{a year} other{# years}} ago' => '{delta} ปีที่ผ่านมา',
+ '{delta, plural, =1{an hour} other{# hours}} ago' => '{delta} ชั่วโมงที่ผ่านมา',
+ '{nFormatted} B' => '',
+ '{nFormatted} GB' => '',
+ '{nFormatted} GiB' => '',
+ '{nFormatted} KiB' => '',
+ '{nFormatted} MB' => '',
+ '{nFormatted} MiB' => '',
+ '{nFormatted} PB' => '',
+ '{nFormatted} PiB' => '',
+ '{nFormatted} TB' => '',
+ '{nFormatted} TiB' => '',
+ '{nFormatted} kB' => '',
+ '{nFormatted} {n, plural, =1{byte} other{bytes}}' => '',
+ '{nFormatted} {n, plural, =1{gibibyte} other{gibibytes}}' => '',
+ '{nFormatted} {n, plural, =1{gigabyte} other{gigabytes}}' => '',
+ '{nFormatted} {n, plural, =1{kibibyte} other{kibibytes}}' => '',
+ '{nFormatted} {n, plural, =1{kilobyte} other{kilobytes}}' => '',
+ '{nFormatted} {n, plural, =1{mebibyte} other{mebibytes}}' => '',
+ '{nFormatted} {n, plural, =1{megabyte} other{megabytes}}' => '',
+ '{nFormatted} {n, plural, =1{pebibyte} other{pebibytes}}' => '',
+ '{nFormatted} {n, plural, =1{petabyte} other{petabytes}}' => '',
+ '{nFormatted} {n, plural, =1{tebibyte} other{tebibytes}}' => '',
+ '{nFormatted} {n, plural, =1{terabyte} other{terabytes}}' => '',
];
diff --git a/framework/messages/tr/yii.php b/framework/messages/tr/yii.php
index b846f17d1e0..e3d134dbc5b 100644
--- a/framework/messages/tr/yii.php
+++ b/framework/messages/tr/yii.php
@@ -1,4 +1,5 @@
'',
+ '"{attribute}" does not support operator "{operator}".' => '',
'(not set)' => '(Veri Yok)',
+ 'Action not found.' => '',
+ 'Aliases available: {aliases}' => '',
'An internal server error occurred.' => 'Bir sunucu hatası oluştu.',
'Are you sure you want to delete this item?' => 'Bu veriyi silmek istediğinizden emin misiniz?',
+ 'Condition for "{attribute}" should be either a value or valid operator specification.' => '',
'Delete' => 'Sil',
'Error' => 'Hata',
'File upload failed.' => 'Dosya yükleme başarısız.',
@@ -38,28 +44,36 @@
'No results found.' => 'Sonuç bulunamadı',
'Only files with these MIME types are allowed: {mimeTypes}.' => 'Sadece bu tip MIME türleri geçerlidir: {mimeTypes}.',
'Only files with these extensions are allowed: {extensions}.' => 'Sadece bu tip uzantıları olan dosyalar geçerlidir: {extensions}.',
+ 'Operator "{operator}" must be used with a search attribute.' => '',
+ 'Operator "{operator}" requires multiple operands.' => '',
+ 'Options available: {options}' => '',
'Page not found.' => 'Sayfa bulunamadı.',
'Please fix the following errors:' => 'Lütfen hataları düzeltin:',
'Please upload a file.' => 'Lütfen bir dosya yükleyin.',
'Showing {begin, number}-{end, number} of {totalCount, number} {totalCount, plural, one{item} other{items}}.' => '{totalCount, number} {totalCount, plural, one{öğenin} other{öğenin}} {begin, number}-{end, number} arası gösteriliyor.',
+ 'The combination {values} of {attributes} has already been taken.' => '',
'The file "{file}" is not an image.' => '"{file}" bir resim dosyası değil.',
'The file "{file}" is too big. Its size cannot exceed {formattedLimit}.' => '"{file}" dosyası çok büyük. Boyutu {formattedLimit} değerinden büyük olamaz.',
'The file "{file}" is too small. Its size cannot be smaller than {formattedLimit}.' => '"{file}" dosyası çok küçük. Boyutu {formattedLimit} değerinden küçük olamaz.',
'The format of {attribute} is invalid.' => '{attribute} formatı geçersiz.',
+ 'The format of {filter} is invalid.' => '',
'The image "{file}" is too large. The height cannot be larger than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => '"{file}" çok büyük. Yükseklik {limit, plural, one{pixel} other{pixels}} değerinden büyük olamaz.',
'The image "{file}" is too large. The width cannot be larger than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => '"{file}" çok büyük. Genişlik {limit, number} {limit, plural, one{pixel} other{pixels}} değerinden büyük olamaz.',
'The image "{file}" is too small. The height cannot be smaller than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => '"{file}" çok küçük. Genişlik {limit, number} {limit, plural, one{pixel} other{pixels}} değerinden küçük olamaz.',
'The image "{file}" is too small. The width cannot be smaller than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => '"{file}" çok küçük. Genişlik {limit, number} {limit, plural, one{pixel} other{pixels}} değerinden küçük olamaz.',
+ 'The requested view "{name}" was not found.' => '',
'The verification code is incorrect.' => 'Doğrulama kodu yanlış.',
'Total {count, number} {count, plural, one{item} other{items}}.' => 'Toplam {count, number} {count, plural, one{öğe} other{öğe}}.',
'Unable to verify your data submission.' => 'İlettiğiniz veri doğrulanamadı.',
'Unknown alias: -{name}' => 'Bilinmeyen rumuz: -{name}',
+ 'Unknown filter attribute "{attribute}"' => '',
'Unknown option: --{name}' => 'Bilinmeyen opsiyon: --{name}',
'Update' => 'Güncelle',
'View' => 'Görüntüle',
'Yes' => 'Evet',
'You are not allowed to perform this action.' => 'Bu işlemi yapmaya yetkiniz yok.',
'You can upload at most {limit, number} {limit, plural, one{file} other{files}}.' => 'Sadece {limit, number} {limit, plural, one{dosya} other{# dosya}} yükleyebilirsiniz.',
+ 'You should upload at least {limit, number} {limit, plural, one{file} other{files}}.' => '',
'in {delta, plural, =1{a day} other{# days}}' => '{delta, plural, =1{bir gün} other{# gün}} içerisinde',
'in {delta, plural, =1{a minute} other{# minutes}}' => '{delta, plural, =1{bir dakika} other{# dakika}} içerisinde',
'in {delta, plural, =1{a month} other{# months}}' => '{delta, plural, =1{bir ay} other{# ay}} içerisinde',
@@ -96,6 +110,7 @@
'{attribute} should contain at least {min, number} {min, plural, one{character} other{characters}}.' => '{attribute} en az {min, number} karakter içermeli.',
'{attribute} should contain at most {max, number} {max, plural, one{character} other{characters}}.' => '{attribute} en fazla {max, number} karakter içermeli.',
'{attribute} should contain {length, number} {length, plural, one{character} other{characters}}.' => '{attribute} {length, number} karakter içermeli.',
+ '{compareAttribute} is invalid.' => '',
'{delta, plural, =1{1 day} other{# days}}' => '{delta, plural, =1{1 gün} other{# gün}}',
'{delta, plural, =1{1 hour} other{# hours}}' => '{delta, plural, =1{1 saat} other{# saat}}',
'{delta, plural, =1{1 minute} other{# minutes}}' => '{delta, plural, =1{1 dakika} other{# dakika}}',
@@ -111,7 +126,6 @@
'{nFormatted} B' => '{nFormatted} B',
'{nFormatted} GB' => '{nFormatted} GB',
'{nFormatted} GiB' => '{nFormatted} GiB',
- '{nFormatted} kB' => '{nFormatted} kB',
'{nFormatted} KiB' => '{nFormatted} KiB',
'{nFormatted} MB' => '{nFormatted} MB',
'{nFormatted} MiB' => '{nFormatted} MiB',
@@ -119,6 +133,7 @@
'{nFormatted} PiB' => '{nFormatted} PiB',
'{nFormatted} TB' => '{nFormatted} TB',
'{nFormatted} TiB' => '{nFormatted} TiB',
+ '{nFormatted} kB' => '{nFormatted} kB',
'{nFormatted} {n, plural, =1{byte} other{bytes}}' => '{nFormatted} {n, plural, =1{bayt} other{bayt}}',
'{nFormatted} {n, plural, =1{gibibyte} other{gibibytes}}' => '{nFormatted} {n, plural, =1{gibibayt} other{gibibayt}}',
'{nFormatted} {n, plural, =1{gigabyte} other{gigabytes}}' => '{nFormatted} {n, plural, =1{gigabayt} other{gigabayt}}',
diff --git a/framework/messages/uk/yii.php b/framework/messages/uk/yii.php
index fb6fed9c46a..5a668c10865 100644
--- a/framework/messages/uk/yii.php
+++ b/framework/messages/uk/yii.php
@@ -1,4 +1,5 @@
'Значення "{attribute}" повинно бути рівним "{compareValueOrAttribute}".',
- '{attribute} must be greater than "{compareValueOrAttribute}".' => 'Значення "{attribute}" повинно бути більшим значення "{compareValueOrAttribute}".',
- '{attribute} must be greater than or equal to "{compareValueOrAttribute}".' => 'Значення "{attribute}" повинно бути більшим або дорівнювати значенню "{compareValueOrAttribute}".',
- '{attribute} must be less than "{compareValueOrAttribute}".' => 'Значення "{attribute}" повинно бути меншим значення "{compareValueOrAttribute}".',
- '{attribute} must be less than or equal to "{compareValueOrAttribute}".' => 'Значення "{attribute}" повинно бути меншим або дорівнювати значенню "{compareValueOrAttribute}".',
- '{attribute} must not be equal to "{compareValueOrAttribute}".' => 'Значення "{attribute}" не повинно бути рівним "{compareValueOrAttribute}".',
+ ' and ' => '',
+ '"{attribute}" does not support operator "{operator}".' => '',
'(not set)' => '(не задано)',
+ 'Action not found.' => '',
+ 'Aliases available: {aliases}' => '',
'An internal server error occurred.' => 'Виникла внутрішня помилка сервера.',
'Are you sure you want to delete this item?' => 'Ви впевнені, що хочете видалити цей елемент?',
+ 'Condition for "{attribute}" should be either a value or valid operator specification.' => '',
'Delete' => 'Видалити',
'Error' => 'Помилка',
'File upload failed.' => 'Завантаження файлу не вдалося.',
@@ -44,14 +44,19 @@
'No results found.' => 'Нічого не знайдено.',
'Only files with these MIME types are allowed: {mimeTypes}.' => 'Дозволені файли лише з наступними MIME-типами: {mimeTypes}.',
'Only files with these extensions are allowed: {extensions}.' => 'Дозволені файли лише з наступними розширеннями: {extensions}.',
+ 'Operator "{operator}" must be used with a search attribute.' => '',
+ 'Operator "{operator}" requires multiple operands.' => '',
+ 'Options available: {options}' => '',
'Page not found.' => 'Сторінка не знайдена.',
'Please fix the following errors:' => 'Будь ласка, виправте наступні помилки:',
'Please upload a file.' => 'Будь ласка, завантажте файл.',
'Showing {begin, number}-{end, number} of {totalCount, number} {totalCount, plural, one{item} other{items}}.' => 'Показані {begin, number}-{end, number} із {totalCount, number} {totalCount, plural, one{запису} other{записів}}.',
+ 'The combination {values} of {attributes} has already been taken.' => '',
'The file "{file}" is not an image.' => 'Файл "{file}" не є зображенням.',
'The file "{file}" is too big. Its size cannot exceed {formattedLimit}.' => 'Файл "{file}" занадто великий. Розмір не повинен перевищувати {formattedLimit}.',
'The file "{file}" is too small. Its size cannot be smaller than {formattedLimit}.' => 'Файл "{file}" занадто малий. Розмір повинен бути більше, ніж {formattedLimit}.',
'The format of {attribute} is invalid.' => 'Невірний формат значення "{attribute}".',
+ 'The format of {filter} is invalid.' => '',
'The image "{file}" is too large. The height cannot be larger than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'Зображення "{file}" занадто велике. Висота не повинна перевищувати {limit, number} {limit, plural, one{піксель} few{пікселя} many{пікселів} other{пікселя}}.',
'The image "{file}" is too large. The width cannot be larger than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'Зображення "{file}" занадто велике. Ширина не повинна перевищувати {limit, number} {limit, plural, one{піксель} few{пікселя} many{пікселів} other{пікселя}}.',
'The image "{file}" is too small. The height cannot be smaller than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'Зображення "{file}" занадто мале. Висота повинна бути більше, ніж {limit, number} {limit, plural, one{піксель} few{пікселя} many{пікселів} other{пікселя}}.',
@@ -60,12 +65,15 @@
'The verification code is incorrect.' => 'Невірний код перевірки.',
'Total {count, number} {count, plural, one{item} other{items}}.' => 'Всього {count, number} {count, plural, one{запис} few{записи} many{записів} other{записи}}.',
'Unable to verify your data submission.' => 'Не вдалося перевірити передані дані.',
+ 'Unknown alias: -{name}' => '',
+ 'Unknown filter attribute "{attribute}"' => '',
'Unknown option: --{name}' => 'Невідома опція : --{name}',
'Update' => 'Оновити',
'View' => 'Переглянути',
'Yes' => 'Так',
'You are not allowed to perform this action.' => 'Вам не дозволено виконувати дану дію.',
'You can upload at most {limit, number} {limit, plural, one{file} other{files}}.' => 'Ви не можете завантажувати більше {limit, number} {limit, plural, one{файла} few{файлів} many{файлів} other{файла}}.',
+ 'You should upload at least {limit, number} {limit, plural, one{file} other{files}}.' => '',
'in {delta, plural, =1{a day} other{# days}}' => 'через {delta, plural, =1{день} one{# день} few{# дні} many{# днів} other{# дні}}',
'in {delta, plural, =1{a minute} other{# minutes}}' => 'через {delta, plural, =1{хвилину} one{# хвилину} few{# хвилини} many{# хвилин} other{# хвилини}}',
'in {delta, plural, =1{a month} other{# months}}' => 'через {delta, plural, =1{місяць} one{# місяць} few{# місяці} many{# місяців} other{# місяці}}',
@@ -88,14 +96,21 @@
'{attribute} must be an IP address with specified subnet.' => 'Значення «{attribute}» повинно бути IP адресою з підмережею.',
'{attribute} must be an integer.' => 'Значення "{attribute}" має бути цілим числом.',
'{attribute} must be either "{true}" or "{false}".' => 'Значення "{attribute}" має дорівнювати "{true}" або "{false}".',
+ '{attribute} must be equal to "{compareValueOrAttribute}".' => 'Значення "{attribute}" повинно бути рівним "{compareValueOrAttribute}".',
+ '{attribute} must be greater than "{compareValueOrAttribute}".' => 'Значення "{attribute}" повинно бути більшим значення "{compareValueOrAttribute}".',
+ '{attribute} must be greater than or equal to "{compareValueOrAttribute}".' => 'Значення "{attribute}" повинно бути більшим або дорівнювати значенню "{compareValueOrAttribute}".',
+ '{attribute} must be less than "{compareValueOrAttribute}".' => 'Значення "{attribute}" повинно бути меншим значення "{compareValueOrAttribute}".',
+ '{attribute} must be less than or equal to "{compareValueOrAttribute}".' => 'Значення "{attribute}" повинно бути меншим або дорівнювати значенню "{compareValueOrAttribute}".',
'{attribute} must be no greater than {max}.' => 'Значення "{attribute}" не повинно перевищувати {max}.',
'{attribute} must be no less than {min}.' => 'Значення "{attribute}" має бути більшим {min}.',
'{attribute} must not be a subnet.' => 'Значення «{attribute}» не повинно бути підмережею.',
'{attribute} must not be an IPv4 address.' => 'Значення «{attribute}» не повинно бути IPv4 адресою.',
'{attribute} must not be an IPv6 address.' => 'Значення «{attribute}» не повинно бути IPv6 адресою.',
+ '{attribute} must not be equal to "{compareValueOrAttribute}".' => 'Значення "{attribute}" не повинно бути рівним "{compareValueOrAttribute}".',
'{attribute} should contain at least {min, number} {min, plural, one{character} other{characters}}.' => 'Значення "{attribute}" повинно містити мінімум {min, number} {min, plural, one{символ} few{символа} many{символів} other{символа}}.',
'{attribute} should contain at most {max, number} {max, plural, one{character} other{characters}}.' => 'Значення "{attribute}" повинно містити максимум {max, number} {max, plural, one{символ} few{символа} many{символів} other{символа}}.',
'{attribute} should contain {length, number} {length, plural, one{character} other{characters}}.' => 'Значення "{attribute}" повинно містити {length, number} {length, plural, one{символ} few{символа} many{символів} other{символа}}.',
+ '{compareAttribute} is invalid.' => '',
'{delta, plural, =1{1 day} other{# days}}' => '{delta, plural, one{# день} few{# дні} many{# днів} other{# днів}}',
'{delta, plural, =1{1 hour} other{# hours}}' => '{delta, plural, one{# година} few{# години} many{# годин} other{# годин}}',
'{delta, plural, =1{1 minute} other{# minutes}}' => '{delta, plural, one{# хвилина} few{# хвилини} many{# хвилин} other{# хвилин}}',
@@ -111,7 +126,6 @@
'{nFormatted} B' => '{nFormatted} Б',
'{nFormatted} GB' => '{nFormatted} Гб',
'{nFormatted} GiB' => '{nFormatted} ГіБ',
- '{nFormatted} kB' => '{nFormatted} Кб',
'{nFormatted} KiB' => '{nFormatted} КіБ',
'{nFormatted} MB' => '{nFormatted} Мб',
'{nFormatted} MiB' => '{nFormatted} МіБ',
@@ -119,6 +133,7 @@
'{nFormatted} PiB' => '{nFormatted} ПіБ',
'{nFormatted} TB' => '{nFormatted} Тб',
'{nFormatted} TiB' => '{nFormatted} ТіБ',
+ '{nFormatted} kB' => '{nFormatted} Кб',
'{nFormatted} {n, plural, =1{byte} other{bytes}}' => '{nFormatted} {n, plural, one{байт} few{байта} many{байтів} other{байта}}',
'{nFormatted} {n, plural, =1{gibibyte} other{gibibytes}}' => '{nFormatted} {n, plural, one{гібібайт} few{гібібайта} many{гібібайтів} other{гібібайта}}',
'{nFormatted} {n, plural, =1{gigabyte} other{gigabytes}}' => '{nFormatted} {n, plural, one{гігабайт} few{гігабайта} many{гігабайтів} other{гігабайта}}',
diff --git a/framework/messages/uz-Cy/yii.php b/framework/messages/uz-Cy/yii.php
index f29a077b30c..05320d6958a 100644
--- a/framework/messages/uz-Cy/yii.php
+++ b/framework/messages/uz-Cy/yii.php
@@ -1,125 +1,148 @@
'{nFormatted} Б',
- '{nFormatted} GB' => '{nFormatted} ГБ',
- '{nFormatted} GiB' => '{nFormatted} ГиБ',
- '{nFormatted} KB' => '{nFormatted} КБ',
- '{nFormatted} KiB' => '{nFormatted} КиБ',
- '{nFormatted} MB' => '{nFormatted} МБ',
- '{nFormatted} MiB' => '{nFormatted} МиБ',
- '{nFormatted} PB' => '{nFormatted} ПБ',
- '{nFormatted} PiB' => '{nFormatted} ПиБ',
- '{nFormatted} TB' => '{nFormatted} ТБ',
- '{nFormatted} TiB' => '{nFormatted} ТиБ',
- '{nFormatted} {n, plural, =1{byte} other{bytes}}' => '{nFormatted} {n, plural, one{байт} few{байт} many{байтлар} other{байт}}',
- '{nFormatted} {n, plural, =1{gibibyte} other{gibibytes}}' => '{nFormatted} {n, plural, one{гибибайт} few{гибибайт} many{гибибайт} other{гибибайт}}',
- '{nFormatted} {n, plural, =1{gigabyte} other{gigabytes}}' => '{nFormatted} {n, plural, one{гигабайт} few{гигабайт} many{гигабайт} other{гигабайт}}',
- '{nFormatted} {n, plural, =1{kibibyte} other{kibibytes}}' => '{nFormatted} {n, plural, one{кибибайт} few{кибибайт} many{кибибайт} other{кибибайт}}',
- '{nFormatted} {n, plural, =1{kilobyte} other{kilobytes}}' => '{nFormatted} {n, plural, one{килобайт} few{килобайт} many{килобайт} other{килобайт}}',
- '{nFormatted} {n, plural, =1{mebibyte} other{mebibytes}}' => '{nFormatted} {n, plural, one{мебибайт} few{мебибайт} many{мебибайт} other{мебибайт}}',
- '{nFormatted} {n, plural, =1{megabyte} other{megabytes}}' => '{nFormatted} {n, plural, one{мегабайт} few{мегабайт} many{мегабайт} other{мегабайт}}',
- '{nFormatted} {n, plural, =1{pebibyte} other{pebibytes}}' => '{nFormatted} {n, plural, one{пебибайт} few{пебибайт} many{пебибайт} other{пебибайт}}',
- '{nFormatted} {n, plural, =1{petabyte} other{petabytes}}' => '{nFormatted} {n, plural, one{петабайт} few{петабайт} many{петабайт} other{петабайт}}',
- '{nFormatted} {n, plural, =1{tebibyte} other{tebibytes}}' => '{nFormatted} {n, plural, one{тебибайт} few{тебибайт} many{тебибайт} other{тебибайт}}',
- '{nFormatted} {n, plural, =1{terabyte} other{terabytes}}' => '{nFormatted} {n, plural, one{терабайт} few{терабайт} many{терабайт} other{терабайт}}',
- '(not set)' => '(қийматланмаган)',
- 'An internal server error occurred.' => 'Сервернинг ички хатолиги юз берди.',
- 'Are you sure you want to delete this item?' => 'Сиз ростдан ҳам ушбу элементни ўчирмоқчимисиз?',
- 'Delete' => 'Ўчириш',
- 'Error' => 'Хато',
- 'File upload failed.' => 'Файлни юклаб бўлмади.',
- 'Home' => 'Асосий',
- 'Invalid data received for parameter "{param}".' => '"{param}" параметр қиймати нотўғри.',
- 'Login Required' => 'Кириш талаб қилинади.',
- 'Missing required arguments: {params}' => 'Қуйидаги зарур аргументлар мавжуд эмас: {params}',
- 'Missing required parameters: {params}' => 'Қуйидаги зарур параметрлар мавжуд эмас: {params}',
- 'No' => 'Йўқ',
- 'No help for unknown command "{command}".' => '"{command}" ноаниқ команда учун маълумотнома мавжуд эмас.',
- 'No help for unknown sub-command "{command}".' => '"{command}" ноаниқ қисм команда учун маълумотнома мавжуд эмас.',
- 'No results found.' => 'Хеч нима топилмади.',
- 'Only files with these MIME types are allowed: {mimeTypes}.' => 'Фақат MIME-туридаги файлларни юклашга рухсат берилган: {mimeTypes}.',
- 'Only files with these extensions are allowed: {extensions}.' => 'Фақат қуйидаги кенгайтмали файлларни юклашга рухсат берилган: {extensions}.',
- 'Page not found.' => 'Саҳифа топилмади.',
- 'Please fix the following errors:' => 'Қуйидаги хатоликларни тўғриланг:',
- 'Please upload a file.' => 'Файлни юкланг.',
- 'Showing {begin, number}-{end, number} of {totalCount, number} {totalCount, plural, one{item} other{items}}.' => 'Намойиш этиляпти {begin, number}-{end, number} маълумот, жами: {totalCount, number} та',
- 'The file "{file}" is not an image.' => '«{file}» расм файл эмас.',
- 'The file "{file}" is too big. Its size cannot exceed {formattedLimit}.' => '«{file}» файл жуда катта. Ўлчам {formattedLimit} ошиши керак эмас.',
- 'The file "{file}" is too small. Its size cannot be smaller than {formattedLimit}.' => '«{file}» файл жуда кичкина. Ўлчам {formattedLimit} кам бўлмаслиги керак.',
- 'The format of {attribute} is invalid.' => '«{attribute}» қийматнинг формати нотўғри.',
- 'The image "{file}" is too large. The height cannot be larger than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => '«{file}» файл жуда катта. Баландлик {limit, number} {limit, plural, one{пикселдан} few{пикселдан} many{пикселдан} other{пикселдан}} ошмаслиги керак.',
- 'The image "{file}" is too large. The width cannot be larger than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => '«{file}» файл жуда катта. Эни {limit, number} {limit, plural, one{пикселдан} few{пикселдан} many{пикселдан} other{пикселдан}} ошмаслиги керак.',
- 'The image "{file}" is too small. The height cannot be smaller than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => '«{file}» файл жуда кичкина. Баландлик {limit, number} {limit, plural, one{пикселдан} few{пикселдан} many{пикселдан} other{пикселдан}} кам бўлмаслиги керак.',
- 'The image "{file}" is too small. The width cannot be smaller than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => '«{file}» файл жуда кичкина. Эни {limit, number} {limit, plural, one{пикселдан} few{пикселдан} many{пикселдан} other{пикселдан}} кам бўлмаслиги керак.',
- 'The requested view "{name}" was not found.' => 'Сўралаётган "{name}" файли топилмади.',
- 'The verification code is incorrect.' => 'Текширув коди нотўғри.',
- 'Total {count, number} {count, plural, one{item} other{items}}.' => 'Жами {count, number} {count, plural, one{ёзув} few{ёзув} many{ёзув} other{ёзув}}.',
- 'Unable to verify your data submission.' => 'Юборилган маълумотларни текшириб бўлмади.',
- 'Unknown command "{command}".' => '"{command}" ноаниқ бўйриқ.',
- 'Unknown option: --{name}' => 'Ноаниқ танлов: --{name}',
- 'Update' => 'Таҳририлаш',
- 'View' => 'Кўриш',
- 'Yes' => 'Ҳа',
- 'You are not allowed to perform this action.' => 'Сизга ушбу амални бажаришга руҳсат берилмаган.',
- 'You can upload at most {limit, number} {limit, plural, one{file} other{files}}.' => 'Сиз {limit, number} {limit, plural, one{файлдан} few{файллардан} many{файллардан} other{файллардан}} кўпини юклаб ололмайсиз.',
- 'in {delta, plural, =1{a day} other{# days}}' => '{delta, plural, =1{кундан} one{# кундан} few{# кундан} many{# кунлардан} other{# кундан}} кейин',
- 'in {delta, plural, =1{a minute} other{# minutes}}' => '{delta, plural, =1{минутдан} one{# минутдан} few{# минутлардан} many{# минутдан} other{# минутлардан}} кейин',
- 'in {delta, plural, =1{a month} other{# months}}' => '{delta, plural, =1{ойдан} one{# ойдан} few{# ойдан} many{# ойлардан} other{# ойлардан}} кейин',
- 'in {delta, plural, =1{a second} other{# seconds}}' => '{delta, plural, =1{секунддан} one{# секунддан} few{# секундлардан} many{# секунддан} other{# секундлардан}} кейин',
- 'in {delta, plural, =1{a year} other{# years}}' => '{delta, plural, =1{йилдан} one{# йилдан} few{# йиллардан} many{# йиллардан} other{# йиллардан}} кейин',
- 'in {delta, plural, =1{an hour} other{# hours}}' => '{delta, plural, =1{соатдан} one{# соатдан} few{# соатлардан} many{# соатлардан} other{# соатлардан}} кейин',
- 'just now' => 'ҳозироқ',
- 'the input value' => 'киритилган қиймат',
- '{attribute} "{value}" has already been taken.' => '{attribute} «{value}» аввалроқ банд қилинган.',
- '{attribute} cannot be blank.' => '«{attribute}» тўлдириш шарт.',
- '{attribute} is invalid.' => '«{attribute}» қиймати нотўғри',
- '{attribute} is not a valid URL.' => '«{attribute}» тўғри URL эмас.',
- '{attribute} is not a valid email address.' => '«{attribute}» тўғри электрон манзил эмас.',
- '{attribute} must be "{requiredValue}".' => '«{attribute}» қиймати «{requiredValue}» га тенг бўлиши керак.',
- '{attribute} must be a number.' => '«{attribute}» қиймати сон бўлиши керак.',
- '{attribute} must be a string.' => '«{attribute}» қиймати матн бўлиши керак.',
- '{attribute} must be an integer.' => '«{attribute}» қиймати бутун сон бўлиши керак.',
- '{attribute} must be either "{true}" or "{false}".' => '«{attribute}» қиймати «{true}» ёки «{false}» бўлиши керак.',
- '{attribute} must be greater than "{compareValue}".' => '«{attribute}» қиймати «{compareValue}» дан катта бўлиши керак.',
- '{attribute} must be greater than or equal to "{compareValue}".' => '«{attribute}» қиймати «{compareValue}» дан катта ёки тенг бўлиши керак.',
- '{attribute} must be less than "{compareValue}".' => '«{attribute}» қиймати «{compareValue}» дан кичкина бўлиши керак.',
- '{attribute} must be less than or equal to "{compareValue}".' => '«{attribute}» қиймати «{compareValue}» дан кичик ёки тенг бўлиши керак.',
- '{attribute} must be no greater than {max}.' => '«{attribute}» қиймати {max} дан ошмаслиги керак.',
- '{attribute} must be no less than {min}.' => '«{attribute}» қиймати {min} дан катта бўлиши керак.',
- '{attribute} must be repeated exactly.' => '«{attribute}» қиймати бир хил тарзда такрорланиши керак.',
- '{attribute} must not be equal to "{compareValue}".' => '«{attribute}» қиймати «{compareValue}» га тенг бўлмаслиги керак.',
- '{attribute} must not be equal to "{compareValueOrAttribute}".' => '«{attribute}» қиймати «{compareValueOrAttribute}» қийматига тенг бўлмаслиги лозим.',
- '{attribute} should contain at least {min, number} {min, plural, one{character} other{characters}}.' => '«{attribute}» қиймати минимум {min, number} {min, plural, one{белгидан} few{белгидан} many{белгидан} other{белгидан}} ташкил топиши керак.',
- '{attribute} should contain at most {max, number} {max, plural, one{character} other{characters}}.' => '«{attribute}» қиймати максимум {max, number} {max, plural, one{белгидан} few{белгидан} many{белгидан} other{белгидан}} ошмаслиги керак.',
- '{attribute} should contain {length, number} {length, plural, one{character} other{characters}}.' => '«{attribute}» қиймати {length, number} {length, plural, one{белгидан} few{белгидан} many{белгидан} other{белгидан}} ташкил топиши керак.',
- '{delta, plural, =1{a day} other{# days}} ago' => '{delta, plural, =1{кун} one{кун} few{# кун} many{# кун} other{# кун}} аввал',
- '{delta, plural, =1{a minute} other{# minutes}} ago' => '{delta, plural, =1{дақиқа} one{# дақиқа} few{# дақиқа} many{# дақиқа} other{# дақиқа}} аввал',
- '{delta, plural, =1{a month} other{# months}} ago' => '{delta, plural, =1{ой} one{# ой} few{# ой} many{# ой} other{# ой}} аввал',
- '{delta, plural, =1{a second} other{# seconds}} ago' => '{delta, plural, =1{сония} one{# сония} few{# сония} many{# сония} other{# сония}} аввал',
- '{delta, plural, =1{a year} other{# years}} ago' => '{delta, plural, =1{йил} one{# йил} few{# йил} many{# йил} other{# йил}} аввал',
- '{delta, plural, =1{an hour} other{# hours}} ago' => '{delta, plural, =1{соат} one{# соат} few{# соат} many{# соат} other{# соат}} аввал',
- ];
+/**
+ * @link https://www.yiiframework.com/
+ * @copyright Copyright (c) 2008 Yii Software LLC
+ * @license https://www.yiiframework.com/license/
+ */
+/**
+ * Message translations.
+ *
+ * This file is automatically generated by 'yii message/extract' command.
+ * It contains the localizable messages extracted from source code.
+ * You may modify this file by translating the extracted messages.
+ *
+ * Each array element represents the translation (value) of a message (key).
+ * If the value is empty, the message is considered as not translated.
+ * Messages that no longer need translation will have their translations
+ * enclosed between a pair of '@@' marks.
+ *
+ * Message string can be used with plural forms format. Check i18n section
+ * of the guide for details.
+ *
+ * NOTE: this file must be saved in UTF-8 encoding.
+ */
+return [
+ ' and ' => '',
+ '"{attribute}" does not support operator "{operator}".' => '',
+ '(not set)' => '(қийматланмаган)',
+ 'Action not found.' => '',
+ 'Aliases available: {aliases}' => '',
+ 'An internal server error occurred.' => 'Сервернинг ички хатолиги юз берди.',
+ 'Are you sure you want to delete this item?' => 'Сиз ростдан ҳам ушбу элементни ўчирмоқчимисиз?',
+ 'Condition for "{attribute}" should be either a value or valid operator specification.' => '',
+ 'Delete' => 'Ўчириш',
+ 'Error' => 'Хато',
+ 'File upload failed.' => 'Файлни юклаб бўлмади.',
+ 'Home' => 'Асосий',
+ 'Invalid data received for parameter "{param}".' => '"{param}" параметр қиймати нотўғри.',
+ 'Login Required' => 'Кириш талаб қилинади.',
+ 'Missing required arguments: {params}' => 'Қуйидаги зарур аргументлар мавжуд эмас: {params}',
+ 'Missing required parameters: {params}' => 'Қуйидаги зарур параметрлар мавжуд эмас: {params}',
+ 'No' => 'Йўқ',
+ 'No results found.' => 'Хеч нима топилмади.',
+ 'Only files with these MIME types are allowed: {mimeTypes}.' => 'Фақат MIME-туридаги файлларни юклашга рухсат берилган: {mimeTypes}.',
+ 'Only files with these extensions are allowed: {extensions}.' => 'Фақат қуйидаги кенгайтмали файлларни юклашга рухсат берилган: {extensions}.',
+ 'Operator "{operator}" must be used with a search attribute.' => '',
+ 'Operator "{operator}" requires multiple operands.' => '',
+ 'Options available: {options}' => '',
+ 'Page not found.' => 'Саҳифа топилмади.',
+ 'Please fix the following errors:' => 'Қуйидаги хатоликларни тўғриланг:',
+ 'Please upload a file.' => 'Файлни юкланг.',
+ 'Showing {begin, number}-{end, number} of {totalCount, number} {totalCount, plural, one{item} other{items}}.' => 'Намойиш этиляпти {begin, number}-{end, number} маълумот, жами: {totalCount, number} та',
+ 'The combination {values} of {attributes} has already been taken.' => '',
+ 'The file "{file}" is not an image.' => '«{file}» расм файл эмас.',
+ 'The file "{file}" is too big. Its size cannot exceed {formattedLimit}.' => '«{file}» файл жуда катта. Ўлчам {formattedLimit} ошиши керак эмас.',
+ 'The file "{file}" is too small. Its size cannot be smaller than {formattedLimit}.' => '«{file}» файл жуда кичкина. Ўлчам {formattedLimit} кам бўлмаслиги керак.',
+ 'The format of {attribute} is invalid.' => '«{attribute}» қийматнинг формати нотўғри.',
+ 'The format of {filter} is invalid.' => '',
+ 'The image "{file}" is too large. The height cannot be larger than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => '«{file}» файл жуда катта. Баландлик {limit, number} {limit, plural, one{пикселдан} few{пикселдан} many{пикселдан} other{пикселдан}} ошмаслиги керак.',
+ 'The image "{file}" is too large. The width cannot be larger than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => '«{file}» файл жуда катта. Эни {limit, number} {limit, plural, one{пикселдан} few{пикселдан} many{пикселдан} other{пикселдан}} ошмаслиги керак.',
+ 'The image "{file}" is too small. The height cannot be smaller than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => '«{file}» файл жуда кичкина. Баландлик {limit, number} {limit, plural, one{пикселдан} few{пикселдан} many{пикселдан} other{пикселдан}} кам бўлмаслиги керак.',
+ 'The image "{file}" is too small. The width cannot be smaller than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => '«{file}» файл жуда кичкина. Эни {limit, number} {limit, plural, one{пикселдан} few{пикселдан} many{пикселдан} other{пикселдан}} кам бўлмаслиги керак.',
+ 'The requested view "{name}" was not found.' => 'Сўралаётган "{name}" файли топилмади.',
+ 'The verification code is incorrect.' => 'Текширув коди нотўғри.',
+ 'Total {count, number} {count, plural, one{item} other{items}}.' => 'Жами {count, number} {count, plural, one{ёзув} few{ёзув} many{ёзув} other{ёзув}}.',
+ 'Unable to verify your data submission.' => 'Юборилган маълумотларни текшириб бўлмади.',
+ 'Unknown alias: -{name}' => '',
+ 'Unknown filter attribute "{attribute}"' => '',
+ 'Unknown option: --{name}' => 'Ноаниқ танлов: --{name}',
+ 'Update' => 'Таҳрирлаш',
+ 'View' => 'Кўриш',
+ 'Yes' => 'Ҳа',
+ 'You are not allowed to perform this action.' => 'Сизга ушбу амални бажаришга руҳсат берилмаган.',
+ 'You can upload at most {limit, number} {limit, plural, one{file} other{files}}.' => 'Сиз {limit, number} {limit, plural, one{файлдан} few{файллардан} many{файллардан} other{файллардан}} кўпини юклаб ололмайсиз.',
+ 'You should upload at least {limit, number} {limit, plural, one{file} other{files}}.' => '',
+ 'in {delta, plural, =1{a day} other{# days}}' => '{delta, plural, =1{кундан} one{# кундан} few{# кундан} many{# кунлардан} other{# кундан}} кейин',
+ 'in {delta, plural, =1{a minute} other{# minutes}}' => '{delta, plural, =1{минутдан} one{# минутдан} few{# минутлардан} many{# минутдан} other{# минутлардан}} кейин',
+ 'in {delta, plural, =1{a month} other{# months}}' => '{delta, plural, =1{ойдан} one{# ойдан} few{# ойдан} many{# ойлардан} other{# ойлардан}} кейин',
+ 'in {delta, plural, =1{a second} other{# seconds}}' => '{delta, plural, =1{секунддан} one{# секунддан} few{# секундлардан} many{# секунддан} other{# секундлардан}} кейин',
+ 'in {delta, plural, =1{a year} other{# years}}' => '{delta, plural, =1{йилдан} one{# йилдан} few{# йиллардан} many{# йиллардан} other{# йиллардан}} кейин',
+ 'in {delta, plural, =1{an hour} other{# hours}}' => '{delta, plural, =1{соатдан} one{# соатдан} few{# соатлардан} many{# соатлардан} other{# соатлардан}} кейин',
+ 'just now' => 'ҳозироқ',
+ 'the input value' => 'киритилган қиймат',
+ '{attribute} "{value}" has already been taken.' => '{attribute} «{value}» аввалроқ банд қилинган.',
+ '{attribute} cannot be blank.' => '«{attribute}» тўлдириш шарт.',
+ '{attribute} contains wrong subnet mask.' => '',
+ '{attribute} is invalid.' => '«{attribute}» қиймати нотўғри',
+ '{attribute} is not a valid URL.' => '«{attribute}» тўғри URL эмас.',
+ '{attribute} is not a valid email address.' => '«{attribute}» тўғри электрон манзил эмас.',
+ '{attribute} is not in the allowed range.' => '',
+ '{attribute} must be "{requiredValue}".' => '«{attribute}» қиймати «{requiredValue}» га тенг бўлиши керак.',
+ '{attribute} must be a number.' => '«{attribute}» қиймати сон бўлиши керак.',
+ '{attribute} must be a string.' => '«{attribute}» қиймати матн бўлиши керак.',
+ '{attribute} must be a valid IP address.' => '',
+ '{attribute} must be an IP address with specified subnet.' => '',
+ '{attribute} must be an integer.' => '«{attribute}» қиймати бутун сон бўлиши керак.',
+ '{attribute} must be either "{true}" or "{false}".' => '«{attribute}» қиймати «{true}» ёки «{false}» бўлиши керак.',
+ '{attribute} must be equal to "{compareValueOrAttribute}".' => '',
+ '{attribute} must be greater than "{compareValueOrAttribute}".' => '«{attribute}» қиймати «{compareValueOrAttribute}» дан катта бўлиши керак.',
+ '{attribute} must be greater than or equal to "{compareValueOrAttribute}".' => '«{attribute}» қиймати «{compareValueOrAttribute}» дан катта ёки тенг бўлиши керак.',
+ '{attribute} must be less than "{compareValueOrAttribute}".' => '«{attribute}» қиймати «{compareValueOrAttribute}» дан кичкина бўлиши керак.',
+ '{attribute} must be less than or equal to "{compareValueOrAttribute}".' => '«{attribute}» қиймати «{compareValueOrAttribute}» дан кичик ёки тенг бўлиши керак.',
+ '{attribute} must be no greater than {max}.' => '«{attribute}» қиймати {max} дан ошмаслиги керак.',
+ '{attribute} must be no less than {min}.' => '«{attribute}» қиймати {min} дан катта бўлиши керак.',
+ '{attribute} must not be a subnet.' => '',
+ '{attribute} must not be an IPv4 address.' => '',
+ '{attribute} must not be an IPv6 address.' => '',
+ '{attribute} must not be equal to "{compareValueOrAttribute}".' => '«{attribute}» қиймати «{compareValueOrAttribute}» қийматига тенг бўлмаслиги лозим.',
+ '{attribute} should contain at least {min, number} {min, plural, one{character} other{characters}}.' => '«{attribute}» қиймати минимум {min, number} {min, plural, one{белгидан} few{белгидан} many{белгидан} other{белгидан}} ташкил топиши керак.',
+ '{attribute} should contain at most {max, number} {max, plural, one{character} other{characters}}.' => '«{attribute}» қиймати максимум {max, number} {max, plural, one{белгидан} few{белгидан} many{белгидан} other{белгидан}} ошмаслиги керак.',
+ '{attribute} should contain {length, number} {length, plural, one{character} other{characters}}.' => '«{attribute}» қиймати {length, number} {length, plural, one{белгидан} few{белгидан} many{белгидан} other{белгидан}} ташкил топиши керак.',
+ '{compareAttribute} is invalid.' => '',
+ '{delta, plural, =1{1 day} other{# days}}' => '',
+ '{delta, plural, =1{1 hour} other{# hours}}' => '',
+ '{delta, plural, =1{1 minute} other{# minutes}}' => '',
+ '{delta, plural, =1{1 month} other{# months}}' => '',
+ '{delta, plural, =1{1 second} other{# seconds}}' => '',
+ '{delta, plural, =1{1 year} other{# years}}' => '',
+ '{delta, plural, =1{a day} other{# days}} ago' => '{delta, plural, =1{кун} one{кун} few{# кун} many{# кун} other{# кун}} аввал',
+ '{delta, plural, =1{a minute} other{# minutes}} ago' => '{delta, plural, =1{дақиқа} one{# дақиқа} few{# дақиқа} many{# дақиқа} other{# дақиқа}} аввал',
+ '{delta, plural, =1{a month} other{# months}} ago' => '{delta, plural, =1{ой} one{# ой} few{# ой} many{# ой} other{# ой}} аввал',
+ '{delta, plural, =1{a second} other{# seconds}} ago' => '{delta, plural, =1{сония} one{# сония} few{# сония} many{# сония} other{# сония}} аввал',
+ '{delta, plural, =1{a year} other{# years}} ago' => '{delta, plural, =1{йил} one{# йил} few{# йил} many{# йил} other{# йил}} аввал',
+ '{delta, plural, =1{an hour} other{# hours}} ago' => '{delta, plural, =1{соат} one{# соат} few{# соат} many{# соат} other{# соат}} аввал',
+ '{nFormatted} B' => '{nFormatted} Б',
+ '{nFormatted} GB' => '{nFormatted} ГБ',
+ '{nFormatted} GiB' => '{nFormatted} ГиБ',
+ '{nFormatted} KiB' => '{nFormatted} КиБ',
+ '{nFormatted} MB' => '{nFormatted} МБ',
+ '{nFormatted} MiB' => '{nFormatted} МиБ',
+ '{nFormatted} PB' => '{nFormatted} ПБ',
+ '{nFormatted} PiB' => '{nFormatted} ПиБ',
+ '{nFormatted} TB' => '{nFormatted} ТБ',
+ '{nFormatted} TiB' => '{nFormatted} ТиБ',
+ '{nFormatted} kB' => '',
+ '{nFormatted} {n, plural, =1{byte} other{bytes}}' => '{nFormatted} {n, plural, one{байт} few{байт} many{байтлар} other{байт}}',
+ '{nFormatted} {n, plural, =1{gibibyte} other{gibibytes}}' => '{nFormatted} {n, plural, one{гибибайт} few{гибибайт} many{гибибайт} other{гибибайт}}',
+ '{nFormatted} {n, plural, =1{gigabyte} other{gigabytes}}' => '{nFormatted} {n, plural, one{гигабайт} few{гигабайт} many{гигабайт} other{гигабайт}}',
+ '{nFormatted} {n, plural, =1{kibibyte} other{kibibytes}}' => '{nFormatted} {n, plural, one{кибибайт} few{кибибайт} many{кибибайт} other{кибибайт}}',
+ '{nFormatted} {n, plural, =1{kilobyte} other{kilobytes}}' => '{nFormatted} {n, plural, one{килобайт} few{килобайт} many{килобайт} other{килобайт}}',
+ '{nFormatted} {n, plural, =1{mebibyte} other{mebibytes}}' => '{nFormatted} {n, plural, one{мебибайт} few{мебибайт} many{мебибайт} other{мебибайт}}',
+ '{nFormatted} {n, plural, =1{megabyte} other{megabytes}}' => '{nFormatted} {n, plural, one{мегабайт} few{мегабайт} many{мегабайт} other{мегабайт}}',
+ '{nFormatted} {n, plural, =1{pebibyte} other{pebibytes}}' => '{nFormatted} {n, plural, one{пебибайт} few{пебибайт} many{пебибайт} other{пебибайт}}',
+ '{nFormatted} {n, plural, =1{petabyte} other{petabytes}}' => '{nFormatted} {n, plural, one{петабайт} few{петабайт} many{петабайт} other{петабайт}}',
+ '{nFormatted} {n, plural, =1{tebibyte} other{tebibytes}}' => '{nFormatted} {n, plural, one{тебибайт} few{тебибайт} many{тебибайт} other{тебибайт}}',
+ '{nFormatted} {n, plural, =1{terabyte} other{terabytes}}' => '{nFormatted} {n, plural, one{терабайт} few{терабайт} many{терабайт} other{терабайт}}',
+];
diff --git a/framework/messages/uz/yii.php b/framework/messages/uz/yii.php
index 306de73abcc..a17617bf489 100644
--- a/framework/messages/uz/yii.php
+++ b/framework/messages/uz/yii.php
@@ -1,4 +1,5 @@
'{nFormatted} B',
- '{nFormatted} GB' => '{nFormatted} GB',
- '{nFormatted} GiB' => '{nFormatted} GiB',
- '{nFormatted} kB' => '{nFormatted} kB',
- '{nFormatted} KiB' => '{nFormatted} KiB',
- '{nFormatted} MB' => '{nFormatted} MB',
- '{nFormatted} MiB' => '{nFormatted} MiB',
- '{nFormatted} PB' => '{nFormatted} PB',
- '{nFormatted} PiB' => '{nFormatted} PiB',
- '{nFormatted} TB' => '{nFormatted} TB',
- '{nFormatted} TiB' => '{nFormatted} TiB',
- '{nFormatted} {n, plural, =1{byte} other{bytes}}' => '{nFormatted} {n, plural, one{bayt} few{bayt} many{baytlar} other{bayt}}',
- '{nFormatted} {n, plural, =1{gibibyte} other{gibibytes}}' => '{nFormatted} {n, plural, one{gibibayt} few{gibibayt} many{gibibayt} other{gibibayt}}',
- '{nFormatted} {n, plural, =1{gigabyte} other{gigabytes}}' => '{nFormatted} {n, plural, one{gigabayt} few{gigabayt} many{gigabayt} other{gigabayt}}',
- '{nFormatted} {n, plural, =1{kibibyte} other{kibibytes}}' => '{nFormatted} {n, plural, one{kibibayt} few{kibibayt} many{kibibayt} other{kibibayt}}',
- '{nFormatted} {n, plural, =1{kilobyte} other{kilobytes}}' => '{nFormatted} {n, plural, one{kilobayt} few{kilobayt} many{kilobayt} other{kilobayt}}',
- '{nFormatted} {n, plural, =1{mebibyte} other{mebibytes}}' => '{nFormatted} {n, plural, one{mebibayt} few{mebibayt} many{mebibayt} other{mebibayt}}',
- '{nFormatted} {n, plural, =1{megabyte} other{megabytes}}' => '{nFormatted} {n, plural, one{megabayt} few{megabayt} many{megabayt} other{megabayt}}',
- '{nFormatted} {n, plural, =1{pebibyte} other{pebibytes}}' => '{nFormatted} {n, plural, one{pebibayt} few{pebibayt} many{pebibayt} other{pebibayt}}',
- '{nFormatted} {n, plural, =1{petabyte} other{petabytes}}' => '{nFormatted} {n, plural, one{petabayt} few{petabayt} many{petabayt} other{petabayt}}',
- '{nFormatted} {n, plural, =1{tebibyte} other{tebibytes}}' => '{nFormatted} {n, plural, one{tebibayt} few{tebibayt} many{tebibayt} other{tebibayt}}',
- '{nFormatted} {n, plural, =1{terabyte} other{terabytes}}' => '{nFormatted} {n, plural, one{terabayt} few{terabayt} many{terabayt} other{terabayt}}',
+ ' and ' => '',
+ '"{attribute}" does not support operator "{operator}".' => '',
'(not set)' => '(qiymatlanmagan)',
+ 'Action not found.' => '',
+ 'Aliases available: {aliases}' => '',
'An internal server error occurred.' => 'Serverning ichki xatoligi yuz berdi.',
'Are you sure you want to delete this item?' => 'Siz rostdan ham ushbu elementni o`chirmoqchimisiz?',
+ 'Condition for "{attribute}" should be either a value or valid operator specification.' => '',
'Delete' => 'O`chirish',
'Error' => 'Xato',
'File upload failed.' => 'Faylni yuklab bo`lmadi.',
@@ -57,19 +41,22 @@
'Missing required arguments: {params}' => 'Quyidagi zarur argumentlar mavjud emas: {params}',
'Missing required parameters: {params}' => 'Quyidagi zarur parametrlar mavjud emas: {params}',
'No' => 'Yo`q',
- 'No help for unknown command "{command}".' => '"{command}" noaniq komanda uchun ma`lumotnoma mavjud emas.',
- 'No help for unknown sub-command "{command}".' => '"{command}" noaniq qism komanda uchun ma`lumotnoma mavjud emas.',
'No results found.' => 'Hech nima topilmadi.',
'Only files with these MIME types are allowed: {mimeTypes}.' => 'Faqat quyidagi MIME-turidagi fayllarni yuklashga ruhsat berilgan: {mimeTypes}.',
'Only files with these extensions are allowed: {extensions}.' => 'Faqat quyidagi kengaytmali fayllarni yuklashga ruhsat berilgan: {extensions}.',
+ 'Operator "{operator}" must be used with a search attribute.' => '',
+ 'Operator "{operator}" requires multiple operands.' => '',
+ 'Options available: {options}' => '',
'Page not found.' => 'Sahifa topilmadi.',
'Please fix the following errors:' => 'Navbatdagi xatoliklarni to`g`rilang:',
'Please upload a file.' => 'Faylni yuklang.',
'Showing {begin, number}-{end, number} of {totalCount, number} {totalCount, plural, one{item} other{items}}.' => 'Namoyish etilayabdi {begin, number}-{end, number} ta yozuv {totalCount, number} tadan.',
+ 'The combination {values} of {attributes} has already been taken.' => '',
'The file "{file}" is not an image.' => '«{file}» fayl rasm emas.',
'The file "{file}" is too big. Its size cannot exceed {formattedLimit}.' => '«{file}» fayl juda katta. O`lcham {formattedLimit} oshishi kerak emas.',
'The file "{file}" is too small. Its size cannot be smaller than {formattedLimit}.' => '«{file}» fayl juda kichkina. O`lcham {formattedLimit} kam bo`lmasligi kerak.',
'The format of {attribute} is invalid.' => '«{attribute}» qiymatning formati noto`g`ri.',
+ 'The format of {filter} is invalid.' => '',
'The image "{file}" is too large. The height cannot be larger than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => '«{file}» fayl juda katta. Balandlik {limit, number} {limit, plural, one{pikseldan} few{pikseldan} many{pikseldan} other{pikseldan}} oshmasligi kerak.',
'The image "{file}" is too large. The width cannot be larger than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => '«{file}» fayl juda katta. Eni {limit, number} {limit, plural, one{pikseldan} few{pikseldan} many{pikseldan} other{pikseldan}} oshmasligi kerak.',
'The image "{file}" is too small. The height cannot be smaller than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => '«{file}» fayl juda kichkina. Balandlik {limit, number} {limit, plural, one{pikseldan} few{pikseldan} many{pikseldan} other{pikseldan}} kam bo`lmasligi kerak.',
@@ -78,13 +65,15 @@
'The verification code is incorrect.' => 'Tekshiruv kodi noto`g`ri.',
'Total {count, number} {count, plural, one{item} other{items}}.' => 'Jami {count, number} {count, plural, one{yozuv} few{yozuv} many{yozuv} other{yozuv}}.',
'Unable to verify your data submission.' => 'Yuborilgan ma`lumotlarni tekshirib bo`lmadi.',
- 'Unknown command "{command}".' => '"{command}" noaniq komanda.',
+ 'Unknown alias: -{name}' => '',
+ 'Unknown filter attribute "{attribute}"' => '',
'Unknown option: --{name}' => 'Noaniq opsiya: --{name}',
'Update' => 'Tahrirlash',
'View' => 'Ko`rish',
'Yes' => 'Ha',
'You are not allowed to perform this action.' => 'Sizga ushbu amalni bajarishga ruhsat berilmagan.',
'You can upload at most {limit, number} {limit, plural, one{file} other{files}}.' => 'Siz {limit, number} {limit, plural, one{fayldan} few{fayllardan} many{fayllardan} other{fayllardan}} ko`pini yuklab ola olmaysiz.',
+ 'You should upload at least {limit, number} {limit, plural, one{file} other{files}}.' => '',
'in {delta, plural, =1{a day} other{# days}}' => '{delta, plural, =1{kundan} one{# kundan} few{# kundan} many{# kunlardan} other{# kundan}} keyin',
'in {delta, plural, =1{a minute} other{# minutes}}' => '{delta, plural, =1{minutdan} one{# minutdan} few{# minutlardan} many{# minutdan} other{# minutlardan}} keyin',
'in {delta, plural, =1{a month} other{# months}}' => '{delta, plural, =1{oydan} one{# oydan} few{# oydan} many{# oylardan} other{# oylardan}} keyin',
@@ -95,30 +84,65 @@
'the input value' => 'kiritilgan qiymat',
'{attribute} "{value}" has already been taken.' => '{attribute} «{value}» avvalroq band qilingan.',
'{attribute} cannot be blank.' => '«{attribute}» to`ldirish shart.',
+ '{attribute} contains wrong subnet mask.' => '',
'{attribute} is invalid.' => '«{attribute}» qiymati noto`g`ri.',
'{attribute} is not a valid URL.' => '«{attribute}» qiymati to`g`ri URL emas.',
'{attribute} is not a valid email address.' => '«{attribute}» qiymati to`g`ri email manzil emas.',
+ '{attribute} is not in the allowed range.' => '',
'{attribute} must be "{requiredValue}".' => '«{attribute}» qiymati «{requiredValue}» ga teng bo`lishi kerak.',
'{attribute} must be a number.' => '«{attribute}» qiymati son bo`lishi kerak.',
'{attribute} must be a string.' => '«{attribute}» qiymati satr bo`lishi kerak.',
+ '{attribute} must be a valid IP address.' => '',
+ '{attribute} must be an IP address with specified subnet.' => '',
'{attribute} must be an integer.' => '«{attribute}» qiymati butun son bo`lishi kerak.',
'{attribute} must be either "{true}" or "{false}".' => '«{attribute}» qiymati «{true}» yoki «{false}» bo`lishi kerak.',
- '{attribute} must be greater than "{compareValue}".' => '«{attribute}» qiymati «{compareValue}» dan katta bo`lishi kerak.',
- '{attribute} must be greater than or equal to "{compareValue}".' => '«{attribute}» qiymati «{compareValue}» dan katta yoki teng bo`lishi kerak.',
- '{attribute} must be less than "{compareValue}".' => '«{attribute}» qiymati «{compareValue}» dan kichkina bo`lishi kerak.',
- '{attribute} must be less than or equal to "{compareValue}".' => '«{attribute}» qiymati «{compareValue}» dan kichik yoki teng bo`lishi kerak.',
+ '{attribute} must be equal to "{compareValueOrAttribute}".' => '',
+ '{attribute} must be greater than "{compareValueOrAttribute}".' => '«{attribute}» qiymati «{compareValueOrAttribute}» dan katta bo`lishi kerak.',
+ '{attribute} must be greater than or equal to "{compareValueOrAttribute}".' => '«{attribute}» qiymati «{compareValueOrAttribute}» dan katta yoki teng bo`lishi kerak.',
+ '{attribute} must be less than "{compareValueOrAttribute}".' => '«{attribute}» qiymati «{compareValueOrAttribute}» dan kichkina bo`lishi kerak.',
+ '{attribute} must be less than or equal to "{compareValueOrAttribute}".' => '«{attribute}» qiymati «{compareValueOrAttribute}» dan kichik yoki teng bo`lishi kerak.',
'{attribute} must be no greater than {max}.' => '«{attribute}» qiymati {max} dan oshmasligi kerak.',
'{attribute} must be no less than {min}.' => '«{attribute}» qiymati {min} dan kichkina bo`lmasligi kerak.',
- '{attribute} must be repeated exactly.' => '«{attribute}» qiymati bir xil tarzda takrorlanishi kerak.',
- '{attribute} must not be equal to "{compareValue}".' => '«{attribute}» qiymati «{compareValue}» ga teng bo`lmasligi kerak.',
+ '{attribute} must not be a subnet.' => '',
+ '{attribute} must not be an IPv4 address.' => '',
+ '{attribute} must not be an IPv6 address.' => '',
'{attribute} must not be equal to "{compareValueOrAttribute}".' => '«{attribute}» qiymati «{compareValueOrAttribute}» qiymatiga teng bo`lmasligi lozim.',
'{attribute} should contain at least {min, number} {min, plural, one{character} other{characters}}.' => '«{attribute}» qiymati minimum {min, number} {min, plural, one{belgidan} few{belgidan} many{belgidan} other{belgidan}} tashkil topishi kerak.',
'{attribute} should contain at most {max, number} {max, plural, one{character} other{characters}}.' => '«{attribute}» qiymati maksimum {max, number} {max, plural, one{belgidan} few{belgidan} many{belgidan} other{belgidan}} oshmasligi kerak.',
'{attribute} should contain {length, number} {length, plural, one{character} other{characters}}.' => '«{attribute}» qiymati {length, number} {length, plural, one{belgidan} few{belgidan} many{belgidan} other{belgidan}} tashkil topishi kerak.',
+ '{compareAttribute} is invalid.' => '',
+ '{delta, plural, =1{1 day} other{# days}}' => '',
+ '{delta, plural, =1{1 hour} other{# hours}}' => '',
+ '{delta, plural, =1{1 minute} other{# minutes}}' => '',
+ '{delta, plural, =1{1 month} other{# months}}' => '',
+ '{delta, plural, =1{1 second} other{# seconds}}' => '',
+ '{delta, plural, =1{1 year} other{# years}}' => '',
'{delta, plural, =1{a day} other{# days}} ago' => '{delta, plural, =1{kun} one{kun} few{# kun} many{# kun} other{# kun}} avval',
'{delta, plural, =1{a minute} other{# minutes}} ago' => '{delta, plural, =1{daqiqa} one{# daqiqa} few{# daqiqa} many{# daqiqa} other{# daqiqa}} avval',
'{delta, plural, =1{a month} other{# months}} ago' => '{delta, plural, =1{oy} one{# oy} few{# oy} many{# oy} other{# oy}} avval',
'{delta, plural, =1{a second} other{# seconds}} ago' => '{delta, plural, =1{soniya} one{# soniya} few{# soniya} many{# soniya} other{# soniya}} avval',
'{delta, plural, =1{a year} other{# years}} ago' => '{delta, plural, =1{yil} one{# yil} few{# yil} many{# yil} other{# yil}} avval',
'{delta, plural, =1{an hour} other{# hours}} ago' => '{delta, plural, =1{soat} one{# soat} few{# soat} many{# soat} other{# soat}} avval',
+ '{nFormatted} B' => '{nFormatted} B',
+ '{nFormatted} GB' => '{nFormatted} GB',
+ '{nFormatted} GiB' => '{nFormatted} GiB',
+ '{nFormatted} KiB' => '{nFormatted} KiB',
+ '{nFormatted} MB' => '{nFormatted} MB',
+ '{nFormatted} MiB' => '{nFormatted} MiB',
+ '{nFormatted} PB' => '{nFormatted} PB',
+ '{nFormatted} PiB' => '{nFormatted} PiB',
+ '{nFormatted} TB' => '{nFormatted} TB',
+ '{nFormatted} TiB' => '{nFormatted} TiB',
+ '{nFormatted} kB' => '{nFormatted} kB',
+ '{nFormatted} {n, plural, =1{byte} other{bytes}}' => '{nFormatted} {n, plural, one{bayt} few{bayt} many{baytlar} other{bayt}}',
+ '{nFormatted} {n, plural, =1{gibibyte} other{gibibytes}}' => '{nFormatted} {n, plural, one{gibibayt} few{gibibayt} many{gibibayt} other{gibibayt}}',
+ '{nFormatted} {n, plural, =1{gigabyte} other{gigabytes}}' => '{nFormatted} {n, plural, one{gigabayt} few{gigabayt} many{gigabayt} other{gigabayt}}',
+ '{nFormatted} {n, plural, =1{kibibyte} other{kibibytes}}' => '{nFormatted} {n, plural, one{kibibayt} few{kibibayt} many{kibibayt} other{kibibayt}}',
+ '{nFormatted} {n, plural, =1{kilobyte} other{kilobytes}}' => '{nFormatted} {n, plural, one{kilobayt} few{kilobayt} many{kilobayt} other{kilobayt}}',
+ '{nFormatted} {n, plural, =1{mebibyte} other{mebibytes}}' => '{nFormatted} {n, plural, one{mebibayt} few{mebibayt} many{mebibayt} other{mebibayt}}',
+ '{nFormatted} {n, plural, =1{megabyte} other{megabytes}}' => '{nFormatted} {n, plural, one{megabayt} few{megabayt} many{megabayt} other{megabayt}}',
+ '{nFormatted} {n, plural, =1{pebibyte} other{pebibytes}}' => '{nFormatted} {n, plural, one{pebibayt} few{pebibayt} many{pebibayt} other{pebibayt}}',
+ '{nFormatted} {n, plural, =1{petabyte} other{petabytes}}' => '{nFormatted} {n, plural, one{petabayt} few{petabayt} many{petabayt} other{petabayt}}',
+ '{nFormatted} {n, plural, =1{tebibyte} other{tebibytes}}' => '{nFormatted} {n, plural, one{tebibayt} few{tebibayt} many{tebibayt} other{tebibayt}}',
+ '{nFormatted} {n, plural, =1{terabyte} other{terabytes}}' => '{nFormatted} {n, plural, one{terabayt} few{terabayt} many{terabayt} other{terabayt}}',
];
diff --git a/framework/messages/vi/yii.php b/framework/messages/vi/yii.php
index 4bbc9f4896b..21e79213c69 100644
--- a/framework/messages/vi/yii.php
+++ b/framework/messages/vi/yii.php
@@ -1,4 +1,5 @@
' và ',
+ '"{attribute}" does not support operator "{operator}".' => '',
'(not set)' => '(không có)',
+ 'Action not found.' => '',
+ 'Aliases available: {aliases}' => '',
'An internal server error occurred.' => 'Máy chủ đã gặp sự cố nội bộ.',
'Are you sure you want to delete this item?' => 'Bạn có chắc là sẽ xóa mục này không?',
+ 'Condition for "{attribute}" should be either a value or valid operator specification.' => '',
'Delete' => 'Xóa',
'Error' => 'Lỗi',
'File upload failed.' => 'Không tải được file lên.',
@@ -36,19 +41,22 @@
'Missing required arguments: {params}' => 'Thiếu đối số: {params}',
'Missing required parameters: {params}' => 'Thiếu tham số: {params}',
'No' => 'Không',
- 'No help for unknown command "{command}".' => 'Không có trợ giúp cho lệnh không rõ "{command}"',
- 'No help for unknown sub-command "{command}".' => 'Không có trợ giúp cho tiểu lệnh không rõ "{command}"',
'No results found.' => 'Không tìm thấy kết quả nào.',
'Only files with these MIME types are allowed: {mimeTypes}.' => 'Chỉ các file với kiểu MIME sau đây được phép tải lên: {mimeTypes}',
'Only files with these extensions are allowed: {extensions}.' => 'Chỉ các file với phần mở rộng sau đây được phép tải lên: {extensions}',
+ 'Operator "{operator}" must be used with a search attribute.' => '',
+ 'Operator "{operator}" requires multiple operands.' => '',
+ 'Options available: {options}' => '',
'Page not found.' => 'Không tìm thấy trang.',
'Please fix the following errors:' => 'Vui lòng sửa các lỗi sau đây:',
'Please upload a file.' => 'Hãy tải file lên.',
'Showing {begin, number}-{end, number} of {totalCount, number} {totalCount, plural, one{item} other{items}}.' => 'Trình bày {begin, number}-{end, number} trong số {totalCount, number} mục.',
+ 'The combination {values} of {attributes} has already been taken.' => '',
'The file "{file}" is not an image.' => 'File "{file}" phải là một ảnh.',
'The file "{file}" is too big. Its size cannot exceed {formattedLimit}.' => 'File "{file}" quá lớn. Kích cỡ tối đa được phép tải lên là {formattedLimit}.',
'The file "{file}" is too small. Its size cannot be smaller than {formattedLimit}.' => 'File "{file}" quá nhỏ. Kích cỡ tối thiểu được phép tải lên là {formattedLimit}.',
'The format of {attribute} is invalid.' => 'Định dạng của {attribute} không hợp lệ.',
+ 'The format of {filter} is invalid.' => '',
'The image "{file}" is too large. The height cannot be larger than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'File "{file}" có kích thước quá lớn. Chiều cao tối đa được phép là {limit, number} pixel.',
'The image "{file}" is too large. The width cannot be larger than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'Ảnh "{file}" có kích thước quá lớn. Chiều rộng tối đa được phép là {limit, number} pixel.',
'The image "{file}" is too small. The height cannot be smaller than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'Ảnh "{file}" quá nhỏ. Chiều cao của ảnh không được phép nhỏ hơn {limit, number} pixel.',
@@ -57,13 +65,15 @@
'The verification code is incorrect.' => 'Mã xác thực không đúng.',
'Total {count, number} {count, plural, one{item} other{items}}.' => 'Tổng số {count, number} mục.',
'Unable to verify your data submission.' => 'Không kiểm tra được dữ liệu đã gửi lên.',
- 'Unknown command "{command}".' => 'Lệnh không biết "{command}"',
+ 'Unknown alias: -{name}' => '',
+ 'Unknown filter attribute "{attribute}"' => '',
'Unknown option: --{name}' => 'Tùy chọn không biết: --{name}',
'Update' => 'Sửa',
'View' => 'Xem',
'Yes' => 'Có',
'You are not allowed to perform this action.' => 'Bạn không được phép truy cập chức năng này.',
'You can upload at most {limit, number} {limit, plural, one{file} other{files}}.' => 'Chỉ có thể tải lên tối đa {limit, number} file.',
+ 'You should upload at least {limit, number} {limit, plural, one{file} other{files}}.' => '',
'in {delta, plural, =1{a day} other{# days}}' => 'trong {delta} ngày',
'in {delta, plural, =1{a minute} other{# minutes}}' => 'trong {delta} phút',
'in {delta, plural, =1{a month} other{# months}}' => 'trong {delta} tháng',
@@ -74,42 +84,65 @@
'the input value' => 'giá trị đã nhập',
'{attribute} "{value}" has already been taken.' => '{attribute} "{value}" đã bị sử dụng.',
'{attribute} cannot be blank.' => '{attribute} không được để trống.',
+ '{attribute} contains wrong subnet mask.' => '',
'{attribute} is invalid.' => '{attribute} không hợp lệ.',
'{attribute} is not a valid URL.' => '{attribute} không phải là URL hợp lệ.',
'{attribute} is not a valid email address.' => '{attribute} không phải là địa chỉ email hợp lệ.',
+ '{attribute} is not in the allowed range.' => '',
'{attribute} must be "{requiredValue}".' => '{attribute} phải là "{requiredValue}"',
'{attribute} must be a number.' => '{attribute} phải là số.',
'{attribute} must be a string.' => '{attribute} phải là chuỗi.',
+ '{attribute} must be a valid IP address.' => '',
+ '{attribute} must be an IP address with specified subnet.' => '',
'{attribute} must be an integer.' => '{attribute} phải là số nguyên.',
'{attribute} must be either "{true}" or "{false}".' => '{attribute} phải là "{true}" hoặc "{false}".',
- '{attribute} must be greater than "{compareValue}".' => '{attribute} phải lớn hơn "{compareValue}"',
- '{attribute} must be greater than or equal to "{compareValue}".' => '{attribute} phải lớn hơn hoặc bằng "{compareValue}"',
- '{attribute} must be less than "{compareValue}".' => '{attribute} phải nhỏ hơn "{compareValue}"',
- '{attribute} must be less than or equal to "{compareValue}".' => '{attribute} phải nhỏ hơn hoặc bằng "{compareValue}"',
+ '{attribute} must be equal to "{compareValueOrAttribute}".' => '{attribute} phải bằng "{compareValueOrAttribute}"',
+ '{attribute} must be greater than "{compareValueOrAttribute}".' => '{attribute} phải lớn hơn "{compareValueOrAttribute}"',
+ '{attribute} must be greater than or equal to "{compareValueOrAttribute}".' => '{attribute} phải lớn hơn hoặc bằng "{compareValueOrAttribute}"',
+ '{attribute} must be less than "{compareValueOrAttribute}".' => '{attribute} phải nhỏ hơn "{compareValueOrAttribute}"',
+ '{attribute} must be less than or equal to "{compareValueOrAttribute}".' => '{attribute} phải nhỏ hơn hoặc bằng "{compareValueOrAttribute}"',
'{attribute} must be no greater than {max}.' => '{attribute} không được lớn hơn {max}.',
'{attribute} must be no less than {min}.' => '{attribute} không được nhỏ hơn {min}',
- '{attribute} must be repeated exactly.' => '{attribute} phải lặp lại chính xác.',
- '{attribute} must not be equal to "{compareValue}".' => '{attribute} không được phép bằng "{compareValue}"',
- '{attribute} must be equal to "{compareValue}".' => '{attribute} phải bằng "{compareValue}"',
+ '{attribute} must not be a subnet.' => '',
+ '{attribute} must not be an IPv4 address.' => '',
+ '{attribute} must not be an IPv6 address.' => '',
+ '{attribute} must not be equal to "{compareValueOrAttribute}".' => '{attribute} không được phép bằng "{compareValueOrAttribute}"',
'{attribute} should contain at least {min, number} {min, plural, one{character} other{characters}}.' => '{attribute} phải chứa ít nhất {min, number} ký tự.',
'{attribute} should contain at most {max, number} {max, plural, one{character} other{characters}}.' => '{attribute} phải chứa nhiều nhất {max, number} ký tự.',
'{attribute} should contain {length, number} {length, plural, one{character} other{characters}}.' => '{attribute} phải bao gồm {length, number} ký tự.',
+ '{compareAttribute} is invalid.' => '',
+ '{delta, plural, =1{1 day} other{# days}}' => '',
+ '{delta, plural, =1{1 hour} other{# hours}}' => '',
+ '{delta, plural, =1{1 minute} other{# minutes}}' => '',
+ '{delta, plural, =1{1 month} other{# months}}' => '',
+ '{delta, plural, =1{1 second} other{# seconds}}' => '',
+ '{delta, plural, =1{1 year} other{# years}}' => '',
'{delta, plural, =1{a day} other{# days}} ago' => '{delta} ngày trước',
'{delta, plural, =1{a minute} other{# minutes}} ago' => '{delta} phút trước',
'{delta, plural, =1{a month} other{# months}} ago' => '{delta} tháng trước',
'{delta, plural, =1{a second} other{# seconds}} ago' => '{delta} giây trước',
'{delta, plural, =1{a year} other{# years}} ago' => '{delta} năm trước',
'{delta, plural, =1{an hour} other{# hours}} ago' => '{delta} giờ trước',
- '{n, plural, =1{# byte} other{# bytes}}' => '{n} byte',
- '{n, plural, =1{# gigabyte} other{# gigabytes}}' => '{n} gigabyte',
- '{n, plural, =1{# kilobyte} other{# kilobytes}}' => '{n} kilobyte',
- '{n, plural, =1{# megabyte} other{# megabytes}}' => '{n} megabyte',
- '{n, plural, =1{# petabyte} other{# petabytes}}' => '{n} petabyte',
- '{n, plural, =1{# terabyte} other{# terabytes}}' => '{n} terabyte',
- '{n} B' => '{n} B',
- '{n} GB' => '{n} GB',
- '{n} KB' => '{n} KB',
- '{n} MB' => '{n} MB',
- '{n} PB' => '{n} PB',
- '{n} TB' => '{n} TB',
+ '{nFormatted} B' => '{nFormatted} B',
+ '{nFormatted} GB' => '{nFormatted} GB',
+ '{nFormatted} GiB' => '',
+ '{nFormatted} KiB' => '',
+ '{nFormatted} MB' => '{nFormatted} MB',
+ '{nFormatted} MiB' => '',
+ '{nFormatted} PB' => '{nFormatted} PB',
+ '{nFormatted} PiB' => '',
+ '{nFormatted} TB' => '{nFormatted} TB',
+ '{nFormatted} TiB' => '',
+ '{nFormatted} kB' => '{nFormatted} kB',
+ '{nFormatted} {n, plural, =1{byte} other{bytes}}' => '{n} byte',
+ '{nFormatted} {n, plural, =1{gibibyte} other{gibibytes}}' => '',
+ '{nFormatted} {n, plural, =1{gigabyte} other{gigabytes}}' => '{nFormatted} gigabyte',
+ '{nFormatted} {n, plural, =1{kibibyte} other{kibibytes}}' => '',
+ '{nFormatted} {n, plural, =1{kilobyte} other{kilobytes}}' => '{nFormatted} kilobyte',
+ '{nFormatted} {n, plural, =1{mebibyte} other{mebibytes}}' => '',
+ '{nFormatted} {n, plural, =1{megabyte} other{megabytes}}' => '{nFormatted} megabyte',
+ '{nFormatted} {n, plural, =1{pebibyte} other{pebibytes}}' => '',
+ '{nFormatted} {n, plural, =1{petabyte} other{petabytes}}' => '{nFormatted} petabyte',
+ '{nFormatted} {n, plural, =1{tebibyte} other{tebibytes}}' => '',
+ '{nFormatted} {n, plural, =1{terabyte} other{terabytes}}' => '{nFormatted} terabyte',
];
diff --git a/framework/messages/zh-TW/yii.php b/framework/messages/zh-TW/yii.php
index 866b25d0f9b..ff206fe66e9 100644
--- a/framework/messages/zh-TW/yii.php
+++ b/framework/messages/zh-TW/yii.php
@@ -1,4 +1,5 @@
'未知的別名: -{name}',
+ ' and ' => '',
+ '"{attribute}" does not support operator "{operator}".' => '',
'(not set)' => '(未設定)',
+ 'Action not found.' => '',
+ 'Aliases available: {aliases}' => '',
'An internal server error occurred.' => '內部系統錯誤。',
'Are you sure you want to delete this item?' => '您確定要刪除此項嗎?',
+ 'Condition for "{attribute}" should be either a value or valid operator specification.' => '',
'Delete' => '刪除',
'Error' => '錯誤',
'File upload failed.' => '未能上傳檔案。',
@@ -36,22 +41,22 @@
'Missing required arguments: {params}' => '參數不齊全:{params}',
'Missing required parameters: {params}' => '參數不齊全:{params}',
'No' => '否',
- 'No help for unknown command "{command}".' => '子命令 "{command}" 發生未知的錯誤。',
- 'No help for unknown sub-command "{command}".' => '子命令 "{command}" 發生未知的錯誤。',
'No results found.' => '沒有資料。',
'Only files with these MIME types are allowed: {mimeTypes}.' => '只允許這些MIME類型的文件: {mimeTypes}。',
'Only files with these extensions are allowed: {extensions}.' => '只可以使用以下擴充名的檔案:{extensions}。',
+ 'Operator "{operator}" must be used with a search attribute.' => '',
+ 'Operator "{operator}" requires multiple operands.' => '',
+ 'Options available: {options}' => '',
'Page not found.' => '找不到頁面。',
'Please fix the following errors:' => '請修正以下錯誤:',
'Please upload a file.' => '請上傳一個檔案。',
- 'Powered by {yii}' => '技术支持 {yii}',
'Showing {begin, number}-{end, number} of {totalCount, number} {totalCount, plural, one{item} other{items}}.' => '第 {begin, number}-{end, number} 項,共 {totalCount, number} 項資料.',
+ 'The combination {values} of {attributes} has already been taken.' => '',
'The file "{file}" is not an image.' => '檔案 "{file}" 不是一個圖片檔案。',
'The file "{file}" is too big. Its size cannot exceed {formattedLimit}.' => '檔案"{file}"太大了。它的大小不可以超過{formattedLimit}。',
'The file "{file}" is too small. Its size cannot be smaller than {formattedLimit}.' => '文件"{file}"太小了。它的大小不可以小於{formattedLimit}。',
- 'The file "{file}" is too big. Its size cannot exceed {limit, number} {limit, plural, one{byte} other{bytes}}.' => '檔案 "{file}" 太大。它的大小不可以超過 {limit, number} 位元組。',
- 'The file "{file}" is too small. Its size cannot be smaller than {limit, number} {limit, plural, one{byte} other{bytes}}.' => '檔案 "{file}" 太小。它的大小不可以小於 {limit, number} 位元組。',
'The format of {attribute} is invalid.' => '屬性 {attribute} 的格式不正確。',
+ 'The format of {filter} is invalid.' => '',
'The image "{file}" is too large. The height cannot be larger than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => '圖像 "{file}" 太大。它的高度不可以超過 {limit, number} 像素。',
'The image "{file}" is too large. The width cannot be larger than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => '圖像 "{file}" 太大。它的寬度不可以超過 {limit, number} 像素。',
'The image "{file}" is too small. The height cannot be smaller than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => '圖像 "{file}" 太小。它的高度不可以小於 {limit, number} 像素。',
@@ -60,14 +65,22 @@
'The verification code is incorrect.' => '驗證碼不正確。',
'Total {count, number} {count, plural, one{item} other{items}}.' => '總計 {count, number} 項資料。',
'Unable to verify your data submission.' => '您提交的資料無法被驗證。',
- 'Unknown command "{command}".' => '未知的指令 "{command}"。',
+ 'Unknown alias: -{name}' => '未知的別名: -{name}',
+ 'Unknown filter attribute "{attribute}"' => '',
'Unknown option: --{name}' => '未知的選項:--{name}',
'Update' => '更新',
'View' => '查看',
'Yes' => '是',
- 'Yii Framework' => 'Yii 框架',
'You are not allowed to perform this action.' => '您沒有執行此操作的權限。',
'You can upload at most {limit, number} {limit, plural, one{file} other{files}}.' => '您最多可以上載 {limit, number} 個檔案。',
+ 'You should upload at least {limit, number} {limit, plural, one{file} other{files}}.' => '',
+ 'in {delta, plural, =1{a day} other{# days}}' => '{delta}天後',
+ 'in {delta, plural, =1{a minute} other{# minutes}}' => '{delta}分鐘後',
+ 'in {delta, plural, =1{a month} other{# months}}' => '{delta}個月後',
+ 'in {delta, plural, =1{a second} other{# seconds}}' => '{delta}秒後',
+ 'in {delta, plural, =1{a year} other{# years}}' => '{delta}年後',
+ 'in {delta, plural, =1{an hour} other{# hours}}' => '{delta}小時後',
+ 'just now' => '剛剛',
'the input value' => '該輸入',
'{attribute} "{value}" has already been taken.' => '{attribute} 的值 "{value}" 已經被佔用了。',
'{attribute} cannot be blank.' => '{attribute} 不能為空白。',
@@ -84,43 +97,35 @@
'{attribute} must be an integer.' => '{attribute} 必須為整數。',
'{attribute} must be either "{true}" or "{false}".' => '{attribute} 必須為 "{true}" 或 "{false}"。',
'{attribute} must be equal to "{compareValueOrAttribute}".' => '{attribute}必須等於"{compareValueOrAttribute}"。',
- '{attribute} must be greater than "{compareValue}".' => '{attribute} 必須大於 "{compareValue}"。',
- '{attribute} must be greater than or equal to "{compareValue}".' => '{attribute} 必須大或等於 "{compareValue}"。',
- '{attribute} must be less than "{compareValue}".' => '{attribute} 必須小於 "{compareValue}"。',
- '{attribute} must be less than or equal to "{compareValue}".' => '{attribute} 必須少或等於 "{compareValue}"。',
+ '{attribute} must be greater than "{compareValueOrAttribute}".' => '{attribute} 必須大於 "{compareValueOrAttribute}"。',
+ '{attribute} must be greater than or equal to "{compareValueOrAttribute}".' => '{attribute} 必須大或等於 "{compareValueOrAttribute}"。',
+ '{attribute} must be less than "{compareValueOrAttribute}".' => '{attribute} 必須小於 "{compareValueOrAttribute}"。',
+ '{attribute} must be less than or equal to "{compareValueOrAttribute}".' => '{attribute} 必須少或等於 "{compareValueOrAttribute}"。',
'{attribute} must be no greater than {max}.' => '{attribute} 不可以大於 {max}。',
'{attribute} must be no less than {min}.' => '{attribute} 不可以少於 {min}。',
'{attribute} must not be a subnet.' => '{attribute} 必須不是一個子網。',
'{attribute} must not be an IPv4 address.' => '{attribute} 必須不是一個IPv4地址。',
'{attribute} must not be an IPv6 address.' => '{attribute} 必須不是一個IPv6地址。',
- '{attribute} must be repeated exactly.' => '{attribute} 必須重複一致。',
- '{attribute} must not be equal to "{compareValue}".' => '{attribute} 不可以等於 "{compareValue}"。',
+ '{attribute} must not be equal to "{compareValueOrAttribute}".' => '{attribute} 不可以等於 "{compareValueOrAttribute}"。',
'{attribute} should contain at least {min, number} {min, plural, one{character} other{characters}}.' => '{attribute} 應該包含至少 {min, number} 個字符。',
'{attribute} should contain at most {max, number} {max, plural, one{character} other{characters}}.' => '{attribute} 只能包含最多 {max, number} 個字符。',
'{attribute} should contain {length, number} {length, plural, one{character} other{characters}}.' => '{attribute} 應該包含 {length, number} 個字符。',
- 'in {delta, plural, =1{a year} other{# years}}' => '{delta}年後',
- 'in {delta, plural, =1{a month} other{# months}}' => '{delta}個月後',
- 'in {delta, plural, =1{a day} other{# days}}' => '{delta}天後',
- 'in {delta, plural, =1{an hour} other{# hours}}' => '{delta}小時後',
- 'in {delta, plural, =1{a minute} other{# minutes}}' => '{delta}分鐘後',
- 'in {delta, plural, =1{a second} other{# seconds}}' => '{delta}秒後',
+ '{compareAttribute} is invalid.' => '',
'{delta, plural, =1{1 day} other{# days}}' => '{delta} 天',
'{delta, plural, =1{1 hour} other{# hours}}' => '{delta} 小時',
'{delta, plural, =1{1 minute} other{# minutes}}' => '{delta} 分鐘',
'{delta, plural, =1{1 month} other{# months}}' => '{delta} 月',
'{delta, plural, =1{1 second} other{# seconds}}' => '{delta} 秒',
'{delta, plural, =1{1 year} other{# years}}' => '{delta} 年',
- '{delta, plural, =1{a year} other{# years}} ago' => '{delta}年前',
- '{delta, plural, =1{a month} other{# months}} ago' => '{delta}個月前',
'{delta, plural, =1{a day} other{# days}} ago' => '{delta}天前',
- '{delta, plural, =1{an hour} other{# hours}} ago' => '{delta}小時前',
'{delta, plural, =1{a minute} other{# minutes}} ago' => '{delta}分鐘前',
- 'just now' => '剛剛',
+ '{delta, plural, =1{a month} other{# months}} ago' => '{delta}個月前',
'{delta, plural, =1{a second} other{# seconds}} ago' => '{delta}秒前',
+ '{delta, plural, =1{a year} other{# years}} ago' => '{delta}年前',
+ '{delta, plural, =1{an hour} other{# hours}} ago' => '{delta}小時前',
'{nFormatted} B' => '{nFormatted} B',
'{nFormatted} GB' => '{nFormatted} GB',
'{nFormatted} GiB' => '{nFormatted} GiB',
- '{nFormatted} kB' => '{nFormatted} kB',
'{nFormatted} KiB' => '{nFormatted} KiB',
'{nFormatted} MB' => '{nFormatted} MB',
'{nFormatted} MiB' => '{nFormatted} MiB',
@@ -128,6 +133,7 @@
'{nFormatted} PiB' => '{nFormatted} PiB',
'{nFormatted} TB' => '{nFormatted} TB',
'{nFormatted} TiB' => '{nFormatted} TiB',
+ '{nFormatted} kB' => '{nFormatted} kB',
'{nFormatted} {n, plural, =1{byte} other{bytes}}' => '{nFormatted} 字節',
'{nFormatted} {n, plural, =1{gibibyte} other{gibibytes}}' => '{nFormatted} 千兆位二進制字節',
'{nFormatted} {n, plural, =1{gigabyte} other{gigabytes}}' => '{nFormatted} 千兆字節',
diff --git a/framework/messages/zh/yii.php b/framework/messages/zh/yii.php
index 9d5447b89d7..3750c81093f 100644
--- a/framework/messages/zh/yii.php
+++ b/framework/messages/zh/yii.php
@@ -1,4 +1,5 @@
' 与 ',
'"{attribute}" does not support operator "{operator}".' => '"{attribute}" 不支持操作 "{operator}"',
'(not set)' => '(未设置)',
+ 'Action not found.' => '',
+ 'Aliases available: {aliases}' => '',
'An internal server error occurred.' => '服务器内部错误。',
'Are you sure you want to delete this item?' => '您确定要删除此项吗?',
'Condition for "{attribute}" should be either a value or valid operator specification.' => '"{attribute}" 的条件应为一个值或有效的操作规约。',
@@ -43,10 +46,10 @@
'Only files with these extensions are allowed: {extensions}.' => '只允许使用以下文件扩展名的文件:{extensions}。',
'Operator "{operator}" must be used with a search attribute.' => '操作 "{operator}" 必须与一个搜索属性一起使用。',
'Operator "{operator}" requires multiple operands.' => '操作 "{operator}" 需要多个操作数。',
+ 'Options available: {options}' => '',
'Page not found.' => '页面未找到。',
'Please fix the following errors:' => '请修复以下错误',
'Please upload a file.' => '请上传一个文件。',
- 'Powered by {yii}' => '技术支持 {yii}',
'Showing {begin, number}-{end, number} of {totalCount, number} {totalCount, plural, one{item} other{items}}.' => '第{begin, number}-{end, number}条,共{totalCount, number}条数据.',
'The combination {values} of {attributes} has already been taken.' => '{attributes} 的值 "{values}" 已经被占用了。',
'The file "{file}" is not an image.' => '文件 "{file}" 不是一个图像文件。',
@@ -68,7 +71,6 @@
'Update' => '更新',
'View' => '查看',
'Yes' => '是',
- 'Yii Framework' => 'Yii 框架',
'You are not allowed to perform this action.' => '您没有执行此操作的权限。',
'You can upload at most {limit, number} {limit, plural, one{file} other{files}}.' => '您最多上传{limit, number}个文件。',
'You should upload at least {limit, number} {limit, plural, one{file} other{files}}.' => '需要至少 {limit, number} 个文件。',
@@ -108,6 +110,7 @@
'{attribute} should contain at least {min, number} {min, plural, one{character} other{characters}}.' => '{attribute}应该包含至少{min, number}个字符。',
'{attribute} should contain at most {max, number} {max, plural, one{character} other{characters}}.' => '{attribute}只能包含至多{max, number}个字符。',
'{attribute} should contain {length, number} {length, plural, one{character} other{characters}}.' => '{attribute}应该包含{length, number}个字符。',
+ '{compareAttribute} is invalid.' => '',
'{delta, plural, =1{1 day} other{# days}}' => '{delta} 天',
'{delta, plural, =1{1 hour} other{# hours}}' => '{delta} 小时',
'{delta, plural, =1{1 minute} other{# minutes}}' => '{delta} 分钟',
@@ -123,7 +126,6 @@
'{nFormatted} B' => '{nFormatted} B',
'{nFormatted} GB' => '{nFormatted} GB',
'{nFormatted} GiB' => '{nFormatted} GiB',
- '{nFormatted} kB' => '{nFormatted} kB',
'{nFormatted} KiB' => '{nFormatted} KiB',
'{nFormatted} MB' => '{nFormatted} MB',
'{nFormatted} MiB' => '{nFormatted} MiB',
@@ -131,6 +133,7 @@
'{nFormatted} PiB' => '{nFormatted} PiB',
'{nFormatted} TB' => '{nFormatted} TB',
'{nFormatted} TiB' => '{nFormatted} TiB',
+ '{nFormatted} kB' => '{nFormatted} kB',
'{nFormatted} {n, plural, =1{byte} other{bytes}}' => '{nFormatted} 字节',
'{nFormatted} {n, plural, =1{gibibyte} other{gibibytes}}' => '{nFormatted} 千兆二进制字节',
'{nFormatted} {n, plural, =1{gigabyte} other{gigabytes}}' => '{nFormatted} 千兆字节',
diff --git a/framework/mutex/DbMutex.php b/framework/mutex/DbMutex.php
index 593cff4e08a..f6269fbba47 100644
--- a/framework/mutex/DbMutex.php
+++ b/framework/mutex/DbMutex.php
@@ -1,4 +1,5 @@
keyPrefix instanceof Expression) {
$expression = strtr($expression, [':prefix' => $this->keyPrefix->expression]);
$params = $this->keyPrefix->params;
diff --git a/framework/mutex/OracleMutex.php b/framework/mutex/OracleMutex.php
index 1e15876edd8..c24c5f20b3f 100644
--- a/framework/mutex/OracleMutex.php
+++ b/framework/mutex/OracleMutex.php
@@ -1,4 +1,5 @@
from(['fkc' => 'sys.foreign_key_columns'])
->innerJoin(['c' => 'sys.columns'], 'fkc.parent_object_id = c.object_id AND fkc.parent_column_id = c.column_id')
->innerJoin(['r' => 'sys.columns'], 'fkc.referenced_object_id = r.object_id AND fkc.referenced_column_id = r.column_id')
- ->andWhere('fkc.parent_object_id=OBJECT_ID(:fkc_parent_object_id)',[':fkc_parent_object_id' => $this->db->schema->getRawTableName($table)])
- ->andWhere('fkc.referenced_object_id=OBJECT_ID(:fkc_referenced_object_id)',[':fkc_referenced_object_id' => $this->db->schema->getRawTableName($referenceTable)])
+ ->andWhere('fkc.parent_object_id=OBJECT_ID(:fkc_parent_object_id)', [':fkc_parent_object_id' => $this->db->schema->getRawTableName($table)])
+ ->andWhere('fkc.referenced_object_id=OBJECT_ID(:fkc_referenced_object_id)', [':fkc_referenced_object_id' => $this->db->schema->getRawTableName($referenceTable)])
->andWhere(['c.name' => $column])
->andWhere(['r.name' => $referenceColumn])
->scalar($this->db);
@@ -77,8 +78,7 @@ public function up()
BEGIN
DELETE FROM {$schema}.{$authManager->itemChildTable} WHERE parent IN (SELECT name FROM deleted) OR child IN (SELECT name FROM deleted);
DELETE FROM {$schema}.{$authManager->itemTable} WHERE name IN (SELECT name FROM deleted);
- END;"
- );
+ END;");
$foreignKey = $this->findForeignKeyName($authManager->itemChildTable, 'child', $authManager->itemTable, 'name');
$this->execute("CREATE TRIGGER {$schema}.trigger_update_{$triggerSuffix}
@@ -106,8 +106,7 @@ public function up()
BEGIN
ALTER TABLE {$authManager->itemChildTable} CHECK CONSTRAINT {$foreignKey};
END
- END;"
- );
+ END;");
}
}
diff --git a/framework/requirements/requirements.php b/framework/requirements/requirements.php
index d065f6363bc..1bf372aee59 100644
--- a/framework/requirements/requirements.php
+++ b/framework/requirements/requirements.php
@@ -15,9 +15,9 @@
array(
'name' => 'PHP version',
'mandatory' => true,
- 'condition' => version_compare(PHP_VERSION, '5.4.0', '>='),
+ 'condition' => version_compare(PHP_VERSION, '7.3.0', '>='),
'by' => 'Yii Framework',
- 'memo' => 'PHP 5.4.0 or higher is required.',
+ 'memo' => 'PHP 7.3.0 or higher is required.',
),
array(
'name' => 'Reflection extension',
diff --git a/framework/rest/Action.php b/framework/rest/Action.php
index c700d665c8f..ca9accb27cf 100644
--- a/framework/rest/Action.php
+++ b/framework/rest/Action.php
@@ -1,4 +1,5 @@
getPagination()) !== false) {
+ $this->addPaginationHeaders($pagination);
+ }
+ if ($this->request->getIsHead()) {
+ return null;
+ }
if ($this->preserveKeys) {
$models = $dataProvider->getModels();
} else {
@@ -195,13 +202,7 @@ protected function serializeDataProvider($dataProvider)
}
$models = $this->serializeModels($models);
- if (($pagination = $dataProvider->getPagination()) !== false) {
- $this->addPaginationHeaders($pagination);
- }
-
- if ($this->request->getIsHead()) {
- return null;
- } elseif ($this->collectionEnvelope === null) {
+ if ($this->collectionEnvelope === null) {
return $models;
}
diff --git a/framework/rest/UpdateAction.php b/framework/rest/UpdateAction.php
index c307144231f..98c26602239 100644
--- a/framework/rest/UpdateAction.php
+++ b/framework/rest/UpdateAction.php
@@ -1,4 +1,5 @@
dataFile === null) {
-
if ($this->dataDirectory !== null) {
$dataFile = $this->getTableSchema()->fullName . '.php';
} else {
diff --git a/framework/test/ArrayFixture.php b/framework/test/ArrayFixture.php
index c146ab34e33..faa59c7a539 100644
--- a/framework/test/ArrayFixture.php
+++ b/framework/test/ArrayFixture.php
@@ -1,4 +1,5 @@
forceMasterDb && method_exists($connection, 'useMaster')) {
- $exists = $connection->useMaster(function() use ($relationQuery) {
+ $exists = $connection->useMaster(function () use ($relationQuery) {
return $relationQuery->exists();
});
} else {
@@ -328,7 +329,8 @@ private function applyTableAlias($query, $conditions, $alias = null)
$prefixedColumn = "{$alias}.[[" . preg_replace(
'/^' . preg_quote($alias, '/') . '\.(.*)$/',
'$1',
- $columnName) . ']]';
+ $columnName
+ ) . ']]';
} else {
// there is an expression, can't prefix it reliably
$prefixedColumn = $columnName;
diff --git a/framework/validators/FileValidator.php b/framework/validators/FileValidator.php
index 28d97f9c972..a93814a39ab 100644
--- a/framework/validators/FileValidator.php
+++ b/framework/validators/FileValidator.php
@@ -1,4 +1,5 @@
range)
+ if (
+ !is_array($this->range)
&& !($this->range instanceof \Closure)
&& !($this->range instanceof \Traversable)
) {
@@ -75,7 +77,8 @@ protected function validateValue($value)
{
$in = false;
- if ($this->allowArray
+ if (
+ $this->allowArray
&& ($value instanceof \Traversable || is_array($value))
&& ArrayHelper::isSubset($value, $this->range, $this->strict)
) {
diff --git a/framework/validators/RegularExpressionValidator.php b/framework/validators/RegularExpressionValidator.php
index 747c4d2a9ee..7de28d478b2 100644
--- a/framework/validators/RegularExpressionValidator.php
+++ b/framework/validators/RegularExpressionValidator.php
@@ -1,4 +1,5 @@
getParameters() as $param) {
$name = $param->getName();
if (array_key_exists($name, $params)) {
- $isValid = true;
- if (PHP_VERSION_ID >= 80000) {
- $isArray = ($type = $param->getType()) instanceof \ReflectionNamedType && $type->getName() === 'array';
- } else {
- $isArray = $param->isArray();
- }
+ $isValid = true;
+ $isArray = ($type = $param->getType()) instanceof \ReflectionNamedType && $type->getName() === 'array';
+
if ($isArray) {
$params[$name] = (array)$params[$name];
} elseif (is_array($params[$name])) {
diff --git a/framework/web/Cookie.php b/framework/web/Cookie.php
index d249afa6cbd..6214c83048c 100644
--- a/framework/web/Cookie.php
+++ b/framework/web/Cookie.php
@@ -1,4 +1,5 @@
db->useMaster(function() use ($oldID) {
+ $row = $this->db->useMaster(function () use ($oldID) {
return (new Query())->from($this->sessionTable)
->where(['id' => $oldID])
->createCommand($this->db)
diff --git a/framework/web/ErrorAction.php b/framework/web/ErrorAction.php
index e59f3ab2453..7ac9b0cbe27 100644
--- a/framework/web/ErrorAction.php
+++ b/framework/web/ErrorAction.php
@@ -1,4 +1,5 @@
data)
+ if (
+ is_array($response->data)
&& isset($response->data['data'], $response->data['callback'])
) {
$response->content = sprintf(
diff --git a/framework/web/Link.php b/framework/web/Link.php
index c64c34f81c5..bf62be8e76c 100644
--- a/framework/web/Link.php
+++ b/framework/web/Link.php
@@ -1,4 +1,5 @@
$link) {
if (is_array($link)) {
- foreach ($link as $i => $l) {
- $link[$i] = $l instanceof self ? array_filter((array) $l) : ['href' => $l];
- }
- $links[$rel] = $link;
- } elseif (!$link instanceof self) {
+ $links[$rel] = self::serialize($link);
+ } elseif ($link instanceof self) {
+ $links[$rel] = array_filter((array)$link);
+ } else {
$links[$rel] = ['href' => $link];
}
}
diff --git a/framework/web/Linkable.php b/framework/web/Linkable.php
index 1c7d1bdeb8f..190050bab2e 100644
--- a/framework/web/Linkable.php
+++ b/framework/web/Linkable.php
@@ -1,4 +1,5 @@
getSecureForwardedHeaderTrustedPart('for');
- if ($ip !== null && preg_match(
- '/^\[?(?P(?:(?:(?:[0-9a-f]{1,4}:){1,6}(?:[0-9a-f]{1,4})?(?:(?::[0-9a-f]{1,4}){1,6}))|(?:\d{1,3}\.){3}\d{1,3}))\]?(?::(?P\d+))?$/',
- $ip,
- $matches
- )) {
+ if (
+ $ip !== null && preg_match(
+ '/^\[?(?P(?:(?:(?:[0-9a-f]{1,4}:){1,6}(?:[0-9a-f]{1,4})?(?:(?::[0-9a-f]{1,4}){1,6}))|(?:\d{1,3}\.){3}\d{1,3}))\]?(?::(?P\d+))?$/',
+ $ip,
+ $matches
+ )
+ ) {
$ip = $this->getUserIpFromIpHeader($matches['ip']);
if ($ip !== null) {
return $ip;
@@ -1291,7 +1297,7 @@ protected function getUserIpFromIpHeader($ips)
public function getUserHost()
{
$userIp = $this->getUserIpFromIpHeaders();
- if($userIp === null) {
+ if ($userIp === null) {
return $this->getRemoteHost();
}
return gethostbyaddr($userIp);
@@ -1980,8 +1986,7 @@ protected function getSecureForwardedHeaderParts()
preg_match_all('/(?:[^",]++|"[^"]++")+/', $forwarded, $forwardedElements);
foreach ($forwardedElements[0] as $forwardedPairs) {
- preg_match_all('/(?P\w+)\s*=\s*(?:(?P[^",;]*[^",;\s])|"(?P[^"]+)")/', $forwardedPairs,
- $matches, PREG_SET_ORDER);
+ preg_match_all('/(?P\w+)\s*=\s*(?:(?P[^",;]*[^",;\s])|"(?P[^"]+)")/', $forwardedPairs, $matches, PREG_SET_ORDER);
$this->_secureForwardedHeaderParts[] = array_reduce($matches, function ($carry, $item) {
$value = $item['value'];
if (isset($item['value2']) && $item['value2'] !== '') {
diff --git a/framework/web/RequestParserInterface.php b/framework/web/RequestParserInterface.php
index 44a1051a6dd..cbc02ba731a 100644
--- a/framework/web/RequestParserInterface.php
+++ b/framework/web/RequestParserInterface.php
@@ -1,4 +1,5 @@
getIsActive()) {
if (isset($_SESSION)) {
- $this->frozenSessionData = $_SESSION;
+ $this->_frozenSessionData = $_SESSION;
}
$this->close();
Yii::info('Session frozen', __METHOD__);
@@ -1029,8 +1028,7 @@ protected function freeze()
*/
protected function unfreeze()
{
- if (null !== $this->frozenSessionData) {
-
+ if (null !== $this->_frozenSessionData) {
YII_DEBUG ? session_start() : @session_start();
if ($this->getIsActive()) {
@@ -1041,8 +1039,8 @@ protected function unfreeze()
Yii::error($message, __METHOD__);
}
- $_SESSION = $this->frozenSessionData;
- $this->frozenSessionData = null;
+ $_SESSION = $this->_frozenSessionData;
+ $this->_frozenSessionData = null;
}
}
diff --git a/framework/web/SessionIterator.php b/framework/web/SessionIterator.php
index e4b4c9eb809..433ebd943ac 100644
--- a/framework/web/SessionIterator.php
+++ b/framework/web/SessionIterator.php
@@ -1,4 +1,5 @@
routeParam]);
- $route = trim($params[0], '/');
+ $route = trim(isset($params[0]) ? $params[0] : '', '/');
unset($params[0]);
$baseUrl = $this->showScriptName || !$this->enablePrettyUrl ? $this->getScriptUrl() : $this->getBaseUrl();
diff --git a/framework/web/UrlNormalizer.php b/framework/web/UrlNormalizer.php
index 7d7459e868b..38ad1ead175 100644
--- a/framework/web/UrlNormalizer.php
+++ b/framework/web/UrlNormalizer.php
@@ -1,4 +1,5 @@
getRequest();
$canRedirect = !$checkAcceptHeader || $this->checkRedirectAcceptable();
- if ($this->enableSession
+ if (
+ $this->enableSession
&& $request->getIsGet()
&& (!$checkAjax || !$request->getIsAjax())
&& $canRedirect
diff --git a/framework/web/UserEvent.php b/framework/web/UserEvent.php
index 34a028910bf..404d2c52d3d 100644
--- a/framework/web/UserEvent.php
+++ b/framework/web/UserEvent.php
@@ -1,4 +1,5 @@
useTraversableAsArray && !$data instanceof Arrayable)
) {
foreach ($data as $name => $value) {
diff --git a/framework/web/YiiAsset.php b/framework/web/YiiAsset.php
index a66908b8a9d..52a73d795da 100644
--- a/framework/web/YiiAsset.php
+++ b/framework/web/YiiAsset.php
@@ -1,4 +1,5 @@
isItemActive($item), $this);
+ if (call_user_func($item['active'], $item, $hasActiveChild, $this->isItemActive($item), $this)) {
+ $active = $items[$i]['active'] = true;
+ } else {
+ $items[$i]['active'] = false;
+ }
} elseif ($item['active']) {
$active = true;
}
diff --git a/framework/widgets/Pjax.php b/framework/widgets/Pjax.php
index fceaf1821a9..fbcd01eac55 100644
--- a/framework/widgets/Pjax.php
+++ b/framework/widgets/Pjax.php
@@ -1,4 +1,5 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ framework/views/*
+
diff --git a/phpunit.xml.dist b/phpunit.xml.dist
index 2b9f7c6df55..9347786ca23 100644
--- a/phpunit.xml.dist
+++ b/phpunit.xml.dist
@@ -1,30 +1,35 @@
-
-
-
- ./tests
-
-
-
-
- framework/
-
-
- framework/i18n/GettextFile.php
- framework/web/ResponseFormatterInterface.php
- framework/.phpstorm.meta.php
- framework/base
- framework/bootstrap
-
-
-
-
-
+
+
+
+ ./tests
+
+
+
+
+
+ framework/
+
+
+ framework/.phpstorm.meta.php
+ framework/i18n/GettextFile.php
+ framework/web/ResponseFormatterInterface.php
+ framework/bootstrap
+ framework/base
+ framework/requirements
+
+
diff --git a/tests/IsOneOfAssert.php b/tests/IsOneOfAssert.php
index 5c630b7d041..36615a70b10 100644
--- a/tests/IsOneOfAssert.php
+++ b/tests/IsOneOfAssert.php
@@ -14,37 +14,33 @@
*/
class IsOneOfAssert extends \PHPUnit\Framework\Constraint\Constraint
{
- private $allowedValues;
-
/**
- * IsOneOfAssert constructor.
- * @param array $allowedValues
+ * @var array the expected values
*/
+ private $allowedValues = [];
+
public function __construct(array $allowedValues)
{
- parent::__construct();
$this->allowedValues = $allowedValues;
}
-
/**
* Returns a string representation of the object.
- *
- * @return string
*/
- public function toString()
+ public function toString(): string
{
- $allowedValues = array_map(function ($value) {
- return VarDumper::dumpAsString($value);
- }, $this->allowedValues);
+ $allowedValues = [];
+
+ foreach ($this->allowedValues as $value) {
+ $this->allowedValues[] = VarDumper::dumpAsString($value);
+ }
+
$expectedAsString = implode(', ', $allowedValues);
+
return "is one of $expectedAsString";
}
- /**
- * {@inheritdoc}
- */
- protected function matches($other)
+ protected function matches($other): bool
{
return in_array($other, $this->allowedValues, false);
}
diff --git a/tests/ResultPrinter.php b/tests/ResultPrinter.php
index 89299f0557c..6a6fca92dcc 100644
--- a/tests/ResultPrinter.php
+++ b/tests/ResultPrinter.php
@@ -12,12 +12,18 @@
* to change default output to STDOUT and prevent some tests from fail when
* they can not be executed after headers have been sent.
*/
-class ResultPrinter extends \PHPUnit\TextUI\ResultPrinter
+class ResultPrinter extends \PHPUnit\TextUI\DefaultResultPrinter
{
+ private $out = null;
+
+ /**
+ * @param null|resource|string $out
+ * @param int|string $numberOfColumns
+ */
public function __construct(
$out = null,
$verbose = false,
- $colors = \PHPUnit\TextUI\ResultPrinter::COLOR_DEFAULT,
+ $colors = \PHPUnit\TextUI\DefaultResultPrinter::COLOR_DEFAULT,
$debug = false,
$numberOfColumns = 80,
$reverse = false
@@ -29,7 +35,7 @@ public function __construct(
parent::__construct($out, $verbose, $colors, $debug, $numberOfColumns, $reverse);
}
- public function flush()
+ public function flush(): void
{
if ($this->out !== STDOUT) {
parent::flush();
diff --git a/tests/TestCase.php b/tests/TestCase.php
index 5a8287f1f55..192a3ccb2a7 100644
--- a/tests/TestCase.php
+++ b/tests/TestCase.php
@@ -20,7 +20,7 @@ abstract class TestCase extends \PHPUnit\Framework\TestCase
/**
* Clean up after test case.
*/
- public static function tearDownAfterClass()
+ public static function tearDownAfterClass(): void
{
parent::tearDownAfterClass();
$logger = Yii::getLogger();
@@ -46,7 +46,7 @@ public static function getParam($name, $default = null)
* Clean up after test.
* By default the application created with [[mockApplication]] will be destroyed.
*/
- protected function tearDown()
+ protected function tearDown(): void
{
parent::tearDown();
$this->destroyApplication();
@@ -168,7 +168,7 @@ protected function assertContainsWithoutLE($needle, $haystack, $message = '')
$needle = str_replace("\r\n", "\n", $needle);
$haystack = str_replace("\r\n", "\n", $haystack);
- $this->assertContains($needle, $haystack, $message);
+ $this->assertStringContainsString($needle, $haystack, $message);
}
/**
diff --git a/tests/bootstrap.php b/tests/bootstrap.php
index 44714ab28da..35a3b1e4a90 100644
--- a/tests/bootstrap.php
+++ b/tests/bootstrap.php
@@ -28,5 +28,4 @@
Yii::setAlias('@runtime', getenv('TEST_RUNTIME_PATH'));
}
-require_once __DIR__ . '/compatibility.php';
require_once __DIR__ . '/TestCase.php';
diff --git a/tests/compatibility.php b/tests/compatibility.php
deleted file mode 100644
index 5a14c6e36e2..00000000000
--- a/tests/compatibility.php
+++ /dev/null
@@ -1,75 +0,0 @@
-setExpectedException($exception);
- }
-
- /**
- * @param string $message
- */
- public function expectExceptionMessage($message)
- {
- $parentClassMethods = get_class_methods('PHPUnit_Framework_TestCase');
- if (in_array('expectExceptionMessage', $parentClassMethods)) {
- parent::expectExceptionMessage($message);
- return;
- }
- $this->setExpectedException($this->getExpectedException(), $message);
- }
-
- /**
- * @param string $messageRegExp
- */
- public function expectExceptionMessageRegExp($messageRegExp)
- {
- $parentClassMethods = get_class_methods('PHPUnit_Framework_TestCase');
- if (in_array('expectExceptionMessageRegExp', $parentClassMethods)) {
- parent::expectExceptionMessageRegExp($messageRegExp);
- return;
- }
- $this->setExpectedExceptionRegExp($this->getExpectedException(), $messageRegExp);
- }
- }
- }
-}
diff --git a/tests/framework/BaseYiiTest.php b/tests/framework/BaseYiiTest.php
index 4e17fff0668..b0c99e9787d 100644
--- a/tests/framework/BaseYiiTest.php
+++ b/tests/framework/BaseYiiTest.php
@@ -26,13 +26,13 @@ class BaseYiiTest extends TestCase
{
public $aliases;
- protected function setUp()
+ protected function setUp(): void
{
parent::setUp();
$this->aliases = Yii::$aliases;
}
- protected function tearDown()
+ protected function tearDown(): void
{
parent::tearDown();
Yii::$aliases = $this->aliases;
@@ -72,7 +72,7 @@ public function testGetVersion()
public function testPowered()
{
- $this->assertInternalType('string', Yii::powered());
+ $this->assertIsString(Yii::powered());
}
public function testCreateObjectArray()
diff --git a/tests/framework/ChangeLogTest.php b/tests/framework/ChangeLogTest.php
index eef6cae4585..0dd72530b58 100644
--- a/tests/framework/ChangeLogTest.php
+++ b/tests/framework/ChangeLogTest.php
@@ -54,6 +54,9 @@ public function testContributorLine($line)
* - Description ends without a "."
* - Line ends with contributor name between "(" and ")".
*/
- $this->assertRegExp('/- (Bug|Enh|Chg|New)( #\d+(, #\d+)*)?(\s\(CVE-[\d-]+\))?: .*[^.] \(.+\)$/', $line);
+ $this->assertMatchesRegularExpression(
+ '/- (Bug|Enh|Chg|New)( #\d+(, #\d+)*)?(\s\(CVE-[\d-]+\))?: .*[^.] \(.+\)$/',
+ $line
+ );
}
}
diff --git a/tests/framework/base/ActionFilterTest.php b/tests/framework/base/ActionFilterTest.php
index 7a527beb77b..17419d16cb5 100644
--- a/tests/framework/base/ActionFilterTest.php
+++ b/tests/framework/base/ActionFilterTest.php
@@ -19,7 +19,7 @@
*/
class ActionFilterTest extends TestCase
{
- protected function setUp()
+ protected function setUp(): void
{
parent::setUp();
$this->mockApplication();
diff --git a/tests/framework/base/BaseObjectTest.php b/tests/framework/base/BaseObjectTest.php
index 98280fef25e..79e7c07a31a 100644
--- a/tests/framework/base/BaseObjectTest.php
+++ b/tests/framework/base/BaseObjectTest.php
@@ -20,14 +20,14 @@ class BaseObjectTest extends TestCase
*/
protected $object;
- protected function setUp()
+ protected function setUp(): void
{
parent::setUp();
$this->mockApplication();
$this->object = new NewObject();
}
- protected function tearDown()
+ protected function tearDown(): void
{
parent::tearDown();
$this->object = null;
@@ -159,19 +159,6 @@ public function testReadingWriteOnlyProperty()
$this->expectExceptionMessage('Getting write-only property: yiiunit\framework\base\NewObject::writeOnly');
$this->object->writeOnly;
}
-
- public function testBackwardCompatibilityWithObject()
- {
- if (PHP_MAJOR_VERSION > 7 || (PHP_MAJOR_VERSION == 7 && PHP_MINOR_VERSION >= 2)) {
- $this->markTestSkipped('This test is meant to run on PHP <7.2.0 to check BC with yii\base\Object');
- }
- $this->assertInstanceOf('yii\base\Object', new BCObject());
- $this->assertInstanceOf('yii\base\BaseObject', new BCObject());
-
- BCObject::$initCalled = false;
- new BCObject();
- $this->assertTrue(BCObject::$initCalled);
- }
}
diff --git a/tests/framework/base/BehaviorTest.php b/tests/framework/base/BehaviorTest.php
index b77a074d4be..47ecbf9e0fc 100644
--- a/tests/framework/base/BehaviorTest.php
+++ b/tests/framework/base/BehaviorTest.php
@@ -73,13 +73,13 @@ public function detach()
*/
class BehaviorTest extends TestCase
{
- protected function setUp()
+ protected function setUp(): void
{
parent::setUp();
$this->mockApplication();
}
- protected function tearDown()
+ protected function tearDown(): void
{
parent::tearDown();
gc_enable();
diff --git a/tests/framework/base/ComponentTest.php b/tests/framework/base/ComponentTest.php
index e2fdbc6e02b..f01d21476f3 100644
--- a/tests/framework/base/ComponentTest.php
+++ b/tests/framework/base/ComponentTest.php
@@ -33,14 +33,14 @@ class ComponentTest extends TestCase
*/
protected $component;
- protected function setUp()
+ protected function setUp(): void
{
parent::setUp();
$this->mockApplication();
$this->component = new NewComponent();
}
- protected function tearDown()
+ protected function tearDown(): void
{
parent::tearDown();
$this->component = null;
@@ -451,11 +451,6 @@ public function testDetachNotAttachedHandler()
*/
public function testEventClosureDetachesItself()
{
- if (PHP_VERSION_ID < 70000) {
- $this->markTestSkipped('Can not be tested on PHP < 7.0');
- return;
- }
-
$obj = require __DIR__ . '/stub/AnonymousComponentClass.php';
$obj->trigger('barEventOnce');
diff --git a/tests/framework/base/DynamicModelTest.php b/tests/framework/base/DynamicModelTest.php
index d3dca504b6f..6b368f08cd2 100644
--- a/tests/framework/base/DynamicModelTest.php
+++ b/tests/framework/base/DynamicModelTest.php
@@ -15,7 +15,7 @@
*/
class DynamicModelTest extends TestCase
{
- protected function setUp()
+ protected function setUp(): void
{
parent::setUp();
$this->mockApplication();
diff --git a/tests/framework/base/EventTest.php b/tests/framework/base/EventTest.php
index f99d12bedb7..ab616d1572a 100644
--- a/tests/framework/base/EventTest.php
+++ b/tests/framework/base/EventTest.php
@@ -18,13 +18,13 @@ class EventTest extends TestCase
{
public $counter;
- protected function setUp()
+ protected function setUp(): void
{
$this->counter = 0;
Event::offAll();
}
- protected function tearDown()
+ protected function tearDown(): void
{
parent::tearDown();
Event::offAll();
diff --git a/tests/framework/base/ModelTest.php b/tests/framework/base/ModelTest.php
index 5ed73163b8d..991ed08c0b0 100644
--- a/tests/framework/base/ModelTest.php
+++ b/tests/framework/base/ModelTest.php
@@ -20,7 +20,7 @@
*/
class ModelTest extends TestCase
{
- protected function setUp()
+ protected function setUp(): void
{
parent::setUp();
$this->mockApplication();
@@ -502,11 +502,6 @@ public function testValidateAttributeNames()
public function testFormNameWithAnonymousClass()
{
- if (PHP_VERSION_ID < 70000) {
- $this->markTestSkipped('Can not be tested on PHP < 7.0');
- return;
- }
-
$model = require __DIR__ . '/stub/AnonymousModelClass.php';
$this->expectException('yii\base\InvalidConfigException');
diff --git a/tests/framework/base/ModuleTest.php b/tests/framework/base/ModuleTest.php
index bbe36311279..333180924e0 100644
--- a/tests/framework/base/ModuleTest.php
+++ b/tests/framework/base/ModuleTest.php
@@ -18,7 +18,7 @@
*/
class ModuleTest extends TestCase
{
- protected function setUp()
+ protected function setUp(): void
{
parent::setUp();
$this->mockApplication();
diff --git a/tests/framework/base/SecurityTest.php b/tests/framework/base/SecurityTest.php
index d50fc0ab44d..0f1c6ab8394 100644
--- a/tests/framework/base/SecurityTest.php
+++ b/tests/framework/base/SecurityTest.php
@@ -22,7 +22,7 @@ class SecurityTest extends TestCase
*/
protected $security;
- protected function setUp()
+ protected function setUp(): void
{
parent::setUp();
$this->security = new ExposedSecurity();
@@ -813,12 +813,14 @@ public function randomKeyInvalidInputs()
/**
* @dataProvider randomKeyInvalidInputs
- * @expectedException \yii\base\InvalidParamException
- * @param mixed $input
+ *
+ * @param int|string|array $input
*/
public function testRandomKeyInvalidInput($input)
{
- $key1 = $this->security->generateRandomKey($input);
+ $this->expectException(\yii\base\InvalidArgumentException::class);
+
+ $this->security->generateRandomKey($input);
}
public function testGenerateRandomKey()
@@ -826,10 +828,10 @@ public function testGenerateRandomKey()
// test various string lengths
for ($length = 1; $length < 64; $length++) {
$key1 = $this->security->generateRandomKey($length);
- $this->assertInternalType('string', $key1);
+ $this->assertIsString($key1);
$this->assertEquals($length, strlen($key1));
$key2 = $this->security->generateRandomKey($length);
- $this->assertInternalType('string', $key2);
+ $this->assertIsString($key2);
$this->assertEquals($length, strlen($key2));
if ($length >= 7) { // avoid random test failure, short strings are likely to collide
$this->assertNotEquals($key1, $key2);
@@ -839,10 +841,10 @@ public function testGenerateRandomKey()
// test for /dev/urandom, reading larger data to see if loop works properly
$length = 1024 * 1024;
$key1 = $this->security->generateRandomKey($length);
- $this->assertInternalType('string', $key1);
+ $this->assertIsString($key1);
$this->assertEquals($length, strlen($key1));
$key2 = $this->security->generateRandomKey($length);
- $this->assertInternalType('string', $key2);
+ $this->assertIsString($key2);
$this->assertEquals($length, strlen($key2));
$this->assertNotEquals($key1, $key2);
}
@@ -1103,11 +1105,11 @@ public function testUnMaskingInvalidStrings()
$this->assertEquals('', $this->security->unmaskToken('1'));
}
- /**
- * @expectedException \yii\base\InvalidParamException
- */
public function testMaskingInvalidStrings()
{
+ $this->expectException(\yii\base\InvalidArgumentException::class);
+ $this->expectExceptionMessage('First parameter ($length) must be greater than 0');
+
$this->security->maskToken('');
}
diff --git a/tests/framework/base/ThemeTest.php b/tests/framework/base/ThemeTest.php
index 145380f3a7b..7b6ef72680e 100644
--- a/tests/framework/base/ThemeTest.php
+++ b/tests/framework/base/ThemeTest.php
@@ -16,7 +16,7 @@
*/
class ThemeTest extends TestCase
{
- protected function setUp()
+ protected function setUp(): void
{
$config = ['aliases' => ['@web' => '']];
$this->mockWebApplication($config);
diff --git a/tests/framework/base/ViewTest.php b/tests/framework/base/ViewTest.php
index f568a5a7145..621c15fb156 100644
--- a/tests/framework/base/ViewTest.php
+++ b/tests/framework/base/ViewTest.php
@@ -24,7 +24,7 @@ class ViewTest extends TestCase
*/
protected $testViewPath = '';
- public function setUp()
+ protected function setUp(): void
{
parent::setUp();
@@ -33,7 +33,7 @@ public function setUp()
FileHelper::createDirectory($this->testViewPath);
}
- public function tearDown()
+ protected function tearDown(): void
{
FileHelper::removeDirectory($this->testViewPath);
parent::tearDown();
diff --git a/tests/framework/base/WidgetTest.php b/tests/framework/base/WidgetTest.php
index 9517fed7e5b..067e9480125 100644
--- a/tests/framework/base/WidgetTest.php
+++ b/tests/framework/base/WidgetTest.php
@@ -21,7 +21,7 @@ class WidgetTest extends TestCase
/**
* {@inheritdoc}
*/
- protected function tearDown()
+ protected function tearDown(): void
{
parent::tearDown();
Widget::$counter = 0;
diff --git a/tests/framework/behaviors/AttributeBehaviorTest.php b/tests/framework/behaviors/AttributeBehaviorTest.php
index 3159603bac9..0c4fa2edb9f 100644
--- a/tests/framework/behaviors/AttributeBehaviorTest.php
+++ b/tests/framework/behaviors/AttributeBehaviorTest.php
@@ -26,14 +26,14 @@ class AttributeBehaviorTest extends TestCase
*/
protected $dbConnection;
- public static function setUpBeforeClass()
+ public static function setUpBeforeClass(): void
{
if (!extension_loaded('pdo') || !extension_loaded('pdo_sqlite')) {
static::markTestSkipped('PDO and SQLite extensions are required.');
}
}
- public function setUp()
+ protected function setUp(): void
{
$this->mockApplication([
'components' => [
@@ -52,7 +52,7 @@ public function setUp()
Yii::$app->getDb()->createCommand()->createTable('test_attribute', $columns)->execute();
}
- public function tearDown()
+ protected function tearDown(): void
{
Yii::$app->getDb()->close();
parent::tearDown();
diff --git a/tests/framework/behaviors/AttributeTypecastBehaviorTest.php b/tests/framework/behaviors/AttributeTypecastBehaviorTest.php
index a43b9346bbe..5af290672e1 100644
--- a/tests/framework/behaviors/AttributeTypecastBehaviorTest.php
+++ b/tests/framework/behaviors/AttributeTypecastBehaviorTest.php
@@ -22,14 +22,14 @@
*/
class AttributeTypecastBehaviorTest extends TestCase
{
- public static function setUpBeforeClass()
+ public static function setUpBeforeClass(): void
{
if (!extension_loaded('pdo') || !extension_loaded('pdo_sqlite')) {
static::markTestSkipped('PDO and SQLite extensions are required.');
}
}
- protected function setUp()
+ protected function setUp(): void
{
$this->mockApplication([
'components' => [
@@ -51,7 +51,7 @@ protected function setUp()
Yii::$app->getDb()->createCommand()->createTable('test_attribute_typecast', $columns)->execute();
}
- protected function tearDown()
+ protected function tearDown(): void
{
parent::tearDown();
AttributeTypecastBehavior::clearAutoDetectedAttributeTypes();
diff --git a/tests/framework/behaviors/AttributesBehaviorTest.php b/tests/framework/behaviors/AttributesBehaviorTest.php
index d26ddbc8b48..31dc224d997 100644
--- a/tests/framework/behaviors/AttributesBehaviorTest.php
+++ b/tests/framework/behaviors/AttributesBehaviorTest.php
@@ -26,14 +26,14 @@ class AttributesBehaviorTest extends TestCase
*/
protected $dbConnection;
- public static function setUpBeforeClass()
+ public static function setUpBeforeClass(): void
{
if (!extension_loaded('pdo') || !extension_loaded('pdo_sqlite')) {
static::markTestSkipped('PDO and SQLite extensions are required.');
}
}
- public function setUp()
+ protected function setUp(): void
{
$this->mockApplication([
'components' => [
@@ -52,7 +52,7 @@ public function setUp()
Yii::$app->getDb()->createCommand()->createTable('test_attribute', $columns)->execute();
}
- public function tearDown()
+ protected function tearDown(): void
{
Yii::$app->getDb()->close();
parent::tearDown();
diff --git a/tests/framework/behaviors/BlameableBehaviorConsoleTest.php b/tests/framework/behaviors/BlameableBehaviorConsoleTest.php
index 4a220125521..389be398a88 100755
--- a/tests/framework/behaviors/BlameableBehaviorConsoleTest.php
+++ b/tests/framework/behaviors/BlameableBehaviorConsoleTest.php
@@ -21,14 +21,14 @@
*/
class BlameableBehaviorConsoleTest extends TestCase
{
- public static function setUpBeforeClass()
+ public static function setUpBeforeClass(): void
{
if (!extension_loaded('pdo') || !extension_loaded('pdo_sqlite')) {
static::markTestSkipped('PDO and SQLite extensions are required.');
}
}
- public function setUp()
+ protected function setUp(): void
{
$this->mockApplication([
'components' => [
@@ -47,7 +47,7 @@ public function setUp()
Yii::$app->getDb()->createCommand()->createTable('test_blame', $columns)->execute();
}
- public function tearDown()
+ protected function tearDown(): void
{
Yii::$app->getDb()->close();
parent::tearDown();
diff --git a/tests/framework/behaviors/BlameableBehaviorTest.php b/tests/framework/behaviors/BlameableBehaviorTest.php
index b9e1a86b081..b6254d6fd61 100644
--- a/tests/framework/behaviors/BlameableBehaviorTest.php
+++ b/tests/framework/behaviors/BlameableBehaviorTest.php
@@ -21,14 +21,14 @@
*/
class BlameableBehaviorTest extends TestCase
{
- public static function setUpBeforeClass()
+ public static function setUpBeforeClass(): void
{
if (!extension_loaded('pdo') || !extension_loaded('pdo_sqlite')) {
static::markTestSkipped('PDO and SQLite extensions are required.');
}
}
- public function setUp()
+ protected function setUp(): void
{
$this->mockApplication([
'components' => [
@@ -52,7 +52,7 @@ public function setUp()
$this->getUser()->login(10);
}
- public function tearDown()
+ protected function tearDown(): void
{
Yii::$app->getDb()->close();
parent::tearDown();
diff --git a/tests/framework/behaviors/CacheableWidgetBehaviorTest.php b/tests/framework/behaviors/CacheableWidgetBehaviorTest.php
index fdcf5e0d3cd..9ff9d0826f5 100644
--- a/tests/framework/behaviors/CacheableWidgetBehaviorTest.php
+++ b/tests/framework/behaviors/CacheableWidgetBehaviorTest.php
@@ -32,7 +32,7 @@ class CacheableWidgetBehaviorTest extends TestCase
/**
* {@inheritdoc}
*/
- protected function setUp()
+ protected function setUp(): void
{
$this->initializeApplicationMock();
$this->initializeWidgetMocks();
diff --git a/tests/framework/behaviors/OptimisticLockBehaviorTest.php b/tests/framework/behaviors/OptimisticLockBehaviorTest.php
index fe041eab9af..098b810ddde 100644
--- a/tests/framework/behaviors/OptimisticLockBehaviorTest.php
+++ b/tests/framework/behaviors/OptimisticLockBehaviorTest.php
@@ -29,14 +29,14 @@ class OptimisticLockBehaviorTest extends TestCase
*/
protected $dbConnection;
- public static function setUpBeforeClass()
+ public static function setUpBeforeClass(): void
{
if (!extension_loaded('pdo') || !extension_loaded('pdo_sqlite')) {
static::markTestSkipped('PDO and SQLite extensions are required.');
}
}
- public function setUp()
+ protected function setUp(): void
{
$this->mockApplication([
'components' => [
@@ -60,7 +60,7 @@ public function setUp()
Yii::$app->getDb()->createCommand()->createTable('test_auto_lock_version_string', $columns)->execute();
}
- public function tearDown()
+ protected function tearDown(): void
{
Yii::$app->getDb()->close();
parent::tearDown();
@@ -152,7 +152,7 @@ public function testUpdateRecord()
try {
$model->save(false);
} catch (\yii\db\StaleObjectException $e) {
- $this->assertContains('The object being updated is outdated.', $e->getMessage());
+ $this->assertStringContainsString('The object being updated is outdated.', $e->getMessage());
$thrown = true;
}
@@ -168,7 +168,7 @@ public function testUpdateRecord()
try {
$model->save(false);
} catch (\yii\db\StaleObjectException $e) {
- $this->assertContains('The object being updated is outdated.', $e->getMessage());
+ $this->assertStringContainsString('The object being updated is outdated.', $e->getMessage());
$thrown = true;
}
@@ -184,7 +184,7 @@ public function testUpdateRecord()
try {
$model->save(false);
} catch (\yii\db\StaleObjectException $e) {
- $this->assertContains('The object being updated is outdated.', $e->getMessage());
+ $this->assertStringContainsString('The object being updated is outdated.', $e->getMessage());
$thrown = true;
}
@@ -233,7 +233,7 @@ public function testDeleteRecord()
try {
$model->delete();
} catch (\yii\db\StaleObjectException $e) {
- $this->assertContains('The object being deleted is outdated.', $e->getMessage());
+ $this->assertStringContainsString('The object being deleted is outdated.', $e->getMessage());
$thrown = true;
}
@@ -249,7 +249,7 @@ public function testDeleteRecord()
try {
$model->delete();
} catch (\yii\db\StaleObjectException $e) {
- $this->assertContains('The object being deleted is outdated.', $e->getMessage());
+ $this->assertStringContainsString('The object being deleted is outdated.', $e->getMessage());
$thrown = true;
}
diff --git a/tests/framework/behaviors/SluggableBehaviorTest.php b/tests/framework/behaviors/SluggableBehaviorTest.php
index cf9e9ceddda..ad1444c4470 100644
--- a/tests/framework/behaviors/SluggableBehaviorTest.php
+++ b/tests/framework/behaviors/SluggableBehaviorTest.php
@@ -26,14 +26,14 @@ class SluggableBehaviorTest extends TestCase
*/
protected $dbConnection;
- public static function setUpBeforeClass()
+ public static function setUpBeforeClass(): void
{
if (!extension_loaded('pdo') || !extension_loaded('pdo_sqlite')) {
static::markTestSkipped('PDO and SQLite extensions are required.');
}
}
- public function setUp()
+ protected function setUp(): void
{
$this->mockApplication([
'components' => [
@@ -60,7 +60,7 @@ public function setUp()
Yii::$app->getDb()->createCommand()->createTable('test_slug_related', $columns)->execute();
}
- public function tearDown()
+ protected function tearDown(): void
{
Yii::$app->getDb()->close();
parent::tearDown();
diff --git a/tests/framework/behaviors/TimestampBehaviorTest.php b/tests/framework/behaviors/TimestampBehaviorTest.php
index 22365f17993..8a64fcb90f4 100644
--- a/tests/framework/behaviors/TimestampBehaviorTest.php
+++ b/tests/framework/behaviors/TimestampBehaviorTest.php
@@ -28,14 +28,14 @@ class TimestampBehaviorTest extends TestCase
*/
protected $dbConnection;
- public static function setUpBeforeClass()
+ public static function setUpBeforeClass(): void
{
if (!extension_loaded('pdo') || !extension_loaded('pdo_sqlite')) {
static::markTestSkipped('PDO and SQLite extensions are required.');
}
}
- public function setUp()
+ protected function setUp(): void
{
$this->mockApplication([
'components' => [
@@ -61,7 +61,7 @@ public function setUp()
Yii::$app->getDb()->createCommand()->createTable('test_auto_timestamp_string', $columns)->execute();
}
- public function tearDown()
+ protected function tearDown(): void
{
Yii::$app->getDb()->close();
parent::tearDown();
diff --git a/tests/framework/caching/CacheTestCase.php b/tests/framework/caching/CacheTestCase.php
index 7eb00321a35..fc98fb57e04 100644
--- a/tests/framework/caching/CacheTestCase.php
+++ b/tests/framework/caching/CacheTestCase.php
@@ -54,13 +54,13 @@ abstract class CacheTestCase extends TestCase
*/
abstract protected function getCacheInstance();
- protected function setUp()
+ protected function setUp(): void
{
parent::setUp();
$this->mockApplication();
}
- protected function tearDown()
+ protected function tearDown(): void
{
static::$time = null;
static::$microtime = null;
diff --git a/tests/framework/caching/CallbackDependencyTest.php b/tests/framework/caching/CallbackDependencyTest.php
new file mode 100644
index 00000000000..b2a93ff9541
--- /dev/null
+++ b/tests/framework/caching/CallbackDependencyTest.php
@@ -0,0 +1,41 @@
+callback = function () use (&$dependencyValue) {
+ return $dependencyValue === true;
+ };
+
+ $dependency->evaluateDependency($cache);
+ $this->assertFalse($dependency->isChanged($cache));
+
+ $dependencyValue = false;
+ $this->assertTrue($dependency->isChanged($cache));
+ }
+
+ public function testDependencyNotChanged()
+ {
+ $cache = new ArrayCache();
+
+ $dependency = new CallbackDependency();
+ $dependency->callback = function () {
+ return 2 + 2;
+ };
+
+ $dependency->evaluateDependency($cache);
+ $this->assertFalse($dependency->isChanged($cache));
+ $this->assertFalse($dependency->isChanged($cache));
+ }
+}
diff --git a/tests/framework/caching/DbCacheTest.php b/tests/framework/caching/DbCacheTest.php
index b18b30e2bcd..21d2723cb62 100644
--- a/tests/framework/caching/DbCacheTest.php
+++ b/tests/framework/caching/DbCacheTest.php
@@ -19,7 +19,7 @@ class DbCacheTest extends CacheTestCase
private $_cacheInstance;
private $_connection;
- protected function setUp()
+ protected function setUp(): void
{
if (!extension_loaded('pdo') || !extension_loaded('pdo_mysql')) {
$this->markTestSkipped('pdo and pdo_mysql extensions are required.');
diff --git a/tests/framework/caching/DbDependencyTest.php b/tests/framework/caching/DbDependencyTest.php
index bd801e3528c..a87a87e8542 100644
--- a/tests/framework/caching/DbDependencyTest.php
+++ b/tests/framework/caching/DbDependencyTest.php
@@ -21,11 +21,10 @@ class DbDependencyTest extends DatabaseTestCase
*/
protected $driverName = 'sqlite';
-
/**
* {@inheritdoc}
*/
- protected function setUp()
+ protected function setUp(): void
{
parent::setUp();
@@ -39,11 +38,14 @@ protected function setUp()
$db->createCommand()->insert('dependency_item', ['value' => 'initial'])->execute();
}
- public function testIsChanged()
+ public function testQueryOneIsExecutedWhenQueryCacheEnabled()
{
$db = $this->getConnection(false);
$cache = new ArrayCache();
+ // Enable the query cache
+ $db->enableQueryCache = true;
+
$dependency = new DbDependency();
$dependency->db = $db;
$dependency->sql = 'SELECT [[id]] FROM {{dependency_item}} ORDER BY [[id]] DESC LIMIT 1';
@@ -56,4 +58,39 @@ public function testIsChanged()
$this->assertTrue($dependency->isChanged($cache));
}
+
+ public function testQueryOneIsExecutedWhenQueryCacheDisabled()
+ {
+ $db = $this->getConnection(false);
+ $cache = new ArrayCache();
+
+ // Disable the query cache
+ $db->enableQueryCache = false;
+
+ $dependency = new DbDependency();
+ $dependency->db = $db;
+ $dependency->sql = 'SELECT [[id]] FROM {{dependency_item}} ORDER BY [[id]] DESC LIMIT 1';
+ $dependency->reusable = false;
+
+ $dependency->evaluateDependency($cache);
+ $this->assertFalse($dependency->isChanged($cache));
+
+ $db->createCommand()->insert('dependency_item', ['value' => 'new'])->execute();
+
+ $this->assertTrue($dependency->isChanged($cache));
+ }
+
+ public function testMissingSqlThrowsException()
+ {
+ $this->expectException('\yii\base\InvalidConfigException');
+
+ $db = $this->getConnection(false);
+ $cache = new ArrayCache();
+
+ $dependency = new DbDependency();
+ $dependency->db = $db;
+ $dependency->sql = null;
+
+ $dependency->evaluateDependency($cache);
+ }
}
diff --git a/tests/framework/caching/DbQueryDependencyTest.php b/tests/framework/caching/DbQueryDependencyTest.php
index f8a50183dcd..679fc9eb63a 100644
--- a/tests/framework/caching/DbQueryDependencyTest.php
+++ b/tests/framework/caching/DbQueryDependencyTest.php
@@ -23,7 +23,7 @@ class DbQueryDependencyTest extends DatabaseTestCase
/**
* {@inheritdoc}
*/
- protected function setUp()
+ protected function setUp(): void
{
parent::setUp();
diff --git a/tests/framework/caching/FileCacheTest.php b/tests/framework/caching/FileCacheTest.php
index c9f6ee8f51f..aa12bf9cc13 100644
--- a/tests/framework/caching/FileCacheTest.php
+++ b/tests/framework/caching/FileCacheTest.php
@@ -77,44 +77,9 @@ public function testKeyPrefix()
$cacheFile = $refMethodGetCacheFile->invoke($cache, $normalizeKey);
$this->assertTrue($refMethodSet->invoke($cache, $key, $value));
- $this->assertContains($keyPrefix, basename($cacheFile));
+ $this->assertStringContainsString($keyPrefix, basename($cacheFile));
$this->assertEquals($expectedDirectoryName, basename(dirname($cacheFile)), $cacheFile);
$this->assertTrue(is_dir(dirname($cacheFile)), 'File not found ' . $cacheFile);
$this->assertEquals($value, $refMethodGet->invoke($cache, $key));
}
-
- public function testCacheRenewalOnDifferentOwnership()
- {
- $TRAVIS_SECOND_USER = getenv('TRAVIS_SECOND_USER');
- if (empty($TRAVIS_SECOND_USER)) {
- $this->markTestSkipped('Travis second user not found');
- }
-
- $cache = $this->getCacheInstance();
-
- $cacheValue = uniqid('value_');
- $cachePublicKey = uniqid('key_');
- $cacheInternalKey = $cache->buildKey($cachePublicKey);
-
- static::$time = \time();
- $this->assertTrue($cache->set($cachePublicKey, $cacheValue, 2));
- $this->assertSame($cacheValue, $cache->get($cachePublicKey));
-
- $refClass = new \ReflectionClass($cache);
- $refMethodGetCacheFile = $refClass->getMethod('getCacheFile');
- $refMethodGetCacheFile->setAccessible(true);
- $cacheFile = $refMethodGetCacheFile->invoke($cache, $cacheInternalKey);
- $refMethodGetCacheFile->setAccessible(false);
-
- $output = array();
- $returnVar = null;
- exec(sprintf('sudo chown %s %s',
- escapeshellarg($TRAVIS_SECOND_USER),
- escapeshellarg($cacheFile)
- ), $output, $returnVar);
-
- $this->assertSame(0, $returnVar, 'Cannot change ownership of cache file to test cache renewal');
-
- $this->assertTrue($cache->set($cachePublicKey, uniqid('value_2_'), 2), 'Cannot rebuild cache on different file ownership');
- }
}
diff --git a/tests/framework/caching/MssqlCacheTest.php b/tests/framework/caching/MssqlCacheTest.php
index 324f1fcc036..2efc8bf5d6a 100644
--- a/tests/framework/caching/MssqlCacheTest.php
+++ b/tests/framework/caching/MssqlCacheTest.php
@@ -21,7 +21,7 @@ class MssqlCacheTest extends CacheTestCase
private $_cacheInstance;
private $_connection;
- protected function setUp()
+ protected function setUp(): void
{
if (!extension_loaded('pdo') || !extension_loaded('pdo_sqlsrv')) {
$this->markTestSkipped('pdo and pdo_mssql extensions are required.');
diff --git a/tests/framework/caching/PgSQLCacheTest.php b/tests/framework/caching/PgSQLCacheTest.php
index 76a4c6cc6b5..45478537c43 100644
--- a/tests/framework/caching/PgSQLCacheTest.php
+++ b/tests/framework/caching/PgSQLCacheTest.php
@@ -20,7 +20,7 @@ class PgSQLCacheTest extends DbCacheTest
protected static $driverName = 'pgsql';
private $_connection;
- protected function setUp()
+ protected function setUp(): void
{
if (!extension_loaded('pdo') || !extension_loaded('pdo_pgsql')) {
$this->markTestSkipped('pdo and pdo_pgsql extensions are required.');
diff --git a/tests/framework/console/ControllerTest.php b/tests/framework/console/ControllerTest.php
index a38cb7ea372..2103715b51c 100644
--- a/tests/framework/console/ControllerTest.php
+++ b/tests/framework/console/ControllerTest.php
@@ -26,7 +26,7 @@ class ControllerTest extends TestCase
/** @var FakeController */
private $controller;
- protected function setUp()
+ protected function setUp(): void
{
parent::setUp();
$this->mockApplication();
@@ -101,11 +101,6 @@ public function testBindActionParams()
public function testNullableInjectedActionParams()
{
- if (PHP_VERSION_ID < 70100) {
- $this->markTestSkipped('Can not be tested on PHP < 7.1');
- return;
- }
-
// Use the PHP71 controller for this test
$this->controller = new FakePhp71Controller('fake', new Application([
'id' => 'app',
@@ -122,10 +117,6 @@ public function testNullableInjectedActionParams()
public function testInjectionContainerException()
{
- if (PHP_VERSION_ID < 70100) {
- $this->markTestSkipped('Can not be tested on PHP < 7.1');
- return;
- }
// Use the PHP71 controller for this test
$this->controller = new FakePhp71Controller('fake', new Application([
'id' => 'app',
@@ -144,10 +135,6 @@ public function testInjectionContainerException()
public function testUnknownInjection()
{
- if (PHP_VERSION_ID < 70100) {
- $this->markTestSkipped('Can not be tested on PHP < 7.1');
- return;
- }
// Use the PHP71 controller for this test
$this->controller = new FakePhp71Controller('fake', new Application([
'id' => 'app',
@@ -165,10 +152,6 @@ public function testUnknownInjection()
public function testInjectedActionParams()
{
- if (PHP_VERSION_ID < 70100) {
- $this->markTestSkipped('Can not be tested on PHP < 7.1');
- return;
- }
// Use the PHP71 controller for this test
$this->controller = new FakePhp71Controller('fake', new Application([
'id' => 'app',
@@ -193,10 +176,6 @@ public function testInjectedActionParams()
public function testInjectedActionParamsFromModule()
{
- if (PHP_VERSION_ID < 70100) {
- $this->markTestSkipped('Can not be tested on PHP < 7.1');
- return;
- }
$module = new \yii\base\Module('fake', new Application([
'id' => 'app',
'basePath' => __DIR__,
@@ -270,7 +249,7 @@ public function testHelpOption()
$helpController = new FakeHelpControllerWithoutOutput('help', Yii::$app);
$helpController->actionIndex('fake/aksi1');
- $this->assertContains('--test-array, -ta', $helpController->outputString);
+ $this->assertStringContainsString('--test-array, -ta', $helpController->outputString);
}
/**
diff --git a/tests/framework/console/FakePhp71Controller.php b/tests/framework/console/FakePhp71Controller.php
index dbed836f8d1..44ba0fbd310 100644
--- a/tests/framework/console/FakePhp71Controller.php
+++ b/tests/framework/console/FakePhp71Controller.php
@@ -14,9 +14,14 @@
class FakePhp71Controller extends Controller
{
- public function actionInjection($before, Request $request, $between, DummyService $dummyService, Post $post = null, $after)
- {
-
+ public function actionInjection(
+ $before,
+ Request $request,
+ $between,
+ DummyService $dummyService,
+ ?Post $post,
+ $after
+ ) {
}
public function actionNullableInjection(?Request $request, ?Post $post)
diff --git a/tests/framework/console/UnknownCommandExceptionTest.php b/tests/framework/console/UnknownCommandExceptionTest.php
index 63dd11ccd97..e72526fdf03 100644
--- a/tests/framework/console/UnknownCommandExceptionTest.php
+++ b/tests/framework/console/UnknownCommandExceptionTest.php
@@ -16,7 +16,7 @@
*/
class UnknownCommandExceptionTest extends TestCase
{
- public function setUp()
+ protected function setUp(): void
{
$this->mockApplication([
'enableCoreCommands' => false,
diff --git a/tests/framework/console/controllers/AssetControllerTest.php b/tests/framework/console/controllers/AssetControllerTest.php
index f9fe4be33c2..768829ef83f 100644
--- a/tests/framework/console/controllers/AssetControllerTest.php
+++ b/tests/framework/console/controllers/AssetControllerTest.php
@@ -32,7 +32,7 @@ class AssetControllerTest extends TestCase
*/
protected $testAssetsBasePath = '';
- public function setUp()
+ protected function setUp(): void
{
$this->mockApplication();
$this->testFilePath = Yii::getAlias('@yiiunit/runtime') . DIRECTORY_SEPARATOR . str_replace('\\', '_', get_class($this)) . uniqid();
@@ -41,7 +41,7 @@ public function setUp()
$this->createDir($this->testAssetsBasePath);
}
- public function tearDown()
+ protected function tearDown(): void
{
$this->removeDir($this->testFilePath);
}
@@ -258,7 +258,7 @@ public function testActionTemplate()
$this->runAssetControllerAction('template', [$configFileName]);
$this->assertFileExists($configFileName, 'Unable to create config file template!');
$config = require $configFileName;
- $this->assertInternalType('array', $config, 'Invalid config created!');
+ $this->assertIsArray($config, 'Invalid config created!');
}
public function testActionCompress()
@@ -304,7 +304,7 @@ public function testActionCompress()
// Then :
$this->assertFileExists($bundleFile, 'Unable to create output bundle file!');
$compressedBundleConfig = require $bundleFile;
- $this->assertInternalType('array', $compressedBundleConfig, 'Output bundle file has incorrect format!');
+ $this->assertIsArray($compressedBundleConfig, 'Output bundle file has incorrect format!');
$this->assertCount(2, $compressedBundleConfig, 'Output bundle config contains wrong bundle count!');
$this->assertArrayHasKey($assetBundleClassName, $compressedBundleConfig, 'Source bundle is lost!');
@@ -320,11 +320,19 @@ public function testActionCompress()
$compressedCssFileContent = file_get_contents($compressedCssFileName);
foreach ($cssFiles as $name => $content) {
- $this->assertContains($content, $compressedCssFileContent, "Source of '{$name}' is missing in combined file!");
+ $this->assertStringContainsString(
+ $content,
+ $compressedCssFileContent,
+ "Source of '{$name}' is missing in combined file!",
+ );
}
$compressedJsFileContent = file_get_contents($compressedJsFileName);
foreach ($jsFiles as $name => $content) {
- $this->assertContains($content, $compressedJsFileContent, "Source of '{$name}' is missing in combined file!");
+ $this->assertStringContainsString(
+ $content,
+ $compressedJsFileContent,
+ "Source of '{$name}' is missing in combined file!",
+ );
}
}
@@ -384,7 +392,7 @@ public function testCompressExternalAsset()
// Then :
$this->assertFileExists($bundleFile, 'Unable to create output bundle file!');
$compressedBundleConfig = require $bundleFile;
- $this->assertInternalType('array', $compressedBundleConfig, 'Output bundle file has incorrect format!');
+ $this->assertIsArray($compressedBundleConfig, 'Output bundle file has incorrect format!');
$this->assertArrayHasKey($externalAssetBundleClassName, $compressedBundleConfig, 'External bundle is lost!');
$compressedExternalAssetConfig = $compressedBundleConfig[$externalAssetBundleClassName];
@@ -392,7 +400,11 @@ public function testCompressExternalAsset()
$this->assertEquals($externalAssetConfig['css'], $compressedExternalAssetConfig['css'], 'External bundle css is lost!');
$compressedRegularAssetConfig = $compressedBundleConfig[$regularAssetBundleClassName];
- $this->assertContains($externalAssetBundleClassName, $compressedRegularAssetConfig['depends'], 'Dependency on external bundle is lost!');
+ $this->assertContains(
+ $externalAssetBundleClassName,
+ $compressedRegularAssetConfig['depends'],
+ 'Dependency on external bundle is lost!',
+ );
}
/**
diff --git a/tests/framework/console/controllers/BaseMessageControllerTest.php b/tests/framework/console/controllers/BaseMessageControllerTest.php
index 90d77736209..a7aa869c33a 100644
--- a/tests/framework/console/controllers/BaseMessageControllerTest.php
+++ b/tests/framework/console/controllers/BaseMessageControllerTest.php
@@ -23,7 +23,7 @@ abstract class BaseMessageControllerTest extends TestCase
protected $configFileName = '';
protected $language = 'en';
- public function setUp()
+ protected function setUp(): void
{
$this->mockApplication();
$this->sourcePath = Yii::getAlias('@yiiunit/runtime/test_source');
@@ -47,7 +47,7 @@ protected function generateConfigFileName()
return $this->configFileName;
}
- public function tearDown()
+ protected function tearDown(): void
{
FileHelper::removeDirectory($this->sourcePath);
if (file_exists($this->configFileName)) {
diff --git a/tests/framework/console/controllers/CacheControllerTest.php b/tests/framework/console/controllers/CacheControllerTest.php
index 907c6da4d3f..183d173d8e1 100644
--- a/tests/framework/console/controllers/CacheControllerTest.php
+++ b/tests/framework/console/controllers/CacheControllerTest.php
@@ -29,7 +29,7 @@ class CacheControllerTest extends TestCase
private $driverName = 'mysql';
- protected function setUp()
+ protected function setUp(): void
{
parent::setUp();
@@ -137,11 +137,11 @@ public function testNotFoundFlush()
$this->assertEquals('firstValue', Yii::$app->firstCache->get('firstKey'), 'first cache data should not be flushed');
}
- /**
- * @expectedException \yii\console\Exception
- */
public function testNothingToFlushException()
{
+ $this->expectException('yii\console\Exception');
+ $this->expectExceptionMessage('You should specify cache components names');
+
$this->_cacheController->actionFlush();
}
diff --git a/tests/framework/console/controllers/DbMessageControllerTest.php b/tests/framework/console/controllers/DbMessageControllerTest.php
index 1c5707dab94..4ecdbd1124a 100644
--- a/tests/framework/console/controllers/DbMessageControllerTest.php
+++ b/tests/framework/console/controllers/DbMessageControllerTest.php
@@ -51,7 +51,7 @@ protected static function runConsoleAction($route, $params = [])
}
}
- public static function setUpBeforeClass()
+ public static function setUpBeforeClass(): void
{
parent::setUpBeforeClass();
$databases = static::getParam('databases');
@@ -65,7 +65,7 @@ public static function setUpBeforeClass()
static::runConsoleAction('migrate/up', ['migrationPath' => '@yii/i18n/migrations/', 'interactive' => false]);
}
- public static function tearDownAfterClass()
+ public static function tearDownAfterClass(): void
{
static::runConsoleAction('migrate/down', ['migrationPath' => '@yii/i18n/migrations/', 'interactive' => false]);
if (static::$db) {
@@ -75,7 +75,7 @@ public static function tearDownAfterClass()
parent::tearDownAfterClass();
}
- public function tearDown()
+ protected function tearDown(): void
{
parent::tearDown();
Yii::$app = null;
diff --git a/tests/framework/console/controllers/FixtureControllerTest.php b/tests/framework/console/controllers/FixtureControllerTest.php
index 49ad96b31df..ef44853b4e6 100644
--- a/tests/framework/console/controllers/FixtureControllerTest.php
+++ b/tests/framework/console/controllers/FixtureControllerTest.php
@@ -30,7 +30,7 @@ class FixtureControllerTest extends DatabaseTestCase
protected $driverName = 'mysql';
- protected function setUp()
+ protected function setUp(): void
{
parent::setUp();
@@ -46,7 +46,7 @@ protected function setUp()
], [null, null]); //id and module are null
}
- protected function tearDown()
+ protected function tearDown(): void
{
$this->_fixtureController = null;
FixtureStorage::clear();
@@ -215,19 +215,15 @@ public function testNothingToUnloadParticularExceptOnes()
$this->assertEmpty(FixtureStorage::$firstFixtureData, 'first fixture data should not be loaded');
}
- /**
- * @expectedException \yii\console\Exception
- */
public function testNoFixturesWereFoundInLoad()
{
+ $this->expectException('\yii\console\Exception');
$this->_fixtureController->actionLoad(['NotExistingFixture']);
}
- /**
- * @expectedException \yii\console\Exception
- */
public function testNoFixturesWereFoundInUnload()
{
+ $this->expectException('\yii\console\Exception');
$this->_fixtureController->actionUnload(['NotExistingFixture']);
}
diff --git a/tests/framework/console/controllers/HelpControllerTest.php b/tests/framework/console/controllers/HelpControllerTest.php
index 68c4f61772f..2613e89ad42 100644
--- a/tests/framework/console/controllers/HelpControllerTest.php
+++ b/tests/framework/console/controllers/HelpControllerTest.php
@@ -21,7 +21,7 @@ class HelpControllerTest extends TestCase
/**
* {@inheritdoc}
*/
- public function setUp()
+ protected function setUp(): void
{
$this->mockApplication();
}
@@ -154,37 +154,37 @@ public function testActionUsage()
public function testActionIndex()
{
$result = Console::stripAnsiFormat($this->runControllerAction('index'));
- $this->assertContains('This is Yii version ', $result);
- $this->assertContains('The following commands are available:', $result);
- $this->assertContains('To see the help of each command, enter:', $result);
- $this->assertContains('bootstrap.php help', $result);
+ $this->assertStringContainsString('This is Yii version ', $result);
+ $this->assertStringContainsString('The following commands are available:', $result);
+ $this->assertStringContainsString('To see the help of each command, enter:', $result);
+ $this->assertStringContainsString('bootstrap.php help', $result);
}
public function testActionIndexWithHelpCommand()
{
$result = Console::stripAnsiFormat($this->runControllerAction('index', ['command' => 'help/index']));
- $this->assertContains('Displays available commands or the detailed information', $result);
- $this->assertContains('bootstrap.php help [command] [...options...]', $result);
- $this->assertContains('--appconfig: string', $result);
- $this->assertContains('- command: string', $result);
- $this->assertContains('--color: boolean, 0 or 1', $result);
- $this->assertContains('--help, -h: boolean, 0 or 1', $result);
- $this->assertContains('--interactive: boolean, 0 or 1 (defaults to 1)', $result);
+ $this->assertStringContainsString('Displays available commands or the detailed information', $result);
+ $this->assertStringContainsString('bootstrap.php help [command] [...options...]', $result);
+ $this->assertStringContainsString('--appconfig: string', $result);
+ $this->assertStringContainsString('- command: string', $result);
+ $this->assertStringContainsString('--color: boolean, 0 or 1', $result);
+ $this->assertStringContainsString('--help, -h: boolean, 0 or 1', $result);
+ $this->assertStringContainsString('--interactive: boolean, 0 or 1 (defaults to 1)', $result);
}
public function testActionIndexWithServeCommand()
{
$result = Console::stripAnsiFormat($this->runControllerAction('index', ['command' => 'serve']));
- $this->assertContains('Runs PHP built-in web server', $result);
- $this->assertContains('bootstrap.php serve [address] [...options...]', $result);
- $this->assertContains('- address: string (defaults to \'localhost\')', $result);
- $this->assertContains('--appconfig: string', $result);
- $this->assertContains('--color: boolean, 0 or 1', $result);
- $this->assertContains('--docroot, -t: string (defaults to \'@app/web\')', $result);
- $this->assertContains('--help, -h: boolean, 0 or 1', $result);
- $this->assertContains('--interactive: boolean, 0 or 1 (defaults to 1)', $result);
- $this->assertContains('--port, -p: int (defaults to 8080)', $result);
- $this->assertContains('--router, -r: string', $result);
+ $this->assertStringContainsString('Runs PHP built-in web server', $result);
+ $this->assertStringContainsString('bootstrap.php serve [address] [...options...]', $result);
+ $this->assertStringContainsString('- address: string (defaults to \'localhost\')', $result);
+ $this->assertStringContainsString('--appconfig: string', $result);
+ $this->assertStringContainsString('--color: boolean, 0 or 1', $result);
+ $this->assertStringContainsString('--docroot, -t: string (defaults to \'@app/web\')', $result);
+ $this->assertStringContainsString('--help, -h: boolean, 0 or 1', $result);
+ $this->assertStringContainsString('--interactive: boolean, 0 or 1 (defaults to 1)', $result);
+ $this->assertStringContainsString('--port, -p: int (defaults to 8080)', $result);
+ $this->assertStringContainsString('--router, -r: string', $result);
}
public function testActionListContainsNoEmptyCommands()
@@ -194,9 +194,9 @@ public function testActionListContainsNoEmptyCommands()
'controllerNamespace' => 'yiiunit\data\console\controllers',
]);
$result = Console::stripAnsiFormat($this->runControllerAction('list'));
- $this->assertNotContains("fake-empty\n", $result);
- $this->assertNotContains("fake-no-default\n", $result);
- $this->assertContains("fake-no-default/index\n", $result);
+ $this->assertStringNotContainsString("fake-empty\n", $result);
+ $this->assertStringNotContainsString("fake-no-default\n", $result);
+ $this->assertStringContainsString("fake-no-default/index\n", $result);
}
public function testActionIndexContainsNoEmptyCommands()
@@ -206,10 +206,10 @@ public function testActionIndexContainsNoEmptyCommands()
'controllerNamespace' => 'yiiunit\data\console\controllers',
]);
$result = Console::stripAnsiFormat($this->runControllerAction('index'));
- $this->assertNotContains("- fake-empty", $result);
- $this->assertContains("- fake-no-default", $result);
- $this->assertContains(" fake-no-default/index", $result);
- $this->assertNotContains(" fake-no-default/index (default)", $result);
+ $this->assertStringNotContainsString("- fake-empty", $result);
+ $this->assertStringContainsString("- fake-no-default", $result);
+ $this->assertStringContainsString(" fake-no-default/index", $result);
+ $this->assertStringNotContainsString(" fake-no-default/index (default)", $result);
}
}
diff --git a/tests/framework/console/controllers/MigrateControllerTest.php b/tests/framework/console/controllers/MigrateControllerTest.php
index 714b233b82b..8fdbce6e02f 100644
--- a/tests/framework/console/controllers/MigrateControllerTest.php
+++ b/tests/framework/console/controllers/MigrateControllerTest.php
@@ -26,7 +26,7 @@ class MigrateControllerTest extends TestCase
{
use MigrateControllerTestTrait;
- public function setUp()
+ protected function setUp(): void
{
$this->migrateControllerClass = EchoMigrateController::className();
$this->migrationBaseClass = Migration::className();
@@ -44,7 +44,7 @@ public function setUp()
parent::setUp();
}
- public function tearDown()
+ protected function tearDown(): void
{
$this->tearDownMigrationPath();
parent::tearDown();
@@ -419,8 +419,8 @@ public function testUpdatingLongNamedMigration()
$result = $this->runMigrateControllerAction('up');
$this->assertSame(ExitCode::UNSPECIFIED_ERROR, $this->getExitCode());
- $this->assertContains('The migration name', $result);
- $this->assertContains('is too long. Its not possible to apply this migration.', $result);
+ $this->assertStringContainsString('The migration name', $result);
+ $this->assertStringContainsString('is too long. Its not possible to apply this migration.', $result);
}
public function testNamedMigrationWithCustomLimit()
@@ -435,8 +435,8 @@ public function testNamedMigrationWithCustomLimit()
$result = $this->runMigrateControllerAction('up');
$this->assertSame(ExitCode::OK, $this->getExitCode());
- $this->assertContains('1 migration was applied.', $result);
- $this->assertContains('Migrated up successfully.', $result);
+ $this->assertStringContainsString('1 migration was applied.', $result);
+ $this->assertStringContainsString('Migrated up successfully.', $result);
}
public function testCreateLongNamedMigration()
@@ -478,11 +478,11 @@ public function testRefreshMigration($db)
$this->assertSame(ExitCode::OK, $this->getExitCode());
// Drop worked
- $this->assertContains('Table hall_of_fame dropped.', $result);
- $this->assertContains('View view_hall_of_fame dropped.', $result);
+ $this->assertStringContainsString('Table hall_of_fame dropped.', $result);
+ $this->assertStringContainsString('View view_hall_of_fame dropped.', $result);
// Migration was restarted
- $this->assertContains('No new migrations found. Your system is up-to-date.', $result);
+ $this->assertStringContainsString('No new migrations found. Your system is up-to-date.', $result);
}
public function refreshMigrationDataProvider()
diff --git a/tests/framework/console/controllers/MigrateControllerTestTrait.php b/tests/framework/console/controllers/MigrateControllerTestTrait.php
index bb71b5df1a9..da3223764ae 100644
--- a/tests/framework/console/controllers/MigrateControllerTestTrait.php
+++ b/tests/framework/console/controllers/MigrateControllerTestTrait.php
@@ -228,7 +228,7 @@ public function testCreate()
$this->assertSame(ExitCode::OK, $this->getExitCode());
$files = FileHelper::findFiles($this->migrationPath);
$this->assertCount(1, $files, 'Unable to create new migration!');
- $this->assertContains($migrationName, basename($files[0]), 'Wrong migration name!');
+ $this->assertStringContainsString($migrationName, basename($files[0]), 'Wrong migration name!');
}
public function testUp()
@@ -294,7 +294,7 @@ public function testDownAll()
public function testHistory()
{
$output = $this->runMigrateControllerAction('history');
- $this->assertContains('No migration', $output);
+ $this->assertStringContainsString('No migration', $output);
$this->createMigration('test_history1');
$this->createMigration('test_history2');
@@ -303,8 +303,8 @@ public function testHistory()
$output = $this->runMigrateControllerAction('history');
$this->assertSame(ExitCode::OK, $this->getExitCode());
- $this->assertContains('_test_history1', $output);
- $this->assertContains('_test_history2', $output);
+ $this->assertStringContainsString('_test_history1', $output);
+ $this->assertStringContainsString('_test_history2', $output);
}
/**
@@ -316,14 +316,14 @@ public function testNew()
$output = $this->runMigrateControllerAction('new');
$this->assertSame(ExitCode::OK, $this->getExitCode());
- $this->assertContains('_test_new1', $output);
+ $this->assertStringContainsString('_test_new1', $output);
$this->runMigrateControllerAction('up');
$this->assertSame(ExitCode::OK, $this->getExitCode());
$output = $this->runMigrateControllerAction('new');
$this->assertSame(ExitCode::OK, $this->getExitCode());
- $this->assertNotContains('_test_new1', $output);
+ $this->assertStringNotContainsString('_test_new1', $output);
}
public function testMark()
@@ -393,8 +393,8 @@ public function testNamespaceCreate()
$this->assertSame(ExitCode::OK, $this->getExitCode());
$files = FileHelper::findFiles($this->migrationPath);
$fileContent = file_get_contents($files[0]);
- $this->assertContains("namespace {$this->migrationNamespace};", $fileContent);
- $this->assertRegExp('/class M[0-9]{12}' . ucfirst($migrationName) . '/s', $fileContent);
+ $this->assertStringContainsString("namespace {$this->migrationNamespace};", $fileContent);
+ $this->assertMatchesRegularExpression('/class M[0-9]{12}' . ucfirst($migrationName) . '/s', $fileContent);
unlink($files[0]);
// namespace specify :
@@ -406,7 +406,7 @@ public function testNamespaceCreate()
$this->assertSame(ExitCode::OK, $this->getExitCode());
$files = FileHelper::findFiles($this->migrationPath);
$fileContent = file_get_contents($files[0]);
- $this->assertContains("namespace {$this->migrationNamespace};", $fileContent);
+ $this->assertStringContainsString("namespace {$this->migrationNamespace};", $fileContent);
unlink($files[0]);
// no namespace:
@@ -418,7 +418,7 @@ public function testNamespaceCreate()
$this->assertSame(ExitCode::OK, $this->getExitCode());
$files = FileHelper::findFiles($this->migrationPath);
$fileContent = file_get_contents($files[0]);
- $this->assertNotContains("namespace {$this->migrationNamespace};", $fileContent);
+ $this->assertStringNotContainsString("namespace {$this->migrationNamespace};", $fileContent);
}
/**
@@ -478,7 +478,7 @@ public function testNamespaceHistory()
];
$output = $this->runMigrateControllerAction('history', [], $controllerConfig);
- $this->assertContains('No migration', $output);
+ $this->assertStringContainsString('No migration', $output);
$this->createNamespaceMigration('history1');
$this->createNamespaceMigration('history2');
@@ -487,8 +487,8 @@ public function testNamespaceHistory()
$output = $this->runMigrateControllerAction('history', [], $controllerConfig);
$this->assertSame(ExitCode::OK, $this->getExitCode());
- $this->assertRegExp('/' . preg_quote($this->migrationNamespace) . '.*History1/s', $output);
- $this->assertRegExp('/' . preg_quote($this->migrationNamespace) . '.*History2/s', $output);
+ $this->assertMatchesRegularExpression('/' . preg_quote($this->migrationNamespace) . '.*History1/s', $output);
+ $this->assertMatchesRegularExpression('/' . preg_quote($this->migrationNamespace) . '.*History2/s', $output);
}
/**
diff --git a/tests/framework/console/controllers/PHPMessageControllerTest.php b/tests/framework/console/controllers/PHPMessageControllerTest.php
index d3a8074a665..f2d9c06fdb6 100644
--- a/tests/framework/console/controllers/PHPMessageControllerTest.php
+++ b/tests/framework/console/controllers/PHPMessageControllerTest.php
@@ -18,14 +18,14 @@ class PHPMessageControllerTest extends BaseMessageControllerTest
{
protected $messagePath;
- public function setUp()
+ protected function setUp(): void
{
parent::setUp();
$this->messagePath = Yii::getAlias('@yiiunit/runtime/test_messages');
FileHelper::createDirectory($this->messagePath, 0777);
}
- public function tearDown()
+ protected function tearDown(): void
{
parent::tearDown();
FileHelper::removeDirectory($this->messagePath);
@@ -165,7 +165,7 @@ public function testRemoveUnusedBehavior($category, $isUnused, $removeUnused, $i
if ($isExpectedToExist) {
$this->assertFileExists($filePath);
} else {
- $this->assertFileNotExists($filePath);
+ $this->assertFileDoesNotExist($filePath);
}
}
}
diff --git a/tests/framework/console/controllers/POMessageControllerTest.php b/tests/framework/console/controllers/POMessageControllerTest.php
index 0aac7f2c8d3..25d165406b8 100644
--- a/tests/framework/console/controllers/POMessageControllerTest.php
+++ b/tests/framework/console/controllers/POMessageControllerTest.php
@@ -19,7 +19,7 @@ class POMessageControllerTest extends BaseMessageControllerTest
protected $messagePath;
protected $catalog = 'messages';
- public function setUp()
+ protected function setUp(): void
{
parent::setUp();
@@ -27,7 +27,7 @@ public function setUp()
FileHelper::createDirectory($this->messagePath, 0777);
}
- public function tearDown()
+ protected function tearDown(): void
{
parent::tearDown();
FileHelper::removeDirectory($this->messagePath);
diff --git a/tests/framework/console/controllers/ServeControllerTest.php b/tests/framework/console/controllers/ServeControllerTest.php
new file mode 100644
index 00000000000..def6c808a25
--- /dev/null
+++ b/tests/framework/console/controllers/ServeControllerTest.php
@@ -0,0 +1,163 @@
+mockApplication();
+ }
+
+ public function testAddressTaken()
+ {
+ $docroot = __DIR__ . '/stub';
+
+ /** @var ServeController $serveController */
+ $serveController = $this->getMockBuilder(ServeControllerMocK::className())
+ ->setConstructorArgs(['serve', Yii::$app])
+ ->setMethods(['isAddressTaken', 'runCommand'])
+ ->getMock();
+
+ $serveController->expects($this->once())->method('isAddressTaken')->willReturn(true);
+ $serveController->expects($this->never())->method('runCommand');
+
+ $serveController->docroot = $docroot;
+ $serveController->port = 8080;
+
+ ob_start();
+ $serveController->actionIndex('localhost:8080');
+ ob_end_clean();
+
+ $result = $serveController->flushStdOutBuffer();
+
+ $this->assertStringContainsString('http://localhost:8080 is taken by another process.', $result);
+ }
+
+ public function testDefaultValues()
+ {
+ $docroot = __DIR__ . '/stub';
+
+ /** @var ServeController $serveController */
+ $serveController = $this->getMockBuilder(ServeControllerMock::className())
+ ->setConstructorArgs(['serve', Yii::$app])
+ ->setMethods(['runCommand'])
+ ->getMock();
+
+ $serveController->docroot = $docroot;
+ $serveController->port = 8080;
+
+ $serveController->expects($this->once())->method('runCommand')->willReturn(true);
+
+ ob_start();
+ $serveController->actionIndex();
+ ob_end_clean();
+
+ $result = $serveController->flushStdOutBuffer();
+
+ $this->assertStringContainsString('Server started on http://localhost:8080', $result);
+ $this->assertStringContainsString("Document root is \"{$docroot}\"", $result);
+ $this->assertStringContainsString('Quit the server with CTRL-C or COMMAND-C.', $result);
+ }
+
+ public function testDoocRootWithNoExistValue()
+ {
+ $docroot = '/not/exist/path';
+
+ /** @var ServeController $serveController */
+ $serveController = $this->getMockBuilder(ServeControllerMock::className())
+ ->setConstructorArgs(['serve', Yii::$app])
+ ->setMethods(['runCommand'])
+ ->getMock();
+
+ $serveController->docroot = $docroot;
+
+ $serveController->expects($this->any())->method('runCommand')->willReturn(true);
+
+ ob_start();
+ $serveController->actionIndex();
+ ob_end_clean();
+
+ $result = $serveController->flushStdOutBuffer();
+
+ $this->assertStringContainsString("Document root \"{$docroot}\" does not exist.", $result);
+ }
+
+ public function testWithRouterNoExistValue()
+ {
+ $docroot = __DIR__ . '/stub';
+ $router = '/not/exist/path';
+
+ /** @var ServeController $serveController */
+ $serveController = $this->getMockBuilder(ServeControllerMock::className())
+ ->setConstructorArgs(['serve', Yii::$app])
+ ->setMethods(['runCommand'])
+ ->getMock();
+
+ $serveController->docroot = $docroot;
+ $serveController->port = 8081;
+ $serveController->router = $router;
+
+ $serveController->expects($this->any())->method('runCommand')->willReturn(true);
+
+ ob_start();
+ $serveController->actionIndex();
+ ob_end_clean();
+
+ $result = $serveController->flushStdOutBuffer();
+
+ $this->assertStringContainsString("Routing file \"$router\" does not exist.", $result);
+ }
+
+ public function testWithRouterValue()
+ {
+ $docroot = __DIR__ . '/stub';
+ $router = __DIR__ . '/stub/index.php';
+
+ /** @var ServeController $serveController */
+ $serveController = $this->getMockBuilder(ServeControllerMock::className())
+ ->setConstructorArgs(['serve', Yii::$app])
+ ->setMethods(['runCommand'])
+ ->getMock();
+
+ $serveController->docroot = $docroot;
+ $serveController->port = 8081;
+ $serveController->router = $router;
+
+ $serveController->expects($this->once())->method('runCommand')->willReturn(true);
+
+ ob_start();
+ $serveController->actionIndex();
+ ob_end_clean();
+
+ $result = $serveController->flushStdOutBuffer();
+
+ $this->assertStringContainsString('Server started on http://localhost:8081', $result);
+ $this->assertStringContainsString("Document root is \"{$docroot}\"", $result);
+ $this->assertStringContainsString("Routing file is \"{$router}\"", $result);
+ $this->assertStringContainsString('Quit the server with CTRL-C or COMMAND-C.', $result);
+ }
+}
+
+/**
+ * Mock class for [[\yii\console\controllers\ServeController]].
+ */
+class ServeControllerMock extends ServeController
+{
+ use StdOutBufferControllerTrait;
+}
diff --git a/tests/framework/console/controllers/stub/index.php b/tests/framework/console/controllers/stub/index.php
new file mode 100644
index 00000000000..8b57cd3113e
--- /dev/null
+++ b/tests/framework/console/controllers/stub/index.php
@@ -0,0 +1,3 @@
+mockApplication();
@@ -502,7 +502,7 @@ public function testColorizedInputStripsANSIMarkersInternally()
->setScreenWidth(200)
->run();
- $columnWidths = \PHPUnit_Framework_Assert::readAttribute($table, "columnWidths");
+ $columnWidths = $this->getInaccessibleProperty($table, 'columnWidths');
$this->assertArrayHasKey(1, $columnWidths);
$this->assertEquals(4+2, $columnWidths[1]);
diff --git a/tests/framework/data/ActiveDataFilterTest.php b/tests/framework/data/ActiveDataFilterTest.php
index 9e4fbe7ca62..a4763fd81ad 100644
--- a/tests/framework/data/ActiveDataFilterTest.php
+++ b/tests/framework/data/ActiveDataFilterTest.php
@@ -13,7 +13,7 @@
class ActiveDataFilterTest extends TestCase
{
- protected function setUp()
+ protected function setUp(): void
{
parent::setUp();
diff --git a/tests/framework/data/ActiveDataProviderTest.php b/tests/framework/data/ActiveDataProviderTest.php
index 57f866ee809..789a0337260 100644
--- a/tests/framework/data/ActiveDataProviderTest.php
+++ b/tests/framework/data/ActiveDataProviderTest.php
@@ -26,7 +26,7 @@
*/
abstract class ActiveDataProviderTest extends DatabaseTestCase
{
- protected function setUp()
+ protected function setUp(): void
{
parent::setUp();
ActiveRecord::$db = $this->getConnection();
@@ -132,7 +132,7 @@ public function testQuery()
]);
$orders = $provider->getModels();
$this->assertCount(3, $orders);
- $this->assertInternalType('array', $orders[0]);
+ $this->assertIsArray($orders[0]);
$this->assertEquals([0, 1, 2], $provider->getKeys());
$query = new Query();
@@ -170,9 +170,8 @@ public function testPaginationBeforeModels()
'query' => $query->from('order')->orderBy('id'),
]);
$pagination = $provider->getPagination();
- $this->assertEquals(0, $pagination->getPageCount());
- $this->assertCount(3, $provider->getModels());
$this->assertEquals(1, $pagination->getPageCount());
+ $this->assertCount(3, $provider->getModels());
$provider->getPagination()->pageSize = 2;
$this->assertCount(3, $provider->getModels());
diff --git a/tests/framework/data/ArrayDataProviderTest.php b/tests/framework/data/ArrayDataProviderTest.php
index 6c9af6e98bf..84944d511b6 100644
--- a/tests/framework/data/ArrayDataProviderTest.php
+++ b/tests/framework/data/ArrayDataProviderTest.php
@@ -15,7 +15,7 @@
*/
class ArrayDataProviderTest extends TestCase
{
- protected function setUp()
+ protected function setUp(): void
{
parent::setUp();
$this->mockApplication();
diff --git a/tests/framework/data/BaseDataProviderTest.php b/tests/framework/data/BaseDataProviderTest.php
index ea5ae21cb69..c06d4a09bc2 100644
--- a/tests/framework/data/BaseDataProviderTest.php
+++ b/tests/framework/data/BaseDataProviderTest.php
@@ -20,7 +20,7 @@ public function testGenerateId()
$rc = new \ReflectionClass(BaseDataProvider::className());
$rp = $rc->getProperty('counter');
$rp->setAccessible(true);
- $rp->setValue(null);
+ $rp->setValue(new ConcreteDataProvider(), null);
$this->assertNull((new ConcreteDataProvider())->id);
$this->assertNotNull((new ConcreteDataProvider())->id);
diff --git a/tests/framework/data/DataFilterTest.php b/tests/framework/data/DataFilterTest.php
index 1508a28ccde..aec273c9a5b 100644
--- a/tests/framework/data/DataFilterTest.php
+++ b/tests/framework/data/DataFilterTest.php
@@ -17,7 +17,7 @@
*/
class DataFilterTest extends TestCase
{
- protected function setUp()
+ protected function setUp(): void
{
parent::setUp();
diff --git a/tests/framework/data/PaginationTest.php b/tests/framework/data/PaginationTest.php
index a50cba3745c..4dee36e6d3e 100644
--- a/tests/framework/data/PaginationTest.php
+++ b/tests/framework/data/PaginationTest.php
@@ -16,7 +16,7 @@
*/
class PaginationTest extends TestCase
{
- protected function setUp()
+ protected function setUp(): void
{
parent::setUp();
$this->mockWebApplication([
diff --git a/tests/framework/data/SortTest.php b/tests/framework/data/SortTest.php
index c9bb1884212..27a4659cbc7 100644
--- a/tests/framework/data/SortTest.php
+++ b/tests/framework/data/SortTest.php
@@ -19,7 +19,7 @@
*/
class SortTest extends TestCase
{
- protected function setUp()
+ protected function setUp(): void
{
parent::setUp();
$this->mockApplication();
diff --git a/tests/framework/db/ActiveQueryModelConnectionTest.php b/tests/framework/db/ActiveQueryModelConnectionTest.php
index 86dff975fd4..e14b6824d4b 100644
--- a/tests/framework/db/ActiveQueryModelConnectionTest.php
+++ b/tests/framework/db/ActiveQueryModelConnectionTest.php
@@ -17,7 +17,7 @@ class ActiveQueryModelConnectionTest extends TestCase
private $globalConnection;
private $modelConnection;
- protected function setUp()
+ protected function setUp(): void
{
$this->globalConnection = $this->getMockBuilder('yii\db\Connection')->getMock();
$this->modelConnection = $this->getMockBuilder('yii\db\Connection')->getMock();
diff --git a/tests/framework/db/ActiveQueryTest.php b/tests/framework/db/ActiveQueryTest.php
index 3d3f451865c..3867d3ccb98 100644
--- a/tests/framework/db/ActiveQueryTest.php
+++ b/tests/framework/db/ActiveQueryTest.php
@@ -22,7 +22,7 @@
*/
abstract class ActiveQueryTest extends DatabaseTestCase
{
- public function setUp()
+ protected function setUp(): void
{
parent::setUp();
ActiveRecord::$db = $this->getConnection();
diff --git a/tests/framework/db/ActiveRecordTest.php b/tests/framework/db/ActiveRecordTest.php
index b74803b94dd..389f470c768 100644
--- a/tests/framework/db/ActiveRecordTest.php
+++ b/tests/framework/db/ActiveRecordTest.php
@@ -44,7 +44,7 @@ abstract class ActiveRecordTest extends DatabaseTestCase
{
use ActiveRecordTestTrait;
- protected function setUp()
+ protected function setUp(): void
{
parent::setUp();
ActiveRecord::$db = $this->getConnection();
@@ -199,7 +199,7 @@ public function testFindLazyViaTable()
$this->assertCount(0, $order->books);
$order = Order::find()->where(['id' => 1])->asArray()->one();
- $this->assertInternalType('array', $order);
+ $this->assertIsArray($order);
}
public function testFindEagerViaTable()
@@ -225,10 +225,10 @@ public function testFindEagerViaTable()
// https://github.com/yiisoft/yii2/issues/1402
$orders = Order::find()->with('books')->orderBy('id')->asArray()->all();
$this->assertCount(3, $orders);
- $this->assertInternalType('array', $orders[0]['orderItems'][0]);
+ $this->assertIsArray($orders[0]['orderItems'][0]);
$order = $orders[0];
- $this->assertInternalType('array', $order);
+ $this->assertIsArray($order);
$this->assertEquals(1, $order['id']);
$this->assertCount(2, $order['books']);
$this->assertEquals(1, $order['books'][0]['id']);
@@ -1123,7 +1123,7 @@ public function testFindSimpleRelationWithJoin()
$this->assertInstanceOf('yiiunit\data\ar\Customer', $customerWithJoin);
$customerWithJoinIndexOrdered = $order->customerJoinedWithProfileIndexOrdered;
- $this->assertInternalType('array', $customerWithJoinIndexOrdered);
+ $this->assertIsArray($customerWithJoinIndexOrdered);
$this->assertArrayHasKey('user1', $customerWithJoinIndexOrdered);
$this->assertInstanceOf('yiiunit\data\ar\Customer', $customerWithJoinIndexOrdered['user1']);
}
@@ -1424,9 +1424,6 @@ public function testUnlinkAllViaTable()
$this->assertEquals(5, $itemClass::find()->count());
}
- /**
- * @requires PHP 5.6
- */
public function testCastValues()
{
$model = new Type();
@@ -1447,13 +1444,13 @@ public function testCastValues()
$this->assertSame(123, $model->int_col);
$this->assertSame(456, $model->int_col2);
$this->assertSame(42, $model->smallint_col);
- $this->assertSame('1337', trim($model->char_col));
+ $this->assertSame('1337', trim((string) $model->char_col));
$this->assertSame('test', $model->char_col2);
$this->assertSame('test123', $model->char_col3);
-// $this->assertSame(1337.42, $model->float_col);
-// $this->assertSame(42.1337, $model->float_col2);
-// $this->assertSame(true, $model->bool_col);
-// $this->assertSame(false, $model->bool_col2);
+ $this->assertSame(3.742, $model->float_col);
+ $this->assertSame(42.1337, $model->float_col2);
+ $this->assertSame(true, $model->bool_col);
+ $this->assertSame(false, $model->bool_col2);
}
public function testIssues()
@@ -1937,6 +1934,8 @@ public function testLegalValuesForFindByCondition($modelClassName, $validFilter)
/** @var Query $query */
$query = $this->invokeMethod(\Yii::createObject($modelClassName), 'findByCondition', [$validFilter]);
Customer::getDb()->queryBuilder->build($query);
+
+ $this->assertTrue(true);
}
public function illegalValuesForFindByCondition()
@@ -1973,8 +1972,8 @@ public function illegalValuesForFindByCondition()
*/
public function testValueEscapingInFindByCondition($modelClassName, $filterWithInjection)
{
- $this->expectException('yii\base\InvalidArgumentException');
- $this->expectExceptionMessageRegExp('/^Key "(.+)?" is not a column name and can not be used as a filter$/');
+ $this->expectException(\yii\base\InvalidArgumentException::class);
+ $this->expectExceptionMessageMatches('/^Key "(.+)?" is not a column name and can not be used as a filter$/');
/** @var Query $query */
$query = $this->invokeMethod(\Yii::createObject($modelClassName), 'findByCondition', $filterWithInjection);
Customer::getDb()->queryBuilder->build($query);
@@ -2090,15 +2089,6 @@ public function testResetNotSavedRelation()
$this->assertEquals(1, sizeof($order->orderItems));
}
- public function testIssetException()
- {
- $cat = new Cat();
- $this->assertFalse(isset($cat->exception));
- }
-
- /**
- * @requires PHP 7
- */
public function testIssetThrowable()
{
$cat = new Cat();
@@ -2225,6 +2215,53 @@ public function testGetAttributeLabel($model)
$attr = 'model2.doesNotExist.attr1';
$this->assertEquals($model->generateAttributeLabel($attr), $model->getAttributeLabel($attr));
}
+
+ public function testLoadRelations()
+ {
+ // Test eager loading relations for multiple primary models using loadRelationsFor().
+ /** @var Customer[] $customers */
+ $customers = Customer::find()->all();
+ Customer::loadRelationsFor($customers, ['orders.items']);
+ foreach ($customers as $customer) {
+ $this->assertTrue($customer->isRelationPopulated('orders'));
+ foreach ($customer->orders as $order) {
+ $this->assertTrue($order->isRelationPopulated('items'));
+ }
+ }
+
+ // Test eager loading relations as arrays.
+ /** @var array $customers */
+ $customers = Customer::find()->asArray(true)->all();
+ Customer::loadRelationsFor($customers, ['orders.items' => function ($query) { $query->asArray(false); }], true);
+ foreach ($customers as $customer) {
+ $this->assertTrue(isset($customer['orders']));
+ $this->assertTrue(is_array($customer['orders']));
+ foreach ($customer['orders'] as $order) {
+ $this->assertTrue(is_array($order));
+ $this->assertTrue(isset($order['items']));
+ $this->assertTrue(is_array($order['items']));
+ foreach ($order['items'] as $item) {
+ $this->assertFalse(is_array($item));
+ }
+ }
+ }
+
+ // Test eager loading relations for a single primary model using loadRelations().
+ /** @var Customer $customer */
+ $customer = Customer::find()->where(['id' => 1])->one();
+ $customer->loadRelations('orders.items');
+ $this->assertTrue($customer->isRelationPopulated('orders'));
+ foreach ($customer->orders as $order) {
+ $this->assertTrue($order->isRelationPopulated('items'));
+ }
+
+ // Test eager loading previously loaded relation (relation value should be replaced with a new value loaded from database).
+ /** @var Customer $customer */
+ $customer = Customer::find()->where(['id' => 2])->with(['orders' => function ($query) { $query->orderBy(['id' => SORT_ASC]); }])->one();
+ $this->assertTrue($customer->orders[0]->id < $customer->orders[1]->id, 'Related models should be sorted by ID in ascending order.');
+ $customer->loadRelations(['orders' => function ($query) { $query->orderBy(['id' => SORT_DESC]); }]);
+ $this->assertTrue($customer->orders[0]->id > $customer->orders[1]->id, 'Related models should be sorted by ID in descending order.');
+ }
}
class LabelTestModel1 extends \yii\db\ActiveRecord
diff --git a/tests/framework/db/BaseActiveRecordTest.php b/tests/framework/db/BaseActiveRecordTest.php
index 0427421cd81..1ef9013aa77 100644
--- a/tests/framework/db/BaseActiveRecordTest.php
+++ b/tests/framework/db/BaseActiveRecordTest.php
@@ -6,7 +6,7 @@
abstract class BaseActiveRecordTest extends DatabaseTestCase
{
- protected function setUp()
+ protected function setUp(): void
{
parent::setUp();
ActiveRecord::$db = $this->getConnection();
diff --git a/tests/framework/db/BatchQueryResultTest.php b/tests/framework/db/BatchQueryResultTest.php
index 54487083e72..3086bc19329 100644
--- a/tests/framework/db/BatchQueryResultTest.php
+++ b/tests/framework/db/BatchQueryResultTest.php
@@ -14,7 +14,7 @@
abstract class BatchQueryResultTest extends DatabaseTestCase
{
- public function setUp()
+ protected function setUp(): void
{
parent::setUp();
ActiveRecord::$db = $this->getConnection();
diff --git a/tests/framework/db/CommandTest.php b/tests/framework/db/CommandTest.php
index 041b788f3c1..b888a7073d6 100644
--- a/tests/framework/db/CommandTest.php
+++ b/tests/framework/db/CommandTest.php
@@ -193,7 +193,7 @@ public function testBindParamValue()
$command->bindParam(':blob_col', $blobCol);
$command->bindParam(':bool_col', $boolCol, \PDO::PARAM_BOOL);
} else {
- $floatCol = 1.23;
+ $floatCol = 1.230;
$numericCol = '1.23';
$blobCol = "\x10\x11\x12";
$boolCol = false;
@@ -210,13 +210,13 @@ public function testBindParamValue()
$row = $command->queryOne();
$this->assertEquals($intCol, $row['int_col']);
$this->assertEquals($charCol, $row['char_col']);
- $this->assertEquals($floatCol, $row['float_col']);
+ $this->assertEquals($floatCol, (float) $row['float_col']);
if ($this->driverName === 'mysql' || $this->driverName === 'sqlite' || $this->driverName === 'oci') {
$this->assertEquals($blobCol, $row['blob_col']);
} elseif (\defined('HHVM_VERSION') && $this->driverName === 'pgsql') {
// HHVMs pgsql implementation does not seem to support blob columns correctly.
} else {
- $this->assertInternalType('resource', $row['blob_col']);
+ $this->assertIsResource($row['blob_col']);
$this->assertEquals($blobCol, stream_get_contents($row['blob_col']));
}
$this->assertEquals($numericCol, $row['numeric_col']);
@@ -281,7 +281,7 @@ public function testFetchMode()
$command = $db->createCommand($sql);
$command->fetchMode = \PDO::FETCH_OBJ;
$result = $command->queryOne();
- $this->assertInternalType('object', $result);
+ $this->assertIsObject($result);
// FETCH_NUM, customized in query method
$sql = 'SELECT * FROM {{customer}}';
@@ -315,11 +315,7 @@ public function testBatchInsert()
public function testBatchInsertWithYield()
{
- if (PHP_VERSION_ID < 50500) {
- $this->markTestSkipped('The yield function is only supported with php 5.5 =< version');
- } else {
- include __DIR__ . '/testBatchInsertWithYield.php';
- }
+ include __DIR__ . '/testBatchInsertWithYield.php';
}
/**
@@ -623,8 +619,7 @@ public function invalidSelectColumns()
* Test INSERT INTO ... SELECT SQL statement with wrong query object.
*
* @dataProvider invalidSelectColumns
- * @expectedException \yii\base\InvalidParamException
- * @expectedExceptionMessage Expected select query object with enumerated (named) parameters
+ *
* @param mixed $invalidSelectColumns
*/
public function testInsertSelectFailed($invalidSelectColumns)
@@ -634,10 +629,13 @@ public function testInsertSelectFailed($invalidSelectColumns)
$db = $this->getConnection();
$command = $db->createCommand();
- $command->insert(
- '{{customer}}',
- $query
- )->execute();
+
+ $this->expectException(\yii\base\InvalidArgumentException::class);
+ $this->expectExceptionMessage('Expected select query object with enumerated (named) parameters');
+
+ $this->expectException('yii\base\InvalidParamException');
+ $this->expectExceptionMessage('Expected select query object with enumerated (named) parameters');
+ $command->insert('{{customer}}', $query)->execute();
}
public function testInsertExpression()
@@ -1222,7 +1220,10 @@ public function testAddDropCheck()
$this->assertEmpty($schema->getTableChecks($tableName, true));
$db->createCommand()->addCheck($name, $tableName, '[[int1]] > 1')->execute();
- $this->assertRegExp('/^.*int1.*>.*1.*$/', $schema->getTableChecks($tableName, true)[0]->expression);
+ $this->assertMatchesRegularExpression(
+ '/^.*int1.*>.*1.*$/',
+ $schema->getTableChecks($tableName, true)[0]->expression
+ );
$db->createCommand()->dropCheck($name, $tableName)->execute();
$this->assertEmpty($schema->getTableChecks($tableName, true));
diff --git a/tests/framework/db/ConnectionTest.php b/tests/framework/db/ConnectionTest.php
index a155517ffdf..8b3a4f65d6d 100644
--- a/tests/framework/db/ConnectionTest.php
+++ b/tests/framework/db/ConnectionTest.php
@@ -224,18 +224,20 @@ public function testTransactionIsolation()
$this->assertTrue(true); // should not be any exception so far
}
- /**
- * @expectedException \Exception
- */
public function testTransactionShortcutException()
{
$connection = $this->getConnection(true);
+
+ $this->expectException(\Exception::class);
+
$connection->transaction(function () use ($connection) {
$connection->createCommand()->insert('profile', ['description' => 'test transaction shortcut'])->execute();
throw new \Exception('Exception in transaction shortcut');
});
- $profilesCount = $connection->createCommand("SELECT COUNT(*) FROM profile WHERE description = 'test transaction shortcut';")->queryScalar();
+ $profilesCount = $connection
+ ->createCommand("SELECT COUNT(*) FROM profile WHERE description = 'test transaction shortcut';")
+ ->queryScalar();
$this->assertEquals(0, $profilesCount, 'profile should not be inserted in transaction shortcut');
}
@@ -400,7 +402,11 @@ private function runExceptionTest($connection)
try {
$connection->createCommand('INSERT INTO qlog1(a) VALUES(:a);', [':a' => 1])->execute();
} catch (\yii\db\Exception $e) {
- $this->assertContains('INSERT INTO qlog1(a) VALUES(1);', $e->getMessage(), 'Exception message should contain raw SQL query: ' . (string) $e);
+ $this->assertStringContainsString(
+ 'INSERT INTO qlog1(a) VALUES(1);',
+ $e->getMessage(),
+ 'Exception message should contain raw SQL query: ' . (string) $e
+ );
$thrown = true;
}
$this->assertTrue($thrown, 'An exception should have been thrown by the command.');
@@ -409,7 +415,10 @@ private function runExceptionTest($connection)
try {
$connection->createCommand('SELECT * FROM qlog1 WHERE id=:a ORDER BY nonexistingcolumn;', [':a' => 1])->queryAll();
} catch (\yii\db\Exception $e) {
- $this->assertContains('SELECT * FROM qlog1 WHERE id=1 ORDER BY nonexistingcolumn;', $e->getMessage(), 'Exception message should contain raw SQL query: ' . (string) $e);
+ $this->assertStringContainsString(
+ 'SELECT * FROM qlog1 WHERE id=1 ORDER BY nonexistingcolumn;',
+ $e->getMessage(), 'Exception message should contain raw SQL query: ' . (string) $e,
+ );
$thrown = true;
}
$this->assertTrue($thrown, 'An exception should have been thrown by the command.');
diff --git a/tests/framework/db/DatabaseTestCase.php b/tests/framework/db/DatabaseTestCase.php
index 53ea945623e..c9275ebcfaf 100644
--- a/tests/framework/db/DatabaseTestCase.php
+++ b/tests/framework/db/DatabaseTestCase.php
@@ -24,7 +24,7 @@ abstract class DatabaseTestCase extends TestCase
private $_db;
- protected function setUp()
+ protected function setUp(): void
{
if ($this->driverName === null) {
throw new \Exception('driverName is not set for a DatabaseTestCase.');
@@ -44,7 +44,7 @@ protected function setUp()
$this->mockApplication();
}
- protected function tearDown()
+ protected function tearDown(): void
{
if ($this->_db) {
$this->_db->close();
diff --git a/tests/framework/db/QueryTest.php b/tests/framework/db/QueryTest.php
index 4de29107045..515f70a485a 100644
--- a/tests/framework/db/QueryTest.php
+++ b/tests/framework/db/QueryTest.php
@@ -333,8 +333,7 @@ public function testLimitOffsetWithExpression()
$this->assertCount(2, $result);
$this->assertNotContains(1, $result);
- $this->assertContains(2, $result);
- $this->assertContains(3, $result);
+ $this->assertEquals([2, 3], $result);
}
public function testUnion()
diff --git a/tests/framework/db/SchemaTest.php b/tests/framework/db/SchemaTest.php
index af02b2170b6..480aabbfdd0 100644
--- a/tests/framework/db/SchemaTest.php
+++ b/tests/framework/db/SchemaTest.php
@@ -528,7 +528,7 @@ public function testColumnSchema()
$this->assertSame($expected['precision'], $column->precision, "precision of column $name does not match.");
$this->assertSame($expected['scale'], $column->scale, "scale of column $name does not match.");
if (\is_object($expected['defaultValue'])) {
- $this->assertInternalType('object', $column->defaultValue, "defaultValue of column $name is expected to be an object but it is not.");
+ $this->assertIsObject($column->defaultValue, "defaultValue of column $name is expected to be an object but it is not.");
$this->assertEquals((string)$expected['defaultValue'], (string)$column->defaultValue, "defaultValue of column $name does not match.");
} else {
$this->assertEquals($expected['defaultValue'], $column->defaultValue, "defaultValue of column $name does not match.");
@@ -545,6 +545,39 @@ public function testColumnSchemaDbTypecastWithEmptyCharType()
$this->assertSame('', $columnSchema->dbTypecast(''));
}
+ /**
+ * @dataProvider columnSchemaDbTypecastBooleanPhpTypeProvider
+ * @param mixed $value
+ * @param bool $expected
+ */
+ public function testColumnSchemaDbTypecastBooleanPhpType($value, $expected)
+ {
+ $columnSchema = new ColumnSchema(['phpType' => Schema::TYPE_BOOLEAN]);
+ $this->assertSame($expected, $columnSchema->dbTypecast($value));
+ }
+
+ public function columnSchemaDbTypecastBooleanPhpTypeProvider()
+ {
+ return [
+ [1, true],
+ [0, false],
+ ['1', true],
+ ['0', false],
+
+ // https://github.com/yiisoft/yii2/issues/9006
+ ["\1", true],
+ ["\0", false],
+
+ // https://github.com/yiisoft/yii2/pull/20122
+ ['TRUE', true],
+ ['FALSE', false],
+ ['true', true],
+ ['false', false],
+ ['True', true],
+ ['False', false],
+ ];
+ }
+
public function testFindUniqueIndexes()
{
if ($this->driverName === 'sqlsrv') {
@@ -782,12 +815,25 @@ public function testTableSchemaConstraintsWithPdoLowercase($tableName, $type, $e
private function assertMetadataEquals($expected, $actual)
{
- $this->assertInternalType(strtolower(\gettype($expected)), $actual);
+ switch (\strtolower(\gettype($expected))) {
+ case 'object':
+ $this->assertIsObject($actual);
+ break;
+ case 'array':
+ $this->assertIsArray($actual);
+ break;
+ case 'null':
+ $this->assertNull($actual);
+ break;
+ }
+
if (\is_array($expected)) {
$this->normalizeArrayKeys($expected, false);
$this->normalizeArrayKeys($actual, false);
}
+
$this->normalizeConstraints($expected, $actual);
+
if (\is_array($expected)) {
$this->normalizeArrayKeys($expected, true);
$this->normalizeArrayKeys($actual, true);
diff --git a/tests/framework/db/mssql/ActiveRecordTest.php b/tests/framework/db/mssql/ActiveRecordTest.php
index 6b6841fa138..d126436bdcd 100644
--- a/tests/framework/db/mssql/ActiveRecordTest.php
+++ b/tests/framework/db/mssql/ActiveRecordTest.php
@@ -11,6 +11,7 @@
use yii\db\Expression;
use yiiunit\data\ar\TestTrigger;
use yiiunit\data\ar\TestTriggerAlert;
+use yiiunit\data\ar\Type;
/**
* @group db
@@ -25,6 +26,35 @@ public function testExplicitPkOnAutoIncrement()
$this->markTestSkipped('MSSQL does not support explicit value for an IDENTITY column.');
}
+ public function testCastValues()
+ {
+ $model = new Type();
+ $model->int_col = 123;
+ $model->int_col2 = 456;
+ $model->smallint_col = 42;
+ $model->char_col = '1337';
+ $model->char_col2 = 'test';
+ $model->char_col3 = 'test123';
+ $model->float_col = 3.742;
+ $model->float_col2 = 42.1337;
+ $model->bool_col = true;
+ $model->bool_col2 = false;
+ $model->save(false);
+
+ /* @var $model Type */
+ $model = Type::find()->one();
+ $this->assertSame(123, $model->int_col);
+ $this->assertSame(456, $model->int_col2);
+ $this->assertSame(42, $model->smallint_col);
+ $this->assertSame('1337', trim((string) $model->char_col));
+ $this->assertSame('test', $model->char_col2);
+ $this->assertSame('test123', $model->char_col3);
+ //$this->assertSame(3.742, $model->float_col);
+ //$this->assertSame(42.1337, $model->float_col2);
+ //$this->assertSame(true, $model->bool_col);
+ //$this->assertSame(false, $model->bool_col2);
+ }
+
/**
* @throws Exception
*/
diff --git a/tests/framework/db/mssql/CommandTest.php b/tests/framework/db/mssql/CommandTest.php
index 25a58a3a9e4..76c68cc8127 100644
--- a/tests/framework/db/mssql/CommandTest.php
+++ b/tests/framework/db/mssql/CommandTest.php
@@ -55,7 +55,7 @@ public function testBindParamValue()
$command = $db->createCommand($sql);
$intCol = 123;
$charCol = 'abc';
- $floatCol = 1.23;
+ $floatCol = 1.230;
$blobCol = "\x10\x11\x12";
$numericCol = '1.23';
$boolCol = false;
@@ -69,9 +69,10 @@ public function testBindParamValue()
$sql = 'SELECT int_col, char_col, float_col, CONVERT([nvarchar], blob_col) AS blob_col, numeric_col FROM type';
$row = $db->createCommand($sql)->queryOne();
+
$this->assertEquals($intCol, $row['int_col']);
$this->assertEquals($charCol, trim($row['char_col']));
- $this->assertEquals($floatCol, $row['float_col']);
+ $this->assertEquals($floatCol, (float) $row['float_col']);
$this->assertEquals($blobCol, $row['blob_col']);
$this->assertEquals($numericCol, $row['numeric_col']);
@@ -113,7 +114,7 @@ public function testAddDropDefaultValue()
$this->assertEmpty($schema->getTableDefaultValues($tableName, true));
$db->createCommand()->addDefaultValue($name, $tableName, 'int1', 41)->execute();
- $this->assertRegExp('/^.*41.*$/', $schema->getTableDefaultValues($tableName, true)[0]->value);
+ $this->assertMatchesRegularExpression('/^.*41.*$/', $schema->getTableDefaultValues($tableName, true)[0]->value);
$db->createCommand()->dropDefaultValue($name, $tableName)->execute();
$this->assertEmpty($schema->getTableDefaultValues($tableName, true));
diff --git a/tests/framework/db/mssql/type/BooleanTest.php b/tests/framework/db/mssql/type/BooleanTest.php
new file mode 100644
index 00000000000..97fd7124519
--- /dev/null
+++ b/tests/framework/db/mssql/type/BooleanTest.php
@@ -0,0 +1,198 @@
+getConnection(true);
+ $schema = $db->getSchema();
+ $tableName = '{{%boolean}}';
+
+ if ($db->getTableSchema($tableName)) {
+ $db->createCommand()->dropTable($tableName)->execute();
+ }
+
+ $db->createCommand()->createTable(
+ $tableName,
+ [
+ 'id' => $schema->createColumnSchemaBuilder(Schema::TYPE_PK),
+ 'bool_col' => $schema->createColumnSchemaBuilder(Schema::TYPE_BOOLEAN),
+ ]
+ )->execute();
+
+ // test type
+ $column = $db->getTableSchema($tableName)->getColumn('bool_col');
+ $this->assertSame('boolean', $column->phpType);
+
+ // test value `false`
+ $db->createCommand()->insert($tableName, ['bool_col' => false])->execute();
+ $boolValue = $db->createCommand("SELECT bool_col FROM $tableName WHERE id = 1")->queryScalar();
+ $this->assertEquals(0, $boolValue);
+
+ // test php typecast
+ $phpTypeCast = $column->phpTypecast($boolValue);
+ $this->assertFalse($phpTypeCast);
+
+ // test value `true`
+ $db->createCommand()->insert($tableName, ['bool_col' => true])->execute();
+ $boolValue = $db->createCommand("SELECT bool_col FROM $tableName WHERE id = 2")->queryScalar();
+ $this->assertEquals(1, $boolValue);
+
+ // test php typecast
+ $phpTypeCast = $column->phpTypecast($boolValue);
+ $this->assertTrue($phpTypeCast);
+ }
+
+ public function testBooleanWithValueInteger()
+ {
+ $db = $this->getConnection(true);
+ $schema = $db->getSchema();
+ $tableName = '{{%boolean}}';
+
+ if ($db->getTableSchema($tableName)) {
+ $db->createCommand()->dropTable($tableName)->execute();
+ }
+
+ $db->createCommand()->createTable(
+ $tableName,
+ [
+ 'id' => $schema->createColumnSchemaBuilder(Schema::TYPE_PK),
+ 'bool_col' => $schema->createColumnSchemaBuilder(Schema::TYPE_BOOLEAN),
+ ]
+ )->execute();
+
+ // test type
+ $column = $db->getTableSchema($tableName)->getColumn('bool_col');
+ $this->assertSame('boolean', $column->phpType);
+
+ // test value 0
+ $db->createCommand()->insert($tableName, ['bool_col' => 0])->execute();
+ $boolValue = $db->createCommand("SELECT bool_col FROM $tableName WHERE id = 1")->queryScalar();
+ $this->assertEquals(0, $boolValue);
+
+ // test php typecast
+ $phpTypeCast = $column->phpTypecast($boolValue);
+ $this->assertFalse($phpTypeCast);
+
+ // test value 1
+ $db->createCommand()->insert($tableName, ['bool_col' => 1])->execute();
+ $boolValue = $db->createCommand("SELECT bool_col FROM $tableName WHERE id = 2")->queryScalar();
+ $this->assertEquals(1, $boolValue);
+
+ // test php typecast
+ $phpTypeCast = $column->phpTypecast($boolValue);
+ $this->assertTrue($phpTypeCast);
+ }
+
+ public function testBooleanValueNegative()
+ {
+ $db = $this->getConnection(true);
+ $schema = $db->getSchema();
+ $tableName = '{{%boolean}}';
+
+ if ($db->getTableSchema($tableName)) {
+ $db->createCommand()->dropTable($tableName)->execute();
+ }
+
+ $db->createCommand()->createTable(
+ $tableName,
+ [
+ 'id' => $schema->createColumnSchemaBuilder(Schema::TYPE_PK),
+ 'bool_col' => $schema->createColumnSchemaBuilder(Schema::TYPE_BOOLEAN),
+ ]
+ )->execute();
+
+ // test type
+ $column = $db->getTableSchema($tableName)->getColumn('bool_col');
+ $this->assertSame('boolean', $column->phpType);
+
+ // test value 2
+ $db->createCommand()->insert($tableName, ['bool_col' => -1])->execute();
+ $boolValue = $db->createCommand("SELECT bool_col FROM $tableName WHERE id = 1")->queryScalar();
+ $this->assertEquals(1, $boolValue);
+
+ // test php typecast
+ $phpTypeCast = $column->phpTypecast($boolValue);
+ $this->assertTrue($phpTypeCast);
+ }
+
+ public function testBooleanWithValueNull()
+ {
+ $db = $this->getConnection(true);
+ $schema = $db->getSchema();
+ $tableName = '{{%boolean}}';
+
+ if ($db->getTableSchema($tableName)) {
+ $db->createCommand()->dropTable($tableName)->execute();
+ }
+
+ $db->createCommand()->createTable(
+ $tableName,
+ [
+ 'id' => $schema->createColumnSchemaBuilder(Schema::TYPE_PK),
+ 'bool_col' => $schema->createColumnSchemaBuilder(Schema::TYPE_BOOLEAN),
+ ]
+ )->execute();
+
+ // test type
+ $column = $db->getTableSchema($tableName)->getColumn('bool_col');
+ $this->assertSame('boolean', $column->phpType);
+
+ // test value `null`
+ $db->createCommand()->insert($tableName, ['bool_col' => null])->execute();
+ $boolValue = $db->createCommand("SELECT bool_col FROM $tableName WHERE id = 1")->queryScalar();
+ $this->assertNull($boolValue);
+
+ // test php typecast
+ $phpTypeCast = $column->phpTypecast($boolValue);
+ $this->assertNull($phpTypeCast);
+ }
+
+ public function testBooleanWithValueOverflow()
+ {
+ $db = $this->getConnection(true);
+ $schema = $db->getSchema();
+ $tableName = '{{%boolean}}';
+
+ if ($db->getTableSchema($tableName)) {
+ $db->createCommand()->dropTable($tableName)->execute();
+ }
+
+ $db->createCommand()->createTable(
+ $tableName,
+ [
+ 'id' => $schema->createColumnSchemaBuilder(Schema::TYPE_PK),
+ 'bool_col' => $schema->createColumnSchemaBuilder(Schema::TYPE_BOOLEAN),
+ ]
+ )->execute();
+
+ // test type
+ $column = $db->getTableSchema($tableName)->getColumn('bool_col');
+ $this->assertSame('boolean', $column->phpType);
+
+ // test value 2
+ $db->createCommand()->insert($tableName, ['bool_col' => 2])->execute();
+ $boolValue = $db->createCommand("SELECT bool_col FROM $tableName WHERE id = 1")->queryScalar();
+ $this->assertEquals(1, $boolValue);
+
+ // test php typecast
+ $phpTypeCast = $column->phpTypecast($boolValue);
+ $this->assertTrue($phpTypeCast);
+ }
+}
diff --git a/tests/framework/db/mssql/type/VarbinaryTest.php b/tests/framework/db/mssql/type/VarbinaryTest.php
index b72a2b4c469..0840996f703 100644
--- a/tests/framework/db/mssql/type/VarbinaryTest.php
+++ b/tests/framework/db/mssql/type/VarbinaryTest.php
@@ -5,7 +5,7 @@
* @license https://www.yiiframework.com/license/
*/
-namespace yiiunit\framework\db\mssql\Type;
+namespace yiiunit\framework\db\mssql\type;
use yii\db\Query;
use yiiunit\framework\db\DatabaseTestCase;
diff --git a/tests/framework/db/mysql/ActiveRecordTest.php b/tests/framework/db/mysql/ActiveRecordTest.php
index 27105693fed..95b91001179 100644
--- a/tests/framework/db/mysql/ActiveRecordTest.php
+++ b/tests/framework/db/mysql/ActiveRecordTest.php
@@ -8,6 +8,7 @@
namespace yiiunit\framework\db\mysql;
use yiiunit\data\ar\Storage;
+use yiiunit\data\ar\Type;
/**
* @group db
@@ -17,6 +18,35 @@ class ActiveRecordTest extends \yiiunit\framework\db\ActiveRecordTest
{
public $driverName = 'mysql';
+ public function testCastValues()
+ {
+ $model = new Type();
+ $model->int_col = 123;
+ $model->int_col2 = 456;
+ $model->smallint_col = 42;
+ $model->char_col = '1337';
+ $model->char_col2 = 'test';
+ $model->char_col3 = 'test123';
+ $model->float_col = 3.742;
+ $model->float_col2 = 42.1337;
+ $model->bool_col = true;
+ $model->bool_col2 = false;
+ $model->save(false);
+
+ /* @var $model Type */
+ $model = Type::find()->one();
+ $this->assertSame(123, $model->int_col);
+ $this->assertSame(456, $model->int_col2);
+ $this->assertSame(42, $model->smallint_col);
+ $this->assertSame('1337', trim((string) $model->char_col));
+ $this->assertSame('test', $model->char_col2);
+ $this->assertSame('test123', $model->char_col3);
+ $this->assertSame(3.742, $model->float_col);
+ $this->assertSame(42.1337, $model->float_col2);
+ //$this->assertSame(true, $model->bool_col);
+ //$this->assertSame(false, $model->bool_col2);
+ }
+
public function testJsonColumn()
{
if (version_compare($this->getConnection()->getSchema()->getServerVersion(), '5.7', '<')) {
diff --git a/tests/framework/db/mysql/BaseActiveRecordTest.php b/tests/framework/db/mysql/BaseActiveRecordTest.php
index 394922e87f7..8acdc27ac8a 100644
--- a/tests/framework/db/mysql/BaseActiveRecordTest.php
+++ b/tests/framework/db/mysql/BaseActiveRecordTest.php
@@ -4,6 +4,10 @@
use yiiunit\data\ar\Storage;
+/**
+ * @group db
+ * @group mysql
+ */
class BaseActiveRecordTest extends \yiiunit\framework\db\BaseActiveRecordTest
{
public $driverName = 'mysql';
diff --git a/tests/framework/db/mysql/QueryTest.php b/tests/framework/db/mysql/QueryTest.php
index 9f647308c6f..8d4847d6679 100644
--- a/tests/framework/db/mysql/QueryTest.php
+++ b/tests/framework/db/mysql/QueryTest.php
@@ -45,7 +45,6 @@ public function testLimitOffsetWithExpression()
$this->assertCount(2, $result);
$this->assertNotContains(1, $result);
- $this->assertContains(2, $result);
- $this->assertContains(3, $result);
+ $this->assertEquals([2, 3], $result);
}
}
diff --git a/tests/framework/db/mysql/SchemaTest.php b/tests/framework/db/mysql/SchemaTest.php
index 4e602a317ea..43a66a60b57 100644
--- a/tests/framework/db/mysql/SchemaTest.php
+++ b/tests/framework/db/mysql/SchemaTest.php
@@ -230,7 +230,6 @@ public function getExpectedColumns()
if (version_compare($version, '5.7', '<')) {
$columns['int_col3']['phpType'] = 'string';
-
$columns['json_col']['type'] = 'text';
$columns['json_col']['dbType'] = 'longtext';
$columns['json_col']['phpType'] = 'string';
diff --git a/tests/framework/db/oci/ActiveRecordTest.php b/tests/framework/db/oci/ActiveRecordTest.php
index 6be10ccc352..c7a11d722a8 100644
--- a/tests/framework/db/oci/ActiveRecordTest.php
+++ b/tests/framework/db/oci/ActiveRecordTest.php
@@ -26,7 +26,6 @@ class ActiveRecordTest extends \yiiunit\framework\db\ActiveRecordTest
public function testCastValues()
{
// pass, because boolean casting is not available
- return;
$model = new Type();
$model->int_col = 123;
$model->int_col2 = 456;
@@ -48,7 +47,7 @@ public function testCastValues()
$this->assertSame('1337', trim($model->char_col));
$this->assertSame('test', $model->char_col2);
$this->assertSame('test123', $model->char_col3);
- $this->assertSame(1337.42, $model->float_col);
+ $this->assertSame(3.742, $model->float_col);
$this->assertSame(42.1337, $model->float_col2);
$this->assertEquals('1', $model->bool_col);
$this->assertEquals('0', $model->bool_col2);
diff --git a/tests/framework/db/oci/ConnectionTest.php b/tests/framework/db/oci/ConnectionTest.php
index 0d0bf842ef6..76992cce915 100644
--- a/tests/framework/db/oci/ConnectionTest.php
+++ b/tests/framework/db/oci/ConnectionTest.php
@@ -85,6 +85,8 @@ public function testTransactionIsolation()
$transaction = $connection->beginTransaction(Transaction::SERIALIZABLE);
$transaction->commit();
+
+ $this->assertTrue(true);
}
/**
diff --git a/tests/framework/db/oci/QueryBuilderTest.php b/tests/framework/db/oci/QueryBuilderTest.php
index 5bf3b831636..d7ed58cd3ba 100644
--- a/tests/framework/db/oci/QueryBuilderTest.php
+++ b/tests/framework/db/oci/QueryBuilderTest.php
@@ -305,7 +305,7 @@ public function testUpsert($table, $insertColumns, $updateColumns, $expectedSQL,
if (is_string($expectedSQL)) {
$this->assertEqualsWithoutLE($expectedSQL, $actualSQL);
} else {
- $this->assertContains($actualSQL, $expectedSQL);
+ $this->assertStringContainsString($actualSQL, $expectedSQL);
}
if (ArrayHelper::isAssociative($expectedParams)) {
$this->assertSame($expectedParams, $actualParams);
diff --git a/tests/framework/db/pgsql/ArrayParserTest.php b/tests/framework/db/pgsql/ArrayParserTest.php
index 1962676180a..fdea8c9b20a 100644
--- a/tests/framework/db/pgsql/ArrayParserTest.php
+++ b/tests/framework/db/pgsql/ArrayParserTest.php
@@ -12,7 +12,7 @@ class ArrayParserTest extends TestCase
*/
protected $arrayParser;
- protected function setUp()
+ protected function setUp(): void
{
parent::setUp();
diff --git a/tests/framework/db/pgsql/BaseActiveRecordTest.php b/tests/framework/db/pgsql/BaseActiveRecordTest.php
index a4993685249..db6f1264815 100644
--- a/tests/framework/db/pgsql/BaseActiveRecordTest.php
+++ b/tests/framework/db/pgsql/BaseActiveRecordTest.php
@@ -5,6 +5,10 @@
use yii\db\JsonExpression;
use yiiunit\data\ar\ActiveRecord;
+/**
+ * @group db
+ * @group pgsql
+ */
class BaseActiveRecordTest extends \yiiunit\framework\db\BaseActiveRecordTest
{
public $driverName = 'pgsql';
diff --git a/tests/framework/db/pgsql/ConnectionTest.php b/tests/framework/db/pgsql/ConnectionTest.php
index 2baa79e3b8d..c3a6d0c68eb 100644
--- a/tests/framework/db/pgsql/ConnectionTest.php
+++ b/tests/framework/db/pgsql/ConnectionTest.php
@@ -19,7 +19,7 @@ class ConnectionTest extends \yiiunit\framework\db\ConnectionTest
public function testConnection()
{
- $this->assertInternalType('object', $this->getConnection(true));
+ $this->assertIsObject($this->getConnection(true));
}
public function testQuoteValue()
diff --git a/tests/framework/db/pgsql/type/BooleanTest.php b/tests/framework/db/pgsql/type/BooleanTest.php
new file mode 100644
index 00000000000..4a9b21df249
--- /dev/null
+++ b/tests/framework/db/pgsql/type/BooleanTest.php
@@ -0,0 +1,239 @@
+getConnection(true);
+ $schema = $db->getSchema();
+ $tableName = '{{%boolean}}';
+
+ if ($db->getTableSchema($tableName)) {
+ $db->createCommand()->dropTable($tableName)->execute();
+ }
+
+ $db->createCommand()->createTable(
+ $tableName,
+ [
+ 'id' => $schema->createColumnSchemaBuilder(Schema::TYPE_PK),
+ 'bool_col' => $schema->createColumnSchemaBuilder(Schema::TYPE_BOOLEAN),
+ ]
+ )->execute();
+
+ // test type `boolean`
+ $column = $db->getTableSchema($tableName)->getColumn('bool_col');
+ $this->assertSame('boolean', $column->phpType);
+
+ // test value `false`
+ $db->createCommand()->insert($tableName, ['bool_col' => false])->execute();
+ $boolValue = $db->createCommand("SELECT bool_col FROM $tableName WHERE id = 1")->queryScalar();
+ $this->assertEquals(0, $boolValue);
+
+ // test php typecast
+ $phpTypeCast = $column->phpTypecast($boolValue);
+ $this->assertFalse($phpTypeCast);
+
+ // test value `true`
+ $db->createCommand()->insert($tableName, ['bool_col' => true])->execute();
+ $boolValue = $db->createCommand("SELECT bool_col FROM $tableName WHERE id = 2")->queryScalar();
+ $this->assertEquals(1, $boolValue);
+
+ // test php typecast
+ $phpTypeCast = $column->phpTypecast($boolValue);
+ $this->assertTrue($phpTypeCast);
+ }
+
+ public function testBooleanWithValueInteger()
+ {
+ $db = $this->getConnection(true);
+ $schema = $db->getSchema();
+ $tableName = '{{%boolean}}';
+
+ if ($db->getTableSchema($tableName)) {
+ $db->createCommand()->dropTable($tableName)->execute();
+ }
+
+ $db->createCommand()->createTable(
+ $tableName,
+ [
+ 'id' => $schema->createColumnSchemaBuilder(Schema::TYPE_PK),
+ 'bool_col' => $schema->createColumnSchemaBuilder(Schema::TYPE_BOOLEAN),
+ ]
+ )->execute();
+
+ // test type `boolean`
+ $column = $db->getTableSchema($tableName)->getColumn('bool_col');
+ $this->assertSame('boolean', $column->phpType);
+
+ // test value `0`
+ $db->createCommand()->insert($tableName, ['bool_col' => 0])->execute();
+ $boolValue = $db->createCommand("SELECT bool_col FROM $tableName WHERE id = 1")->queryScalar();
+ $this->assertEquals(0, $boolValue);
+
+ // test php typecast
+ $phpTypeCast = $column->phpTypecast($boolValue);
+ $this->assertFalse($phpTypeCast);
+
+ // test value `1`
+ $db->createCommand()->insert($tableName, ['bool_col' => 1])->execute();
+ $boolValue = $db->createCommand("SELECT bool_col FROM $tableName WHERE id = 2")->queryScalar();
+ $this->assertEquals(1, $boolValue);
+
+ // test php typecast
+ $phpTypeCast = $column->phpTypecast($boolValue);
+ $this->assertTrue($phpTypeCast);
+ }
+
+ public function testBooleanWithValueNegative()
+ {
+ $db = $this->getConnection(true);
+ $schema = $db->getSchema();
+ $tableName = '{{%boolean}}';
+
+ if ($db->getTableSchema($tableName)) {
+ $db->createCommand()->dropTable($tableName)->execute();
+ }
+
+ $db->createCommand()->createTable(
+ $tableName,
+ [
+ 'id' => $schema->createColumnSchemaBuilder(Schema::TYPE_PK),
+ 'bool_col' => $schema->createColumnSchemaBuilder(Schema::TYPE_BOOLEAN),
+ ]
+ )->execute();
+
+ // test type `boolean`
+ $column = $db->getTableSchema($tableName)->getColumn('bool_col');
+ $this->assertSame('boolean', $column->phpType);
+
+ // test value `-1`
+ $db->createCommand()->insert($tableName, ['bool_col' => '-1'])->execute();
+ $boolValue = $db->createCommand("SELECT bool_col FROM $tableName WHERE id = 1")->queryScalar();
+ $this->assertEquals(1, $boolValue);
+
+ // test php typecast
+ $phpTypeCast = $column->phpTypecast($boolValue);
+ $this->assertTrue($phpTypeCast);
+ }
+
+ public function testBooleanWithValueNull()
+ {
+ $db = $this->getConnection(true);
+ $schema = $db->getSchema();
+ $tableName = '{{%boolean}}';
+
+ if ($db->getTableSchema($tableName)) {
+ $db->createCommand()->dropTable($tableName)->execute();
+ }
+
+ $db->createCommand()->createTable(
+ $tableName,
+ [
+ 'id' => $schema->createColumnSchemaBuilder(Schema::TYPE_PK),
+ 'bool_col' => $schema->createColumnSchemaBuilder(Schema::TYPE_BOOLEAN),
+ ]
+ )->execute();
+
+ // test type `boolean`
+ $column = $db->getTableSchema($tableName)->getColumn('bool_col');
+ $this->assertSame('boolean', $column->phpType);
+
+ // test value `null`
+ $db->createCommand()->insert($tableName, ['bool_col' => null])->execute();
+ $boolValue = $db->createCommand("SELECT bool_col FROM $tableName WHERE id = 1")->queryScalar();
+ $this->assertNull($boolValue);
+
+ // test php typecast
+ $phpTypeCast = $column->phpTypecast($boolValue);
+ $this->assertNull($phpTypeCast);
+ }
+
+ public function testBooleanWithValueOverflow()
+ {
+ $db = $this->getConnection(true);
+ $schema = $db->getSchema();
+ $tableName = '{{%boolean}}';
+
+ if ($db->getTableSchema($tableName)) {
+ $db->createCommand()->dropTable($tableName)->execute();
+ }
+
+ $db->createCommand()->createTable(
+ $tableName,
+ [
+ 'id' => $schema->createColumnSchemaBuilder(Schema::TYPE_PK),
+ 'bool_col' => $schema->createColumnSchemaBuilder(Schema::TYPE_BOOLEAN),
+ ]
+ )->execute();
+
+ // test type `boolean`
+ $column = $db->getTableSchema($tableName)->getColumn('bool_col');
+ $this->assertSame('boolean', $column->phpType);
+
+ // test value `2`
+ $db->createCommand()->insert($tableName, ['bool_col' => 2])->execute();
+ $boolValue = $db->createCommand("SELECT bool_col FROM $tableName WHERE id = 1")->queryScalar();
+ $this->assertEquals(1, $boolValue);
+
+ // test php typecast
+ $phpTypeCast = $column->phpTypecast($boolValue);
+ $this->assertTrue($phpTypeCast);
+ }
+
+ public function testBooleanWithValueString()
+ {
+ $db = $this->getConnection(true);
+ $schema = $db->getSchema();
+ $tableName = '{{%boolean}}';
+
+ if ($db->getTableSchema($tableName)) {
+ $db->createCommand()->dropTable($tableName)->execute();
+ }
+
+ $db->createCommand()->createTable(
+ $tableName,
+ [
+ 'id' => $schema->createColumnSchemaBuilder(Schema::TYPE_PK),
+ 'bool_col' => $schema->createColumnSchemaBuilder(Schema::TYPE_BOOLEAN),
+ ]
+ )->execute();
+
+ // test type `boolean`
+ $column = $db->getTableSchema($tableName)->getColumn('bool_col');
+ $this->assertSame('boolean', $column->phpType);
+
+ // test value `0`
+ $db->createCommand()->insert($tableName, ['bool_col' => '0'])->execute();
+ $boolValue = $db->createCommand("SELECT bool_col FROM $tableName WHERE id = 1")->queryScalar();
+ $this->assertEquals(0, $boolValue);
+
+ // test php typecast
+ $phpTypeCast = $column->phpTypecast($boolValue);
+ $this->assertFalse($phpTypeCast);
+
+ // test value `1`
+ $db->createCommand()->insert($tableName, ['bool_col' => '1'])->execute();
+ $boolValue = $db->createCommand("SELECT bool_col FROM $tableName WHERE id = 2")->queryScalar();
+ $this->assertEquals(1, $boolValue);
+
+ // test php typecast
+ $phpTypeCast = $column->phpTypecast($boolValue);
+ $this->assertTrue($phpTypeCast);
+ }
+}
diff --git a/tests/framework/db/sqlite/type/BooleanTest.php b/tests/framework/db/sqlite/type/BooleanTest.php
new file mode 100644
index 00000000000..c5bfd811c11
--- /dev/null
+++ b/tests/framework/db/sqlite/type/BooleanTest.php
@@ -0,0 +1,249 @@
+getConnection(true);
+ $schema = $db->getSchema();
+ $tableName = '{{%boolean}}';
+
+ if ($db->getTableSchema($tableName)) {
+ $db->createCommand()->dropTable($tableName)->execute();
+ }
+
+ $db->createCommand()->createTable(
+ $tableName,
+ [
+ 'id' => $schema->createColumnSchemaBuilder(Schema::TYPE_PK),
+ 'bool_col_tinyint' => $schema->createColumnSchemaBuilder(Schema::TYPE_BOOLEAN),
+ 'bool_col_bit' => $schema->createColumnSchemaBuilder('bit', 1),
+ ]
+ )->execute();
+
+ // test type `boolean`
+ $columnBoolColTinyint = $db->getTableSchema($tableName)->getColumn('bool_col_tinyint');
+ $this->assertSame('boolean', $columnBoolColTinyint->phpType);
+
+ $columnBoolColBit = $db->getTableSchema($tableName)->getColumn('bool_col_bit');
+ $this->assertSame('boolean', $columnBoolColBit->phpType);
+
+ // test value `false`
+ $db->createCommand()->insert($tableName, ['bool_col_tinyint' => false, 'bool_col_bit' => false])->execute();
+ $boolValues = $db->createCommand("SELECT * FROM $tableName WHERE id = 1")->queryOne();
+ $this->assertEquals(0, $boolValues['bool_col_tinyint']);
+ $this->assertEquals(0, $boolValues['bool_col_bit']);
+
+ // test php typecast
+ $phpTypeCastBoolColTinyint = $columnBoolColTinyint->phpTypecast($boolValues['bool_col_tinyint']);
+ $this->assertFalse($phpTypeCastBoolColTinyint);
+
+ $phpTypeCastBoolColBit = $columnBoolColBit->phpTypecast($boolValues['bool_col_bit']);
+ $this->assertFalse($phpTypeCastBoolColBit);
+
+ // test value `true`
+ $db->createCommand()->insert($tableName, ['bool_col_tinyint' => true, 'bool_col_bit' => true])->execute();
+ $boolValues = $db->createCommand("SELECT * FROM $tableName WHERE id = 2")->queryOne();
+ $this->assertEquals(1, $boolValues['bool_col_tinyint']);
+ $this->assertEquals(1, $boolValues['bool_col_bit']);
+
+ // test php typecast
+ $phpTypeCastBoolColTinyint = $columnBoolColTinyint->phpTypecast($boolValues['bool_col_tinyint']);
+ $this->assertTrue($phpTypeCastBoolColTinyint);
+
+ $phpTypeCastBoolColBit = $columnBoolColBit->phpTypecast($boolValues['bool_col_bit']);
+ $this->assertTrue($phpTypeCastBoolColBit);
+ }
+
+ public function testBooleanWithValueInteger()
+ {
+ $db = $this->getConnection(true);
+ $schema = $db->getSchema();
+ $tableName = '{{%boolean}}';
+
+ if ($db->getTableSchema($tableName)) {
+ $db->createCommand()->dropTable($tableName)->execute();
+ }
+
+ $db->createCommand()->createTable(
+ $tableName,
+ [
+ 'id' => $schema->createColumnSchemaBuilder(Schema::TYPE_PK),
+ 'bool_col_tinyint' => $schema->createColumnSchemaBuilder(Schema::TYPE_BOOLEAN),
+ 'bool_col_bit' => $schema->createColumnSchemaBuilder('bit', 1),
+ ]
+ )->execute();
+
+ // test type `boolean`
+ $columnBoolColTinyint = $db->getTableSchema($tableName)->getColumn('bool_col_tinyint');
+ $this->assertSame('boolean', $columnBoolColTinyint->phpType);
+
+ $columnBoolColBit = $db->getTableSchema($tableName)->getColumn('bool_col_bit');
+ $this->assertSame('boolean', $columnBoolColBit->phpType);
+
+ // test value `0`
+ $db->createCommand()->insert($tableName, ['bool_col_tinyint' => 0, 'bool_col_bit' => 0])->execute();
+ $boolValues = $db->createCommand("SELECT * FROM $tableName WHERE id = 1")->queryOne();
+ $this->assertEquals(0, $boolValues['bool_col_tinyint']);
+ $this->assertEquals(0, $boolValues['bool_col_bit']);
+
+ // test php typecast
+ $phpTypeCastBoolColTinyint = $columnBoolColTinyint->phpTypecast($boolValues['bool_col_tinyint']);
+ $this->assertFalse($phpTypeCastBoolColTinyint);
+
+ $phpTypeCastBoolColBit = $columnBoolColBit->phpTypecast($boolValues['bool_col_bit']);
+ $this->assertFalse($phpTypeCastBoolColBit);
+
+ // test value `1`
+ $db->createCommand()->insert($tableName, ['bool_col_tinyint' => 1, 'bool_col_bit' => 1])->execute();
+ $boolValues = $db->createCommand("SELECT * FROM $tableName WHERE id = 2")->queryOne();
+ $this->assertEquals(1, $boolValues['bool_col_tinyint']);
+ $this->assertEquals(1, $boolValues['bool_col_bit']);
+
+ // test php typecast
+ $phpTypeCastBoolColTinyint = $columnBoolColTinyint->phpTypecast($boolValues['bool_col_tinyint']);
+ $this->assertTrue($phpTypeCastBoolColTinyint);
+
+ $phpTypeCastBoolColBit = $columnBoolColBit->phpTypecast($boolValues['bool_col_bit']);
+ $this->assertTrue($phpTypeCastBoolColBit);
+ }
+
+ public function testBooleanWithValueNegative()
+ {
+ $db = $this->getConnection(true);
+ $schema = $db->getSchema();
+ $tableName = '{{%boolean}}';
+
+ if ($db->getTableSchema($tableName)) {
+ $db->createCommand()->dropTable($tableName)->execute();
+ }
+
+ $db->createCommand()->createTable(
+ $tableName,
+ [
+ 'id' => $schema->createColumnSchemaBuilder(Schema::TYPE_PK),
+ 'bool_col_tinyint' => $schema->createColumnSchemaBuilder(Schema::TYPE_BOOLEAN),
+ 'bool_col_bit' => $schema->createColumnSchemaBuilder('bit', 1),
+ ]
+ )->execute();
+
+ // test type `boolean`
+ $columnBoolColTinyint = $db->getTableSchema($tableName)->getColumn('bool_col_tinyint');
+ $this->assertSame('boolean', $columnBoolColTinyint->phpType);
+
+ $columnBoolColBit = $db->getTableSchema($tableName)->getColumn('bool_col_bit');
+ $this->assertSame('boolean', $columnBoolColBit->phpType);
+
+ // test value `-1`
+ $db->createCommand()->insert($tableName, ['bool_col_tinyint' => -1, 'bool_col_bit' => -1])->execute();
+ $boolValues = $db->createCommand("SELECT * FROM $tableName WHERE id = 1")->queryOne();
+
+ $this->assertEquals(1, $boolValues['bool_col_tinyint']);
+ $this->assertEquals(1, $boolValues['bool_col_bit']);
+
+ // test php typecast
+ $phpTypeCastBoolColTinyint = $columnBoolColTinyint->phpTypecast($boolValues['bool_col_tinyint']);
+ $this->assertTrue($phpTypeCastBoolColTinyint);
+
+ $phpTypeCastBoolColBit = $columnBoolColBit->phpTypecast($boolValues['bool_col_bit']);
+ $this->assertTrue($phpTypeCastBoolColBit);
+ }
+
+ public function testBooleanWithValueNull()
+ {
+ $db = $this->getConnection(true);
+ $schema = $db->getSchema();
+ $tableName = '{{%boolean}}';
+
+ if ($db->getTableSchema($tableName)) {
+ $db->createCommand()->dropTable($tableName)->execute();
+ }
+
+ $db->createCommand()->createTable(
+ $tableName,
+ [
+ 'id' => $schema->createColumnSchemaBuilder(Schema::TYPE_PK),
+ 'bool_col_tinyint' => $schema->createColumnSchemaBuilder(Schema::TYPE_BOOLEAN),
+ 'bool_col_bit' => $schema->createColumnSchemaBuilder('bit', 1),
+ ]
+ )->execute();
+
+ // test type `boolean`
+ $columnBoolColTinyint = $db->getTableSchema($tableName)->getColumn('bool_col_tinyint');
+ $this->assertSame('boolean', $columnBoolColTinyint->phpType);
+
+ $columnBoolColBit = $db->getTableSchema($tableName)->getColumn('bool_col_bit');
+ $this->assertSame('boolean', $columnBoolColBit->phpType);
+
+ // test value `null`
+ $db->createCommand()->insert($tableName, ['bool_col_tinyint' => null, 'bool_col_bit' => null])->execute();
+ $boolValues = $db->createCommand("SELECT * FROM $tableName WHERE id = 1")->queryOne();
+
+ $this->assertNull($boolValues['bool_col_tinyint']);
+ $this->assertNull($boolValues['bool_col_bit']);
+
+ // test php typecast
+ $phpTypeCastBoolColTinyint = $columnBoolColTinyint->phpTypecast($boolValues['bool_col_tinyint']);
+ $this->assertNull($phpTypeCastBoolColTinyint);
+
+ $phpTypeCastBoolColBit = $columnBoolColBit->phpTypecast($boolValues['bool_col_bit']);
+ $this->assertNull($phpTypeCastBoolColBit);
+ }
+
+ public function testBooleanWithValueOverflow()
+ {
+ $db = $this->getConnection(true);
+ $schema = $db->getSchema();
+ $tableName = '{{%boolean}}';
+
+ if ($db->getTableSchema($tableName)) {
+ $db->createCommand()->dropTable($tableName)->execute();
+ }
+
+ $db->createCommand()->createTable(
+ $tableName,
+ [
+ 'id' => $schema->createColumnSchemaBuilder(Schema::TYPE_PK),
+ 'bool_col_tinyint' => $schema->createColumnSchemaBuilder(Schema::TYPE_BOOLEAN),
+ 'bool_col_bit' => $schema->createColumnSchemaBuilder('bit', 1),
+ ]
+ )->execute();
+
+ // test type `boolean`
+ $columnBoolColTinyint = $db->getTableSchema($tableName)->getColumn('bool_col_tinyint');
+ $this->assertSame('boolean', $columnBoolColTinyint->phpType);
+
+ $columnBoolColBit = $db->getTableSchema($tableName)->getColumn('bool_col_bit');
+ $this->assertSame('boolean', $columnBoolColBit->phpType);
+
+ // test value `2`
+ $db->createCommand()->insert($tableName, ['bool_col_tinyint' => 2, 'bool_col_bit' => 2])->execute();
+ $boolValues = $db->createCommand("SELECT * FROM $tableName WHERE id = 1")->queryOne();
+
+ $this->assertEquals(1, $boolValues['bool_col_tinyint']);
+ $this->assertEquals(1, $boolValues['bool_col_bit']);
+
+ // test php typecast
+ $phpTypeCastBoolColTinyint = $columnBoolColTinyint->phpTypecast($boolValues['bool_col_tinyint']);
+ $this->assertTrue($phpTypeCastBoolColTinyint);
+
+ $phpTypeCastBoolColBit = $columnBoolColBit->phpTypecast($boolValues['bool_col_bit']);
+ $this->assertTrue($phpTypeCastBoolColBit);
+ }
+}
diff --git a/tests/framework/di/ContainerTest.php b/tests/framework/di/ContainerTest.php
index 4df6140a819..2555f43c2d6 100644
--- a/tests/framework/di/ContainerTest.php
+++ b/tests/framework/di/ContainerTest.php
@@ -40,7 +40,7 @@
*/
class ContainerTest extends TestCase
{
- protected function tearDown()
+ protected function tearDown(): void
{
parent::tearDown();
Yii::$container = new Container();
@@ -252,7 +252,7 @@ public function testOptionalDependencies()
{
$container = new Container();
// Test optional unresolvable dependency.
- $closure = function (QuxInterface $test = null) {
+ $closure = function (?QuxInterface $test = null) {
return $test;
};
$this->assertNull($container->invoke($closure));
@@ -443,11 +443,10 @@ public function testGetByClassIndirectly()
$this->assertSame(42, $qux->a);
}
- /**
- * @expectedException \yii\base\InvalidConfigException
- */
public function testThrowingNotFoundException()
{
+ $this->expectException(\yii\di\NotInstantiableException::class);
+
$container = new Container();
$container->get('non_existing');
}
@@ -480,9 +479,6 @@ public function testContainerSingletons()
$this->assertSame($foo, $sameFoo);
}
- /**
- * @requires PHP 5.6
- */
public function testVariadicConstructor()
{
if (\defined('HHVM_VERSION')) {
@@ -491,11 +487,10 @@ public function testVariadicConstructor()
$container = new Container();
$container->get('yiiunit\framework\di\stubs\Variadic');
+
+ $this->assertTrue(true);
}
- /**
- * @requires PHP 5.6
- */
public function testVariadicCallable()
{
if (\defined('HHVM_VERSION')) {
@@ -503,6 +498,8 @@ public function testVariadicCallable()
}
require __DIR__ . '/testContainerWithVariadicCallable.php';
+
+ $this->assertTrue(true);
}
/**
@@ -535,6 +532,8 @@ public function testDelayedInitializationOfSubArray()
Yii::$container->set('setLater', new Qux());
Yii::$container->get('test');
+
+ $this->assertTrue(true);
}
/**
@@ -610,11 +609,6 @@ public function testNotInstantiableException($class)
public function testNullTypeConstructorParameters()
{
- if (PHP_VERSION_ID < 70100) {
- $this->markTestSkipped('Can not be tested on PHP < 7.1');
- return;
- }
-
$zeta = (new Container())->get(Zeta::className());
$this->assertInstanceOf(Beta::className(), $zeta->beta);
$this->assertInstanceOf(Beta::className(), $zeta->betaNull);
diff --git a/tests/framework/di/InstanceTest.php b/tests/framework/di/InstanceTest.php
index fe61a6bdf95..78044062ed3 100644
--- a/tests/framework/di/InstanceTest.php
+++ b/tests/framework/di/InstanceTest.php
@@ -21,7 +21,7 @@
*/
class InstanceTest extends TestCase
{
- protected function tearDown()
+ protected function tearDown(): void
{
parent::tearDown();
Yii::$container = new Container();
@@ -59,7 +59,7 @@ public function testEnsure_NonExistingComponentException()
{
$container = new Container();
$this->expectException('yii\base\InvalidConfigException');
- $this->expectExceptionMessageRegExp('/^Failed to instantiate component or class/i');
+ $this->expectExceptionMessageMatches('/^Failed to instantiate component or class/i');
Instance::ensure('cache', 'yii\cache\Cache', $container);
}
@@ -70,7 +70,7 @@ public function testEnsure_NonExistingClassException()
{
$container = new Container();
$this->expectException('yii\base\InvalidConfigException');
- $this->expectExceptionMessageRegExp('/^Failed to instantiate component or class/i');
+ $this->expectExceptionMessageMatches('/^Failed to instantiate component or class/i');
Instance::ensure('yii\cache\DoesNotExist', 'yii\cache\Cache', $container);
}
@@ -171,7 +171,10 @@ public function testRestoreAfterVarExport()
$instance = Instance::of('something');
$export = var_export($instance, true);
- $this->assertRegExp('~yii\\\\di\\\\Instance::__set_state\(array\(\s+\'id\' => \'something\',\s+\'optional\' => false,\s+\)\)~', $export);
+ $this->assertMatchesRegularExpression(
+ '~yii\\\\di\\\\Instance::__set_state\(array\(\s+\'id\' => \'something\',\s+\'optional\' => false,\s+\)\)~',
+ $export
+ );
$this->assertEquals($instance, Instance::__set_state([
'id' => 'something',
diff --git a/tests/framework/di/stubs/Alpha.php b/tests/framework/di/stubs/Alpha.php
index 151d2f109bb..a5af3ffed78 100644
--- a/tests/framework/di/stubs/Alpha.php
+++ b/tests/framework/di/stubs/Alpha.php
@@ -12,10 +12,10 @@ class Alpha extends BaseObject
public $color = true;
public function __construct(
- Beta $beta = null,
- QuxInterface $omega = null,
- Unknown $unknown = null,
- AbstractColor $color = null
+ ?Beta $beta = null,
+ ?QuxInterface $omega = null,
+ ?Unknown $unknown = null,
+ ?AbstractColor $color = null
) {
$this->beta = $beta;
$this->omega = $omega;
diff --git a/tests/framework/filters/AccessRuleTest.php b/tests/framework/filters/AccessRuleTest.php
index 620766788d8..56bcd341574 100644
--- a/tests/framework/filters/AccessRuleTest.php
+++ b/tests/framework/filters/AccessRuleTest.php
@@ -23,7 +23,7 @@
*/
class AccessRuleTest extends \yiiunit\TestCase
{
- protected function setUp()
+ protected function setUp(): void
{
parent::setUp();
diff --git a/tests/framework/filters/ContentNegotiatorTest.php b/tests/framework/filters/ContentNegotiatorTest.php
index d52bb367c93..221716b80ec 100644
--- a/tests/framework/filters/ContentNegotiatorTest.php
+++ b/tests/framework/filters/ContentNegotiatorTest.php
@@ -20,7 +20,7 @@
*/
class ContentNegotiatorTest extends TestCase
{
- protected function setUp()
+ protected function setUp(): void
{
parent::setUp();
@@ -55,10 +55,6 @@ public function testWhenLanguageGETParamIsArray()
$this->assertEquals($targetLanguage, Yii::$app->language);
}
- /**
- * @expectedException yii\web\BadRequestHttpException
- * @expectedExceptionMessageRegExp |Invalid data received for GET parameter '.+'|
- */
public function testWhenFormatGETParamIsArray()
{
list($action, $filter) = $this->mockActionAndFilter();
@@ -74,6 +70,9 @@ public function testWhenFormatGETParamIsArray()
'application/xml' => Response::FORMAT_XML,
];
+ $this->expectException(\yii\web\BadRequestHttpException::class);
+ $this->expectExceptionMessage('Invalid data received for GET parameter');
+
$filter->beforeAction($action);
}
diff --git a/tests/framework/filters/HostControlTest.php b/tests/framework/filters/HostControlTest.php
index 39478fe00ed..4f5a32eb8bc 100644
--- a/tests/framework/filters/HostControlTest.php
+++ b/tests/framework/filters/HostControlTest.php
@@ -19,7 +19,7 @@
*/
class HostControlTest extends TestCase
{
- protected function setUp()
+ protected function setUp(): void
{
parent::setUp();
diff --git a/tests/framework/filters/HttpCacheTest.php b/tests/framework/filters/HttpCacheTest.php
index 8f0f0da6054..a5be733520a 100644
--- a/tests/framework/filters/HttpCacheTest.php
+++ b/tests/framework/filters/HttpCacheTest.php
@@ -15,7 +15,7 @@
*/
class HttpCacheTest extends \yiiunit\TestCase
{
- protected function setUp()
+ protected function setUp(): void
{
parent::setUp();
diff --git a/tests/framework/filters/PageCacheTest.php b/tests/framework/filters/PageCacheTest.php
index 6dc5ef5f9a6..b89259168cf 100644
--- a/tests/framework/filters/PageCacheTest.php
+++ b/tests/framework/filters/PageCacheTest.php
@@ -25,14 +25,14 @@
*/
class PageCacheTest extends TestCase
{
- protected function setUp()
+ protected function setUp(): void
{
parent::setUp();
$_SERVER['SCRIPT_FILENAME'] = '/index.php';
$_SERVER['SCRIPT_NAME'] = '/index.php';
}
- protected function tearDown()
+ protected function tearDown(): void
{
CacheTestCase::$time = null;
CacheTestCase::$microtime = null;
diff --git a/tests/framework/filters/RateLimiterTest.php b/tests/framework/filters/RateLimiterTest.php
index 1bbaad6e299..e98736614d1 100644
--- a/tests/framework/filters/RateLimiterTest.php
+++ b/tests/framework/filters/RateLimiterTest.php
@@ -22,7 +22,7 @@
*/
class RateLimiterTest extends TestCase
{
- protected function setUp()
+ protected function setUp(): void
{
parent::setUp();
@@ -30,7 +30,7 @@ protected function setUp()
$this->mockWebApplication();
}
- protected function tearDown()
+ protected function tearDown(): void
{
parent::tearDown();
Yii::setLogger(null);
@@ -84,7 +84,10 @@ public function testBeforeActionUserNotInstanceOfRateLimitInterface()
$result = $rateLimiter->beforeAction('test');
- $this->assertContains('Rate limit skipped: "user" does not implement RateLimitInterface.', Yii::getLogger()->messages);
+ $this->assertContains(
+ 'Rate limit skipped: "user" does not implement RateLimitInterface.',
+ Yii::getLogger()->messages
+ );
$this->assertTrue($result);
}
@@ -164,6 +167,9 @@ public function testUserWithClosureFunction()
// testing the evaluation of user closure, which in this case returns not the expect object and therefore
// the log message "does not implement RateLimitInterface" is expected.
$this->assertInstanceOf(User::className(), $rateLimiter->user);
- $this->assertContains('Rate limit skipped: "user" does not implement RateLimitInterface.', Yii::getLogger()->messages);
+ $this->assertContains(
+ 'Rate limit skipped: "user" does not implement RateLimitInterface.',
+ Yii::getLogger()->messages
+ );
}
}
diff --git a/tests/framework/filters/auth/AuthMethodTest.php b/tests/framework/filters/auth/AuthMethodTest.php
index beea7740c19..f045b26b6ad 100644
--- a/tests/framework/filters/auth/AuthMethodTest.php
+++ b/tests/framework/filters/auth/AuthMethodTest.php
@@ -16,7 +16,7 @@
class AuthMethodTest extends TestCase
{
- protected function setUp()
+ protected function setUp(): void
{
parent::setUp();
diff --git a/tests/framework/filters/auth/AuthTest.php b/tests/framework/filters/auth/AuthTest.php
index 102d215064e..1c4a7086655 100644
--- a/tests/framework/filters/auth/AuthTest.php
+++ b/tests/framework/filters/auth/AuthTest.php
@@ -25,7 +25,7 @@
*/
class AuthTest extends \yiiunit\TestCase
{
- protected function setUp()
+ protected function setUp(): void
{
parent::setUp();
diff --git a/tests/framework/filters/auth/CompositeAuthTest.php b/tests/framework/filters/auth/CompositeAuthTest.php
index 6a9245c5e2b..c378550883a 100644
--- a/tests/framework/filters/auth/CompositeAuthTest.php
+++ b/tests/framework/filters/auth/CompositeAuthTest.php
@@ -103,7 +103,7 @@ public function behaviors()
*/
class CompositeAuthTest extends \yiiunit\TestCase
{
- protected function setUp()
+ protected function setUp(): void
{
parent::setUp();
diff --git a/tests/framework/grid/ActionColumnTest.php b/tests/framework/grid/ActionColumnTest.php
index 7b15414d43c..c5d9bcfa9f0 100644
--- a/tests/framework/grid/ActionColumnTest.php
+++ b/tests/framework/grid/ActionColumnTest.php
@@ -70,34 +70,34 @@ public function testRenderDataCell()
//test default visible button
$columnContents = $column->renderDataCell(['id' => 1], 1, 0);
- $this->assertContains('update_button', $columnContents);
+ $this->assertStringContainsString('update_button', $columnContents);
//test visible button
$column->visibleButtons = [
'update' => true,
];
$columnContents = $column->renderDataCell(['id' => 1], 1, 0);
- $this->assertContains('update_button', $columnContents);
+ $this->assertStringContainsString('update_button', $columnContents);
//test visible button (condition is callback)
$column->visibleButtons = [
'update' => function ($model, $key, $index) {return $model['id'] == 1;},
];
$columnContents = $column->renderDataCell(['id' => 1], 1, 0);
- $this->assertContains('update_button', $columnContents);
+ $this->assertStringContainsString('update_button', $columnContents);
//test invisible button
$column->visibleButtons = [
'update' => false,
];
$columnContents = $column->renderDataCell(['id' => 1], 1, 0);
- $this->assertNotContains('update_button', $columnContents);
+ $this->assertStringNotContainsString('update_button', $columnContents);
//test invisible button (condition is callback)
$column->visibleButtons = [
'update' => function ($model, $key, $index) {return $model['id'] != 1;},
];
$columnContents = $column->renderDataCell(['id' => 1], 1, 0);
- $this->assertNotContains('update_button', $columnContents);
+ $this->assertStringNotContainsString('update_button', $columnContents);
}
}
diff --git a/tests/framework/grid/CheckboxColumnTest.php b/tests/framework/grid/CheckboxColumnTest.php
index 6a2442019c7..b652ff2dc60 100644
--- a/tests/framework/grid/CheckboxColumnTest.php
+++ b/tests/framework/grid/CheckboxColumnTest.php
@@ -21,7 +21,7 @@
*/
class CheckboxColumnTest extends TestCase
{
- protected function setUp()
+ protected function setUp(): void
{
parent::setUp();
IntlTestHelper::resetIntlStatus();
@@ -35,34 +35,34 @@ protected function setUp()
public function testInputName()
{
$column = new CheckboxColumn(['name' => 'selection', 'grid' => $this->getGrid()]);
- $this->assertContains('name="selection_all"', $column->renderHeaderCell());
+ $this->assertStringContainsString('name="selection_all"', $column->renderHeaderCell());
$column = new CheckboxColumn(['name' => 'selections[]', 'grid' => $this->getGrid()]);
- $this->assertContains('name="selections_all"', $column->renderHeaderCell());
+ $this->assertStringContainsString('name="selections_all"', $column->renderHeaderCell());
$column = new CheckboxColumn(['name' => 'MyForm[grid1]', 'grid' => $this->getGrid()]);
- $this->assertContains('name="MyForm[grid1_all]"', $column->renderHeaderCell());
+ $this->assertStringContainsString('name="MyForm[grid1_all]"', $column->renderHeaderCell());
$column = new CheckboxColumn(['name' => 'MyForm[grid1][]', 'grid' => $this->getGrid()]);
- $this->assertContains('name="MyForm[grid1_all]"', $column->renderHeaderCell());
+ $this->assertStringContainsString('name="MyForm[grid1_all]"', $column->renderHeaderCell());
$column = new CheckboxColumn(['name' => 'MyForm[grid1][key]', 'grid' => $this->getGrid()]);
- $this->assertContains('name="MyForm[grid1][key_all]"', $column->renderHeaderCell());
+ $this->assertStringContainsString('name="MyForm[grid1][key_all]"', $column->renderHeaderCell());
$column = new CheckboxColumn(['name' => 'MyForm[grid1][key][]', 'grid' => $this->getGrid()]);
- $this->assertContains('name="MyForm[grid1][key_all]"', $column->renderHeaderCell());
+ $this->assertStringContainsString('name="MyForm[grid1][key_all]"', $column->renderHeaderCell());
}
public function testInputValue()
{
$column = new CheckboxColumn(['grid' => $this->getGrid()]);
- $this->assertContains('value="1"', $column->renderDataCell([], 1, 0));
- $this->assertContains('value="42"', $column->renderDataCell([], 42, 0));
- $this->assertContains('value="[1,42]"', $column->renderDataCell([], [1, 42], 0));
+ $this->assertStringContainsString('value="1"', $column->renderDataCell([], 1, 0));
+ $this->assertStringContainsString('value="42"', $column->renderDataCell([], 42, 0));
+ $this->assertStringContainsString('value="[1,42]"', $column->renderDataCell([], [1, 42], 0));
$column = new CheckboxColumn(['checkboxOptions' => ['value' => 42], 'grid' => $this->getGrid()]);
- $this->assertNotContains('value="1"', $column->renderDataCell([], 1, 0));
- $this->assertContains('value="42"', $column->renderDataCell([], 1, 0));
+ $this->assertStringNotContainsString('value="1"', $column->renderDataCell([], 1, 0));
+ $this->assertStringContainsString('value="42"', $column->renderDataCell([], 1, 0));
$column = new CheckboxColumn([
'checkboxOptions' => function ($model, $key, $index, $column) {
@@ -70,9 +70,9 @@ public function testInputValue()
},
'grid' => $this->getGrid(),
]);
- $this->assertContains('value="1"', $column->renderDataCell([], 1, 0));
- $this->assertContains('value="42"', $column->renderDataCell([], 42, 0));
- $this->assertContains('value="[1,42]"', $column->renderDataCell([], [1, 42], 0));
+ $this->assertStringContainsString('value="1"', $column->renderDataCell([], 1, 0));
+ $this->assertStringContainsString('value="42"', $column->renderDataCell([], 42, 0));
+ $this->assertStringContainsString('value="[1,42]"', $column->renderDataCell([], [1, 42], 0));
$column = new CheckboxColumn([
'checkboxOptions' => function ($model, $key, $index, $column) {
@@ -80,8 +80,8 @@ public function testInputValue()
},
'grid' => $this->getGrid(),
]);
- $this->assertNotContains('value="1"', $column->renderDataCell([], 1, 0));
- $this->assertContains('value="42"', $column->renderDataCell([], 1, 0));
+ $this->assertStringNotContainsString('value="1"', $column->renderDataCell([], 1, 0));
+ $this->assertStringContainsString('value="42"', $column->renderDataCell([], 1, 0));
}
public function testContent()
@@ -92,7 +92,7 @@ public function testContent()
},
'grid' => $this->getGrid(),
]);
- $this->assertContains('