diff --git a/composer.json b/composer.json
index 7683ad3..7291b5f 100644
--- a/composer.json
+++ b/composer.json
@@ -10,7 +10,7 @@
"laravel/framework": "^9.0",
"october/all": "^3.3",
"rainlab/pages-plugin": "^1.5",
- "rainlab/builder-plugin": "^2.0",
+ "rainlab/builder-plugin": "^1.2.5",
"blakejones/magicforms-plugin": "^1.6",
"rainlab/translate-plugin": "^1.0"
},
diff --git a/plugins/rainlab/builder/LICENCE.md b/plugins/rainlab/builder/LICENCE.md
index b93dc79..d68943e 100644
--- a/plugins/rainlab/builder/LICENCE.md
+++ b/plugins/rainlab/builder/LICENCE.md
@@ -1,3 +1,19 @@
-# License
+# MIT license
-See End User License Agreement at https://octobercms.com/eula
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+of the Software, and to permit persons to whom the Software is furnished to do
+so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
\ No newline at end of file
diff --git a/plugins/rainlab/builder/Plugin.php b/plugins/rainlab/builder/Plugin.php
index c9d5f95..7c62bdc 100644
--- a/plugins/rainlab/builder/Plugin.php
+++ b/plugins/rainlab/builder/Plugin.php
@@ -1,135 +1,106 @@
"Builder",
- 'description' => "Provides visual tools for building October plugins.",
- 'author' => 'Alexey Bobkov, Samuel Georges',
- 'icon' => 'icon-wrench',
- 'homepage' => 'https://github.com/rainlab/builder-plugin'
+ 'name' => 'rainlab.builder::lang.plugin.name',
+ 'description' => 'rainlab.builder::lang.plugin.description',
+ 'author' => 'Alexey Bobkov, Samuel Georges',
+ 'icon' => 'icon-wrench',
+ 'homepage' => 'https://github.com/rainlab/builder-plugin'
];
}
- /**
- * registerComponents
- */
public function registerComponents()
{
return [
- \RainLab\Builder\Components\RecordList::class => 'builderList',
- \RainLab\Builder\Components\RecordDetails::class => 'builderDetails'
+ 'RainLab\Builder\Components\RecordList' => 'builderList',
+ 'RainLab\Builder\Components\RecordDetails' => 'builderDetails'
];
}
- /**
- * registerPermissions
- */
public function registerPermissions()
{
return [
'rainlab.builder.manage_plugins' => [
- 'tab' => "Builder",
- 'label' => 'rainlab.builder::lang.plugin.manage_plugins'
- ]
+ 'tab' => 'rainlab.builder::lang.plugin.name',
+ 'label' => 'rainlab.builder::lang.plugin.manage_plugins']
];
}
- /**
- * registerNavigation
- */
public function registerNavigation()
{
return [
'builder' => [
- 'label' => "Builder",
- 'url' => Backend::url('rainlab/builder'),
- 'icon' => 'icon-wrench',
- 'iconSvg' => 'plugins/rainlab/builder/assets/images/builder-icon.svg',
+ 'label' => 'rainlab.builder::lang.plugin.name',
+ 'url' => Backend::url('rainlab/builder'),
+ 'icon' => 'icon-wrench',
+ 'iconSvg' => 'plugins/rainlab/builder/assets/images/builder-icon.svg',
'permissions' => ['rainlab.builder.manage_plugins'],
- 'order' => 400,
+ 'order' => 400,
'useDropdown' => false,
'sideMenu' => [
'database' => [
- 'label' => 'rainlab.builder::lang.database.menu_label',
- 'icon' => 'icon-hdd-o',
- 'url' => 'javascript:;',
- 'attributes' => ['data-menu-item' => 'database'],
+ 'label' => 'rainlab.builder::lang.database.menu_label',
+ 'icon' => 'icon-hdd-o',
+ 'url' => 'javascript:;',
+ 'attributes' => ['data-menu-item'=>'database'],
'permissions' => ['rainlab.builder.manage_plugins']
],
'models' => [
- 'label' => 'rainlab.builder::lang.model.menu_label',
- 'icon' => 'icon-random',
- 'url' => 'javascript:;',
- 'attributes' => ['data-menu-item' => 'models'],
+ 'label' => 'rainlab.builder::lang.model.menu_label',
+ 'icon' => 'icon-random',
+ 'url' => 'javascript:;',
+ 'attributes' => ['data-menu-item'=>'models'],
'permissions' => ['rainlab.builder.manage_plugins']
],
'permissions' => [
- 'label' => 'rainlab.builder::lang.permission.menu_label',
- 'icon' => 'icon-unlock-alt',
- 'url' => 'javascript:;',
- 'attributes' => ['data-no-side-panel' => 'true', 'data-builder-command' => 'permission:cmdOpenPermissions', 'data-menu-item' => 'permissions'],
+ 'label' => 'rainlab.builder::lang.permission.menu_label',
+ 'icon' => 'icon-unlock-alt',
+ 'url' => '#',
+ 'attributes' => ['data-no-side-panel'=>'true', 'data-builder-command'=>'permission:cmdOpenPermissions', 'data-menu-item'=>'permissions'],
'permissions' => ['rainlab.builder.manage_plugins']
],
'menus' => [
- 'label' => 'rainlab.builder::lang.menu.menu_label',
- 'icon' => 'icon-location-arrow',
- 'url' => 'javascript:;',
- 'attributes' => ['data-no-side-panel' => 'true', 'data-builder-command' => 'menus:cmdOpenMenus', 'data-menu-item' => 'menus'],
+ 'label' => 'rainlab.builder::lang.menu.menu_label',
+ 'icon' => 'icon-location-arrow',
+ 'url' => 'javascript:;',
+ 'attributes' => ['data-no-side-panel'=>'true', 'data-builder-command'=>'menus:cmdOpenMenus', 'data-menu-item'=>'menus'],
'permissions' => ['rainlab.builder.manage_plugins']
],
'controllers' => [
- 'label' => 'rainlab.builder::lang.controller.menu_label',
- 'icon' => 'icon-asterisk',
- 'url' => 'javascript:;',
- 'attributes' => ['data-menu-item' => 'controllers'],
+ 'label' => 'rainlab.builder::lang.controller.menu_label',
+ 'icon' => 'icon-asterisk',
+ 'url' => 'javascript:;',
+ 'attributes' => ['data-menu-item'=>'controllers'],
'permissions' => ['rainlab.builder.manage_plugins']
],
'versions' => [
- 'label' => 'rainlab.builder::lang.version.menu_label',
- 'icon' => 'icon-code-fork',
- 'url' => 'javascript:;',
- 'attributes' => ['data-menu-item' => 'version'],
+ 'label' => 'rainlab.builder::lang.version.menu_label',
+ 'icon' => 'icon-code-fork',
+ 'url' => 'javascript:;',
+ 'attributes' => ['data-menu-item'=>'version'],
'permissions' => ['rainlab.builder.manage_plugins']
],
'localization' => [
- 'label' => 'rainlab.builder::lang.localization.menu_label',
- 'icon' => 'icon-globe',
- 'url' => 'javascript:;',
- 'attributes' => ['data-menu-item' => 'localization'],
- 'permissions' => ['rainlab.builder.manage_plugins']
- ],
- 'code' => [
- 'label' => 'Code',
- 'icon' => 'icon-file-code-o',
- 'url' => 'javascript:;',
- 'attributes' => ['data-menu-item' => 'code'],
- 'permissions' => ['rainlab.builder.manage_plugins']
- ],
- 'imports' => [
- 'label' => 'Import',
- 'icon' => 'icon-arrow-circle-down',
- 'url' => 'javascript:;',
- 'attributes' => ['data-no-side-panel' => 'true', 'data-builder-command' => 'imports:cmdOpenImports', 'data-menu-item' => 'imports'],
+ 'label' => 'rainlab.builder::lang.localization.menu_label',
+ 'icon' => 'icon-globe',
+ 'url' => 'javascript:;',
+ 'attributes' => ['data-menu-item'=>'localization'],
'permissions' => ['rainlab.builder.manage_plugins']
]
]
@@ -138,19 +109,16 @@ class Plugin extends PluginBase
];
}
- /**
- * registerSettings
- */
public function registerSettings()
{
return [
'config' => [
- 'label' => 'Builder',
- 'icon' => 'icon-wrench',
+ 'label' => 'Builder',
+ 'icon' => 'icon-wrench',
'description' => 'Set your author name and namespace for plugin creation.',
- 'class' => 'RainLab\Builder\Models\Settings',
+ 'class' => 'RainLab\Builder\Models\Settings',
'permissions' => ['rainlab.builder.manage_plugins'],
- 'order' => 600
+ 'order' => 600
]
];
}
@@ -168,10 +136,6 @@ class Plugin extends PluginBase
new StandardBehaviorsRegistry($behaviorLibrary);
});
- Event::listen('pages.builder.registerTailorBlueprints', function ($blueprintLibrary) {
- new StandardBlueprintsRegistry($blueprintLibrary);
- });
-
// Register reserved keyword validation
Event::listen('translator.beforeResolve', function ($key, $replaces, $locale) {
if ($key === 'validation.reserved') {
@@ -179,17 +143,40 @@ class Plugin extends PluginBase
}
});
- $this->callAfterResolving('validator', function ($validator) {
- $validator->extend('reserved', Reserved::class);
- $validator->replacer('reserved', function ($message, $attribute, $rule, $parameters) {
+ // Compatibility with v1 legacy
+ if (!class_exists('System')) {
+ Validator::extend('reserved', Reserved::class);
+ Validator::replacer('reserved', function ($message, $attribute, $rule, $parameters) {
// Fixes lowercase attribute names in the new plugin modal form
return ucfirst($message);
});
- });
+ }
+ else {
+ $this->callAfterResolving('validator', function ($validator) {
+ $validator->extend('reserved', Reserved::class);
+ $validator->replacer('reserved', function ($message, $attribute, $rule, $parameters) {
+ // Fixes lowercase attribute names in the new plugin modal form
+ return ucfirst($message);
+ });
+ });
+ }
// Register doctrine types
if (!DoctrineType::hasType('timestamp')) {
DoctrineType::addType('timestamp', \RainLab\Builder\Classes\Doctrine\TimestampType::class);
}
}
+
+ /**
+ * register
+ */
+ public function register()
+ {
+ /*
+ * Register asset bundles
+ */
+ CombineAssets::registerCallback(function ($combiner) {
+ $combiner->registerBundle('$/rainlab/builder/assets/js/build.js');
+ });
+ }
}
diff --git a/plugins/rainlab/builder/README.md b/plugins/rainlab/builder/README.md
index 7596674..b84b387 100644
--- a/plugins/rainlab/builder/README.md
+++ b/plugins/rainlab/builder/README.md
@@ -1,76 +1,48 @@
Builder is a visual development tool. It shortens plugin development time by automating common development tasks and makes programming fun again. With Builder you can create a fully functional plugin scaffold in a matter of minutes.
-Builder makes the learning curve less steep by providing a visual interface that naturally incorporates October's design patterns and documentation. Here’s an example, instead of looking into the documentation for a list of supported form controls and their features, you can just open the Form Builder, find a suitable control in the Control Palette, add the control to the form and explore its properties with the visual inspector.
+Builder makes the learning curve less steep by providing a visual interface that naturally incorporates October’s design patterns and documentation. Here’s an example, instead of looking into the documentation for a list of supported form controls and their features, you can just open the Form Builder, find a suitable control in the Control Palette, add the control to the form and explore its properties with the visual inspector.
Builder implements a Rapid Application Development process that automates the boring activities without sacrificing complete control. With this tool you can spend more time implementing the plugin's business logic in your favorite code editor rather than dealing with the more mundane tasks, like building forms or managing plugin versions.
Plugins created with the help of Builder are no different to plugins that you would usually create by hand. That means that you can continue to use your usual “hands on” workflow for updating your servers, managing the code versions and sharing work with your teammates.
-**What's New!** Builder has been revamped to support October CMS v3, including dark mode, updated specifications, a Tailor import tool, and a new inline code editor.
-
-## Requirements
-
-- October CMS 3.3 or above
-
-### Installation
-
-Run the following to install this plugin:
-
-```bash
-php artisan plugin:install RainLab.Builder
-```
-
-To uninstall this plugin:
-
-```bash
-php artisan plugin:remove RainLab.Builder
-```
-
-If you are using October CMS v1 or v2, install v1.2 with the following commands:
-
-```bash
-composer require rainlab/builder-plugin "^1.2"
-```
-
-## Video Tutorial
+## Video tutorial
We also recorded a video tutorial showing how to use the plugin to build a simple library plugin: [watch the video](https://vimeo.com/154415433).
-## What You Can Do with Builder
+## What you can do with Builder
This tool includes multiple features that cover almost all aspects of creating a plugin.
-- Initializing a new plugin - this creates the plugin directory along with any necessary files.
-- Creating and editing plugin database tables. All schema changes are saved as regular migration files, so you can easily update the plugin on other servers using your regular workflow.
-- Creating model classes.
-- Creating backend forms with the visual Form Builder.
-- Creating backend lists.
-- Managing a list of user permissions provided by the plugin.
-- Creating plugin backend navigation - in the form of main menu items and sidebar items.
-- Creating backend controllers and configuring their behaviors with a visual tool.
-- Managing plugin versions and updates.
-- Managing plugin localization files.
-- A set of universal components - used for displaying data from the plugin on the front-end in form of lists and single record details.
-- Managing raw code files directly in the backend (**New in v2**).
-- Converting [Tailor blueprints](https://docs.octobercms.com/3.x/cms/tailor/blueprints.html) to plugin files (**New in v2**).
+* Initializing a new plugin - this creates the plugin directory along with any necessary files.
+* Creating and editing plugin database tables. All schema changes are saved as regular migration files, so you can easily update the plugin on other servers using your regular workflow.
+* Creating model classes.
+* Creating back-end forms with the visual Form Builder.
+* Creating back-end lists.
+* Managing a list of user permissions provided by the plugin.
+* Creating plugin back-end navigation - in the form of main menu items and sidebar items.
+* Creating back-end controllers and configuring their behaviors with a visual tool.
+* Managing plugin versions and updates.
+* Managing plugin localization files.
+* A set of universal components - used for displaying data from the plugin on the front-end in form of lists and single record details.
-Put simply, you can create a multilingual plugin, that installs database tables, has backend lists and forms protected with user permissions, and adds CMS pages for displaying data managed with the plugin. After learning how Builder works, this process takes just a few minutes.
+Put simply, you can create a multilingual plugin, that installs database tables, has back-end lists and forms protected with user permissions, and adds CMS pages for displaying data managed with the plugin. After learning how Builder works, this process takes just a few minutes.
Builder is a productivity tool, it doesn't completely replace coding by hand and doesn't include a code editor for editing PHP files (the only exception is the version management interface). Builder never overwrites or deletes plugin PHP files, so you can rest assured knowing that the code you write never gets touched by Builder. However, Builder can create new PHP files, like models and controllers.
-Most of the visual editors in Builder work with YAML configuration files, which are a native concept in October CMS. For example, after creating a model class in Builder, you can choose to add a form to the model. This operation creates a YAML file in the model's directory.
+Most of the visual editors in Builder work with YAML configuration files, which are a native concept in OctoberCMS. For example, after creating a model class in Builder, you can choose to add a form to the model. This operation creates a YAML file in the model's directory.
There are currently some limitations when using Builder. Some of them are missing features which will be added later. Others are ideas intentionally omitted to keep the things simple. As mentioned above, Builder doesn't want to replace coding, while at the same time, it doesn't go too far with visual programming either. The limitations are explained and described in the corresponding sections of the plugin documentation. Those limitations don't mean you can't create any plugin you want - the good old approach to writing the code manually is always applicable for plugins developed with Builder. Builder’s aim is to be a modest, yet powerful tool that is used to accelerate your development cycle.
-## Getting Started
+## Getting started
-Before you create your first plugin with Builder you should configure it. Open the Settings page in October CMS backend and find Builder in the side menu. Enter your author name and namespace. The author name and namespace are required fields and should not change if you wish to publish your plugins on October CMS Marketplace.
+Before you create your first plugin with Builder you should configure it. Open the Settings page in OctoberCMS back-end and find Builder in the side menu. Enter your author name and namespace. The author name and namespace are required fields and should not change if you wish to publish your plugins on OctoberCMS Marketplace.
If you already have a Marketplace account, use your existing author name and namespace.
-## Initializing a New Plugin
+## Initializing a new plugin
-On the Builder page in October CMS backend click the small arrow icon in the sidebar to expose the plugin list. After clicking the "Create plugin" button, enter the plugin name and namespace. The default author name and namespace can be pre-filled from the plugin settings. Select the plugin icon, enter the description text and plugin homepage URL (optional).
+On the Builder page in OctoberCMS back-end click the small arrow icon in the sidebar to expose the plugin list. After clicking the "Create plugin" button, enter the plugin name and namespace. The default author name and namespace can be pre-filled from the plugin settings. Select the plugin icon, enter the description text and plugin homepage URL (optional).
Please note that you cannot change the namespaces after you create the plugin.
@@ -89,13 +61,13 @@ authornamespace
plugin.yaml
```
-The file **plugin.yaml** contains the basic plugin information - name, description, permissions and backend navigation. This file is managed by the Builder user interface.
+The file **plugin.yaml** contains the basic plugin information - name, description, permissions and back-end navigation. This file is managed by the Builder user interface.
The initial contents of the **lang.php** localization file is the plugin name and description. The localization file is created in the default locale of your October installation.
When a new plugin is created, it's automatically selected as the current plugin that Builder works with. You can select another plugin in the plugin list if you need.
-## Managing Plugin Database Tables
+## Managing plugin database tables
Tables are managed on the Database tab of Builder. You can create tables, update their structure and delete tables with the visual interface.
@@ -103,13 +75,13 @@ Click Add button to open the Create Table tab. Builder automatically generates p
Every time when you save changes in a table, Builder shows a popup window with the automatically generated migration PHP code. You can't edit the code in the popup, but you can inspect it or copy to the clipboard. After reviewing the migration, click Save & Apply button. Builder executes the migration immediately and saves the migration file to the plugin's **updates** directory. Afterwards you can find all plugin migrations on the Versions tab of Builder.
-> **Important**: Although Builder generates migration files automatically, it can't prevent data loss in some cases when you significantly change the table structure. In some cases it's possible - for example, when you alter length of a string column. Always check the migration PHP code generated by Builder before applying the migration and consider possible consequences of running the migration in a production database.
+> **Note:** Although Builder generates migration files automatically, it can't prevent the data loss in some cases when you significantly change the table structure. In some cases it's possible - for example, when you alter length of a string column. Always check the migration PHP code generated by Builder before applying the migration and consider possible consequences of running the migration in a production database.
Currently Builder doesn't allow to manage table indexes with the visual user interface. Unique column management is not supported yet as well. Please use the Version Management feature to manually create migration files.
Please note that the `enum` data type is not currently supported by the Builder due to limitations in the underlying Doctrine classes.
-## Managing Models
+## Managing models
You can edit models on the Models tab of Builder. Click the Add button, enter the model class name and select a database table from the drop-down list.
@@ -117,15 +89,15 @@ The model class name should not contain the namespace. Some examples: Post, Prod
Please note that you cannot delete model files with builder because it would contradict the idea of not deleting or overwriting PHP files with the visual tool. If you need to delete a model, remove its files manually.
-## Managing Backend Forms
+## Managing back-end forms
-In October CMS forms belong to models. For every model you can create as many backend forms as you need, but in most cases there is a single form per model.
+In OctoberCMS forms belong to models. For every model you can create as many back-end forms as you need, but in most cases there is a single form per model.
-> **Note**: When you create a form, it's not displayed in October CMS backend until you create a backend controller which uses the form. Read more about controllers below.
+> **Note:** when you create a form, it's not displayed in OctoberCMS back-end until you create a back-end controller which uses the form. Read about controllers below.
On the Models tab in Builder find a model you want to create a form for. Expand the model if needed, hover the **Forms** section and click the plus sign.
-Forms in October CMS are defined with YAML files. The default form file name is **fields.yaml**. In the Form Builder, click a placeholder and select a control from the popup list. After that you can click the control and edit it parameters in Inspector.
+Forms in OctoberCMS are defined with YAML files. The default form file name is **fields.yaml**. In the Form Builder, click a placeholder and select a control from the popup list. After that you can click the control and edit it parameters in Inspector.
Almost all form controls have these common properties:
@@ -134,63 +106,66 @@ Almost all form controls have these common properties:
* Comment - the comment text - fixed text or localization string key.
* Span - position of the control on the form - left, right, full or automatic placement.
-Most of the properties have descriptive names or have a description in Inspector. If you need more information about control properties please refer to the [Documentation](https://docs.octobercms.com/3.x/element/form-fields.html).
+Most of the properties have descriptive names or have a description in Inspector. If you need more information about control properties please refer to the [Documentation](http://octobercms.com/docs/backend/forms).
-You can drag controls in the Form Builder to rearrange them or to move them to/from form tabs. A form tab should have at least one control, otherwise it will be ignored when Form Builder saves the YAML file.
+You can drag controls in the Form Builder to rearrange them or to move them to/from form tabs.
-Some form controls, for example the file upload control, require a relation to be created in the model class manually. The relation name should be entered in the Field name property. Please read the [Forms Documentation](https://docs.octobercms.com/3.x/element/form-fields.html) for details about specific form controls.
+> **Note:** a form tab should have at least one control, otherwise it will be ignored when Form Builder saves the YAML file.
-## Managing Backend Lists
-Similarly to forms, backend lists in October CMS belong to models.
+> **Note:** some form controls, for example the file upload control, require a relation to be created in the model class manually. The relation name should be entered in the Field name property. Please read the [Forms Documentation](http://octobercms.com/docs/backend/forms) for details about specific form controls.
-> **Note**: When you create a list, it's not displayed in October CMS backend until you create a backend controller which uses the list. Read about controllers below.
+## Managing back-end lists
+
+Similarly to forms, back-end lists in OctoberCMS belong to models.
+
+> **Note:** when you create a list, it's not displayed in OctoberCMS back-end until you create a back-end controller which uses the list. Read about controllers below.
On the Models tab in Builder find a model you want to create a list for. Expand the model if needed, hover the **Lists** section and click the plus sign.
-Lists in October CMS are defined with YAML files. The default list file name is **columns.yaml**. The grid in the list editor contains list column definitions. Column property names are self descriptive, although some of them require some explanations. Refer to the [Lists documentation](https://docs.octobercms.com/3.x/element/list-columns.html) for details about each property.
+Lists in OctoberCMS are defined with YAML files. The default list file name is **columns.yaml**. The grid in the list editor contains list column definitions. Column property names are self descriptive, although some of them require some explanations. Refer to the [Lists documentation](http://octobercms.com/docs/backend/lists#column-options) for details about each property.
For the Label property you can either enter a static string or create a new localization string.
The Field property column has an autocompletion feature attached. It allows you to select columns from the database table that is bound to the model. At the moment it doesn't show relation properties, but you can still type them in manually.
-## Managing Plugin Permissions
+## Managing plugin permissions
-[Plugin permissions](https://docs.octobercms.com/3.x/extend/backend/users.html) define the features and backend plugin pages a user can access. You can manage permissions on the Permissions tab in Builder. For each permission you should specify a unique permission code, permission tab title and permission label. The tab title and label are displayed in the user management interface on the System page in October backend.
+[Plugin permissions](http://octobercms.com/docs/backend/users) define what features and back-end plugin pages a user can access. You can manage permissions on the Permissions tab in Builder. For each permission you should specify a unique permission code, permission tab title and permission label. The tab title and label are displayed in the user management interface on the System page in October back-end.
For the tab title and label you can either enter a static string or create a new localization string.
Later, when you create controllers and menu items, you can select what permissions users should have in order to access or see those objects.
-## Managing Backend Menus
+## Managing back-end menus
-The [plugin navigation](https://docs.octobercms.com/3.x/extend/backend/navigation.html) is managed on the Backend Menus tab of the Builder. The user interface allows to create top level menu items and sidebar items.
+The [plugin navigation](http://octobercms.com/docs/plugin/registration#navigation-menus) is managed on the Backend Menus tab of the Builder. The user interface allows to create top level menu items and sidebar items.
To create a menu item click the placeholder rectangle and then click the new item to open Inspector. In the inspector you can enter the item label, select icon and assign user permissions. The **code** property is required for referring menu items from the controllers code (for marking menu items active).
-> **Note**: When you create menu items for backend pages which don't exist yet in the plugin, it makes sense to leave the **URL** property empty until you create the plugin controllers. This property supports autocompletion, so you can just select your controller URLs from the drop-down list.
+> **Note:** when you create menu items for back-end pages which don't exist yet in the plugin, it makes sense to leave the **URL** property empty until you create the plugin controllers. This property supports autocompletion, so you can just select your controller URLs from the drop-down list.
-## Managing Backend Controllers, Forms and Lists
+## Managing back-end controllers, forms and lists
-Back-end pages in October CMS are provided with backend controllers. Usually backend pages contain lists and forms for managing plugin records, although you can create any custom controller.
+Back-end pages in OctoberCMS are provided with back-end controllers. Usually back-end pages contain lists and forms for managing plugin records, although you can create any custom controller.
-Please refer to the [backend forms](https://docs.octobercms.com/3.x/extend/forms/form-controller.html) and [lists](https://docs.octobercms.com/3.x/extend/lists/list-controller.html) documentation pages for more information about controller behaviors. Currently only List and Form behaviors can be configured with the Builder. If your controller contains other behaviors they won't be removed by the Builder, you just won't be able to edit them with the visual interface.
+Please refer to the [back-end forms](http://octobercms.com/docs/backend/forms), [lists](http://octobercms.com/docs/backend/lists) and [reorder controller](http://octobercms.com/docs/backend/reorder) documentation pages for more information about controller behaviors. Currently only List, Form and Reorder Controller behaviors can be configured with the Builder. If your controller contains other behaviors they won't be removed by the Builder, you just won't be able to edit them with the visual interface.
Builder also allows you to create empty controller classes which don't implement any behaviors and customize them manually.
-> **Note**: Some behaviors require specific model features to be implemented. For example, the Reorder Controller behavior requires the model to implement Sortable or NestedTree traits. Always refer to the specific behavior documentation for the implementation details.
+> **Note:** Some behaviors require specific model features to be implemented. For example, the Reorder Controller behavior requires the model to implement Sortable or NestedTree traits. Always refer to the specific behavior documentation for the implementation details.
To create a controller, click the Add button list on the Controllers tab. Enter the controller class name, for example Posts.
-If the controller is going to provide backend lists or forms, select a base model in the drop-down list and select behaviors you want to add. You can also select a top and sidebar menu items that should be active on the controller pages. If needed, choose permissions that users must have to access the controller pages.
+If the controller is going to provide back-end lists or forms, select a base model in the drop-down list and select behaviors you want to add. You can also select a top and sidebar menu items that should be active on the controller pages. If needed, choose permissions that users must have to access the controller pages.
> Please note that the settings you enter in the Create Controller popup cannot be changed with Builder. However you can update them manually by editing controller classes.
After creating a controller you can configure its behaviors. Click the controller in list and then click a behavior you want to configure. When Builder creates a controller it tries to apply default configuration to the behaviors, however you might want to change it. Inspector lists displays all supported behavior properties. URL properties (like the list records URLs) are autocomplete fields and populated with URLs of the existing plugin controllers.
-## Managing Plugin Versions
+## Managing plugin versions
-Please read the [Version History](https://docs.octobercms.com/3.x/extend/system/plugins.html#version-history) documentation page to understand how versioning works in October CMS.
+Please read the [Version History](http://octobercms.com/docs/plugin/updates) documentation page to understand how versioning works in OctoberCMS.
Basically there are 3 types of version updates:
@@ -206,19 +181,19 @@ For every version you should specify the new version number and description. Bui
When a version file is saved, Builder doesn't apply it immediately. You should click the "Apply version" button in the toolbar in order to apply the version and execute the update code (if applicable). You can also rollback already applied version updates, change their code and apply again. This allows you to edit database schema updates generated by Builder if you don't like the default code.
-> **Note**: Your migration files should provide correct rollback code in the `down` method in order to use the rollback feature.
+> Note that your migration files should provide correct rollback code in the `down` method in order to use the rollback feature.
-When you rollback a version, it automatically rolls back all newer versions. When you apply a version, it automatically applies all pending older versions. Please remember that when a user logs into the backend, October automatically applies all pending updates. Never edit versions on a production server or on a server with multiple backend users - it could cause unpredictable consequences.
+When you rollback a version, it automatically rolls back all newer versions. When you apply a version, it automatically applies all pending older versions. Please remember that when a user logs into the back-end, October automatically applies all pending updates. Never edit versions on a production server or on a server with multiple back-end users - it could cause unpredictable consequences.
Migrations that contain multiple scripts are not supported. They can't be created or edited with Builder.
-## Managing Localization
+## Managing localization
-Localization files are managed on the Localization tab of the Builder. When a new plugin is initialized, a single language file is created. This file is created in the default system locale specified in October CMS configuration scripts.
+Localization files are managed on the Localization tab of the Builder. When a new plugin is initialized, a single language file is created. This file is created in the default system locale specified in OctoberCMS configuration scripts.
-You can create as many language files as you want. Builder UI always displays strings in the October CMS locale, so you might want to update your configuration files to see your plugin in another language.
+You can create as many language files as you want. Builder UI always displays strings in the OctoberCMS locale, so you might want to update your configuration files to see your plugin in another language.
-Please note that although [localization files in October CMS](https://docs.octobercms.com/3.x/extend/system/localization.html) are PHP scripts, they are translated to YAML to simplify the editing in the Builder user interface. When language files are saved, they are translated back to PHP again.
+Please note that although [localization files in OctoberCMS](http://octobercms.com/docs/plugin/localization) are PHP scripts, they are translated to YAML to simplify the editing in the Builder user interface. When language files are saved, they are translated back to PHP again.
Builder tries to keep the user interface synchronized with your default language file. This means that when you save the language file, Builder automatically updates all localized strings in all editors. In some cases you might need to close and open Inspector in order to re-initialize the autocomplete fields.
@@ -232,45 +207,17 @@ plugin:
If you create a new localization string from the Inspector or other editor while you have the default language file tab open in the Builder, it will try to update the tab contents or merge the updated file contents from the server. It's a good idea to keep the default localization file always saved in the Builder to avoid possible content conflicts when you edit localization from another place.
-> **Tip**: In YAML a single quote is escaped with two single quotes (http://yaml.org/spec/current.html#id2534365).
+> Protip: In YAML a single quote is escaped with two single quotes (http://yaml.org/spec/current.html#id2534365).
-## Editing Code Files (New in v2)
-
-Raw code and other files can be managed directly in the Code tab of the Builder. You can navigate to any file within the context of the selected plugin.
-
-Use this to make code adjustments without the need for a code editor, which includes creating, moving, renaming and deleting files.
-
-## Importing Tailor Blueprints (New in v2)
-
-The Import tab of the Builder can generate scaffold files using [Tailor blueprints](https://docs.octobercms.com/3.x/cms/tailor/blueprints.html) as a source. In combination, Tailor and Builder work together to create a super-scaffolding tool since it can generate multiple files in one process. First, design your fields and preview them using Tailor, and then when you are ready, import them in to Builder to start working directly with the files.
-
-It important to note that importing blueprints is a one-way function, and in some cases it is better to leave content within Tailor for the benefits that come with its dynamic models, especially for content. This design decision is up to you.
-
-When visiting the Import tab, use the **Add Blueprint** button to select the Tailor blueprints you wish to import. You can select multiple blueprints and it is recommended to include related blueprints so the relationships between blueprints are preserved.
-
-Once added, each blueprint can be customized, which includes the Controller Class, Model Class, Table Name, Permission Code and Menu Code names. When these fields are modified, they will adjust the filenames of the generated files.
-
-Clicking the Import button will begin the conversion process. Some import options are shown to control how the import should proceed.
-
-- **Migrate Database** performs a database migration after the import is finished. This optional and you can migrate the database later.
-
-- **Disable Blueprints** will rename the blueprint files to use a backup extension (.bak) to disable them.
-
-- **Delete Blueprint Data** will delete any existing data and tables for the selected blueprints found within Tailor.
-
-Before clicking **Import**, be sure to double check the selected blueprints. The import process creates multiple scaffold files for the selected plugin. This process can be difficult to undo, so it is a good idea to practice on a test plugin first, without migrating the database or disabling the blueprints.
-
-When everything is done, you should see the controller, model and migration files generated for your selected plugin.
-
-## Displaying Plugin Records on CMS Pages
+## Displaying plugin records on the front-end pages
Builder provides universal CMS components that you can use for displaying records from your plugins on the front-end website pages. The components provide only basic functionality, for example they don't support a record search feature.
-Please read the [CMS documentation](https://docs.octobercms.com/3.x/cms/themes/components.html) to learn more about the CMS components concept.
+Please read the [CMS documentation](http://octobercms.com/docs/cms/components) to learn more about the CMS components concept.
-### Record List Component
+### Record list component
-The Record list component outputs a list of records provided by a plugin's model. The component supports the following optional features: pagination, links to the record details page, using a [model scope](https://docs.octobercms.com/3.x/extend/database/model.html#query-scopes) for the list filtering. The list can be sorted by any column, but the sorting cannot be changed by website visitors - it's set in the component configuration.
+The Record list component outputs a list of records provided by a plugin's model. The component supports the following optional features: pagination, links to the record details page, using a [model scope](https://octobercms.com/docs/database/model#query-scopes) for the list filtering. The list can be sorted by any column, but the sorting cannot be changed by website visitors - it's set in the component configuration.
Add this component to a CMS page by dragging it to the page code from the component list and click it to configure its properties:
@@ -286,11 +233,9 @@ Add this component to a CMS page by dragging it to the page code from the compon
* `Sorting` - select a database column name to use for sorting the list.
* `Direction` - select whether the sorting should be ascending or descending.
-After configuring the component save and preview the page. Most likely you will want to customize the [default component markup](https://docs.octobercms.com/3.x/cms/themes/components.html#customizing-default-markup) to output more details about each record.
+After configuring the component save and preview the page. Most likely you will want to customize the [default component markup](https://octobercms.com/docs/cms/components#customizing-default-markup) to output more details about each record.
-> **Tip**: In the CMS editor, you can right-click on the `{% component %}` tag and select "Expand Markup".
-
-## Record Details Component
+## Record details component
The Record details component loads a model from the database and outputs its details on a page. If the requested record cannot be found, the component outputs the "record not found" message.
@@ -302,27 +247,26 @@ Add this component to a CMS page by dragging it to the page code from the compon
* `Display column` - enter a name of the database table column to display on the details page. The value is used in the default component partial, you can customize the component by providing custom markup instead of the default partial.
* `Not found message` - a message to display if the record is not found. Used in the default partial.
-After configuring the component save and preview the page. You will likely want to customize the [default component markup](https://docs.octobercms.com/3.x/cms/themes/components.html#customizing-default-markup) to output more details from the loaded model.
+After configuring the component save and preview the page. You will likely want to customize the [default component markup](http://octobercms.com/docs/cms/components#customizing-default-markup) to output more details from the loaded model.
-## Notes About Autocompletion
+## Notes about the autocompletion
Builder updates the Inspector autocompletion fields every time when the underlying data is updated. For example, the “Field name” property of the Form Builder controls is populated with the database table column names. If you update the table structure with Builder, the autocompletion cache updates automatically. However you may need to reopen Inspector so that it can update its editors.
If you edit your plugin files or database structure with an external editor, Builder won’t be able to pick up those changes automatically. You might want to reload the Builder page after you add a database column with an external tool in order to refresh the autocompletion features.
-## Editing Other Plugins
+## Editing other plugins
Although Builder allows you to edit plugins created by other authors, remember that you do it at your own risk. Plugins could be updated by their authors, which will eliminate your changes or break the plugin. In many cases, if you make updates to plugins developed by another author, you lose any technical support provided by the author.
-## Adding Support for a Custom Form Widget
+## Adding support for a custom FormWidget
-To add a custom widget to the Builder plugin, you must first [register a backend form widget](https://docs.octobercms.com/3.x/extend/forms/form-widgets.html#form-widget-registration) for your plugin.
+To add a custom widget to the Builder plugin, you must first [register a backend form widget](https://octobercms.com/docs/backend/widgets#form-widget-registration) for your plugin.
-Once it is registered, define a list of [inspector properties](https://docs.octobercms.com/3.x/element/inspector-types.html) within your plugin in the Plugin registration class `boot()` method and register the custom control. For example:
+Once it is registered, define a list of properties within your plugin in the Plugin registration class `boot()` method and register the custom control. For example:
```php
-public function boot()
-{
+public function boot() {
$properties = [
'max_value' => [
'title' => 'The maximum allowed',
@@ -358,12 +302,12 @@ public function boot()
}
```
-> **Note**: See the `getStandardProperties()` method in the `rainlab/builder/classes/ControlLibrary.php` file for more examples.
+> Note: See the `getStandardProperties()` method in the `rainlab/builder/classes/ControlLibrary.php` file for more examples.
Now, we need the `ControlDesignTimeProvider` class referenced above. Save the following as `classes/ControlDesignTimeProvider.php` within your plugin's directory (replacing `'yourwidgetname'` with what you used in your Plugin registration class `boot()` method).
```php
-namespace Acme\Blog\Classes;
+li.control{cursor:pointer;margin-bottom:20px;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.builder-building-area ul.builder-control-list>li.control[data-unknown]{cursor:default}.builder-building-area ul.builder-control-list>li.control.loading-control,.builder-building-area ul.builder-control-list>li.control.oc-placeholder{border:2px dotted var(--bs-border-color,#dae0e0);border-radius:4px;color:var(--bs-emphasis-color,#dae0e0);margin-top:20px;padding:10px 12px;position:relative;text-align:center}.builder-building-area ul.builder-control-list>li.control.loading-control i,.builder-building-area ul.builder-control-list>li.control.oc-placeholder i{margin-right:8px}.builder-building-area ul.builder-control-list>li.control.loading-control{background:var(--oc-secondary-bg)}.builder-building-area ul.builder-control-list>li.control.clear-row{display:none;margin-bottom:0}.builder-building-area ul.builder-control-list>li.control.loading-control{border-color:#bdc3c7;text-align:left}.builder-building-area ul.builder-control-list>li.control.loading-control:before,.builder-building-area ul.builder-control-list>li.control.updating-control:after{-webkit-animation:spin 1s linear infinite;animation:spin 1s linear infinite;background-image:url(../images/loader-transparent.svg);background-position:50% 50%;background-size:15px 15px;content:" ";display:inline-block;height:15px;margin-right:13px;position:relative;top:2px;width:15px}.builder-building-area ul.builder-control-list>li.control.loading-control:after{content:attr(data-builder-loading-text);display:inline-block}.builder-building-area ul.builder-control-list>li.control.updating-control:after{position:absolute;right:-8px;top:5px}.builder-building-area ul.builder-control-list>li.control.updating-control:before{background:hsla(0,0%,50%,.1);border-radius:4px;content:"";height:25px;position:absolute;right:0;top:0;width:25px}.builder-building-area ul.builder-control-list>li.control.drag-over{border-color:var(--oc-selection);color:var(--oc-selection)}.builder-building-area ul.builder-control-list>li.control.span-full{float:left;width:100%}.builder-building-area ul.builder-control-list>li.control.span-left{clear:left;float:left;width:48.5%}.builder-building-area ul.builder-control-list>li.control.span-right{clear:right;float:right;width:48.5%}.builder-building-area ul.builder-control-list>li.control.span-right+li.clear-row{clear:both;display:block}.builder-building-area ul.builder-control-list>li.control>div.remove-control{display:none}.builder-building-area ul.builder-control-list>li.control:not(.oc-placeholder):not(.loading-control):not(.updating-control):hover>div.remove-control{background:var(--oc-toolbar-border,#ecf0f1);border-radius:20px;color:var(--oc-toolbar-color,#95a5a6)!important;cursor:pointer;display:block;font-family:sans-serif;font-size:16px;font-weight:700;height:21px;line-height:21px;padding-left:6px;position:absolute;right:0;top:0;width:21px}.builder-building-area ul.builder-control-list>li.control:not(.oc-placeholder):not(.loading-control):not(.updating-control):hover>div.remove-control:hover{background:#c03f31;color:#fff!important}.builder-building-area ul.builder-control-list>li.control:not(.oc-placeholder):not(.loading-control):not(.updating-control):hover[data-control-type=hint]>div.remove-control,.builder-building-area ul.builder-control-list>li.control:not(.oc-placeholder):not(.loading-control):not(.updating-control):hover[data-control-type=partial]>div.remove-control{right:12px;top:12px}.builder-building-area ul.builder-control-list>li.control[data-control-type=hint].updating-control:before,.builder-building-area ul.builder-control-list>li.control[data-control-type=partial].updating-control:before{right:12px;top:7}.builder-building-area ul.builder-control-list>li.control[data-control-type=hint].updating-control:after,.builder-building-area ul.builder-control-list>li.control[data-control-type=partial].updating-control:after{right:4px;top:13px}.builder-building-area ul.builder-control-list>li.control>.control-static-contents,.builder-building-area ul.builder-control-list>li.control>.control-wrapper{position:relative;transition:margin .1s}.builder-building-area ul.builder-control-list>li.oc-placeholder.control-palette-open,.builder-building-area ul.builder-control-list>li.oc-placeholder.popover-highlight,.builder-building-area ul.builder-control-list>li.oc-placeholder:hover{background-color:var(--oc-selection)!important;border-color:var(--oc-selection);border-style:solid;color:#fff!important;opacity:1}.builder-building-area ul.builder-control-list>li.control.inspector-open:not(.oc-placeholder):not(.loading-control)>.control-wrapper *,.builder-building-area ul.builder-control-list>li.control:not(.oc-placeholder):not(.loading-control):not([data-unknown]):hover>.control-wrapper *{color:var(--oc-selection)!important}.builder-building-area ul.builder-control-list>li.control.drag-over:not(.oc-placeholder):before{background-color:var(--oc-selection);border-radius:5px;content:"";height:100%;left:0;position:absolute;top:0;width:10px}.builder-building-area ul.builder-control-list>li.control.drag-over:not(.oc-placeholder)>.control-static-contents,.builder-building-area ul.builder-control-list>li.control.drag-over:not(.oc-placeholder)>.control-wrapper{margin-left:20px;margin-right:-20px}.builder-building-area .control-body.field-disabled,.builder-building-area .control-body.field-hidden{opacity:.5}.builder-building-area .builder-control-label{color:var(--oc-builder-control-color);font-size:14px;font-weight:600;margin-bottom:10px}.builder-building-area .builder-control-label.required:after{content:" *";font-size:60%;vertical-align:super}.builder-building-area .builder-control-label:empty{margin-bottom:0}.builder-building-area .builder-control-comment-above{margin-bottom:8px;margin-top:-3px}.builder-building-area .builder-control-comment-below{margin-top:6px}.builder-building-area .builder-control-comment-above,.builder-building-area .builder-control-comment-below{color:#737373;font-size:12px}.builder-building-area .builder-control-comment-above:empty,.builder-building-area .builder-control-comment-below:empty{display:none}html.gecko.mac .builder-building-area div[data-root-control-wrapper]{margin-right:17px}[data-bs-theme=dark] .builder-building-area{background:var(--bs-body-bg)}.builder-building-area .builder-blueprint-control-dropdown,.builder-building-area .builder-blueprint-control-partial,.builder-building-area .builder-blueprint-control-text,.builder-building-area .builder-blueprint-control-textarea,.builder-building-area .builder-blueprint-control-unknown{border:2px solid var(--oc-document-ruler-tick,#bdc3c7);border-radius:4px;color:#95a5a6;padding:10px 12px}.builder-building-area .builder-blueprint-control-dropdown i,.builder-building-area .builder-blueprint-control-partial i,.builder-building-area .builder-blueprint-control-text i,.builder-building-area .builder-blueprint-control-textarea i,.builder-building-area .builder-blueprint-control-unknown i{margin-right:5px}.builder-building-area li.control:hover>.control-wrapper .builder-blueprint-control-dropdown,.builder-building-area li.control:hover>.control-wrapper .builder-blueprint-control-text,.builder-building-area li.control:hover>.control-wrapper .builder-blueprint-control-textarea,.builder-building-area li.inspector-open>.control-wrapper .builder-blueprint-control-dropdown,.builder-building-area li.inspector-open>.control-wrapper .builder-blueprint-control-text,.builder-building-area li.inspector-open>.control-wrapper .builder-blueprint-control-textarea{border-color:var(--oc-selection)}.builder-building-area li.control:hover>.control-wrapper .builder-blueprint-control-dropdown:before,.builder-building-area li.inspector-open>.control-wrapper .builder-blueprint-control-dropdown:before{background-color:var(--oc-selection)}.builder-building-area .builder-blueprint-control-textarea.size-tiny{min-height:50px}.builder-building-area .builder-blueprint-control-textarea.size-small{min-height:100px}.builder-building-area .builder-blueprint-control-textarea.size-large{min-height:200px}.builder-building-area .builder-blueprint-control-textarea.size-huge{min-height:250px}.builder-building-area .builder-blueprint-control-textarea.size-giant{min-height:350px}.builder-building-area .builder-blueprint-control-section{border-bottom:1px solid var(--oc-document-ruler-tick,#bdc3c7);padding-bottom:4px}.builder-building-area .builder-blueprint-control-section .builder-control-label{font-size:16px;margin-bottom:6px}.builder-building-area .builder-blueprint-control-partial,.builder-building-area .builder-blueprint-control-unknown{background:#eee;border-color:#eee}.builder-building-area .builder-blueprint-control-dropdown{position:relative}.builder-building-area .builder-blueprint-control-dropdown:after,.builder-building-area .builder-blueprint-control-dropdown:before{content:"";position:absolute}.builder-building-area .builder-blueprint-control-dropdown:before{background:var(--oc-document-ruler-tick,#bdc3c7);height:100%;right:40px;top:0;width:2px}.builder-building-area .builder-blueprint-control-dropdown:after{-webkit-font-smoothing:antialiased;color:inherit;content:"\f107";font-family:FontAwesome;font-size:20px;font-style:normal;font-weight:400;line-height:20px;right:15px;text-decoration:inherit;top:12px}.builder-building-area .builder-blueprint-control-checkbox:before{border:2px solid var(--oc-document-ruler-tick,#bdc3c7);border-radius:4px;content:" ";float:left;height:17px;position:relative;top:2px;width:17px}.builder-building-area .builder-blueprint-control-checkbox .builder-control-label{font-weight:400;margin-left:25px}.builder-building-area .builder-blueprint-control-checkbox .builder-control-comment-below{margin-left:25px}.builder-building-area li.control:hover>.control-wrapper .builder-blueprint-control-checkbox:before,.builder-building-area li.inspector-open>.control-wrapper .builder-blueprint-control-checkbox:before{border-color:var(--oc-selection)}.builder-building-area .builder-blueprint-control-switch{position:relative}.builder-building-area .builder-blueprint-control-switch:after,.builder-building-area .builder-blueprint-control-switch:before{border-radius:30px;content:" ";position:absolute}.builder-building-area .builder-blueprint-control-switch:before{background-color:var(--oc-document-ruler-tick,#bdc3c7);height:18px;left:2px;top:2px;width:34px}.builder-building-area .builder-blueprint-control-switch:after{background-color:#fff;height:14px;left:4px;margin-left:16px;top:4px;width:14px}.builder-building-area .builder-blueprint-control-switch .builder-control-label{font-weight:400;margin-left:45px}.builder-building-area .builder-blueprint-control-switch .builder-control-comment-below{margin-left:45px}.builder-building-area li.control:hover>.control-wrapper .builder-blueprint-control-switch:before,.builder-building-area li.inspector-open>.control-wrapper .builder-blueprint-control-switch:before{background-color:var(--oc-selection)}.builder-building-area .builder-blueprint-control-repeater-body>.repeater-button{background:var(--oc-document-ruler-tick,#bdc3c7);border-radius:2px;color:#fff;display:inline-block;margin-bottom:10px;padding:8px 13px}.builder-building-area ul.builder-control-list>li.control:hover>.control-wrapper>.control-body .builder-blueprint-control-repeater-body>.repeater-button,.builder-building-area ul.builder-control-list>li.inspector-open>.control-wrapper>.control-body .builder-blueprint-control-repeater-body>.repeater-button{background:var(--oc-selection);color:#fff!important}.builder-building-area ul.builder-control-list>li.control:hover>.control-wrapper>.control-body .builder-blueprint-control-repeater-body>.repeater-button span,.builder-building-area ul.builder-control-list>li.inspector-open>.control-wrapper>.control-body .builder-blueprint-control-repeater-body>.repeater-button span{color:#fff!important}.builder-building-area .builder-blueprint-control-repeater{position:relative}.builder-building-area .builder-blueprint-control-repeater:before{background:var(--oc-document-ruler-tick,#bdc3c7);content:"";height:100%;left:2px;position:absolute;top:0;width:2px}.builder-building-area .builder-blueprint-control-repeater:after{background:var(--oc-document-ruler-tick,#bdc3c7);border-radius:6px;content:"";height:6px;left:0;position:absolute;top:14px;width:6px}.builder-building-area .builder-blueprint-control-repeater>ul.builder-control-list{padding-bottom:0;padding-right:0;padding-top:10px}.builder-building-area li.control:hover>.builder-blueprint-control-repeater:after,.builder-building-area li.control:hover>.builder-blueprint-control-repeater:before,.builder-building-area li.inspector-open>.builder-blueprint-control-repeater:after,.builder-building-area li.inspector-open>.builder-blueprint-control-repeater:before{background-color:var(--oc-selection)}.builder-building-area .builder-blueprint-control-checkboxlist ul,.builder-building-area .builder-blueprint-control-radiolist ul{color:#95a5a6;list-style:none;padding:0}.builder-building-area .builder-blueprint-control-checkboxlist ul li,.builder-building-area .builder-blueprint-control-radiolist ul li{margin-bottom:3px}.builder-building-area .builder-blueprint-control-checkboxlist ul li:last-child,.builder-building-area .builder-blueprint-control-radiolist ul li:last-child{margin-bottom:0}.builder-building-area .builder-blueprint-control-checkboxlist ul li i,.builder-building-area .builder-blueprint-control-radiolist ul li i{margin-right:5px}.builder-building-area .builder-blueprint-control-text.fileupload.image{height:100px;text-align:center;width:100px}.builder-building-area .builder-blueprint-control-text.fileupload.image i{line-height:77px;margin-right:0}.builder-controllers-builder-area{background:var(--bs-body-bg,#fff)}.builder-controllers-builder-area ul.controller-behavior-list{list-style:none;margin-bottom:0;padding:20px}.builder-controllers-builder-area ul.controller-behavior-list:after,.builder-controllers-builder-area ul.controller-behavior-list:before{content:" ";display:table}.builder-controllers-builder-area ul.controller-behavior-list:after{clear:both}.builder-controllers-builder-area ul.controller-behavior-list li h4{border-bottom:1px dotted var(--oc-document-ruler-tick,#bdc3c7);margin:0 -20px 40px;text-align:center}.builder-controllers-builder-area ul.controller-behavior-list li h4 span{background:#72809d;border-radius:8px;color:#fff;display:inline-block;font-size:13px;line-height:100%;margin:0 auto;padding:7px 10px;position:relative;top:14px}.builder-controllers-builder-area ul.controller-behavior-list .behavior-container{cursor:pointer;margin-bottom:40px}.builder-controllers-builder-area ul.controller-behavior-list .behavior-container:after,.builder-controllers-builder-area ul.controller-behavior-list .behavior-container:before{content:" ";display:table}.builder-controllers-builder-area ul.controller-behavior-list .behavior-container:after{clear:both}.builder-controllers-builder-area ul.controller-behavior-list .behavior-container .import-export-behavior,.builder-controllers-builder-area ul.controller-behavior-list .behavior-container .list-behavior{border:2px solid var(--oc-document-ruler-tick,#bdc3c7);border-radius:4px;padding:25px 10px}.builder-controllers-builder-area ul.controller-behavior-list .behavior-container .import-export-behavior table,.builder-controllers-builder-area ul.controller-behavior-list .behavior-container .list-behavior table{border-collapse:collapse;width:100%}.builder-controllers-builder-area ul.controller-behavior-list .behavior-container .import-export-behavior table td,.builder-controllers-builder-area ul.controller-behavior-list .behavior-container .list-behavior table td{border-right:1px solid var(--oc-document-ruler-tick,#bdc3c7);padding:0 15px 15px}.builder-controllers-builder-area ul.controller-behavior-list .behavior-container .import-export-behavior table td:last-child,.builder-controllers-builder-area ul.controller-behavior-list .behavior-container .list-behavior table td:last-child{border-right:none}.builder-controllers-builder-area ul.controller-behavior-list .behavior-container .import-export-behavior table .oc-placeholder,.builder-controllers-builder-area ul.controller-behavior-list .behavior-container .list-behavior table .oc-placeholder{background:var(--oc-secondary-bg,#eef2f4);height:25px}.builder-controllers-builder-area ul.controller-behavior-list .behavior-container .import-export-behavior table tbody tr:last-child td,.builder-controllers-builder-area ul.controller-behavior-list .behavior-container .list-behavior table tbody tr:last-child td{padding-bottom:0}.builder-controllers-builder-area ul.controller-behavior-list .behavior-container .import-export-behavior table .oc-placeholder,.builder-controllers-builder-area ul.controller-behavior-list .behavior-container .import-export-behavior table i.icon-bars{float:left}.builder-controllers-builder-area ul.controller-behavior-list .behavior-container .import-export-behavior table i.icon-bars{color:#d6dde0;font-size:28px;line-height:28px;margin-right:15px;position:relative;top:-2px}.builder-controllers-builder-area ul.controller-behavior-list .behavior-container .form-behavior div.form{border:2px solid var(--oc-document-ruler-tick,#bdc3c7);border-radius:4px;margin-bottom:20px;padding:25px 25px 0}.builder-controllers-builder-area ul.controller-behavior-list .behavior-container .form-behavior div.form:after,.builder-controllers-builder-area ul.controller-behavior-list .behavior-container .form-behavior div.form:before{content:" ";display:table}.builder-controllers-builder-area ul.controller-behavior-list .behavior-container .form-behavior div.form:after{clear:both}.builder-controllers-builder-area ul.controller-behavior-list .behavior-container .form-behavior div.field.left{float:left;width:48%}.builder-controllers-builder-area ul.controller-behavior-list .behavior-container .form-behavior div.field.right{float:right;width:45%}.builder-controllers-builder-area ul.controller-behavior-list .behavior-container .form-behavior div.field div.label{background:var(--oc-secondary-bg,#eef2f4);height:25px;margin-bottom:10px}.builder-controllers-builder-area ul.controller-behavior-list .behavior-container .form-behavior div.field div.label.size-3{width:100px}.builder-controllers-builder-area ul.controller-behavior-list .behavior-container .form-behavior div.field div.label.size-5{width:150px}.builder-controllers-builder-area ul.controller-behavior-list .behavior-container .form-behavior div.field div.label.size-2{width:60px}.builder-controllers-builder-area ul.controller-behavior-list .behavior-container .form-behavior div.field div.control{background:var(--oc-secondary-bg,#eef2f4);height:35px;margin-bottom:25px}.builder-controllers-builder-area ul.controller-behavior-list .behavior-container .form-behavior div.button{background:var(--oc-secondary-bg,#eef2f4);border-radius:4px;height:35px;margin-right:20px}.builder-controllers-builder-area ul.controller-behavior-list .behavior-container .form-behavior div.button.size-5{width:100px}.builder-controllers-builder-area ul.controller-behavior-list .behavior-container .form-behavior div.button.size-3{width:60px}.builder-controllers-builder-area ul.controller-behavior-list .behavior-container .form-behavior div.button:first-child{margin-right:0}.builder-controllers-builder-area ul.controller-behavior-list .behavior-container.inspector-open *,.builder-controllers-builder-area ul.controller-behavior-list .behavior-container:hover *{border-color:var(--oc-selection)!important}html.gecko.mac .builder-controllers-builder-area ul.controller-behavior-list{padding-right:40px}.builder-tabs>.tabs{position:relative}.builder-tabs>.tabs .tab-control{display:block;position:absolute}.builder-tabs>.tabs .tab-control.inspector-trigger{cursor:pointer;font-size:14px;padding-left:5px;padding-right:5px}.builder-tabs>.tabs .tab-control.inspector-trigger span{background:#95a5a6;display:block;height:3px;margin-bottom:2px;width:3px}.builder-tabs>.tabs .tab-control.inspector-trigger span:last-child{margin-bottom:0}.builder-tabs>.tabs .tab-control.inspector-trigger.inspector-open span,.builder-tabs>.tabs .tab-control.inspector-trigger:hover span{background:var(--bs-link-color)}.builder-tabs>.tabs .tab-control.inspector-trigger.global{background:var(--bs-body-bg);border-radius:3px;padding-right:10px;right:0;top:5px;z-index:110}.builder-tabs>.tabs .tab-control.inspector-trigger.global>div{background:var(--oc-toolbar-bg);border-radius:3px;height:24px;padding-left:10px;padding-top:5px;width:24px}.builder-tabs>.tabs .tab-control.inspector-trigger.global>div:active{background:var(--oc-toolbar-hover-bg)}.builder-tabs>.tabs>ul.tabs{font-size:0;list-style:none;margin:0;overflow:hidden;padding-right:50px;position:relative;white-space:nowrap}.builder-tabs>.tabs>ul.tabs>li{cursor:pointer;display:inline-block;font-size:13px;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;white-space:nowrap}.builder-tabs>.tabs>ul.tabs>li>div.tab-container{color:var(--oc-tab-color)!important;position:relative}.builder-tabs>.tabs>ul.tabs>li>div.tab-container>div{position:relative;transition:padding .1s}.builder-tabs>.tabs>ul.tabs>li:hover>div{color:var(--oc-tab-active-color)!important}.builder-tabs>.tabs>ul.tabs>li .tab-control{display:none}.builder-tabs>.tabs>ul.tabs>li .tab-control.close-btn{color:#95a5a6;cursor:pointer;font-size:15px;height:15px;line-height:15px;right:18px;text-align:center;top:7px;width:15px}.builder-tabs>.tabs>ul.tabs>li .tab-control.close-btn:hover{color:var(--bs-link-color)!important}.builder-tabs>.tabs>ul.tabs>li .tab-control.inspector-trigger{right:34px;top:10px}.builder-tabs>.tabs>ul.tabs>li.active>div.tab-container{color:var(--oc-tab-active-color)!important}.builder-tabs>.tabs>ul.tabs>li.active .tab-control{display:block}.builder-tabs>.tabs>ul.panels{list-style:none;padding:0}.builder-tabs>.tabs>ul.panels>li{display:none}.builder-tabs>.tabs>ul.panels>li.active{display:block}.builder-tabs.primary>.tabs>ul.tabs{height:31px;padding:0 40px}.builder-tabs.primary>.tabs>ul.tabs:after{background:transparent linear-gradient(90deg,#bdc3c7 90%,transparent);bottom:0;content:"";display:block;height:2px;left:0;position:absolute;width:100%;z-index:106}.builder-tabs.primary>.tabs>ul.tabs>li{bottom:-3px;margin-left:-20px;z-index:105}.builder-tabs.primary>.tabs>ul.tabs>li>div.tab-container{height:27px;padding:0 21px}.builder-tabs.primary>.tabs>ul.tabs>li>div.tab-container>div{background:#fff;padding:5px 5px 0}.builder-tabs.primary>.tabs>ul.tabs>li>div.tab-container>div>span{position:relative;top:-4px;transition:top .1s}.builder-tabs.primary>.tabs>ul.tabs>li.active{color:var(--oc-tab-active-color);z-index:107}.builder-tabs.primary>.tabs>ul.tabs>li.active>div.tab-container:after,.builder-tabs.primary>.tabs>ul.tabs>li.active>div.tab-container:before{background:transparent url(../images/tab.png) no-repeat;content:"";display:block;height:27px;position:absolute;top:0;width:21px}.builder-tabs.primary>.tabs>ul.tabs>li.active>div.tab-container:before{background-position:0 0;left:0}.builder-tabs.primary>.tabs>ul.tabs>li.active>div.tab-container:after{background-position:-75px 0;right:0}.builder-tabs.primary>.tabs>ul.tabs>li.active>div.tab-container>div{border-top:2px solid #bdc3c7;padding-right:30px}.builder-tabs.primary>.tabs>ul.tabs>li.active>div.tab-container>div>span{top:0}.builder-tabs.primary>.tabs>ul.tabs>li.active:before{background:#fff;bottom:0;content:"";display:block;height:3px;left:0;position:absolute;width:100%}.builder-tabs.primary>.tabs>ul.tabs>li.new-tab{background:transparent url(../images/tab.png) no-repeat;background-position:-24px 0;cursor:pointer;height:22px;margin-left:-11px;position:relative;top:4px;width:27px}.builder-tabs.primary>.tabs>ul.tabs>li.new-tab:hover{background-position:-24px -32px}.builder-tabs.secondary>.tabs ul.tabs{margin-left:12px;padding-left:0}.builder-tabs.secondary>.tabs ul.tabs>li{border-right:1px solid #bdc3c7;padding-right:1px}.builder-tabs.secondary>.tabs ul.tabs>li>div.tab-container>div{padding:4px 10px}.builder-tabs.secondary>.tabs ul.tabs>li>div.tab-container>div span{font-size:14px}.builder-tabs.secondary>.tabs ul.tabs>li .tab-control{right:23px;top:7px}.builder-tabs.secondary>.tabs ul.tabs>li .tab-control.close-btn{right:6px;top:5px}.builder-tabs.secondary>.tabs ul.tabs>li.new-tab{background:transparent;border:2px solid #e4e4e4;border-radius:4px;cursor:pointer;height:22px;left:9px;position:relative;top:7px;width:27px}.builder-tabs.secondary>.tabs ul.tabs>li.new-tab:hover{background-color:#2581b8;border-color:#2581b8}.builder-tabs.secondary>.tabs ul.tabs>li.active{padding-right:10px}.builder-tabs.secondary>.tabs ul.tabs>li.active>div.tab-container>div{color:var(--oc-builder-control-color);padding-right:30px}[data-bs-theme=dark] .builder-tabs.primary>.tabs>ul.tabs>li.active:before,[data-bs-theme=dark] .builder-tabs.primary>.tabs>ul.tabs>li>div.tab-container>div{background:#202124}[data-bs-theme=dark] .builder-tabs.primary>.tabs>ul.tabs>li.active>div.tab-container:after,[data-bs-theme=dark] .builder-tabs.primary>.tabs>ul.tabs>li.active>div.tab-container:before{background-image:url(../images/tab-dark.png)}.builder-menu-editor{background:var(--bs-body-bg,#fff)}.builder-menu-editor .builder-menu-editor-workspace{padding:30px}.builder-menu-editor ul.builder-menu{cursor:pointer;font-size:0;padding:0}.builder-menu-editor ul.builder-menu>li{border-radius:4px}.builder-menu-editor ul.builder-menu>li div.item-container:hover,.builder-menu-editor ul.builder-menu>li.inspector-open>div.item-container{background:var(--oc-selection)!important;color:#fff!important}.builder-menu-editor ul.builder-menu>li div.item-container:hover a,.builder-menu-editor ul.builder-menu>li.inspector-open>div.item-container a{color:#fff!important}.builder-menu-editor ul.builder-menu>li div.item-container{position:relative}.builder-menu-editor ul.builder-menu>li div.item-container .close-btn{color:#fff;display:none;font-size:14px;height:15px;line-height:14px;position:absolute;right:5px;text-align:center;top:5px;width:15px}.builder-menu-editor ul.builder-menu>li div.item-container:hover .close-btn{display:block;opacity:.5;text-decoration:none}.builder-menu-editor ul.builder-menu>li div.item-container:hover .close-btn:hover{opacity:1}.builder-menu-editor ul.builder-menu>li.add{border:2px dotted var(--oc-dropdown-trigger-border,#dde0e2);font-size:16px;text-align:center}.builder-menu-editor ul.builder-menu>li.add a{color:var(--oc-dropdown-trigger-color,#bdc3c7);text-decoration:none}.builder-menu-editor ul.builder-menu>li.add span.title{font-size:14px}.builder-menu-editor ul.builder-menu>li.add:hover{background:var(--oc-selection)!important;border:2px dotted var(--oc-selection)}.builder-menu-editor ul.builder-menu>li.add:hover a{color:#fff}.builder-menu-editor ul.builder-menu>li.list-sortable-placeholder{background:transparent;border:2px dotted var(--oc-selection);height:10px}.builder-menu-editor ul.builder-menu.builder-main-menu>li{display:inline-block;vertical-align:top}.builder-menu-editor ul.builder-menu.builder-main-menu>li.item{margin:0 20px 20px 0}.builder-menu-editor ul.builder-menu.builder-main-menu>li>div.item-container{background:var(--bs-secondary-bg,#ecf0f1);color:var(--bs-secondary-color,#708080);height:64px;padding:20px 25px;white-space:nowrap}.builder-menu-editor ul.builder-menu.builder-main-menu>li>div.item-container i{font-size:24px;margin-right:10px}.builder-menu-editor ul.builder-menu.builder-main-menu>li>div.item-container span.title{font-size:14px;line-height:100%;position:relative;top:-3px}.builder-menu-editor ul.builder-menu.builder-main-menu>li.add{height:64px}.builder-menu-editor ul.builder-menu.builder-main-menu>li.add a{display:block;height:60px;padding:20px 15px}.builder-menu-editor ul.builder-menu.builder-main-menu>li.add a i{margin-right:5px}.builder-menu-editor ul.builder-menu.builder-main-menu>li.add a span{position:relative;top:-1px}.builder-menu-editor ul.builder-menu.builder-submenu{margin-top:1px}.builder-menu-editor ul.builder-menu.builder-submenu>li{display:block;width:120px}.builder-menu-editor ul.builder-menu.builder-submenu>li i{display:block;margin-bottom:7px}.builder-menu-editor ul.builder-menu.builder-submenu>li span.title{display:block;font-size:12px}.builder-menu-editor ul.builder-menu.builder-submenu>li.item{margin:0 0 1px}.builder-menu-editor ul.builder-menu.builder-submenu>li>div.item-container{background:var(--bs-tertiary-bg,#f3f5f5);color:var(--bs-tertiary-color,#94a5a6);padding:18px 13px;text-align:center}.builder-menu-editor ul.builder-menu.builder-submenu>li>div.item-container i{font-size:24px}.builder-menu-editor ul.builder-menu.builder-submenu>li.add{margin-top:20px}.builder-menu-editor ul.builder-menu.builder-submenu>li.add a{display:block;padding:10px 20px}.builder-tailor-builder-area{background:var(--bs-body-bg,#fff)}.builder-tailor-builder-area ul.tailor-blueprint-list{cursor:pointer;list-style:none;margin-bottom:0;padding:20px}.builder-tailor-builder-area ul.tailor-blueprint-list:after,.builder-tailor-builder-area ul.tailor-blueprint-list:before{content:" ";display:table}.builder-tailor-builder-area ul.tailor-blueprint-list:after{clear:both}.builder-tailor-builder-area ul.tailor-blueprint-list li{position:relative}.builder-tailor-builder-area ul.tailor-blueprint-list li h4{border-bottom:1px dotted var(--oc-document-ruler-tick,#bdc3c7);margin:0 -20px 30px;text-align:center}.builder-tailor-builder-area ul.tailor-blueprint-list li h4 span{background:#72809d;border-radius:8px;color:#fff;display:inline-block;font-size:13px;line-height:100%;margin:0 auto;padding:7px 10px;position:relative;top:14px}.builder-tailor-builder-area ul.tailor-blueprint-list li table.table{margin:0}.builder-tailor-builder-area ul.tailor-blueprint-list li table.table td{font-size:.875em}.builder-tailor-builder-area ul.tailor-blueprint-list li table.table td>span{word-wrap:break-word;color:var(--bs-secondary-color);font-family:var(--bs-font-monospace);word-break:break-word}.builder-tailor-builder-area ul.tailor-blueprint-list li table.table th{font-size:.875em;text-align:right}.builder-tailor-builder-area ul.tailor-blueprint-list li table.table th:not(.table-danger){color:var(--bs-body-color)}.builder-tailor-builder-area ul.tailor-blueprint-list li table.table tr:last-child td,.builder-tailor-builder-area ul.tailor-blueprint-list li table.table tr:last-child th{border-bottom:none}.builder-tailor-builder-area ul.tailor-blueprint-list li div.remove-blueprint{background:var(--oc-toolbar-border,#ecf0f1);border-radius:20px;color:var(--oc-toolbar-color,#95a5a6)!important;cursor:pointer;display:none;font-family:sans-serif;font-size:16px;font-weight:700;height:21px;line-height:21px;padding-left:6px;position:absolute;right:0;top:20px;width:21px}.builder-tailor-builder-area ul.tailor-blueprint-list li div.remove-blueprint:hover{background:#c03f31;color:#fff!important}.builder-tailor-builder-area ul.tailor-blueprint-list li:hover div.remove-blueprint{display:block}.builder-tailor-builder-area ul.tailor-blueprint-list li.updating-blueprint:after{-webkit-animation:spin 1s linear infinite;animation:spin 1s linear infinite;background-image:url(../images/loader-transparent.svg);background-position:50% 50%;background-size:15px 15px;content:" ";display:inline-block;height:15px;margin-right:13px;position:relative;position:absolute;right:-8px;top:2px;top:35px;width:15px}.builder-tailor-builder-area ul.tailor-blueprint-list li.updating-blueprint:before{background:hsla(0,0%,50%,.1);border-radius:4px;content:"";height:25px;position:absolute;right:0;top:30px;width:25px}.builder-tailor-builder-area ul.tailor-blueprint-list .blueprint-container:after,.builder-tailor-builder-area ul.tailor-blueprint-list .blueprint-container:before{content:" ";display:table}.builder-tailor-builder-area ul.tailor-blueprint-list .blueprint-container:after{clear:both}.builder-tailor-builder-area ul.tailor-blueprint-list .blueprint-container .tailor-blueprint div.form{border:2px solid var(--oc-document-ruler-tick,#bdc3c7);border-radius:4px;margin-bottom:20px}.builder-tailor-builder-area ul.tailor-blueprint-list .blueprint-container .tailor-blueprint div.form:after,.builder-tailor-builder-area ul.tailor-blueprint-list .blueprint-container .tailor-blueprint div.form:before{content:" ";display:table}.builder-tailor-builder-area ul.tailor-blueprint-list .blueprint-container .tailor-blueprint div.form:after{clear:both}.builder-tailor-builder-area ul.tailor-blueprint-list .blueprint-container.inspector-open *,.builder-tailor-builder-area ul.tailor-blueprint-list .blueprint-container:hover *{border-color:var(--oc-selection)!important}.builder-tailor-builder-area .add-blueprint-button{border:2px dotted var(--oc-dropdown-trigger-border,#dde0e2);font-size:16px;height:64px;margin:0 20px 40px;text-align:center}.builder-tailor-builder-area .add-blueprint-button a{color:var(--oc-dropdown-trigger-color,#bdc3c7);display:block;height:60px;padding:20px 15px;text-decoration:none}.builder-tailor-builder-area .add-blueprint-button i{margin-right:5px}.builder-tailor-builder-area .add-blueprint-button span{position:relative;top:-1px}.builder-tailor-builder-area .add-blueprint-button span.title{font-size:14px}.builder-tailor-builder-area .add-blueprint-button:hover{background:var(--oc-selection)!important;border:2px dotted var(--oc-selection)}.builder-tailor-builder-area .add-blueprint-button:hover a{color:#fff}html.gecko.mac .builder-tailor-builder-area ul.tailor-blueprint-list{padding-right:40px}.localization-input-container input[type=text].string-editor{padding-right:20px!important}.localization-input-container .localization-trigger{color:#95a5a6;display:none;font-size:14px;height:10px;outline:none;position:absolute;width:10px}.localization-input-container .localization-trigger:active,.localization-input-container .localization-trigger:focus,.localization-input-container .localization-trigger:hover{color:#2581b8;text-decoration:none}table.data td.active .localization-input-container .localization-trigger,table.inspector-fields td.active .localization-input-container .localization-trigger{display:block}table.data td.active .localization-input-container .localization-trigger{right:7px!important;top:5px!important}.control-table td[data-column-type=builderLocalization] input[type=text]{border:none;display:block;height:100%;outline:none;padding-right:20px!important;padding:6px 10px;width:100%}html.chrome .control-table td[data-column-type=builderLocalization] input[type=text]{padding:6px 10px 7px!important}html.gecko .control-table td[data-column-type=builderLocalization] input[type=text],html.safari .control-table td[data-column-type=builderLocalization] input[type=text]{padding:5px 10px}.autocomplete.dropdown-menu.table-widget-autocomplete.localization li a{word-wrap:break-word;white-space:normal}table.data td[data-column-type=builderLocalization] .loading-indicator-container.size-small .loading-indicator{padding-bottom:0!important}table.data td[data-column-type=builderLocalization] .loading-indicator-container.size-small .loading-indicator span{left:auto;right:6px}[data-entity=code] .secondary-content-tabs .nav-tabs{display:none}.control-codelist p.no-data{border-radius:4px;color:var(--bs-secondary-color);font-size:14px;font-weight:400;margin:0;padding:22px;text-align:center}.control-codelist p.parent,.control-codelist ul li{font-weight:300;line-height:150%;margin-bottom:0}.control-codelist p.parent.active a,.control-codelist ul li.active a{background:#ddd;position:relative}.control-codelist p.parent.active a:after,.control-codelist ul li.active a:after{background:var(--bs-primary);content:" ";display:block;height:100%;left:0;position:absolute;top:0;width:4px}.control-codelist p.parent a.link,.control-codelist ul li a.link{word-wrap:break-word;color:var(--bs-body-color);display:block;font-size:14px;font-weight:400;outline:none;padding:10px 50px 10px 20px;position:relative}.control-codelist p.parent a.link:active,.control-codelist p.parent a.link:focus,.control-codelist p.parent a.link:hover,.control-codelist ul li a.link:active,.control-codelist ul li a.link:focus,.control-codelist ul li a.link:hover{text-decoration:none}.control-codelist p.parent a.link span,.control-codelist ul li a.link span{display:block}.control-codelist p.parent a.link span.description,.control-codelist ul li a.link span.description{word-wrap:break-word;color:var(--oc-primary-color);font-size:12px;font-weight:400}.control-codelist p.parent a.link span.description strong,.control-codelist ul li a.link span.description strong{color:var(--bs-body-color);font-weight:400}.control-codelist p.parent.directory a.link,.control-codelist p.parent.parent a.link,.control-codelist ul li.directory a.link,.control-codelist ul li.parent a.link{padding-left:40px}.control-codelist p.parent.directory a.link:after,.control-codelist p.parent.parent a.link:after,.control-codelist ul li.directory a.link:after,.control-codelist ul li.parent a.link:after{-webkit-font-smoothing:antialiased;color:#a1aab1;content:"\f07b";display:block;font-family:FontAwesome;font-size:14px;font-style:normal;font-weight:400;height:10px;left:20px;position:absolute;text-decoration:inherit;top:10px;width:10px}.control-codelist p.parent.parent a.link,.control-codelist ul li.parent a.link{word-wrap:break-word;background-color:var(--oc-primary-bg);color:var(--oc-primary-color);padding-left:41px}.control-codelist p.parent.parent a.link:before,.control-codelist ul li.parent a.link:before{background:var(--oc-primary-border);content:"";display:block;height:1px;left:0;position:absolute;top:0;width:100%}.control-codelist p.parent.parent a.link:after,.control-codelist ul li.parent a.link:after{-webkit-font-smoothing:antialiased;color:var(--oc-primary-color);content:"\f053";font-family:FontAwesome;font-size:13px;font-style:normal;font-weight:400;height:18px;left:22px;opacity:.5;text-decoration:inherit;top:11px;width:18px}.control-codelist p.parent a.link:hover{background:var(--oc-editor-section-bg)!important;color:var(--oc-editor-section-color)!important}.control-codelist p.parent a.link:hover:after{opacity:1}.control-codelist p.parent a.link:hover:before{display:none}.control-codelist ul{margin:0;padding:0}.control-codelist ul li{font-weight:300;line-height:150%;list-style:none;position:relative}.control-codelist ul li a.link:hover,.control-codelist ul li.active a.link{background:var(--oc-editor-section-bg);color:var(--oc-editor-section-color)}.control-codelist ul li.active a.link{position:relative}.control-codelist ul li.active a.link:after{background:var(--oc-primary-border);content:" ";display:block;height:100%;left:0;position:absolute;top:0;width:4px}.control-codelist ul li div.controls{position:absolute;right:45px;top:10px}.control-codelist ul li div.controls .dropdown{height:21px;width:14px}.control-codelist ul li div.controls .dropdown.open a.control{display:block!important}.control-codelist ul li div.controls .dropdown.open a.control:before{display:block;visibility:visible}.control-codelist ul li div.controls a.control{color:var(--bs-body-color);cursor:pointer;display:none;font-size:14px;height:21px;opacity:.5;overflow:hidden;text-decoration:none;visibility:hidden;width:14px}.control-codelist ul li div.controls a.control:before{display:block;margin-right:0;visibility:visible}.control-codelist ul li div.controls a.control:hover{opacity:1}.control-codelist ul li:hover{background:var(--oc-editor-section-bg);color:var(--oc-editor-section-color)}.control-codelist ul li:hover a.control,.control-codelist ul li:hover a.control>a.control,.control-codelist ul li:hover div.controls,.control-codelist ul li:hover div.controls>a.control{display:block!important}.control-codelist ul li .form-check{position:absolute;right:5px;top:10px}.control-codelist ul li .form-check label{margin-right:0}.control-codelist div.list-container{position:relative;transform:translate(0)}.control-codelist div.list-container.animate ul{transition:all .2s ease}.control-codelist div.list-container.goForward ul{transform:translate(-350px)}.control-codelist div.list-container.goBackward ul{transform:translate(350px)}.control-filelist ul li.group.model>h4 a:after{content:"\f074";top:10px}.control-filelist ul li.group.form>h4 a:after{content:"\f14a"}.control-filelist ul li.group.list>h4 a:after{content:"\f00b";top:10px}.control-filelist ul li.group>ul>li.group>ul>li>a{margin-left:-20px;padding-left:73px}.control-filelist ul li.with-icon span.description,.control-filelist ul li.with-icon span.title{padding-left:22px}.control-filelist ul li.with-icon i.list-icon{color:#405261;left:20px;position:absolute;top:12px}.control-filelist ul li.with-icon i.list-icon.mute{color:#8f8f8f}.control-filelist ul li.with-icon i.list-icon.icon-check-square{color:#8da85e}html.gecko .control-filelist ul li.group{margin-right:10px}.builder-inspector-container{border-left:1px solid var(--bs-border-color,#d9d9d9);width:350px}.builder-inspector-container:empty{display:none!important}form.hide-secondary-tabs div.control-tabs.secondary-tabs ul.nav.nav-tabs{display:none}.form-group.size-quarter{width:23.5%}.form-group.size-three-quarter{width:73.5%}form[data-entity=database] div.field-datatable,form[data-entity=database] div.field-datatable div[data-control=table],form[data-entity=database] div.field-datatable div[data-control=table] div.table-container,form[data-entity=models] div.field-datatable,form[data-entity=models] div.field-datatable div[data-control=table],form[data-entity=models] div.field-datatable div[data-control=table] div.table-container{height:100%;position:absolute;width:100%}form[data-entity=database] div.field-datatable div[data-control=table] div.table-container div.control-scrollbar,form[data-entity=models] div.field-datatable div[data-control=table] div.table-container div.control-scrollbar{bottom:0;height:auto!important;max-height:none!important;position:absolute;top:70px}.control-tabs.auxiliary-tabs{background:#fff}.control-tabs.auxiliary-tabs>div>ul.nav-tabs,.control-tabs.auxiliary-tabs>ul.nav-tabs{background:#fff;padding-bottom:2px;padding-left:20px;position:relative}.control-tabs.auxiliary-tabs>div>ul.nav-tabs:before,.control-tabs.auxiliary-tabs>ul.nav-tabs:before{background:#95a5a6;content:" ";display:block;height:1px;left:0;position:absolute;top:0;width:100%}.control-tabs.auxiliary-tabs>div>ul.nav-tabs>li,.control-tabs.auxiliary-tabs>ul.nav-tabs>li{margin-right:2px}.control-tabs.auxiliary-tabs>div>ul.nav-tabs>li>a,.control-tabs.auxiliary-tabs>ul.nav-tabs>li>a{background:#fff;border-bottom:1px solid #ecf0f1!important;border-left:1px solid #ecf0f1!important;border-radius:0 0 4px 4px;border-right:1px solid #ecf0f1!important;color:#bdc3c7;line-height:100%;padding:4px 10px}.control-tabs.auxiliary-tabs>div>ul.nav-tabs>li>a>span.title>span,.control-tabs.auxiliary-tabs>ul.nav-tabs>li>a>span.title>span{font-size:13px;height:auto;margin-bottom:0}.control-tabs.auxiliary-tabs>div>ul.nav-tabs>li.active,.control-tabs.auxiliary-tabs>ul.nav-tabs>li.active{top:0}.control-tabs.auxiliary-tabs>div>ul.nav-tabs>li.active:before,.control-tabs.auxiliary-tabs>ul.nav-tabs>li.active:before{background:#fff;content:" ";display:block;height:1px;left:0;position:absolute;top:0;top:-1px;width:100%}.control-tabs.auxiliary-tabs>div>ul.nav-tabs>li.active a,.control-tabs.auxiliary-tabs>ul.nav-tabs>li.active a{border-bottom:1px solid #95a5a6!important;border-left:1px solid #95a5a6!important;border-right:1px solid #95a5a6!important;color:#95a5a6;padding-top:5px}.control-tabs.auxiliary-tabs>div.tab-content>.tab-pane{background:#fff}
+.builder-building-area {
+ background: white;
+}
+.builder-building-area ul.builder-control-list {
+ padding: 20px;
+ margin-bottom: 0;
+ list-style: none;
+}
+.builder-building-area ul.builder-control-list:before,
+.builder-building-area ul.builder-control-list:after {
+ content: " ";
+ display: table;
+}
+.builder-building-area ul.builder-control-list:after {
+ clear: both;
+}
+.builder-building-area ul.builder-control-list > li.control {
+ position: relative;
+ margin-bottom: 20px;
+ cursor: pointer;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+.builder-building-area ul.builder-control-list > li.control[data-unknown] {
+ cursor: default;
+}
+.builder-building-area ul.builder-control-list > li.control.placeholder,
+.builder-building-area ul.builder-control-list > li.control.loading-control {
+ padding: 10px 12px;
+ position: relative;
+ text-align: center;
+ border: 2px dotted #dde0e2;
+ margin-top: 20px;
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
+ color: #dae0e0;
+}
+.builder-building-area ul.builder-control-list > li.control.placeholder i,
+.builder-building-area ul.builder-control-list > li.control.loading-control i {
+ margin-right: 8px;
+}
+.builder-building-area ul.builder-control-list > li.control.clear-row {
+ display: none;
+ margin-bottom: 0;
+}
+.builder-building-area ul.builder-control-list > li.control.loading-control {
+ border-color: #bdc3c7;
+ text-align: left;
+}
+.builder-building-area ul.builder-control-list > li.control.updating-control:after,
+.builder-building-area ul.builder-control-list > li.control.loading-control:before {
+ background-image: url(../../../../../modules/system/assets/ui/images/loader-transparent.svg);
+ background-size: 15px 15px;
+ background-position: 50% 50%;
+ display: inline-block;
+ width: 15px;
+ height: 15px;
+ content: ' ';
+ margin-right: 13px;
+ position: relative;
+ top: 2px;
+ -webkit-animation: spin 1s linear infinite;
+ animation: spin 1s linear infinite;
+}
+.builder-building-area ul.builder-control-list > li.control.loading-control:after {
+ content: attr(data-builder-loading-text);
+ display: inline-block;
+}
+.builder-building-area ul.builder-control-list > li.control.updating-control:after {
+ position: absolute;
+ right: -8px;
+ top: 5px;
+}
+.builder-building-area ul.builder-control-list > li.control.updating-control:before {
+ content: '';
+ position: absolute;
+ right: 0;
+ top: 0;
+ width: 25px;
+ height: 25px;
+ background: rgba(127, 127, 127, 0.1);
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
+}
+.builder-building-area ul.builder-control-list > li.control.drag-over {
+ color: #2581b8;
+ border-color: #2581b8;
+}
+.builder-building-area ul.builder-control-list > li.control.span-full {
+ width: 100%;
+ float: left;
+}
+.builder-building-area ul.builder-control-list > li.control.span-left {
+ float: left;
+ width: 48.5%;
+ clear: left;
+}
+.builder-building-area ul.builder-control-list > li.control.span-right {
+ float: right;
+ width: 48.5%;
+ clear: right;
+}
+.builder-building-area ul.builder-control-list > li.control.span-right + li.clear-row {
+ display: block;
+ clear: both;
+}
+.builder-building-area ul.builder-control-list > li.control > div.remove-control {
+ display: none;
+}
+.builder-building-area ul.builder-control-list > li.control:not(.placeholder):not(.loading-control):not(.updating-control):hover > div.remove-control {
+ font-family: sans-serif;
+ display: block;
+ position: absolute;
+ right: 0;
+ top: 0;
+ cursor: pointer;
+ width: 21px;
+ height: 21px;
+ padding-left: 6px;
+ font-size: 16px;
+ font-weight: bold;
+ line-height: 21px;
+ -webkit-border-radius: 20px;
+ -moz-border-radius: 20px;
+ border-radius: 20px;
+ background: #ecf0f1;
+ color: #95a5a6 !important;
+}
+.builder-building-area ul.builder-control-list > li.control:not(.placeholder):not(.loading-control):not(.updating-control):hover > div.remove-control:hover {
+ color: white !important;
+ background: #c03f31;
+}
+.builder-building-area ul.builder-control-list > li.control:not(.placeholder):not(.loading-control):not(.updating-control):hover[data-control-type=hint] > div.remove-control,
+.builder-building-area ul.builder-control-list > li.control:not(.placeholder):not(.loading-control):not(.updating-control):hover[data-control-type=partial] > div.remove-control {
+ top: 12px;
+ right: 12px;
+}
+.builder-building-area ul.builder-control-list > li.control[data-control-type=hint].updating-control:before,
+.builder-building-area ul.builder-control-list > li.control[data-control-type=partial].updating-control:before {
+ right: 12px;
+ top: 7;
+}
+.builder-building-area ul.builder-control-list > li.control[data-control-type=hint].updating-control:after,
+.builder-building-area ul.builder-control-list > li.control[data-control-type=partial].updating-control:after {
+ right: 4px;
+ top: 13px;
+}
+.builder-building-area ul.builder-control-list > li.control > .control-wrapper,
+.builder-building-area ul.builder-control-list > li.control > .control-static-contents {
+ position: relative;
+ -webkit-transition: margin 0.1s;
+ transition: margin 0.1s;
+}
+.builder-building-area ul.builder-control-list > li.placeholder:hover,
+.builder-building-area ul.builder-control-list > li.placeholder.popover-highlight,
+.builder-building-area ul.builder-control-list > li.placeholder.control-palette-open {
+ background-color: #2581b8 !important;
+ color: white!important;
+ border-style: solid;
+ border-color: #2581b8;
+}
+.builder-building-area ul.builder-control-list > li.control:not(.placeholder):not(.loading-control):not([data-unknown]):hover > .control-wrapper *,
+.builder-building-area ul.builder-control-list > li.control.inspector-open:not(.placeholder):not(.loading-control) > .control-wrapper * {
+ color: #2581b8 !important;
+}
+.builder-building-area ul.builder-control-list > li.control.drag-over:not(.placeholder):before {
+ position: absolute;
+ content: '';
+ top: 0;
+ left: 0;
+ width: 10px;
+ height: 100%;
+ -webkit-border-radius: 5px;
+ -moz-border-radius: 5px;
+ border-radius: 5px;
+ background-color: #2581b8;
+}
+.builder-building-area ul.builder-control-list > li.control.drag-over:not(.placeholder) > .control-wrapper,
+.builder-building-area ul.builder-control-list > li.control.drag-over:not(.placeholder) > .control-static-contents {
+ margin-left: 20px;
+ margin-right: -20px;
+}
+.builder-building-area .control-body.field-disabled,
+.builder-building-area .control-body.field-hidden {
+ opacity: 0.5;
+ filter: alpha(opacity=50);
+}
+.builder-building-area .builder-control-label {
+ margin-bottom: 10px;
+ color: #555555;
+ font-size: 14px;
+ font-weight: 600;
+}
+.builder-building-area .builder-control-label.required:after {
+ vertical-align: super;
+ font-size: 60%;
+ content: " *";
+}
+.builder-building-area .builder-control-label:empty {
+ margin-bottom: 0;
+}
+.builder-building-area .builder-control-comment-above {
+ margin-bottom: 8px;
+ margin-top: -3px;
+}
+.builder-building-area .builder-control-comment-below {
+ margin-top: 6px;
+}
+.builder-building-area .builder-control-comment-above,
+.builder-building-area .builder-control-comment-below {
+ color: #737373;
+ font-size: 12px;
+}
+.builder-building-area .builder-control-comment-above:empty,
+.builder-building-area .builder-control-comment-below:empty {
+ display: none;
+}
+html.gecko.mac .builder-building-area div[data-root-control-wrapper] {
+ margin-right: 17px;
+}
+.builder-building-area .builder-blueprint-control-text,
+.builder-building-area .builder-blueprint-control-textarea,
+.builder-building-area .builder-blueprint-control-partial,
+.builder-building-area .builder-blueprint-control-unknown,
+.builder-building-area .builder-blueprint-control-dropdown {
+ padding: 10px 12px;
+ border: 2px solid #bdc3c7;
+ color: #95a5a6;
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
+}
+.builder-building-area .builder-blueprint-control-text i,
+.builder-building-area .builder-blueprint-control-textarea i,
+.builder-building-area .builder-blueprint-control-partial i,
+.builder-building-area .builder-blueprint-control-unknown i,
+.builder-building-area .builder-blueprint-control-dropdown i {
+ margin-right: 5px;
+}
+.builder-building-area li.control:hover > .control-wrapper .builder-blueprint-control-text,
+.builder-building-area li.inspector-open > .control-wrapper .builder-blueprint-control-text,
+.builder-building-area li.control:hover > .control-wrapper .builder-blueprint-control-textarea,
+.builder-building-area li.inspector-open > .control-wrapper .builder-blueprint-control-textarea,
+.builder-building-area li.control:hover > .control-wrapper .builder-blueprint-control-dropdown,
+.builder-building-area li.inspector-open > .control-wrapper .builder-blueprint-control-dropdown {
+ border-color: #2581b8;
+}
+.builder-building-area li.control:hover > .control-wrapper .builder-blueprint-control-dropdown:before,
+.builder-building-area li.inspector-open > .control-wrapper .builder-blueprint-control-dropdown:before {
+ background-color: #2581b8;
+}
+.builder-building-area .builder-blueprint-control-textarea.size-tiny {
+ min-height: 50px;
+}
+.builder-building-area .builder-blueprint-control-textarea.size-small {
+ min-height: 100px;
+}
+.builder-building-area .builder-blueprint-control-textarea.size-large {
+ min-height: 200px;
+}
+.builder-building-area .builder-blueprint-control-textarea.size-huge {
+ min-height: 250px;
+}
+.builder-building-area .builder-blueprint-control-textarea.size-giant {
+ min-height: 350px;
+}
+.builder-building-area .builder-blueprint-control-section {
+ border-bottom: 1px solid #bdc3c7;
+ padding-bottom: 4px;
+}
+.builder-building-area .builder-blueprint-control-section .builder-control-label {
+ font-size: 16px;
+ margin-bottom: 6px;
+}
+.builder-building-area .builder-blueprint-control-unknown {
+ border-color: #eee;
+ background: #eee;
+}
+.builder-building-area .builder-blueprint-control-partial {
+ border-color: #eee;
+ background: #eee;
+}
+.builder-building-area .builder-blueprint-control-dropdown {
+ position: relative;
+}
+.builder-building-area .builder-blueprint-control-dropdown:before,
+.builder-building-area .builder-blueprint-control-dropdown:after {
+ position: absolute;
+ content: '';
+}
+.builder-building-area .builder-blueprint-control-dropdown:before {
+ top: 0;
+ width: 2px;
+ background: #bdc3c7;
+ right: 40px;
+ height: 100%;
+}
+.builder-building-area .builder-blueprint-control-dropdown:after {
+ font-family: FontAwesome;
+ font-weight: normal;
+ font-style: normal;
+ text-decoration: inherit;
+ -webkit-font-smoothing: antialiased;
+ content: "\f107";
+ color: inherit;
+ right: 15px;
+ top: 12px;
+ font-size: 20px;
+ line-height: 20px;
+}
+.builder-building-area .builder-blueprint-control-checkbox:before {
+ float: left;
+ content: ' ';
+ border: 2px solid #bdc3c7;
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
+ width: 17px;
+ height: 17px;
+ position: relative;
+ top: 2px;
+}
+.builder-building-area .builder-blueprint-control-checkbox .builder-control-label {
+ margin-left: 25px;
+ font-weight: normal;
+}
+.builder-building-area .builder-blueprint-control-checkbox .builder-control-comment-below {
+ margin-left: 25px;
+}
+.builder-building-area li.control:hover > .control-wrapper .builder-blueprint-control-checkbox:before,
+.builder-building-area li.inspector-open > .control-wrapper .builder-blueprint-control-checkbox:before {
+ border-color: #2581b8;
+}
+.builder-building-area .builder-blueprint-control-switch {
+ position: relative;
+}
+.builder-building-area .builder-blueprint-control-switch:before,
+.builder-building-area .builder-blueprint-control-switch:after {
+ position: absolute;
+ content: ' ';
+ -webkit-border-radius: 30px;
+ -moz-border-radius: 30px;
+ border-radius: 30px;
+}
+.builder-building-area .builder-blueprint-control-switch:before {
+ background-color: #bdc3c7;
+ width: 34px;
+ height: 18px;
+ top: 2px;
+ left: 2px;
+}
+.builder-building-area .builder-blueprint-control-switch:after {
+ background-color: white;
+ width: 14px;
+ height: 14px;
+ top: 4px;
+ left: 4px;
+ margin-left: 16px;
+}
+.builder-building-area .builder-blueprint-control-switch .builder-control-label {
+ margin-left: 45px;
+ font-weight: normal;
+}
+.builder-building-area .builder-blueprint-control-switch .builder-control-comment-below {
+ margin-left: 45px;
+}
+.builder-building-area li.control:hover > .control-wrapper .builder-blueprint-control-switch:before,
+.builder-building-area li.inspector-open > .control-wrapper .builder-blueprint-control-switch:before {
+ background-color: #2581b8;
+}
+.builder-building-area .builder-blueprint-control-repeater-body > .repeater-button {
+ padding: 8px 13px;
+ background: #bdc3c7;
+ color: white;
+ display: inline-block;
+ margin-bottom: 10px;
+ -webkit-border-radius: 2px;
+ -moz-border-radius: 2px;
+ border-radius: 2px;
+}
+.builder-building-area ul.builder-control-list > li.control:hover > .control-wrapper > .control-body .builder-blueprint-control-repeater-body > .repeater-button,
+.builder-building-area ul.builder-control-list > li.inspector-open > .control-wrapper > .control-body .builder-blueprint-control-repeater-body > .repeater-button {
+ background: #2581b8;
+ color: white!important;
+}
+.builder-building-area ul.builder-control-list > li.control:hover > .control-wrapper > .control-body .builder-blueprint-control-repeater-body > .repeater-button span,
+.builder-building-area ul.builder-control-list > li.inspector-open > .control-wrapper > .control-body .builder-blueprint-control-repeater-body > .repeater-button span {
+ color: white!important;
+}
+.builder-building-area .builder-blueprint-control-repeater {
+ position: relative;
+}
+.builder-building-area .builder-blueprint-control-repeater:before {
+ content: '';
+ position: absolute;
+ width: 2px;
+ top: 0;
+ left: 2px;
+ height: 100%;
+ background: #bdc3c7;
+}
+.builder-building-area .builder-blueprint-control-repeater:after {
+ content: '';
+ position: absolute;
+ width: 6px;
+ height: 6px;
+ top: 14px;
+ left: 0;
+ -webkit-border-radius: 6px;
+ -moz-border-radius: 6px;
+ border-radius: 6px;
+ background: #bdc3c7;
+}
+.builder-building-area .builder-blueprint-control-repeater > ul.builder-control-list {
+ padding-right: 0;
+ padding-bottom: 0;
+ padding-top: 10px;
+}
+.builder-building-area li.control:hover > .builder-blueprint-control-repeater:before,
+.builder-building-area li.inspector-open > .builder-blueprint-control-repeater:before,
+.builder-building-area li.control:hover > .builder-blueprint-control-repeater:after,
+.builder-building-area li.inspector-open > .builder-blueprint-control-repeater:after {
+ background-color: #2581b8;
+}
+.builder-building-area .builder-blueprint-control-radiolist ul,
+.builder-building-area .builder-blueprint-control-checkboxlist ul {
+ list-style: none;
+ padding: 0;
+ color: #95a5a6;
+}
+.builder-building-area .builder-blueprint-control-radiolist ul li,
+.builder-building-area .builder-blueprint-control-checkboxlist ul li {
+ margin-bottom: 3px;
+}
+.builder-building-area .builder-blueprint-control-radiolist ul li:last-child,
+.builder-building-area .builder-blueprint-control-checkboxlist ul li:last-child {
+ margin-bottom: 0;
+}
+.builder-building-area .builder-blueprint-control-radiolist ul li i,
+.builder-building-area .builder-blueprint-control-checkboxlist ul li i {
+ margin-right: 5px;
+}
+.builder-building-area .builder-blueprint-control-text.fileupload.image {
+ width: 100px;
+ height: 100px;
+ text-align: center;
+}
+.builder-building-area .builder-blueprint-control-text.fileupload.image i {
+ line-height: 77px;
+ margin-right: 0;
+}
+.builder-controllers-builder-area {
+ background: white;
+}
+.builder-controllers-builder-area ul.controller-behavior-list {
+ padding: 20px;
+ margin-bottom: 0;
+ list-style: none;
+}
+.builder-controllers-builder-area ul.controller-behavior-list:before,
+.builder-controllers-builder-area ul.controller-behavior-list:after {
+ content: " ";
+ display: table;
+}
+.builder-controllers-builder-area ul.controller-behavior-list:after {
+ clear: both;
+}
+.builder-controllers-builder-area ul.controller-behavior-list li h4 {
+ text-align: center;
+ border-bottom: 1px dotted #bdc3c7;
+ margin: 0 -20px 40px;
+}
+.builder-controllers-builder-area ul.controller-behavior-list li h4 span {
+ display: inline-block;
+ color: white;
+ margin: 0 auto;
+ -webkit-border-radius: 8px;
+ -moz-border-radius: 8px;
+ border-radius: 8px;
+ background: #bdc3c7;
+ padding: 7px 10px;
+ font-size: 13px;
+ line-height: 100%;
+ position: relative;
+ top: 14px;
+}
+.builder-controllers-builder-area ul.controller-behavior-list .behavior-container {
+ margin-bottom: 40px;
+ cursor: pointer;
+}
+.builder-controllers-builder-area ul.controller-behavior-list .behavior-container:before,
+.builder-controllers-builder-area ul.controller-behavior-list .behavior-container:after {
+ content: " ";
+ display: table;
+}
+.builder-controllers-builder-area ul.controller-behavior-list .behavior-container:after {
+ clear: both;
+}
+.builder-controllers-builder-area ul.controller-behavior-list .behavior-container .list-behavior,
+.builder-controllers-builder-area ul.controller-behavior-list .behavior-container .reorder-behavior {
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
+ border: 2px solid #bdc3c7;
+ padding: 25px 10px 25px 10px;
+}
+.builder-controllers-builder-area ul.controller-behavior-list .behavior-container .list-behavior table,
+.builder-controllers-builder-area ul.controller-behavior-list .behavior-container .reorder-behavior table {
+ border-collapse: collapse;
+ width: 100%;
+}
+.builder-controllers-builder-area ul.controller-behavior-list .behavior-container .list-behavior table td,
+.builder-controllers-builder-area ul.controller-behavior-list .behavior-container .reorder-behavior table td {
+ padding: 0 15px 15px 15px;
+ border-right: 1px solid #bdc3c7;
+}
+.builder-controllers-builder-area ul.controller-behavior-list .behavior-container .list-behavior table td:last-child,
+.builder-controllers-builder-area ul.controller-behavior-list .behavior-container .reorder-behavior table td:last-child {
+ border-right: none;
+}
+.builder-controllers-builder-area ul.controller-behavior-list .behavior-container .list-behavior table .placeholder,
+.builder-controllers-builder-area ul.controller-behavior-list .behavior-container .reorder-behavior table .placeholder {
+ background: #EEF2F4;
+ height: 25px;
+}
+.builder-controllers-builder-area ul.controller-behavior-list .behavior-container .list-behavior table tbody tr:last-child td,
+.builder-controllers-builder-area ul.controller-behavior-list .behavior-container .reorder-behavior table tbody tr:last-child td {
+ padding-bottom: 0;
+}
+.builder-controllers-builder-area ul.controller-behavior-list .behavior-container .reorder-behavior table i.icon-bars,
+.builder-controllers-builder-area ul.controller-behavior-list .behavior-container .reorder-behavior table .placeholder {
+ float: left;
+}
+.builder-controllers-builder-area ul.controller-behavior-list .behavior-container .reorder-behavior table i.icon-bars {
+ margin-right: 15px;
+ color: #D6DDE0;
+ font-size: 28px;
+ line-height: 28px;
+ position: relative;
+ top: -2px;
+}
+.builder-controllers-builder-area ul.controller-behavior-list .behavior-container .form-behavior div.form {
+ padding: 25px 25px 0 25px;
+ border: 2px solid #bdc3c7;
+ margin-bottom: 20px;
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
+}
+.builder-controllers-builder-area ul.controller-behavior-list .behavior-container .form-behavior div.form:before,
+.builder-controllers-builder-area ul.controller-behavior-list .behavior-container .form-behavior div.form:after {
+ content: " ";
+ display: table;
+}
+.builder-controllers-builder-area ul.controller-behavior-list .behavior-container .form-behavior div.form:after {
+ clear: both;
+}
+.builder-controllers-builder-area ul.controller-behavior-list .behavior-container .form-behavior div.field.left {
+ float: left;
+ width: 48%;
+}
+.builder-controllers-builder-area ul.controller-behavior-list .behavior-container .form-behavior div.field.right {
+ float: right;
+ width: 45%;
+}
+.builder-controllers-builder-area ul.controller-behavior-list .behavior-container .form-behavior div.field div.label {
+ background: #EEF2F4;
+ height: 25px;
+ margin-bottom: 10px;
+}
+.builder-controllers-builder-area ul.controller-behavior-list .behavior-container .form-behavior div.field div.label.size-3 {
+ width: 100px;
+}
+.builder-controllers-builder-area ul.controller-behavior-list .behavior-container .form-behavior div.field div.label.size-5 {
+ width: 150px;
+}
+.builder-controllers-builder-area ul.controller-behavior-list .behavior-container .form-behavior div.field div.label.size-2 {
+ width: 60px;
+}
+.builder-controllers-builder-area ul.controller-behavior-list .behavior-container .form-behavior div.field div.control {
+ background: #EEF2F4;
+ height: 35px;
+ margin-bottom: 25px;
+}
+.builder-controllers-builder-area ul.controller-behavior-list .behavior-container .form-behavior div.button {
+ background: #EEF2F4;
+ height: 35px;
+ margin-right: 20px;
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
+}
+.builder-controllers-builder-area ul.controller-behavior-list .behavior-container .form-behavior div.button.size-5 {
+ width: 100px;
+}
+.builder-controllers-builder-area ul.controller-behavior-list .behavior-container .form-behavior div.button.size-3 {
+ width: 60px;
+}
+.builder-controllers-builder-area ul.controller-behavior-list .behavior-container .form-behavior div.button:first-child {
+ margin-right: 0;
+}
+.builder-controllers-builder-area ul.controller-behavior-list .behavior-container:hover *,
+.builder-controllers-builder-area ul.controller-behavior-list .behavior-container.inspector-open * {
+ border-color: #2581b8 !important;
+}
+html.gecko.mac .builder-controllers-builder-area ul.controller-behavior-list {
+ padding-right: 40px;
+}
+.builder-tabs > .tabs {
+ position: relative;
+}
+.builder-tabs > .tabs .tab-control {
+ position: absolute;
+ display: block;
+}
+.builder-tabs > .tabs .tab-control.inspector-trigger {
+ font-size: 14px;
+ padding-left: 5px;
+ padding-right: 5px;
+ cursor: pointer;
+}
+.builder-tabs > .tabs .tab-control.inspector-trigger span {
+ display: block;
+ width: 3px;
+ height: 3px;
+ margin-bottom: 2px;
+ background: #95a5a6;
+}
+.builder-tabs > .tabs .tab-control.inspector-trigger span:last-child {
+ margin-bottom: 0;
+}
+.builder-tabs > .tabs .tab-control.inspector-trigger:hover span,
+.builder-tabs > .tabs .tab-control.inspector-trigger.inspector-open span {
+ background: #3498db;
+}
+.builder-tabs > .tabs .tab-control.inspector-trigger.global {
+ top: 5px;
+ right: 15px;
+}
+.builder-tabs > .tabs > ul.tabs {
+ margin: 0;
+ list-style: none;
+ font-size: 0;
+ white-space: nowrap;
+ overflow: hidden;
+ position: relative;
+}
+.builder-tabs > .tabs > ul.tabs > li {
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ display: inline-block;
+ font-size: 13px;
+ white-space: nowrap;
+ position: relative;
+ cursor: pointer;
+}
+.builder-tabs > .tabs > ul.tabs > li > div.tab-container {
+ position: relative;
+ color: #bdc3c7!important;
+}
+.builder-tabs > .tabs > ul.tabs > li > div.tab-container > div {
+ -webkit-transition: padding 0.1s;
+ transition: padding 0.1s;
+ position: relative;
+}
+.builder-tabs > .tabs > ul.tabs > li:hover > div {
+ color: #95a5a6!important;
+}
+.builder-tabs > .tabs > ul.tabs > li .tab-control {
+ display: none;
+}
+.builder-tabs > .tabs > ul.tabs > li .tab-control.close-btn {
+ font-size: 15px;
+ top: 7px;
+ right: 18px;
+ line-height: 15px;
+ height: 15px;
+ width: 15px;
+ text-align: center;
+ cursor: pointer;
+ color: #95a5a6;
+}
+.builder-tabs > .tabs > ul.tabs > li .tab-control.close-btn:hover {
+ color: #3498db !important;
+}
+.builder-tabs > .tabs > ul.tabs > li .tab-control.inspector-trigger {
+ right: 34px;
+ top: 10px;
+}
+.builder-tabs > .tabs > ul.tabs > li.active > div.tab-container {
+ color: #95a5a6!important;
+}
+.builder-tabs > .tabs > ul.tabs > li.active .tab-control {
+ display: block;
+}
+.builder-tabs > .tabs > ul.panels {
+ padding: 0;
+ list-style: none;
+}
+.builder-tabs > .tabs > ul.panels > li {
+ display: none;
+}
+.builder-tabs > .tabs > ul.panels > li.active {
+ display: block;
+}
+.builder-tabs.primary > .tabs > ul.tabs {
+ padding: 0 20px 0 40px;
+ height: 31px;
+}
+.builder-tabs.primary > .tabs > ul.tabs:after {
+ position: absolute;
+ content: '';
+ display: block;
+ height: 2px;
+ left: 0;
+ bottom: 0;
+ width: 100%;
+ background: #bdc3c7;
+ z-index: 106;
+}
+.builder-tabs.primary > .tabs > ul.tabs > li {
+ bottom: -3px;
+ margin-left: -20px;
+ z-index: 105;
+}
+.builder-tabs.primary > .tabs > ul.tabs > li > div.tab-container {
+ padding: 0 21px 0 21px;
+ height: 27px;
+}
+.builder-tabs.primary > .tabs > ul.tabs > li > div.tab-container > div {
+ padding: 5px 5px 0 5px;
+ border-top: 2px solid #e5e5e5;
+}
+.builder-tabs.primary > .tabs > ul.tabs > li > div.tab-container > div > span {
+ position: relative;
+ top: -2px;
+ -webkit-transition: top 0.1s;
+ transition: top 0.1s;
+}
+.builder-tabs.primary > .tabs > ul.tabs > li > div.tab-container:before,
+.builder-tabs.primary > .tabs > ul.tabs > li > div.tab-container:after {
+ content: '';
+ display: block;
+ position: absolute;
+ top: 0;
+ height: 27px;
+ width: 21px;
+ background: transparent url(../images/tab.png) no-repeat;
+}
+.builder-tabs.primary > .tabs > ul.tabs > li > div.tab-container:before {
+ left: 0;
+ background-position: 0 -27px;
+}
+.builder-tabs.primary > .tabs > ul.tabs > li > div.tab-container:after {
+ right: 0;
+ background-position: -75px -27px;
+}
+.builder-tabs.primary > .tabs > ul.tabs > li.active {
+ z-index: 107;
+}
+.builder-tabs.primary > .tabs > ul.tabs > li.active > div.tab-container:before {
+ background-position: 0 0;
+}
+.builder-tabs.primary > .tabs > ul.tabs > li.active > div.tab-container:after {
+ background-position: -75px 0;
+}
+.builder-tabs.primary > .tabs > ul.tabs > li.active > div.tab-container > div {
+ padding-right: 30px;
+ border-top: 2px solid #bdc3c7;
+}
+.builder-tabs.primary > .tabs > ul.tabs > li.active > div.tab-container > div > span {
+ top: 0;
+}
+.builder-tabs.primary > .tabs > ul.tabs > li.active:before {
+ position: absolute;
+ content: '';
+ display: block;
+ height: 3px;
+ left: 0;
+ bottom: 0;
+ width: 100%;
+ background: white;
+}
+.builder-tabs.primary > .tabs > ul.tabs > li.new-tab {
+ background: transparent url(../images/tab.png) no-repeat;
+ background-position: -24px 0;
+ width: 27px;
+ height: 22px;
+ margin-left: -11px;
+ top: 4px;
+ position: relative;
+ cursor: pointer;
+}
+.builder-tabs.primary > .tabs > ul.tabs > li.new-tab:hover {
+ background-position: -24px -32px;
+}
+.builder-tabs.secondary > .tabs ul.tabs {
+ margin-left: 12px;
+ padding-left: 0;
+}
+.builder-tabs.secondary > .tabs ul.tabs > li {
+ border-right: 1px solid #bdc3c7;
+ padding-right: 1px;
+}
+.builder-tabs.secondary > .tabs ul.tabs > li > div.tab-container > div {
+ padding: 4px 10px;
+}
+.builder-tabs.secondary > .tabs ul.tabs > li > div.tab-container > div span {
+ font-size: 14px;
+}
+.builder-tabs.secondary > .tabs ul.tabs > li .tab-control {
+ right: 23px;
+ top: 7px;
+}
+.builder-tabs.secondary > .tabs ul.tabs > li .tab-control.close-btn {
+ right: 6px;
+ top: 5px;
+}
+.builder-tabs.secondary > .tabs ul.tabs > li.new-tab {
+ background: transparent;
+ border: 2px solid #e4e4e4;
+ width: 27px;
+ height: 22px;
+ left: 9px;
+ top: 7px;
+ position: relative;
+ cursor: pointer;
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
+}
+.builder-tabs.secondary > .tabs ul.tabs > li.new-tab:hover {
+ background-color: #2581b8;
+ border-color: #2581b8;
+}
+.builder-tabs.secondary > .tabs ul.tabs > li.active {
+ padding-right: 10px;
+}
+.builder-tabs.secondary > .tabs ul.tabs > li.active > div.tab-container > div {
+ color: #555555;
+ padding-right: 30px;
+}
+.builder-menu-editor {
+ background: white;
+}
+.builder-menu-editor .builder-menu-editor-workspace {
+ padding: 30px;
+}
+.builder-menu-editor ul.builder-menu {
+ font-size: 0;
+ padding: 0;
+ cursor: pointer;
+}
+.builder-menu-editor ul.builder-menu > li {
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
+}
+.builder-menu-editor ul.builder-menu > li div.item-container:hover,
+.builder-menu-editor ul.builder-menu > li.inspector-open > div.item-container {
+ background: #2581b8 !important;
+ color: white!important;
+}
+.builder-menu-editor ul.builder-menu > li div.item-container:hover a,
+.builder-menu-editor ul.builder-menu > li.inspector-open > div.item-container a {
+ color: white!important;
+}
+.builder-menu-editor ul.builder-menu > li div.item-container {
+ position: relative;
+}
+.builder-menu-editor ul.builder-menu > li div.item-container .close-btn {
+ color: white;
+ position: absolute;
+ display: none;
+ width: 15px;
+ height: 15px;
+ right: 5px;
+ top: 5px;
+ font-size: 14px;
+ text-align: center;
+ line-height: 14px;
+}
+.builder-menu-editor ul.builder-menu > li div.item-container:hover .close-btn {
+ display: block;
+ text-decoration: none;
+ opacity: 0.5;
+ filter: alpha(opacity=50);
+}
+.builder-menu-editor ul.builder-menu > li div.item-container:hover .close-btn:hover {
+ opacity: 1;
+ filter: alpha(opacity=100);
+}
+.builder-menu-editor ul.builder-menu > li.add {
+ font-size: 16px;
+ text-align: center;
+ border: 2px dotted #dde0e2;
+}
+.builder-menu-editor ul.builder-menu > li.add a {
+ text-decoration: none;
+ color: #bdc3c7;
+}
+.builder-menu-editor ul.builder-menu > li.add span.title {
+ font-size: 14px;
+}
+.builder-menu-editor ul.builder-menu > li.add:hover {
+ border: 2px dotted #2581b8;
+ background: #2581b8 !important;
+}
+.builder-menu-editor ul.builder-menu > li.add:hover a {
+ color: white;
+}
+.builder-menu-editor ul.builder-menu > li.list-sortable-placeholder {
+ border: 2px dotted #2581b8;
+ height: 10px;
+ background: transparent;
+}
+.builder-menu-editor ul.builder-menu.builder-main-menu > li {
+ display: inline-block;
+ vertical-align: top;
+}
+.builder-menu-editor ul.builder-menu.builder-main-menu > li.item {
+ margin: 0 20px 20px 0;
+}
+.builder-menu-editor ul.builder-menu.builder-main-menu > li > div.item-container {
+ background: #ecf0f1;
+ color: #708080;
+ padding: 20px 25px;
+ height: 64px;
+ white-space: nowrap;
+}
+.builder-menu-editor ul.builder-menu.builder-main-menu > li > div.item-container i {
+ font-size: 24px;
+ margin-right: 10px;
+}
+.builder-menu-editor ul.builder-menu.builder-main-menu > li > div.item-container span.title {
+ font-size: 14px;
+ line-height: 100%;
+ position: relative;
+ top: -3px;
+}
+.builder-menu-editor ul.builder-menu.builder-main-menu > li.add {
+ height: 64px;
+}
+.builder-menu-editor ul.builder-menu.builder-main-menu > li.add a {
+ padding: 20px 15px;
+ height: 60px;
+ display: block;
+}
+.builder-menu-editor ul.builder-menu.builder-main-menu > li.add a i {
+ margin-right: 5px;
+}
+.builder-menu-editor ul.builder-menu.builder-main-menu > li.add a span {
+ position: relative;
+ top: -1px;
+}
+.builder-menu-editor ul.builder-menu.builder-submenu {
+ margin-top: 1px;
+}
+.builder-menu-editor ul.builder-menu.builder-submenu > li {
+ display: block;
+ width: 120px;
+}
+.builder-menu-editor ul.builder-menu.builder-submenu > li i {
+ display: block;
+ margin-bottom: 7px;
+}
+.builder-menu-editor ul.builder-menu.builder-submenu > li span.title {
+ display: block;
+ font-size: 12px;
+}
+.builder-menu-editor ul.builder-menu.builder-submenu > li.item {
+ margin: 0 0 1px 0;
+}
+.builder-menu-editor ul.builder-menu.builder-submenu > li > div.item-container {
+ background: #f3f5f5;
+ color: #94a5a6;
+ padding: 18px 13px;
+ text-align: center;
+}
+.builder-menu-editor ul.builder-menu.builder-submenu > li > div.item-container i {
+ font-size: 24px;
+}
+.builder-menu-editor ul.builder-menu.builder-submenu > li.add {
+ margin-top: 20px;
+}
+.builder-menu-editor ul.builder-menu.builder-submenu > li.add a {
+ padding: 10px 20px;
+ display: block;
+}
+.localization-input-container input[type=text].string-editor {
+ padding-right: 20px!important;
+}
+.localization-input-container .localization-trigger {
+ position: absolute;
+ display: none;
+ width: 10px;
+ height: 10px;
+ font-size: 14px;
+ color: #95a5a6;
+ outline: none;
+}
+.localization-input-container .localization-trigger:hover,
+.localization-input-container .localization-trigger:active,
+.localization-input-container .localization-trigger:focus {
+ color: #2581b8;
+ text-decoration: none;
+}
+table.inspector-fields td.active .localization-input-container .localization-trigger,
+table.data td.active .localization-input-container .localization-trigger {
+ display: block;
+}
+table.data td.active .localization-input-container .localization-trigger {
+ top: 5px!important;
+ right: 7px!important;
+}
+.control-table td[data-column-type=builderLocalization] input[type=text] {
+ padding-right: 20px!important;
+}
+.control-table td[data-column-type=builderLocalization] input[type=text] {
+ width: 100%;
+ height: 100%;
+ display: block;
+ outline: none;
+ border: none;
+ padding: 6px 10px 6px;
+}
+html.chrome .control-table td[data-column-type=builderLocalization] input[type=text] {
+ padding: 6px 10px 7px!important;
+}
+html.safari .control-table td[data-column-type=builderLocalization] input[type=text],
+html.gecko .control-table td[data-column-type=builderLocalization] input[type=text] {
+ padding: 5px 10px 5px;
+}
+.autocomplete.dropdown-menu.table-widget-autocomplete.localization li a {
+ white-space: normal;
+ word-wrap: break-word;
+}
+table.data td[data-column-type=builderLocalization] .loading-indicator-container.size-small .loading-indicator {
+ padding-bottom: 0!important;
+}
+table.data td[data-column-type=builderLocalization] .loading-indicator-container.size-small .loading-indicator span {
+ left: auto;
+ right: 6px;
+}
+.control-filelist ul li.group.model > h4 a:after {
+ content: "\f074";
+ top: 10px;
+}
+.control-filelist ul li.group.form > h4 a:after {
+ content: "\f14a";
+}
+.control-filelist ul li.group.list > h4 a:after {
+ content: "\f00b";
+ top: 10px;
+}
+.control-filelist ul li.group > ul > li.group > ul > li > a {
+ padding-left: 73px;
+ margin-left: -20px;
+}
+.control-filelist ul li.with-icon span.title,
+.control-filelist ul li.with-icon span.description {
+ padding-left: 22px;
+}
+.control-filelist ul li.with-icon i.list-icon {
+ position: absolute;
+ left: 20px;
+ top: 12px;
+ color: #405261;
+}
+.control-filelist ul li.with-icon i.list-icon.mute {
+ color: #8f8f8f;
+}
+.control-filelist ul li.with-icon i.list-icon.icon-check-square {
+ color: #8da85e;
+}
+html.gecko .control-filelist ul li.group {
+ margin-right: 10px;
+}
+.builder-inspector-container {
+ width: 350px;
+ border-left: 1px solid #d9d9d9;
+}
+.builder-inspector-container:empty {
+ display: none!important;
+}
+form.hide-secondary-tabs div.control-tabs.secondary-tabs ul.nav.nav-tabs {
+ display: none;
+}
+.form-group.size-quarter {
+ width: 23.5%;
+}
+.form-group.size-three-quarter {
+ width: 73.5%;
+}
+form[data-entity=database] div.field-datatable,
+form[data-entity=models] div.field-datatable {
+ position: absolute;
+ width: 100%;
+ height: 100%;
+}
+form[data-entity=database] div.field-datatable div[data-control=table],
+form[data-entity=models] div.field-datatable div[data-control=table] {
+ position: absolute;
+ width: 100%;
+ height: 100%;
+}
+form[data-entity=database] div.field-datatable div[data-control=table] div.table-container,
+form[data-entity=models] div.field-datatable div[data-control=table] div.table-container {
+ position: absolute;
+ width: 100%;
+ height: 100%;
+}
+form[data-entity=database] div.field-datatable div[data-control=table] div.table-container div.control-scrollbar,
+form[data-entity=models] div.field-datatable div[data-control=table] div.table-container div.control-scrollbar {
+ top: 70px;
+ bottom: 0;
+ position: absolute;
+ max-height: none!important;
+ height: auto!important;
+}
+.control-tabs.auxiliary-tabs {
+ background: white;
+}
+.control-tabs.auxiliary-tabs > ul.nav-tabs,
+.control-tabs.auxiliary-tabs > div > ul.nav-tabs {
+ padding-left: 20px;
+ padding-bottom: 2px;
+ background: white;
+ position: relative;
+}
+.control-tabs.auxiliary-tabs > ul.nav-tabs:before,
+.control-tabs.auxiliary-tabs > div > ul.nav-tabs:before {
+ content: ' ';
+ display: block;
+ position: absolute;
+ width: 100%;
+ height: 1px;
+ background: #95a5a6;
+ top: 0;
+ left: 0;
+}
+.control-tabs.auxiliary-tabs > ul.nav-tabs > li,
+.control-tabs.auxiliary-tabs > div > ul.nav-tabs > li {
+ margin-right: 2px;
+}
+.control-tabs.auxiliary-tabs > ul.nav-tabs > li > a,
+.control-tabs.auxiliary-tabs > div > ul.nav-tabs > li > a {
+ background: white;
+ color: #bdc3c7;
+ border-left: 1px solid #ecf0f1!important;
+ border-right: 1px solid #ecf0f1!important;
+ border-bottom: 1px solid #ecf0f1!important;
+ padding: 4px 10px;
+ line-height: 100%;
+ -webkit-border-radius: 0 0 4px 4px;
+ -moz-border-radius: 0 0 4px 4px;
+ border-radius: 0 0 4px 4px;
+}
+.control-tabs.auxiliary-tabs > ul.nav-tabs > li > a > span.title > span,
+.control-tabs.auxiliary-tabs > div > ul.nav-tabs > li > a > span.title > span {
+ margin-bottom: 0;
+ font-size: 13px;
+ height: auto;
+}
+.control-tabs.auxiliary-tabs > ul.nav-tabs > li.active,
+.control-tabs.auxiliary-tabs > div > ul.nav-tabs > li.active {
+ top: 0;
+}
+.control-tabs.auxiliary-tabs > ul.nav-tabs > li.active:before,
+.control-tabs.auxiliary-tabs > div > ul.nav-tabs > li.active:before {
+ content: ' ';
+ display: block;
+ position: absolute;
+ width: 100%;
+ height: 1px;
+ background: white;
+ top: 0;
+ left: 0;
+ top: -1px;
+}
+.control-tabs.auxiliary-tabs > ul.nav-tabs > li.active a,
+.control-tabs.auxiliary-tabs > div > ul.nav-tabs > li.active a {
+ padding-top: 5px;
+ border-left: 1px solid #95a5a6!important;
+ border-right: 1px solid #95a5a6!important;
+ border-bottom: 1px solid #95a5a6!important;
+ color: #95a5a6;
+}
+.control-tabs.auxiliary-tabs > div.tab-content > .tab-pane {
+ background: white;
+}
diff --git a/plugins/rainlab/builder/assets/images/loader-transparent.svg b/plugins/rainlab/builder/assets/images/loader-transparent.svg
deleted file mode 100644
index cf84589..0000000
--- a/plugins/rainlab/builder/assets/images/loader-transparent.svg
+++ /dev/null
@@ -1,20 +0,0 @@
-
-
-
-]>
-
diff --git a/plugins/rainlab/builder/assets/images/tab-dark.png b/plugins/rainlab/builder/assets/images/tab-dark.png
deleted file mode 100644
index 0862f05..0000000
Binary files a/plugins/rainlab/builder/assets/images/tab-dark.png and /dev/null differ
diff --git a/plugins/rainlab/builder/assets/js/build-min.js b/plugins/rainlab/builder/assets/js/build-min.js
index 849ef07..0d53b40 100644
--- a/plugins/rainlab/builder/assets/js/build-min.js
+++ b/plugins/rainlab/builder/assets/js/build-min.js
@@ -1 +1,834 @@
-!function($){"use strict";void 0===$.oc.builder&&($.oc.builder={});var Base=$.oc.foundation.base,DataRegistry=(Base.prototype,function(){this.data={},this.requestCache={},this.callbackCache={},Base.call(this)});DataRegistry.prototype.set=function(plugin,type,subtype,data,params){this.storeData(plugin,type,subtype,data),"localization"!=type||subtype||this.localizationUpdated(plugin,params)},DataRegistry.prototype.get=function($formElement,plugin,type,subtype,callback){if(void 0===this.data[plugin]||void 0===this.data[plugin][type]||void 0===this.data[plugin][type][subtype]||this.isCacheObsolete(this.data[plugin][type][subtype].timestamp))return this.loadDataFromServer($formElement,plugin,type,subtype,callback);callback(this.data[plugin][type][subtype].data)},DataRegistry.prototype.makeCacheKey=function(plugin,type,subtype){var key=plugin+"-"+type;return subtype&&(key+="-"+subtype),key},DataRegistry.prototype.isCacheObsolete=function(timestamp){return Date.now()-timestamp>3e5},DataRegistry.prototype.loadDataFromServer=function($formElement,plugin,type,subtype,callback){var self=this,cacheKey=this.makeCacheKey(plugin,type,subtype);return void 0===this.requestCache[cacheKey]&&(this.requestCache[cacheKey]=$formElement.request("onPluginDataRegistryGetData",{data:{registry_plugin_code:plugin,registry_data_type:type,registry_data_subtype:subtype}}).done((function(data){if(void 0===data.registryData)throw new Error("Invalid data registry response.");self.storeData(plugin,type,subtype,data.registryData),self.applyCallbacks(cacheKey,data.registryData),self.requestCache[cacheKey]=void 0}))),this.addCallbackToQueue(callback,cacheKey),this.requestCache[cacheKey]},DataRegistry.prototype.addCallbackToQueue=function(callback,key){void 0===this.callbackCache[key]&&(this.callbackCache[key]=[]),this.callbackCache[key].push(callback)},DataRegistry.prototype.applyCallbacks=function(key,registryData){if(void 0!==this.callbackCache[key]){for(var i=this.callbackCache[key].length-1;i>=0;i--)this.callbackCache[key][i](registryData);delete this.callbackCache[key]}},DataRegistry.prototype.storeData=function(plugin,type,subtype,data){void 0===this.data[plugin]&&(this.data[plugin]={}),void 0===this.data[plugin][type]&&(this.data[plugin][type]={});var dataItem={timestamp:Date.now(),data:data};this.data[plugin][type][subtype]=dataItem},DataRegistry.prototype.clearCache=function(plugin,type){void 0!==this.data[plugin]&&void 0!==this.data[plugin][type]&&(this.data[plugin][type]=void 0)},DataRegistry.prototype.getLocalizationString=function($formElement,plugin,key,callback){this.get($formElement,plugin,"localization",null,(function(data){void 0===data[key]?callback(key):callback(data[key])}))},DataRegistry.prototype.localizationUpdated=function(plugin,params){$.oc.builder.localizationInput.updatePluginInputs(plugin),void 0!==params&¶ms.suppressLanguageEditorUpdate||$.oc.builder.indexController.entityControllers.localization.languageUpdated(plugin),$.oc.builder.indexController.entityControllers.localization.updateOnScreenStrings(plugin)},$.oc.builder.dataRegistry=new DataRegistry}(window.jQuery),function($){"use strict";void 0===$.oc.builder&&($.oc.builder={}),void 0===$.oc.builder.entityControllers&&($.oc.builder.entityControllers={});var Base=$.oc.foundation.base,BaseProto=Base.prototype,EntityBase=function(typeName,indexController){if(void 0===typeName)throw new Error("The Builder entity type name should be set in the base constructor call.");if(void 0===indexController)throw new Error("The Builder index controller should be set when creating an entity controller.");this.typeName=typeName,this.indexController=indexController,Base.call(this)};(EntityBase.prototype=Object.create(BaseProto)).constructor=EntityBase,EntityBase.prototype.registerHandlers=function(){},EntityBase.prototype.invokeCommand=function(command,ev){if(!/^cmd[a-zA-Z0-9]+$/.test(command))throw new Error("Invalid command: "+command);if(void 0===this[command])throw new Error("Unknown command: "+command);this[command].apply(this,[ev])},EntityBase.prototype.newTabId=function(){return this.typeName+Math.random()},EntityBase.prototype.makeTabId=function(objectName){return this.typeName+"-"+objectName},EntityBase.prototype.getMasterTabsActivePane=function(){return this.indexController.getMasterTabActivePane()},EntityBase.prototype.getMasterTabsObject=function(){return this.indexController.masterTabsObj},EntityBase.prototype.getSelectedPlugin=function(){return $("#PluginList-pluginList-plugin-list > ul > li.active").data("id")},EntityBase.prototype.getIndexController=function(){return this.indexController},EntityBase.prototype.updateMasterTabIdAndTitle=function($tabPane,responseData){var tabsObject=this.getMasterTabsObject();tabsObject.updateIdentifier($tabPane,responseData.tabId),tabsObject.updateTitle($tabPane,responseData.tabTitle)},EntityBase.prototype.unhideFormDeleteButton=function($tabPane){$("[data-control=delete-button]",$tabPane).removeClass("hide oc-hide")},EntityBase.prototype.forceCloseTab=function($tabPane){$tabPane.trigger("close.oc.tab",[{force:!0}])},EntityBase.prototype.unmodifyTab=function($tabPane){this.indexController.unchangeTab($tabPane)},$.oc.builder.entityControllers.base=EntityBase}(window.jQuery),function($){"use strict";void 0===$.oc.builder&&($.oc.builder={}),void 0===$.oc.builder.entityControllers&&($.oc.builder.entityControllers={});var Base=$.oc.builder.entityControllers.base,BaseProto=Base.prototype,Plugin=function(indexController){Base.call(this,"plugin",indexController),this.popupZIndex=5050};(Plugin.prototype=Object.create(BaseProto)).constructor=Plugin,Plugin.prototype.cmdMakePluginActive=function(ev){var selectedPluginCode=$(ev.currentTarget).data("pluginCode");this.makePluginActive(selectedPluginCode)},Plugin.prototype.cmdCreatePlugin=function(ev){var $target=$(ev.currentTarget);$target.one("shown.oc.popup",this.proxy(this.onPluginPopupShown)),$target.popup({handler:"onPluginLoadPopup",zIndex:this.popupZIndex})},Plugin.prototype.cmdApplyPluginSettings=function(ev){var $form=$(ev.currentTarget),self=this;$.oc.stripeLoadIndicator.show(),$form.request("onPluginSave").always($.oc.builder.indexController.hideStripeIndicatorProxy).done((function(data){$form.trigger("close.oc.popup"),self.applyPluginSettingsDone(data)}))},Plugin.prototype.cmdEditPluginSettings=function(ev){var $target=$(ev.currentTarget);$target.one("shown.oc.popup",this.proxy(this.onPluginPopupShown)),$target.popup({handler:"onPluginLoadPopup",zIndex:this.popupZIndex,extraData:{pluginCode:$target.data("pluginCode")}})},Plugin.prototype.onPluginPopupShown=function(ev,button,popup){$(popup).find("input[name=name]").focus()},Plugin.prototype.applyPluginSettingsDone=function(data){void 0!==data.responseData&&void 0!==data.responseData.isNewPlugin&&this.makePluginActive(data.responseData.pluginCode,!0)},Plugin.prototype.makePluginActive=function(pluginCode,updatePluginList){var $form=$("#builder-plugin-selector-panel form").first();$.oc.stripeLoadIndicator.show(),$form.request("onPluginSetActive",{data:{pluginCode:pluginCode,updatePluginList:updatePluginList?1:0}}).always($.oc.builder.indexController.hideStripeIndicatorProxy).done(this.proxy(this.makePluginActiveDone))},Plugin.prototype.makePluginActiveDone=function(data){var pluginCode=data.responseData.pluginCode;$("#builder-plugin-selector-panel [data-control=filelist]").fileList("markActive",pluginCode)},$.oc.builder.entityControllers.plugin=Plugin}(window.jQuery),function($){"use strict";void 0===$.oc.builder&&($.oc.builder={}),void 0===$.oc.builder.entityControllers&&($.oc.builder.entityControllers={});var Base=$.oc.builder.entityControllers.base,BaseProto=Base.prototype,DatabaseTable=function(indexController){Base.call(this,"databaseTable",indexController)};(DatabaseTable.prototype=Object.create(BaseProto)).constructor=DatabaseTable,DatabaseTable.prototype.cmdCreateTable=function(ev){var result=this.indexController.openOrLoadMasterTab($(ev.target),"onDatabaseTableCreateOrOpen",this.newTabId());!1!==result&&result.done(this.proxy(this.onTableLoaded,this))},DatabaseTable.prototype.cmdOpenTable=function(ev){var table=$(ev.currentTarget).data("id"),result=this.indexController.openOrLoadMasterTab($(ev.target),"onDatabaseTableCreateOrOpen",this.makeTabId(table),{table_name:table});!1!==result&&result.done(this.proxy(this.onTableLoaded,this))},DatabaseTable.prototype.cmdSaveTable=function(ev){var $target=$(ev.currentTarget);if(this.validateTable($target)){var data={columns:this.getTableData($target)};$target.popup({extraData:data,handler:"onDatabaseTableValidateAndShowPopup"})}},DatabaseTable.prototype.cmdSaveMigration=function(ev){var $target=$(ev.currentTarget);$.oc.stripeLoadIndicator.show(),$target.request("onDatabaseTableMigrationApply").always($.oc.builder.indexController.hideStripeIndicatorProxy).done(this.proxy(this.saveMigrationDone))},DatabaseTable.prototype.cmdDeleteTable=function(ev){var $target=$(ev.currentTarget);$.oc.confirm($target.data("confirm"),this.proxy(this.deleteConfirmed))},DatabaseTable.prototype.cmdUnModifyForm=function(){var $masterTabPane=this.getMasterTabsActivePane();this.unmodifyTab($masterTabPane)},DatabaseTable.prototype.cmdAddIdColumn=function(ev){var $target=$(ev.currentTarget);this.addIdColumn($target)||alert($target.closest("form").attr("data-lang-id-exists"))},DatabaseTable.prototype.cmdAddTimestamps=function(ev){var $target=$(ev.currentTarget);this.addTimeStampColumns($target,["created_at","updated_at"])||alert($target.closest("form").attr("data-lang-timestamps-exist"))},DatabaseTable.prototype.cmdAddSoftDelete=function(ev){var $target=$(ev.currentTarget);this.addTimeStampColumns($target,["deleted_at"])||alert($target.closest("form").attr("data-lang-soft-deleting-exist"))},DatabaseTable.prototype.onTableCellChanged=function(ev,column,value,rowIndex){var $target=$(ev.target);if("columns"==$target.data("alias")&&"database"==$target.closest("form").data("entity")){var updatedRow={};"auto_increment"==column&&value&&(updatedRow.unsigned=1,updatedRow.primary_key=1),"unsigned"!=column||value||(updatedRow.auto_increment=0),"primary_key"==column&&value&&(updatedRow.allow_null=0),"allow_null"==column&&value&&(updatedRow.primary_key=0),"primary_key"!=column||value||(updatedRow.auto_increment=0),$target.table("setRowValues",rowIndex,updatedRow)}},DatabaseTable.prototype.onTableLoaded=function(){$(document).trigger("render");var $masterTabPane=this.getMasterTabsActivePane(),$form=$masterTabPane.find("form"),$toolbar=$masterTabPane.find("div[data-control=table] div.toolbar"),$addIdButton=$(''),$addTimestampsButton=$(''),$addSoftDeleteButton=$('');$addIdButton.text($form.attr("data-lang-add-id")),$toolbar.append($addIdButton),$addTimestampsButton.text($form.attr("data-lang-add-timestamps")),$toolbar.append($addTimestampsButton),$addSoftDeleteButton.text($form.attr("data-lang-add-soft-delete")),$toolbar.append($addSoftDeleteButton)},DatabaseTable.prototype.registerHandlers=function(){this.indexController.$masterTabs.on("oc.tableCellChanged",this.proxy(this.onTableCellChanged))},DatabaseTable.prototype.validateTable=function($target){var tableObj=this.getTableControlObject($target);return tableObj.unfocusTable(),tableObj.validate()},DatabaseTable.prototype.getTableData=function($target){return this.getTableControlObject($target).dataSource.getAllData()},DatabaseTable.prototype.getTableControlObject=function($target){var tableObj=$target.closest("form").find("[data-control=table]").data("oc.table");if(!tableObj)throw new Error("Table object is not found on the database table tab");return tableObj},DatabaseTable.prototype.saveMigrationDone=function(data){if(void 0===data.builderResponseData)throw new Error("Invalid response data");$("#builderTableMigrationPopup").trigger("close.oc.popup");var $masterTabPane=this.getMasterTabsActivePane();this.getMasterTabsObject();"delete"!=data.builderResponseData.operation?($masterTabPane.find("input[name=table_name]").val(data.builderResponseData.builderObjectName),this.updateMasterTabIdAndTitle($masterTabPane,data.builderResponseData),this.unhideFormDeleteButton($masterTabPane),this.getTableList().fileList("markActive",data.builderResponseData.tabId),this.getIndexController().unchangeTab($masterTabPane),this.updateTable(data.builderResponseData)):this.forceCloseTab($masterTabPane),$.oc.builder.dataRegistry.clearCache(data.builderResponseData.pluginCode,"model-columns")},DatabaseTable.prototype.getTableList=function(){return $("#layout-side-panel form[data-content-id=database] [data-control=filelist]")},DatabaseTable.prototype.deleteConfirmed=function(){this.getMasterTabsActivePane().find("form").popup({handler:"onDatabaseTableShowDeletePopup"})},DatabaseTable.prototype.getColumnNames=function($target){this.getTableControlObject($target).unfocusTable();var data=this.getTableData($target),result=[];for(var index in data)void 0!==data[index].name&&result.push($.trim(data[index].name));return result},DatabaseTable.prototype.addIdColumn=function($target){var added=!1;if(-1===this.getColumnNames($target).indexOf("id")){var tableObj=this.getTableControlObject($target),currentData=this.getTableData($target);(currentData.length-1||currentData[0].name||currentData[0].type||currentData[0].length||currentData[0].unsigned||currentData[0].nullable||currentData[0].auto_increment||currentData[0].primary_key||currentData[0].default)&&tableObj.addRecord("bottom",!0),tableObj.setRowValues(currentData.length-1,{name:"id",type:"integer",unsigned:!0,auto_increment:!0,primary_key:!0}),tableObj.addRecord("bottom",!1),tableObj.deleteRecord(),added=!0}return added&&$target.trigger("change"),added},DatabaseTable.prototype.addTimeStampColumns=function($target,columns){var existingColumns=this.getColumnNames($target),added=!1;for(var index in columns){var column=columns[index];-1===existingColumns.indexOf(column)&&(this.addTimeStampColumn($target,column),added=!0)}return added&&$target.trigger("change"),added},DatabaseTable.prototype.addTimeStampColumn=function($target,column){var tableObj=this.getTableControlObject($target),currentData=this.getTableData($target),rowData={name:column,type:"timestamp",default:null,allow_null:!0};tableObj.addRecord("bottom",!0),tableObj.setRowValues(currentData.length-1,rowData),tableObj.addRecord("bottom",!1),tableObj.deleteRecord()},DatabaseTable.prototype.updateTable=function(data){var tabsObject=this.getMasterTabsObject(),tab=$("#builder-master-tabs").data("oc.tab").findByIdentifier(data.tabId);tabsObject.updateTab(tab,data.tableName,data.tab),this.onTableLoaded()},$.oc.builder.entityControllers.databaseTable=DatabaseTable}(window.jQuery),function($){"use strict";void 0===$.oc.builder&&($.oc.builder={}),void 0===$.oc.builder.entityControllers&&($.oc.builder.entityControllers={});var Base=$.oc.builder.entityControllers.base,BaseProto=Base.prototype,Model=function(indexController){Base.call(this,"model",indexController)};(Model.prototype=Object.create(BaseProto)).constructor=Model,Model.prototype.cmdCreateModel=function(ev){var $target=$(ev.currentTarget);$target.one("shown.oc.popup",this.proxy(this.onModelPopupShown)),$target.popup({handler:"onModelLoadPopup"})},Model.prototype.cmdApplyModelSettings=function(ev){var $form=$(ev.currentTarget),self=this;$.oc.stripeLoadIndicator.show(),$form.request("onModelSave").always($.oc.builder.indexController.hideStripeIndicatorProxy).done((function(data){$form.trigger("close.oc.popup"),self.applyModelSettingsDone(data)}))},Model.prototype.onModelPopupShown=function(ev,button,popup){$(popup).find("input[name=className]").focus()},Model.prototype.applyModelSettingsDone=function(data){if(void 0!==data.builderResponseData.registryData){var registryData=data.builderResponseData.registryData;$.oc.builder.dataRegistry.set(registryData.pluginCode,"model-classes",null,registryData.models)}},$.oc.builder.entityControllers.model=Model}(window.jQuery),function($){"use strict";void 0===$.oc.builder&&($.oc.builder={}),void 0===$.oc.builder.entityControllers&&($.oc.builder.entityControllers={});var Base=$.oc.builder.entityControllers.base,BaseProto=Base.prototype,ModelForm=function(indexController){Base.call(this,"modelForm",indexController)};(ModelForm.prototype=Object.create(BaseProto)).constructor=ModelForm,ModelForm.prototype.cmdCreateForm=function(ev){var $link=$(ev.currentTarget),data={model_class:$link.data("modelClass")};this.indexController.openOrLoadMasterTab($link,"onModelFormCreateOrOpen",this.newTabId(),data)},ModelForm.prototype.cmdSaveForm=function(ev){var $target=$(ev.currentTarget),$form=$target.closest("form"),$rootContainer=$("[data-root-control-wrapper] > [data-control-container]",$form),$inspectorContainer=$form.find(".inspector-container"),controls=$.oc.builder.formbuilder.domToPropertyJson.convert($rootContainer.get(0));if($.oc.inspector.manager.applyValuesFromContainer($inspectorContainer))if(!1!==controls){var data={controls:controls};$target.request("onModelFormSave",{data:data}).done(this.proxy(this.saveFormDone))}else $.oc.flashMsg({text:$.oc.builder.formbuilder.domToPropertyJson.getLastError(),class:"error",interval:5})},ModelForm.prototype.cmdAddDatabaseFields=function(ev){var $target=$(ev.currentTarget),$placeholder=this.getMasterTabsActivePane().find(".builder-control-list .control.oc-placeholder:first")[0],fields=$target.find(".control-table").data("oc.table").dataSource.data.filter((function(column){return column.add})).reverse();$target.closest(".control-popup").data("oc.popup").hide(),$.oc.stripeLoadIndicator.show();var allFields=$.when({});$.each(fields,(function(index,field){allFields=allFields.then(function(field){return function(){var defer=$.Deferred();return $.oc.builder.formbuilder.controller.addControlToPlaceholder($placeholder,field.type,field.label?field.label:field.column,!1,field.column).always((function(){defer.resolve()})),defer.promise()}}(field))})),$.when(allFields).always($.oc.builder.indexController.hideStripeIndicatorProxy)},ModelForm.prototype.cmdOpenForm=function(ev){var form=$(ev.currentTarget).data("form"),model=$(ev.currentTarget).data("modelClass");this.indexController.openOrLoadMasterTab($(ev.target),"onModelFormCreateOrOpen",this.makeTabId(model+"-"+form),{file_name:form,model_class:model})},ModelForm.prototype.cmdDeleteForm=function(ev){var $target=$(ev.currentTarget);$.oc.confirm($target.data("confirm"),this.proxy(this.deleteConfirmed))},ModelForm.prototype.cmdAddControl=function(ev){$.oc.builder.formbuilder.controlPalette.addControl(ev)},ModelForm.prototype.cmdUndockControlPalette=function(ev){$.oc.builder.formbuilder.controlPalette.undockFromContainer(ev)},ModelForm.prototype.cmdDockControlPalette=function(ev){$.oc.builder.formbuilder.controlPalette.dockToContainer(ev)},ModelForm.prototype.cmdCloseControlPalette=function(ev){$.oc.builder.formbuilder.controlPalette.closeInContainer(ev)},ModelForm.prototype.saveFormDone=function(data){if(void 0===data.builderResponseData)throw new Error("Invalid response data");var $masterTabPane=this.getMasterTabsActivePane();$masterTabPane.find("input[name=file_name]").val(data.builderResponseData.builderObjectName),this.updateMasterTabIdAndTitle($masterTabPane,data.builderResponseData),this.unhideFormDeleteButton($masterTabPane),this.getModelList().fileList("markActive",data.builderResponseData.tabId),this.getIndexController().unchangeTab($masterTabPane),this.updateDataRegistry(data)},ModelForm.prototype.updateDataRegistry=function(data){if(void 0!==data.builderResponseData.registryData){var registryData=data.builderResponseData.registryData;$.oc.builder.dataRegistry.set(registryData.pluginCode,"model-forms",registryData.modelClass,registryData.forms)}},ModelForm.prototype.deleteConfirmed=function(){var $form=this.getMasterTabsActivePane().find("form");$.oc.stripeLoadIndicator.show(),$form.request("onModelFormDelete").always($.oc.builder.indexController.hideStripeIndicatorProxy).done(this.proxy(this.deleteDone))},ModelForm.prototype.deleteDone=function(data){var $masterTabPane=this.getMasterTabsActivePane();this.getIndexController().unchangeTab($masterTabPane),this.forceCloseTab($masterTabPane),this.updateDataRegistry(data)},ModelForm.prototype.getModelList=function(){return $("#layout-side-panel form[data-content-id=models] [data-control=filelist]")},$.oc.builder.entityControllers.modelForm=ModelForm}(window.jQuery),function($){"use strict";void 0===$.oc.builder&&($.oc.builder={}),void 0===$.oc.builder.entityControllers&&($.oc.builder.entityControllers={});var Base=$.oc.builder.entityControllers.base,BaseProto=Base.prototype,ModelList=function(indexController){this.cachedModelFieldsPromises={},Base.call(this,"modelList",indexController)};(ModelList.prototype=Object.create(BaseProto)).constructor=ModelList,ModelList.prototype.registerHandlers=function(){$(document).on("autocompleteitems.oc.table",'form[data-sub-entity="model-list"] [data-control=table]',this.proxy(this.onAutocompleteItems))},ModelList.prototype.cmdCreateList=function(ev){var $link=$(ev.currentTarget),data={model_class:$link.data("modelClass")},result=this.indexController.openOrLoadMasterTab($link,"onModelListCreateOrOpen",this.newTabId(),data);!1!==result&&result.done(this.proxy(this.onListLoaded,this))},ModelList.prototype.cmdSaveList=function(ev){var $target=$(ev.currentTarget);$target.closest("form");this.validateTable($target)&&$target.request("onModelListSave",{data:{columns:this.getTableData($target)}}).done(this.proxy(this.saveListDone))},ModelList.prototype.cmdOpenList=function(ev){var list=$(ev.currentTarget).data("list"),model=$(ev.currentTarget).data("modelClass"),result=this.indexController.openOrLoadMasterTab($(ev.target),"onModelListCreateOrOpen",this.makeTabId(model+"-"+list),{file_name:list,model_class:model});!1!==result&&result.done(this.proxy(this.onListLoaded,this))},ModelList.prototype.cmdDeleteList=function(ev){var $target=$(ev.currentTarget);$.oc.confirm($target.data("confirm"),this.proxy(this.deleteConfirmed))},ModelList.prototype.cmdAddDatabaseColumns=function(ev){var $target=$(ev.currentTarget);$.oc.stripeLoadIndicator.show(),$target.request("onModelListLoadDatabaseColumns").done(this.proxy(this.databaseColumnsLoaded)).always($.oc.builder.indexController.hideStripeIndicatorProxy)},ModelList.prototype.saveListDone=function(data){if(void 0===data.builderResponseData)throw new Error("Invalid response data");var $masterTabPane=this.getMasterTabsActivePane();$masterTabPane.find("input[name=file_name]").val(data.builderResponseData.builderObjectName),this.updateMasterTabIdAndTitle($masterTabPane,data.builderResponseData),this.unhideFormDeleteButton($masterTabPane),this.getModelList().fileList("markActive",data.builderResponseData.tabId),this.getIndexController().unchangeTab($masterTabPane),this.updateDataRegistry(data)},ModelList.prototype.deleteConfirmed=function(){var $form=this.getMasterTabsActivePane().find("form");$.oc.stripeLoadIndicator.show(),$form.request("onModelListDelete").always($.oc.builder.indexController.hideStripeIndicatorProxy).done(this.proxy(this.deleteDone))},ModelList.prototype.deleteDone=function(data){var $masterTabPane=this.getMasterTabsActivePane();this.getIndexController().unchangeTab($masterTabPane),this.forceCloseTab($masterTabPane),this.updateDataRegistry(data)},ModelList.prototype.getTableControlObject=function($target){var tableObj=$target.closest("form").find("[data-control=table]").data("oc.table");if(!tableObj)throw new Error("Table object is not found on the model list tab");return tableObj},ModelList.prototype.getModelList=function(){return $("#layout-side-panel form[data-content-id=models] [data-control=filelist]")},ModelList.prototype.validateTable=function($target){var tableObj=this.getTableControlObject($target);return tableObj.unfocusTable(),tableObj.validate()},ModelList.prototype.getTableData=function($target){return this.getTableControlObject($target).dataSource.getAllData()},ModelList.prototype.loadModelFields=function(table,callback){var $form=$(table).closest("form"),modelClass=$form.find("input[name=model_class]").val(),cachedFields=$form.data("oc.model-field-cache");void 0===cachedFields?(void 0===this.cachedModelFieldsPromises[modelClass]&&(this.cachedModelFieldsPromises[modelClass]=$form.request("onModelFormGetModelFields",{data:{as_plain_list:1}})),void 0!==callback&&this.cachedModelFieldsPromises[modelClass].done((function(data){$form.data("oc.model-field-cache",data.responseData.options),callback(data.responseData.options)}))):callback(cachedFields)},ModelList.prototype.updateDataRegistry=function(data){if(void 0!==data.builderResponseData.registryData){var registryData=data.builderResponseData.registryData;$.oc.builder.dataRegistry.set(registryData.pluginCode,"model-lists",registryData.modelClass,registryData.lists),$.oc.builder.dataRegistry.clearCache(registryData.pluginCode,"plugin-lists")}},ModelList.prototype.databaseColumnsLoaded=function(data){$.isArray(data.responseData.columns)||alert("Invalid server response");var $form=this.getMasterTabsActivePane().find("form"),existingColumns=this.getColumnNames($form),columnsAdded=!1;for(var i in data.responseData.columns){var column=data.responseData.columns[i],type=this.mapType(column.type);-1===$.inArray(column.name,existingColumns)&&(this.addColumn($form,column.name,type),columnsAdded=!0)}columnsAdded?$form.trigger("change"):alert($form.attr("data-lang-all-database-columns-exist"))},ModelList.prototype.mapType=function(type){switch(type){case"integer":return"number";case"timestamp":return"datetime";default:return"text"}},ModelList.prototype.addColumn=function($target,column,type){var tableObj=this.getTableControlObject($target),currentData=this.getTableData($target),rowData={field:column,label:column,type:type};tableObj.addRecord("bottom",!0),tableObj.setRowValues(currentData.length-1,rowData),tableObj.addRecord("bottom",!1),tableObj.deleteRecord()},ModelList.prototype.getColumnNames=function($target){this.getTableControlObject($target).unfocusTable();var data=this.getTableData($target),result=[];for(var index in data)void 0!==data[index].field&&result.push($.trim(data[index].field));return result},ModelList.prototype.onAutocompleteItems=function(ev,data){if("model-fields"===data.columnConfiguration.fillFrom)return ev.preventDefault(),this.loadModelFields(ev.target,data.callback),!1},ModelList.prototype.onListLoaded=function(){$(document).trigger("render");var $masterTabPane=this.getMasterTabsActivePane(),$form=$masterTabPane.find("form"),$toolbar=$masterTabPane.find("div[data-control=table] div.toolbar"),$button=$('');$button.text($form.attr("data-lang-add-database-columns")),$toolbar.append($button)},$.oc.builder.entityControllers.modelList=ModelList}(window.jQuery),function($){"use strict";void 0===$.oc.builder&&($.oc.builder={}),void 0===$.oc.builder.entityControllers&&($.oc.builder.entityControllers={});var Base=$.oc.builder.entityControllers.base,BaseProto=Base.prototype,Permission=function(indexController){Base.call(this,"permissions",indexController)};(Permission.prototype=Object.create(BaseProto)).constructor=Permission,Permission.prototype.registerHandlers=function(){this.indexController.$masterTabs.on("oc.tableNewRow",this.proxy(this.onTableRowCreated))},Permission.prototype.cmdOpenPermissions=function(ev){var currentPlugin=this.getSelectedPlugin();currentPlugin?this.indexController.openOrLoadMasterTab($(ev.target),"onPermissionsOpen",this.makeTabId(currentPlugin)):alert("Please select a plugin first")},Permission.prototype.cmdSavePermissions=function(ev){var $target=$(ev.currentTarget);$target.closest("form");this.validateTable($target)&&$target.request("onPermissionsSave",{data:{permissions:this.getTableData($target)}}).done(this.proxy(this.savePermissionsDone))},Permission.prototype.getTableControlObject=function($target){var tableObj=$target.closest("form").find("[data-control=table]").data("oc.table");if(!tableObj)throw new Error("Table object is not found on permissions tab");return tableObj},Permission.prototype.validateTable=function($target){var tableObj=this.getTableControlObject($target);return tableObj.unfocusTable(),tableObj.validate()},Permission.prototype.getTableData=function($target){return this.getTableControlObject($target).dataSource.getAllData()},Permission.prototype.savePermissionsDone=function(data){if(void 0===data.builderResponseData)throw new Error("Invalid response data");var $masterTabPane=this.getMasterTabsActivePane();this.getIndexController().unchangeTab($masterTabPane),$.oc.builder.dataRegistry.clearCache(data.builderResponseData.pluginCode,"permissions")},Permission.prototype.onTableRowCreated=function(ev,recordData){var $target=$(ev.target);if("permissions"==$target.data("alias")){var $form=$target.closest("form");if("permissions"==$form.data("entity")){var pluginCode=$form.find("input[name=plugin_code]").val();recordData.permission=pluginCode.toLowerCase()+"."}}},$.oc.builder.entityControllers.permission=Permission}(window.jQuery),function($){"use strict";void 0===$.oc.builder&&($.oc.builder={}),void 0===$.oc.builder.entityControllers&&($.oc.builder.entityControllers={});var Base=$.oc.builder.entityControllers.base,BaseProto=Base.prototype,Menus=function(indexController){Base.call(this,"menus",indexController)};(Menus.prototype=Object.create(BaseProto)).constructor=Menus,Menus.prototype.cmdOpenMenus=function(ev){var currentPlugin=this.getSelectedPlugin();currentPlugin?this.indexController.openOrLoadMasterTab($(ev.target),"onMenusOpen",this.makeTabId(currentPlugin)):alert("Please select a plugin first")},Menus.prototype.cmdSaveMenus=function(ev){var $target=$(ev.currentTarget),$form=$target.closest("form"),$inspectorContainer=$form.find(".inspector-container");if($.oc.inspector.manager.applyValuesFromContainer($inspectorContainer)){var menus=$.oc.builder.menubuilder.controller.getJson($form.get(0));$target.request("onMenusSave",{data:{menus:menus}}).done(this.proxy(this.saveMenusDone))}},Menus.prototype.cmdAddMainMenuItem=function(ev){$.oc.builder.menubuilder.controller.addMainMenuItem(ev)},Menus.prototype.cmdAddSideMenuItem=function(ev){$.oc.builder.menubuilder.controller.addSideMenuItem(ev)},Menus.prototype.cmdDeleteMenuItem=function(ev){$.oc.builder.menubuilder.controller.deleteMenuItem(ev)},Menus.prototype.saveMenusDone=function(data){if(void 0===data.builderResponseData)throw new Error("Invalid response data");var $masterTabPane=this.getMasterTabsActivePane();$.oc.mainMenu&&data.mainMenu&&data.mainMenuLeft&&$.oc.mainMenu.reload(data.mainMenu,data.mainMenuLeft),this.getIndexController().unchangeTab($masterTabPane)},$.oc.builder.entityControllers.menus=Menus}(window.jQuery),function($){"use strict";void 0===$.oc.builder&&($.oc.builder={}),void 0===$.oc.builder.entityControllers&&($.oc.builder.entityControllers={});var Base=$.oc.builder.entityControllers.base,BaseProto=Base.prototype,Imports=function(indexController){Base.call(this,"imports",indexController)};(Imports.prototype=Object.create(BaseProto)).constructor=Imports,Imports.prototype.cmdOpenImports=function(ev){var currentPlugin=this.getSelectedPlugin();currentPlugin?this.indexController.openOrLoadMasterTab($(ev.target),"onImportsOpen",this.makeTabId(currentPlugin)):alert("Please select a plugin first")},Imports.prototype.cmdConfirmImports=function(ev){$(ev.currentTarget).popup({handler:"onImportsShowConfirmPopup"})},Imports.prototype.cmdSaveImports=function(ev){var $form=this.getMasterTabsActivePane().find("form"),$popup=$(ev.currentTarget).closest(".control-popup");$popup.removeClass("show").popup("setLoading",!0),$form.request("onImportsSave",{data:oc.serializeJSON($popup.get(0))}).done((data=>{$popup.trigger("close.oc.popup"),this.saveImportsDone(data)})).fail((()=>{$popup.addClass("show").popup("setLoading",!1).popup("setShake")}))},Imports.prototype.cmdMigrateDatabase=function(ev){$(ev.currentTarget).request("onMigrateDatabase")},Imports.prototype.cmdAddBlueprintItem=function(ev){},Imports.prototype.cmdRemoveBlueprintItem=function(ev){},Imports.prototype.saveImportsDone=function(data){this.hideInspector(),$("#blueprintList").html(""),$.oc.mainMenu&&data&&data.mainMenu&&data.mainMenuLeft&&$.oc.mainMenu.reload(data.mainMenu,data.mainMenuLeft);var $masterTabPane=this.getMasterTabsActivePane();this.getIndexController().unchangeTab($masterTabPane)},Imports.prototype.hideInspector=function(){var $container=$(".blueprint-container.inspector-open:first");if($container.length){var $inspectorContainer=this.findInspectorContainer($container);$.oc.foundation.controlUtils.disposeControls($inspectorContainer.get(0))}},Imports.prototype.findInspectorContainer=function($element){return $element.closest("[data-inspector-container]").find(".inspector-container")},$.oc.builder.entityControllers.imports=Imports}(window.jQuery),function($){"use strict";void 0===$.oc.builder&&($.oc.builder={}),void 0===$.oc.builder.entityControllers&&($.oc.builder.entityControllers={});var Base=$.oc.builder.entityControllers.base,BaseProto=Base.prototype,Code=function(indexController){Base.call(this,"code",indexController)};(Code.prototype=Object.create(BaseProto)).constructor=Code,Code.prototype.registerHandlers=function(){},Code.prototype.cmdCreateCode=function(ev){this.indexController.openOrLoadMasterTab($(ev.target),"onCodeOpen",this.newTabId())},Code.prototype.cmdOpenCode=function(ev){var path=$(ev.currentTarget).data("path"),pluginCode=$(ev.currentTarget).data("pluginCode"),result=this.indexController.openOrLoadMasterTab($(ev.target),"onCodeOpen",this.makeTabId(pluginCode+"-"+path),{fileName:path});!1!==result&&result.done(this.proxy(this.updateFormEditorMode,this))},Code.prototype.cmdSaveCode=function(ev){var $target=$(ev.currentTarget),$inspectorContainer=$target.closest("form").find(".inspector-container");$.oc.inspector.manager.applyValuesFromContainer($inspectorContainer)&&$target.request("onCodeSave").done(this.proxy(this.saveCodeDone))},Code.prototype.saveCodeDone=function(data){if(void 0===data.builderResponseData)throw new Error("Invalid response data");var $masterTabPane=this.getMasterTabsActivePane();this.getIndexController().unchangeTab($masterTabPane),this.updateFormEditorMode()},Code.prototype.getCodeList=function(){return $("#layout-side-panel form[data-content-id=code] .control-codelist")},Code.prototype.updateFormEditorMode=function(){var $masterTabPane=this.getMasterTabsActivePane(),modes={css:"css",htm:"html",html:"html",js:"javascript",json:"json",less:"less",md:"markdown",sass:"sass",scss:"scss",txt:"plain_text",yaml:"yaml",xml:"xml",php:"php"},parts=$("input[name=fileName]",$masterTabPane).val().split("."),extension="txt",mode="plain_text",editor=$("[data-control=codeeditor]",$masterTabPane);parts.length>=2&&(extension=parts.pop().toLowerCase()),void 0!==modes[extension]&&(mode=modes[extension]);window.setTimeout((function(){editor.data("oc.codeEditor").editor.getSession().setMode({path:"ace/mode/"+mode})}),200)},$.oc.builder.entityControllers.code=Code}(window.jQuery),function($){"use strict";void 0===$.oc.builder&&($.oc.builder={}),void 0===$.oc.builder.entityControllers&&($.oc.builder.entityControllers={});var Base=$.oc.builder.entityControllers.base,BaseProto=Base.prototype,Version=function(indexController){Base.call(this,"version",indexController),this.hiddenHints={}};(Version.prototype=Object.create(BaseProto)).constructor=Version,Version.prototype.cmdCreateVersion=function(ev){var $link=$(ev.currentTarget),versionType=$link.data("versionType");this.indexController.openOrLoadMasterTab($link,"onVersionCreateOrOpen",this.newTabId(),{version_type:versionType})},Version.prototype.cmdSaveVersion=function(ev){var $target=$(ev.currentTarget);$target.closest("form");$target.request("onVersionSave").done(this.proxy(this.saveVersionDone))},Version.prototype.cmdOpenVersion=function(ev){var versionNumber=$(ev.currentTarget).data("id"),pluginCode=$(ev.currentTarget).data("pluginCode");this.indexController.openOrLoadMasterTab($(ev.target),"onVersionCreateOrOpen",this.makeTabId(pluginCode+"-"+versionNumber),{original_version:versionNumber})},Version.prototype.cmdDeleteVersion=function(ev){var $target=$(ev.currentTarget);$.oc.confirm($target.data("confirm"),this.proxy(this.deleteConfirmed))},Version.prototype.cmdApplyVersion=function(ev){var $target=$(ev.currentTarget),$pane=$target.closest("div.tab-pane"),self=this;this.showHintPopup($pane,"builder-version-apply",(function(){$target.request("onVersionApply").done(self.proxy(self.applyVersionDone))}))},Version.prototype.cmdRollbackVersion=function(ev){var $target=$(ev.currentTarget),$pane=$target.closest("div.tab-pane"),self=this;this.showHintPopup($pane,"builder-version-rollback",(function(){$target.request("onVersionRollback").done(self.proxy(self.rollbackVersionDone))}))},Version.prototype.saveVersionDone=function(data){if(void 0===data.builderResponseData)throw new Error("Invalid response data");var $masterTabPane=this.getMasterTabsActivePane();this.updateUiAfterSave($masterTabPane,data),data.builderResponseData.isApplied||this.showSavedNotAppliedHint($masterTabPane)},Version.prototype.showSavedNotAppliedHint=function($masterTabPane){this.showHintPopup($masterTabPane,"builder-version-save-unapplied")},Version.prototype.showHintPopup=function($masterTabPane,code,callback){this.getDontShowHintAgain(code,$masterTabPane)?callback&&callback.apply(this):($masterTabPane.one("hide.oc.popup",this.proxy(this.onHintPopupHide)),callback&&$masterTabPane.one("shown.oc.popup",(function(ev,$element,$modal){$modal.find("form").one("submit",(function(ev){return callback.apply(this),ev.preventDefault(),$(ev.target).trigger("close.oc.popup"),!1}))})),$masterTabPane.popup({content:this.getPopupContent($masterTabPane,code)}))},Version.prototype.onHintPopupHide=function(ev,$element,$modal){var cbValue=$modal.find("input[type=checkbox][name=dont_show_again]").is(":checked"),code=$modal.find("input[type=hidden][name=hint_code]").val();($modal.find("form").off("submit"),cbValue)&&(this.getMasterTabsActivePane().find('form[data-entity="versions"]').request("onHideBackendHint",{data:{name:code}}),this.setDontShowHintAgain(code))},Version.prototype.setDontShowHintAgain=function(code){this.hiddenHints[code]=!0},Version.prototype.getDontShowHintAgain=function(code,$pane){return void 0!==this.hiddenHints[code]?this.hiddenHints[code]:"true"==$pane.find('input[type=hidden][data-hint-hidden="'+code+'"]').val()},Version.prototype.getPopupContent=function($pane,code){var template=$pane.find('script[data-version-hint-template="'+code+'"]');if(0===template.length)throw new Error("Version popup template not found: "+code);return template.html()},Version.prototype.updateUiAfterSave=function($masterTabPane,data){$masterTabPane.find("input[name=original_version]").val(data.builderResponseData.savedVersion),this.updateMasterTabIdAndTitle($masterTabPane,data.builderResponseData),this.unhideFormDeleteButton($masterTabPane),this.getVersionList().fileList("markActive",data.builderResponseData.tabId),this.getIndexController().unchangeTab($masterTabPane)},Version.prototype.deleteConfirmed=function(){var $form=this.getMasterTabsActivePane().find("form");$.oc.stripeLoadIndicator.show(),$form.request("onVersionDelete").always($.oc.builder.indexController.hideStripeIndicatorProxy).done(this.proxy(this.deleteDone))},Version.prototype.deleteDone=function(){var $masterTabPane=this.getMasterTabsActivePane();this.getIndexController().unchangeTab($masterTabPane),this.forceCloseTab($masterTabPane)},Version.prototype.applyVersionDone=function(data){if(void 0===data.builderResponseData)throw new Error("Invalid response data");var $masterTabPane=this.getMasterTabsActivePane();this.updateUiAfterSave($masterTabPane,data),this.updateVersionsButtons()},Version.prototype.rollbackVersionDone=function(data){if(void 0===data.builderResponseData)throw new Error("Invalid response data");var $masterTabPane=this.getMasterTabsActivePane();this.updateUiAfterSave($masterTabPane,data),this.updateVersionsButtons()},Version.prototype.getVersionList=function(){return $("#layout-side-panel form[data-content-id=version] [data-control=filelist]")},Version.prototype.updateVersionsButtons=function(){for(var tabsObject=this.getMasterTabsObject(),$tabs=tabsObject.$tabsContainer.find("> li"),$versionList=this.getVersionList(),i=$tabs.length-1;i>=0;i--){var $tab=$($tabs[i]),tabId=$tab.data("tabId");if(tabId&&0!=String(tabId).length){var $versionLi=$versionList.find('li[data-id="'+tabId+'"]');if($versionLi.length){var isApplied=$versionLi.data("applied"),$pane=tabsObject.findPaneFromTab($tab);isApplied?($pane.find('[data-builder-command="version:cmdApplyVersion"]').addClass("hide oc-hide"),$pane.find('[data-builder-command="version:cmdRollbackVersion"]').removeClass("hide oc-hide")):($pane.find('[data-builder-command="version:cmdApplyVersion"]').removeClass("hide oc-hide"),$pane.find('[data-builder-command="version:cmdRollbackVersion"]').addClass("hide oc-hide"))}}}},$.oc.builder.entityControllers.version=Version}(window.jQuery),function($){"use strict";void 0===$.oc.builder&&($.oc.builder={}),void 0===$.oc.builder.entityControllers&&($.oc.builder.entityControllers={});var Base=$.oc.builder.entityControllers.base,BaseProto=Base.prototype,Localization=function(indexController){Base.call(this,"localization",indexController)};(Localization.prototype=Object.create(BaseProto)).constructor=Localization,Localization.prototype.cmdCreateLanguage=function(ev){this.indexController.openOrLoadMasterTab($(ev.target),"onLanguageCreateOrOpen",this.newTabId())},Localization.prototype.cmdOpenLanguage=function(ev){var language=$(ev.currentTarget).data("id"),pluginCode=$(ev.currentTarget).data("pluginCode");this.indexController.openOrLoadMasterTab($(ev.target),"onLanguageCreateOrOpen",this.makeTabId(pluginCode+"-"+language),{original_language:language})},Localization.prototype.cmdSaveLanguage=function(ev){var $target=$(ev.currentTarget);$target.closest("form");$target.request("onLanguageSave").done(this.proxy(this.saveLanguageDone))},Localization.prototype.cmdDeleteLanguage=function(ev){var $target=$(ev.currentTarget);$.oc.confirm($target.data("confirm"),this.proxy(this.deleteConfirmed))},Localization.prototype.cmdCopyMissingStrings=function(ev){var $form=$(ev.currentTarget),language=$form.find("select[name=language]").val(),$masterTabPane=this.getMasterTabsActivePane();$form.trigger("close.oc.popup"),$.oc.stripeLoadIndicator.show(),$masterTabPane.find("form").request("onLanguageCopyStringsFrom",{data:{copy_from:language}}).always($.oc.builder.indexController.hideStripeIndicatorProxy).done(this.proxy(this.copyStringsFromDone))},Localization.prototype.languageUpdated=function(plugin){var languageForm=this.findDefaultLanguageForm(plugin);if(languageForm){var $languageForm=$(languageForm);$languageForm.hasClass("oc-data-changed")?this.mergeLanguageFromServer($languageForm):this.updateLanguageFromServer($languageForm)}},Localization.prototype.updateOnScreenStrings=function(plugin){var stringElements=document.body.querySelectorAll('span[data-localization-key][data-plugin="'+plugin+'"]');$.oc.builder.dataRegistry.get($("#builder-plugin-selector-panel form"),plugin,"localization",null,(function(data){for(var i=stringElements.length-1;i>=0;i--){var stringElement=stringElements[i],stringKey=stringElement.getAttribute("data-localization-key");void 0!==data[stringKey]?stringElement.textContent=data[stringKey]:stringElement.textContent=stringKey}}))},Localization.prototype.saveLanguageDone=function(data){if(void 0===data.builderResponseData)throw new Error("Invalid response data");var $masterTabPane=this.getMasterTabsActivePane();if($masterTabPane.find("input[name=original_language]").val(data.builderResponseData.language),this.updateMasterTabIdAndTitle($masterTabPane,data.builderResponseData),this.unhideFormDeleteButton($masterTabPane),this.getLanguageList().fileList("markActive",data.builderResponseData.tabId),this.getIndexController().unchangeTab($masterTabPane),void 0!==data.builderResponseData.registryData){var registryData=data.builderResponseData.registryData;$.oc.builder.dataRegistry.set(registryData.pluginCode,"localization",null,registryData.strings,{suppressLanguageEditorUpdate:!0}),$.oc.builder.dataRegistry.set(registryData.pluginCode,"localization","sections",registryData.sections)}},Localization.prototype.getLanguageList=function(){return $("#layout-side-panel form[data-content-id=localization] [data-control=filelist]")},Localization.prototype.getCodeEditor=function($tab){return $tab.find("div[data-field-name=strings] div[data-control=codeeditor]").data("oc.codeEditor").editor},Localization.prototype.deleteConfirmed=function(){var $form=this.getMasterTabsActivePane().find("form");$.oc.stripeLoadIndicator.show(),$form.request("onLanguageDelete").always($.oc.builder.indexController.hideStripeIndicatorProxy).done(this.proxy(this.deleteDone))},Localization.prototype.deleteDone=function(){var $masterTabPane=this.getMasterTabsActivePane();this.getIndexController().unchangeTab($masterTabPane),this.forceCloseTab($masterTabPane)},Localization.prototype.copyStringsFromDone=function(data){if(void 0===data.builderResponseData)throw new Error("Invalid response data");var responseData=data.builderResponseData,$masterTabPane=this.getMasterTabsActivePane(),$form=$masterTabPane.find("form"),codeEditor=this.getCodeEditor($masterTabPane),newStringMessage=$form.data("newStringMessage"),mismatchMessage=$form.data("structureMismatch");codeEditor.getSession().setValue(responseData.strings);for(var annotations=[],i=responseData.updatedLines.length-1;i>=0;i--){var line=responseData.updatedLines[i];annotations.push({row:line,column:0,text:newStringMessage,type:"warning"})}codeEditor.getSession().setAnnotations(annotations),responseData.mismatch&&$.oc.alert(mismatchMessage)},Localization.prototype.findDefaultLanguageForm=function(plugin){for(var forms=document.body.querySelectorAll("form[data-entity=localization]"),i=forms.length-1;i>=0;i--){var form=forms[i],pluginInput=form.querySelector("input[name=plugin_code]"),languageInput=form.querySelector("input[name=original_language]");if(pluginInput&&pluginInput.value==plugin&&(languageInput&&form.getAttribute("data-default-language")==languageInput.value))return form}return null},Localization.prototype.updateLanguageFromServer=function($languageForm){var self=this;$languageForm.request("onLanguageGetStrings").done((function(data){self.updateLanguageFromServerDone($languageForm,data)}))},Localization.prototype.updateLanguageFromServerDone=function($languageForm,data){if(void 0===data.builderResponseData)throw new Error("Invalid response data");var responseData=data.builderResponseData,$tabPane=$languageForm.closest(".tab-pane"),codeEditor=this.getCodeEditor($tabPane);responseData.strings&&(codeEditor.getSession().setValue(responseData.strings),this.unmodifyTab($tabPane))},Localization.prototype.mergeLanguageFromServer=function($languageForm){var language=$languageForm.find("input[name=original_language]").val(),self=this;$languageForm.request("onLanguageCopyStringsFrom",{data:{copy_from:language}}).done((function(data){self.mergeLanguageFromServerDone($languageForm,data)}))},Localization.prototype.mergeLanguageFromServerDone=function($languageForm,data){if(void 0===data.builderResponseData)throw new Error("Invalid response data");var responseData=data.builderResponseData,$tabPane=$languageForm.closest(".tab-pane"),codeEditor=this.getCodeEditor($tabPane);codeEditor.getSession().setValue(responseData.strings),codeEditor.getSession().setAnnotations([])},$.oc.builder.entityControllers.localization=Localization}(window.jQuery),function($){"use strict";void 0===$.oc.builder&&($.oc.builder={}),void 0===$.oc.builder.entityControllers&&($.oc.builder.entityControllers={});var Base=$.oc.builder.entityControllers.base,BaseProto=Base.prototype,Controller=function(indexController){Base.call(this,"controller",indexController)};(Controller.prototype=Object.create(BaseProto)).constructor=Controller,Controller.prototype.cmdCreateController=function(ev){var $form=$(ev.currentTarget),self=this,pluginCode=$form.data("pluginCode");($form.find('input[name="behaviors[]"]:checked').length?this.indexController.openOrLoadMasterTab($form,"onControllerCreate",this.makeTabId(pluginCode+"-new-controller"),{}):$form.request("onControllerCreate")).done((function(data){$form.trigger("close.oc.popup"),self.updateDataRegistry(data)})).always($.oc.builder.indexController.hideStripeIndicatorProxy)},Controller.prototype.cmdOpenController=function(ev){var controller=$(ev.currentTarget).data("id"),pluginCode=$(ev.currentTarget).data("pluginCode");this.indexController.openOrLoadMasterTab($(ev.target),"onControllerOpen",this.makeTabId(pluginCode+"-"+controller),{controller:controller})},Controller.prototype.cmdSaveController=function(ev){var $target=$(ev.currentTarget),$inspectorContainer=$target.closest("form").find(".inspector-container");$.oc.inspector.manager.applyValuesFromContainer($inspectorContainer)&&$target.request("onControllerSave").done(this.proxy(this.saveControllerDone))},Controller.prototype.saveControllerDone=function(data){if(void 0===data.builderResponseData)throw new Error("Invalid response data");var $masterTabPane=this.getMasterTabsActivePane();this.getIndexController().unchangeTab($masterTabPane)},Controller.prototype.updateDataRegistry=function(data){if(void 0!==data.builderResponseData.registryData){var registryData=data.builderResponseData.registryData;$.oc.builder.dataRegistry.set(registryData.pluginCode,"controller-urls",null,registryData.urls)}},Controller.prototype.getControllerList=function(){return $("#layout-side-panel form[data-content-id=controller] [data-control=filelist]")},$.oc.builder.entityControllers.controller=Controller}(window.jQuery),function($){"use strict";void 0===$.oc.builder&&($.oc.builder={});var Base=$.oc.foundation.base,BaseProto=Base.prototype,Builder=function(){Base.call(this),this.$masterTabs=null,this.masterTabsObj=null,this.hideStripeIndicatorProxy=null,this.entityControllers={},this.init()};(Builder.prototype=Object.create(BaseProto)).constructor=Builder,Builder.prototype.dispose=function(){BaseProto.dispose.call(this)},Builder.prototype.openOrLoadMasterTab=function($form,serverHandlerName,tabId,data){if(this.masterTabsObj.goTo(tabId))return!1;var requestData=void 0===data?{}:data;return $.oc.stripeLoadIndicator.show(),$form.request(serverHandlerName,{data:requestData}).done(this.proxy(this.addMasterTab)).always(this.hideStripeIndicatorProxy)},Builder.prototype.getMasterTabActivePane=function(){return this.$masterTabs.find("> .tab-content > .tab-pane.active")},Builder.prototype.unchangeTab=function($pane){$pane.find("form").trigger("unchange.oc.changeMonitor")},Builder.prototype.triggerCommand=function(command,ev){var commandParts=command.split(":");if(2===commandParts.length){var entity=commandParts[0],commandToExecute=commandParts[1];if(void 0===this.entityControllers[entity])throw new Error("Unknown entity type: "+entity);this.entityControllers[entity].invokeCommand(commandToExecute,ev)}},Builder.prototype.init=function(){this.$masterTabs=$("#builder-master-tabs"),this.$sidePanel=$("#builder-side-panel"),this.masterTabsObj=this.$masterTabs.data("oc.tab"),this.hideStripeIndicatorProxy=this.proxy(this.hideStripeIndicator),new $.oc.tabFormExpandControls(this.$masterTabs),this.createEntityControllers(),this.registerHandlers()},Builder.prototype.createEntityControllers=function(){for(var controller in $.oc.builder.entityControllers)"base"!=controller&&(this.entityControllers[controller]=new $.oc.builder.entityControllers[controller](this))},Builder.prototype.registerHandlers=function(){for(var controller in $(document).on("click","[data-builder-command]",this.proxy(this.onCommand)),$(document).on("submit","[data-builder-command]",this.proxy(this.onCommand)),this.$masterTabs.on("changed.oc.changeMonitor",this.proxy(this.onFormChanged)),this.$masterTabs.on("unchanged.oc.changeMonitor",this.proxy(this.onFormUnchanged)),this.$masterTabs.on("shown.bs.tab",this.proxy(this.onTabShown)),this.$masterTabs.on("afterAllClosed.oc.tab",this.proxy(this.onAllTabsClosed)),this.$masterTabs.on("closed.oc.tab",this.proxy(this.onTabClosed)),this.$masterTabs.on("autocompleteitems.oc.inspector",this.proxy(this.onDataRegistryItems)),this.$masterTabs.on("dropdownoptions.oc.inspector",this.proxy(this.onDataRegistryItems)),this.entityControllers)void 0!==this.entityControllers[controller].registerHandlers&&this.entityControllers[controller].registerHandlers()},Builder.prototype.hideStripeIndicator=function(){$.oc.stripeLoadIndicator.hide()},Builder.prototype.addMasterTab=function(data){this.masterTabsObj.addTab(data.tabTitle,data.tab,data.tabId,"oc-"+data.tabIcon);var $masterTabPane=this.getMasterTabActivePane();data.isNewRecord&&$masterTabPane.find("form").one("ready.oc.changeMonitor",this.proxy(this.onChangeMonitorReady)),$("[data-builder-tabs]",$masterTabPane).dragScroll()},Builder.prototype.updateModifiedCounter=function(){var counters={database:{menu:"database",count:0},models:{menu:"models",count:0},permissions:{menu:"permissions",count:0},menus:{menu:"menus",count:0},imports:{menu:"imports",count:0},versions:{menu:"versions",count:0},localization:{menu:"localization",count:0},controller:{menu:"controllers",count:0},code:{menu:"code",count:0}};$("> div.tab-content > div.tab-pane[data-modified] > form",this.$masterTabs).each((function(){var entity=$(this).data("entity");counters[entity].count++})),$.each(counters,(function(type,data){$.oc.sideNav.setCounter("builder/"+data.menu,data.count)}))},Builder.prototype.getFormPluginCode=function(formElement){var code=$(formElement).closest("form").find('input[name="plugin_code"]').val();if(!code)throw new Error("Plugin code input is not found in the form.");return code},Builder.prototype.setPageTitle=function(title){$.oc.layout.setPageTitle(title.length?title+" | ":title)},Builder.prototype.getFileLists=function(){return $("[data-control=filelist]",this.$sidePanel)},Builder.prototype.dataToInspectorArray=function(data){var result=[];for(var key in data){var item={title:data[key],value:key};result.push(item)}return result},Builder.prototype.onCommand=function(ev){if("FORM"!=ev.currentTarget.tagName||"click"!=ev.type){var command=$(ev.currentTarget).data("builderCommand");this.triggerCommand(command,ev);var $target=$(ev.currentTarget);if("A"!==ev.currentTarget.tagName||"menuitem"!=$target.attr("role")||"javascript:;"!=$target.attr("href"))return ev.preventDefault(),!1}},Builder.prototype.onFormChanged=function(ev){$(".form-tabless-fields",ev.target).trigger("modified.oc.tab"),this.updateModifiedCounter()},Builder.prototype.onFormUnchanged=function(ev){$(".form-tabless-fields",ev.target).trigger("unmodified.oc.tab"),this.updateModifiedCounter()},Builder.prototype.onTabShown=function(ev){if($(ev.target).closest("[data-control=tab]").attr("id")==this.$masterTabs.attr("id")){var dataId=$(ev.target).closest("li").attr("data-tab-id"),title=$(ev.target).attr("title");title&&this.setPageTitle(title),this.getFileLists().fileList("markActive",dataId),$(window).trigger("resize")}},Builder.prototype.onAllTabsClosed=function(ev){this.setPageTitle(""),this.getFileLists().fileList("markActive",null)},Builder.prototype.onTabClosed=function(ev,tab,pane){$(pane).find("form").off("ready.oc.changeMonitor",this.proxy(this.onChangeMonitorReady)),this.updateModifiedCounter()},Builder.prototype.onChangeMonitorReady=function(ev){$(ev.target).trigger("change")},Builder.prototype.onDataRegistryItems=function(ev,data){var self=this;if("model-classes"==data.propertyDefinition.fillFrom||"model-forms"==data.propertyDefinition.fillFrom||"model-lists"==data.propertyDefinition.fillFrom||"controller-urls"==data.propertyDefinition.fillFrom||"model-columns"==data.propertyDefinition.fillFrom||"plugin-lists"==data.propertyDefinition.fillFrom||"permissions"==data.propertyDefinition.fillFrom){ev.preventDefault();var subtype=null,subtypeProperty=data.propertyDefinition.subtypeFrom;void 0!==subtypeProperty&&(subtype=data.values[subtypeProperty]),$.oc.builder.dataRegistry.get($(ev.target),this.getFormPluginCode(ev.target),data.propertyDefinition.fillFrom,subtype,(function(response){data.callback({options:self.dataToInspectorArray(response)})}))}},$(document).ready((function(){$.oc.builder.indexController=new Builder}))}(window.jQuery),function($){"use strict";void 0===$.oc.builder&&($.oc.builder={});var Base=$.oc.foundation.base,BaseProto=Base.prototype,LocalizationInput=function(input,form,options){this.input=input,this.form=form,this.options=$.extend({},LocalizationInput.DEFAULTS,options),this.disposed=!1,this.initialized=!1,this.newStringPopupMarkup=null,Base.call(this),this.init()};LocalizationInput.prototype=Object.create(BaseProto),LocalizationInput.prototype.constructor=LocalizationInput,LocalizationInput.prototype.dispose=function(){this.unregisterHandlers(),this.form=null,this.options.beforePopupShowCallback=null,this.options.afterPopupHideCallback=null,this.options=null,this.disposed=!0,this.newStringPopupMarkup=null,this.initialized&&$(this.input).autocomplete("destroy"),$(this.input).removeData("localization-input"),this.input=null,BaseProto.dispose.call(this)},LocalizationInput.prototype.init=function(){if(!this.options.plugin)throw new Error("The options.plugin value should be set in the localization input object.");var $input=$(this.input);$input.data("localization-input",this),$input.attr("data-builder-localization-input","true"),$input.attr("data-builder-localization-plugin",this.options.plugin),this.getContainer().addClass("localization-input-container"),this.registerHandlers(),this.loadDataAndBuild()},LocalizationInput.prototype.buildAddLink=function(){var $container=this.getContainer();if(!($container.find("a.localization-trigger").length>0)){var trigger=document.createElement("a");trigger.setAttribute("class","oc-icon-plus localization-trigger"),trigger.setAttribute("href","#");var pos=$container.position();$(trigger).css({top:pos.top+4,right:7}),$container.append(trigger)}},LocalizationInput.prototype.loadDataAndBuild=function(){this.showLoadingIndicator();var result=$.oc.builder.dataRegistry.get(this.form,this.options.plugin,"localization",null,this.proxy(this.dataLoaded)),self=this;result&&result.always((function(){self.hideLoadingIndicator()}))},LocalizationInput.prototype.reload=function(){$.oc.builder.dataRegistry.get(this.form,this.options.plugin,"localization",null,this.proxy(this.dataLoaded))},LocalizationInput.prototype.dataLoaded=function(data){if(!this.disposed){var autocomplete=$(this.input).data("autocomplete");if(autocomplete)autocomplete.source=this.preprocessData(data);else{this.hideLoadingIndicator();var autocompleteOptions={source:this.preprocessData(data),matchWidth:!0};autocompleteOptions=$.extend(autocompleteOptions,this.options.autocompleteOptions),$(this.input).autocomplete(autocompleteOptions),this.initialized=!0}}},LocalizationInput.prototype.preprocessData=function(data){var dataClone=$.extend({},data);for(var key in dataClone)dataClone[key]=key+" - "+dataClone[key];return dataClone},LocalizationInput.prototype.getContainer=function(){return $(this.input).closest(".autocomplete-container")},LocalizationInput.prototype.showLoadingIndicator=function(){var $container=this.getContainer();$container.addClass("loading-indicator-container size-small"),$container.loadIndicator()},LocalizationInput.prototype.hideLoadingIndicator=function(){var $container=this.getContainer();$container.loadIndicator("hide"),$container.loadIndicator("destroy"),$container.removeClass("loading-indicator-container")},LocalizationInput.prototype.loadAndShowPopup=function(){null===this.newStringPopupMarkup?($.oc.stripeLoadIndicator.show(),$(this.input).request("onLanguageLoadAddStringForm").done(this.proxy(this.popupMarkupLoaded)).always((function(){$.oc.stripeLoadIndicator.hide()}))):this.showPopup()},LocalizationInput.prototype.popupMarkupLoaded=function(responseData){this.newStringPopupMarkup=responseData.markup,this.showPopup()},LocalizationInput.prototype.showPopup=function(){var $input=$(this.input);$input.popup({content:this.newStringPopupMarkup});var $content=$input.data("oc.popup").$content,$keyInput=$content.find("#language_string_key");$.oc.builder.dataRegistry.get(this.form,this.options.plugin,"localization","sections",(function(data){$keyInput.autocomplete({source:data,matchWidth:!0})})),$content.find("form").on("submit",this.proxy(this.onSubmitPopupForm))},LocalizationInput.prototype.stringCreated=function(data){if(void 0===data.localizationData||void 0===data.registryData)throw new Error("Invalid server response.");var $input=$(this.input);$input.val(data.localizationData.key),$.oc.builder.dataRegistry.set(this.options.plugin,"localization",null,data.registryData.strings),$.oc.builder.dataRegistry.set(this.options.plugin,"localization","sections",data.registryData.sections),$input.data("oc.popup").hide(),$input.trigger("change")},LocalizationInput.prototype.onSubmitPopupForm=function(ev){var $form=$(ev.target);return $.oc.stripeLoadIndicator.show(),$form.request("onLanguageCreateString",{data:{plugin_code:this.options.plugin}}).done(this.proxy(this.stringCreated)).always((function(){$.oc.stripeLoadIndicator.hide()})),ev.preventDefault(),!1},LocalizationInput.prototype.onPopupHidden=function(ev,link,popup){$(popup).find("#language_string_key").autocomplete("destroy"),$(popup).find("form").on("submit",this.proxy(this.onSubmitPopupForm)),this.options.afterPopupHideCallback&&this.options.afterPopupHideCallback()},LocalizationInput.updatePluginInputs=function(plugin){for(var inputs=document.body.querySelectorAll('input[data-builder-localization-input][data-builder-localization-plugin="'+plugin+'"]'),i=inputs.length-1;i>=0;i--)$(inputs[i]).data("localization-input").reload()},LocalizationInput.prototype.unregisterHandlers=function(){this.input.removeEventListener("focus",this.proxy(this.onInputFocus)),this.getContainer().off("click","a.localization-trigger",this.proxy(this.onTriggerClick)),$(this.input).off("hidden.oc.popup",this.proxy(this.onPopupHidden))},LocalizationInput.prototype.registerHandlers=function(){this.input.addEventListener("focus",this.proxy(this.onInputFocus)),this.getContainer().on("click","a.localization-trigger",this.proxy(this.onTriggerClick)),$(this.input).on("hidden.oc.popup",this.proxy(this.onPopupHidden))},LocalizationInput.prototype.onInputFocus=function(){this.buildAddLink()},LocalizationInput.prototype.onTriggerClick=function(ev){return this.options.beforePopupShowCallback&&this.options.beforePopupShowCallback(),this.loadAndShowPopup(),ev.preventDefault(),!1},LocalizationInput.DEFAULTS={plugin:null,autocompleteOptions:{},beforePopupShowCallback:null,afterPopupHideCallback:null},$.oc.builder.localizationInput=LocalizationInput}(window.jQuery),function($){"use strict";var Base=$.oc.inspector.propertyEditors.string,BaseProto=Base.prototype,LocalizationEditor=function(inspector,propertyDefinition,containerCell,group){this.localizationInput=null,Base.call(this,inspector,propertyDefinition,containerCell,group)};(LocalizationEditor.prototype=Object.create(BaseProto)).constructor=Base,LocalizationEditor.prototype.dispose=function(){this.removeLocalizationInput(),BaseProto.dispose.call(this)},LocalizationEditor.prototype.build=function(){var container=document.createElement("div"),editor=document.createElement("input"),placeholder=void 0!==this.propertyDefinition.placeholder?this.propertyDefinition.placeholder:"",value=this.inspector.getPropertyValue(this.propertyDefinition.property);editor.setAttribute("type","text"),editor.setAttribute("class","string-editor"),editor.setAttribute("placeholder",placeholder),container.setAttribute("class","autocomplete-container"),void 0===value&&(value=this.propertyDefinition.default),void 0===value&&(value=""),editor.value=value,$.oc.foundation.element.addClass(this.containerCell,"text autocomplete"),container.appendChild(editor),this.containerCell.appendChild(container),this.buildLocalizationEditor()},LocalizationEditor.prototype.buildLocalizationEditor=function(){this.localizationInput=new $.oc.builder.localizationInput(this.getInput(),this.getForm(),{plugin:this.getPluginCode(),beforePopupShowCallback:this.proxy(this.onPopupShown,this),afterPopupHideCallback:this.proxy(this.onPopupHidden,this)})},LocalizationEditor.prototype.removeLocalizationInput=function(){this.localizationInput.dispose(),this.localizationInput=null},LocalizationEditor.prototype.supportsExternalParameterEditor=function(){return!1},LocalizationEditor.prototype.registerHandlers=function(){BaseProto.registerHandlers.call(this),$(this.getInput()).on("change",this.proxy(this.onInputKeyUp))},LocalizationEditor.prototype.unregisterHandlers=function(){BaseProto.unregisterHandlers.call(this),$(this.getInput()).off("change",this.proxy(this.onInputKeyUp))},LocalizationEditor.prototype.getForm=function(){var inspectableElement=this.getRootSurface().getInspectableElement();if(!inspectableElement)throw new Error("Cannot determine inspectable element in the Builder localization editor.");return $(inspectableElement).closest("form")},LocalizationEditor.prototype.getPluginCode=function(){var $input=this.getForm().find("input[name=plugin_code]");if(!$input.length)throw new Error('The input "plugin_code" should be defined in the form in order to use the localization Inspector editor.');return $input.val()},LocalizationEditor.prototype.onPopupShown=function(){this.getRootSurface().popupDisplayed()},LocalizationEditor.prototype.onPopupHidden=function(){this.getRootSurface().popupHidden()},$.oc.inspector.propertyEditors.builderLocalization=LocalizationEditor}(window.jQuery),function($){"use strict";if(void 0===$.oc.table)throw new Error("The $.oc.table namespace is not defined. Make sure that the table.js script is loaded.");if(void 0===$.oc.table.processor)throw new Error("The $.oc.table.processor namespace is not defined. Make sure that the table.processor.base.js script is loaded.");var Base=$.oc.table.processor.string,BaseProto=Base.prototype,LocalizationProcessor=function(tableObj,columnName,columnConfiguration){this.localizationInput=null,this.popupDisplayed=!1,Base.call(this,tableObj,columnName,columnConfiguration)};(LocalizationProcessor.prototype=Object.create(BaseProto)).constructor=LocalizationProcessor,LocalizationProcessor.prototype.dispose=function(){this.removeLocalizationInput(),BaseProto.dispose.call(this)},LocalizationProcessor.prototype.onUnfocus=function(){this.activeCell&&!this.popupDisplayed&&(this.removeLocalizationInput(),BaseProto.onUnfocus.call(this))},LocalizationProcessor.prototype.onBeforePopupShow=function(){this.popupDisplayed=!0},LocalizationProcessor.prototype.onAfterPopupHide=function(){this.popupDisplayed=!1},LocalizationProcessor.prototype.renderCell=function(value,cellContentContainer){BaseProto.renderCell.call(this,value,cellContentContainer)},LocalizationProcessor.prototype.buildEditor=function(cellElement,cellContentContainer,isClick){BaseProto.buildEditor.call(this,cellElement,cellContentContainer,isClick),$.oc.foundation.element.addClass(cellContentContainer,"autocomplete-container"),this.buildLocalizationEditor()},LocalizationProcessor.prototype.buildLocalizationEditor=function(){var input=this.getInput();this.localizationInput=new $.oc.builder.localizationInput(input,$(input),{plugin:this.getPluginCode(input),beforePopupShowCallback:$.proxy(this.onBeforePopupShow,this),afterPopupHideCallback:$.proxy(this.onAfterPopupHide,this),autocompleteOptions:{menu:'
diff --git a/plugins/rainlab/builder/behaviors/indexlocalizationoperations/partials/_tab.php b/plugins/rainlab/builder/behaviors/indexlocalizationoperations/partials/_tab.htm
similarity index 100%
rename from plugins/rainlab/builder/behaviors/indexlocalizationoperations/partials/_tab.php
rename to plugins/rainlab/builder/behaviors/indexlocalizationoperations/partials/_tab.htm
diff --git a/plugins/rainlab/builder/behaviors/indexlocalizationoperations/partials/_toolbar.php b/plugins/rainlab/builder/behaviors/indexlocalizationoperations/partials/_toolbar.htm
similarity index 100%
rename from plugins/rainlab/builder/behaviors/indexlocalizationoperations/partials/_toolbar.php
rename to plugins/rainlab/builder/behaviors/indexlocalizationoperations/partials/_toolbar.htm
diff --git a/plugins/rainlab/builder/behaviors/indexmenusoperations/partials/_tab.php b/plugins/rainlab/builder/behaviors/indexmenusoperations/partials/_tab.htm
similarity index 100%
rename from plugins/rainlab/builder/behaviors/indexmenusoperations/partials/_tab.php
rename to plugins/rainlab/builder/behaviors/indexmenusoperations/partials/_tab.htm
diff --git a/plugins/rainlab/builder/behaviors/indexmenusoperations/partials/_toolbar.php b/plugins/rainlab/builder/behaviors/indexmenusoperations/partials/_toolbar.htm
similarity index 100%
rename from plugins/rainlab/builder/behaviors/indexmenusoperations/partials/_toolbar.php
rename to plugins/rainlab/builder/behaviors/indexmenusoperations/partials/_toolbar.htm
diff --git a/plugins/rainlab/builder/behaviors/indexmodelformoperations/partials/_add-database-fields-popup-form.php b/plugins/rainlab/builder/behaviors/indexmodelformoperations/partials/_add-database-fields-popup-form.htm
similarity index 83%
rename from plugins/rainlab/builder/behaviors/indexmodelformoperations/partials/_add-database-fields-popup-form.php
rename to plugins/rainlab/builder/behaviors/indexmodelformoperations/partials/_add-database-fields-popup-form.htm
index 7f7d672..43cb528 100644
--- a/plugins/rainlab/builder/behaviors/indexmodelformoperations/partials/_add-database-fields-popup-form.php
+++ b/plugins/rainlab/builder/behaviors/indexmodelformoperations/partials/_add-database-fields-popup-form.htm
@@ -2,9 +2,9 @@
'data-builder-command'=>'modelForm:cmdAddDatabaseFields'
]) ?>
-
diff --git a/plugins/rainlab/builder/formwidgets/menueditor/partials/_body.php b/plugins/rainlab/builder/formwidgets/menueditor/partials/_body.htm
similarity index 100%
rename from plugins/rainlab/builder/formwidgets/menueditor/partials/_body.php
rename to plugins/rainlab/builder/formwidgets/menueditor/partials/_body.htm
diff --git a/plugins/rainlab/builder/formwidgets/menueditor/partials/_mainmenuitem.php b/plugins/rainlab/builder/formwidgets/menueditor/partials/_mainmenuitem.htm
similarity index 100%
rename from plugins/rainlab/builder/formwidgets/menueditor/partials/_mainmenuitem.php
rename to plugins/rainlab/builder/formwidgets/menueditor/partials/_mainmenuitem.htm
diff --git a/plugins/rainlab/builder/formwidgets/menueditor/partials/_mainmenuitems.php b/plugins/rainlab/builder/formwidgets/menueditor/partials/_mainmenuitems.htm
similarity index 100%
rename from plugins/rainlab/builder/formwidgets/menueditor/partials/_mainmenuitems.php
rename to plugins/rainlab/builder/formwidgets/menueditor/partials/_mainmenuitems.htm
diff --git a/plugins/rainlab/builder/formwidgets/menueditor/partials/_submenuitem.php b/plugins/rainlab/builder/formwidgets/menueditor/partials/_submenuitem.htm
similarity index 100%
rename from plugins/rainlab/builder/formwidgets/menueditor/partials/_submenuitem.php
rename to plugins/rainlab/builder/formwidgets/menueditor/partials/_submenuitem.htm
diff --git a/plugins/rainlab/builder/formwidgets/menueditor/partials/_submenuitems.php b/plugins/rainlab/builder/formwidgets/menueditor/partials/_submenuitems.htm
similarity index 100%
rename from plugins/rainlab/builder/formwidgets/menueditor/partials/_submenuitems.php
rename to plugins/rainlab/builder/formwidgets/menueditor/partials/_submenuitems.htm
diff --git a/plugins/rainlab/builder/lang/cs.json b/plugins/rainlab/builder/lang/cs.json
deleted file mode 100644
index 2e38a53..0000000
--- a/plugins/rainlab/builder/lang/cs.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "Builder": "Builder",
- "Provides visual tools for building October plugins.": "Poskytuje vizuální nástroj pro tvorbu October pluginů."
-}
\ No newline at end of file
diff --git a/plugins/rainlab/builder/lang/cs/lang.php b/plugins/rainlab/builder/lang/cs/lang.php
index 2cc653d..f63fabd 100644
--- a/plugins/rainlab/builder/lang/cs/lang.php
+++ b/plugins/rainlab/builder/lang/cs/lang.php
@@ -1,621 +1,633 @@
- [
- 'add' => 'Vytvořit plugin',
- 'no_records' => 'Žádný plugin nenalezen',
- 'no_description' => 'Tento plugin nemá žádný popisek',
- 'no_name' => 'Bez jména',
- 'search' => 'Vyhledávání...',
- 'filter_description' => 'Zobrazit všechny pluginy, nebo pouze vaše.',
- 'settings' => 'Nastavení',
- 'entity_name' => 'Plugin',
- 'field_name' => 'Název',
- 'field_author' => 'Autor',
- 'field_description' => 'Popis',
- 'field_icon' => 'Ikona pluginu',
- 'field_plugin_namespace' => 'Jmenný prostor pluginu',
- 'field_author_namespace' => 'Jmenný prostor autora',
- 'field_namespace_description' => 'Jmenný prostor může obsahovat pouze znaky, číslice a měl by začínat písmenem. Například Blog.',
- 'field_author_namespace_description' => 'Zadaný jmenný prostor nebude možno přes Builder poté změnit. Příklad jmenného prostoru: JohnSmith.',
- 'tab_general' => 'Základní parametry',
- 'tab_description' => 'Popis',
- 'field_homepage' => 'Domovská URL pluginu',
- 'error_settings_not_editable' => 'Nastavení tohoto pluginu nelze přes Builder měnit, protože nemá soubor plugin.yaml.',
- 'update_hint' => 'Překlad názvu a popisku můžete měnit v menu Lokalizace.',
- 'manage_plugins' => 'Tvorba a úprava pluginů.',
- ],
- 'author_name' => [
- 'title' => 'Jméno autora',
- 'description' => 'Výchozí jméno autora pro nově vytvořené pluginy. Toto jméno však můžete změnit při vytváření nového pluginu, nebo poté v editaci.',
- ],
- 'author_namespace' => [
- 'title' => 'Jmenný prostor autora',
- 'description' => 'Pokud budete chtít plugin umístit na stránkách OctoberCMS, jmenný prostor by se měl být pro všechny vaše pluginy shodný. Více detailů najdete v dokumentaci publikace pluginů.',
- ],
- 'database' => [
- 'menu_label' => 'Databáze',
- 'no_records' => 'Žádné tabulky nebyly nalezeny',
- 'search' => 'Vyhledávání...',
- 'confirmation_delete_multiple' => 'Opravdu chcete odstranit vybrané tabulky?',
- 'field_name' => 'Název databázové tabulky',
- 'tab_columns' => 'Sloupce',
- 'column_name_name' => 'Sloupec',
- 'column_name_required' => 'Zadejte prosím název sloupce',
- 'column_name_type' => 'Typ',
- 'column_type_required' => 'Vyberte prosím typ sloupce',
- 'column_name_length' => 'Délka',
- 'column_validation_length' => 'Délka by měla být zadaná číselně, nebo zadaná jako číslo a přesnost (10,2) pro desetinná čísla. Mezery nejsou povolené.',
- 'column_validation_title' => 'V názvu sloupce mohou být pouze čísla, malá písmena a podtržítko.',
- 'column_name_unsigned' => 'Bez znaménka',
- 'column_name_nullable' => 'Nulový',
- 'column_auto_increment' => 'AUTOINCR',
- 'column_default' => 'Výchozí',
- 'column_auto_primary_key' => 'PK',
- 'tab_new_table' => 'Nová tabulka',
- 'btn_add_column' => 'Přidat sloupec',
- 'btn_delete_column' => 'Smazat sloupec',
- 'confirm_delete' => 'Opravdu chcete smazat tuto tabulku?',
- 'error_enum_not_supported' => 'Tabulka obsahuje sloupce s typem "enum" které Builder aktuálně nepodporuje.',
- 'error_table_name_invalid_prefix' => 'Název tabulky by měl začínat prefixem pluginu: \':prefix\'.',
- 'error_table_name_invalid_characters' => 'Formát názvu tabulky není správný, měl by obsahovat pouze písmena, číslice a nebo podtržítka. Název by měl začínat písmenem a neměl by obsahovat mezery.',
- 'error_table_duplicate_column' => 'Takový název sloupce již existuje: \':column\'.',
- 'error_table_auto_increment_in_compound_pk' => 'An auto-increment column cannot be a part of a compound primary key.',
- 'error_table_mutliple_auto_increment' => 'Tabulka nemůže obsahovat více sloupců s auto-increment vlastností.',
- 'error_table_auto_increment_non_integer' => 'Auto-increment sloupec by měl mít číselný typ.',
- 'error_table_decimal_length' => 'Zápis délky pro typ :type by měl být ve formátu \'10,2\', bez mezer.',
- 'error_table_length' => 'Zápis délky pro typ :type by měl být zadaný jako číslo.',
- 'error_unsigned_type_not_int' => 'Chyba ve sloupci \':column\'. Přiznak \'bez znaménka\' můžete použít pouze pro číselné typy.',
- 'error_integer_default_value' => 'Chybná výchozí hodnota pro číselný sloupec \':column\'. Povolené formáty jsou \'10\', \'-10\'.',
- 'error_decimal_default_value' => 'Chybná výchozí hodnota pro desetinný sloupec \':column\'. Povolené formáty jsou \'1.00\', \'-1.00\'.',
- 'error_boolean_default_value' => 'Chybná výchozí hodnota pro pravdivostní sloupec \':column\'. Povolené hodnoty jsou \'0\' and \'1\'.',
- 'error_unsigned_negative_value' => 'Výchozí hodnota pro sloupec bez znaménka \':column\' nemůže být záporná.',
- 'error_table_already_exists' => 'Tabulka \':name\' již v databázi existuje.',
- ],
- 'model' => [
- 'menu_label' => 'Modely',
- 'entity_name' => 'Model',
- 'no_records' => 'Žádný model nebyl nalezen',
- 'search' => 'Vyhledávání...',
- 'add' => 'Přidat...',
- 'forms' => 'Formuláře',
- 'lists' => 'Listování',
- 'field_class_name' => 'Název třídy',
- 'field_database_table' => 'Databazová tabulka',
- 'error_class_name_exists' => 'Soubor modelu pro tuto třídu již existuje: :path',
- 'add_form' => 'Přidat formulář',
- 'add_list' => 'Přidat listování',
- ],
- 'form' => [
- 'saved' => 'Formulář byl úspěšně uložen.',
- 'confirm_delete' => 'Opravdu chcete smazat tento formulář?',
- 'tab_new_form' => 'Nový formulář',
- 'property_label_title' => 'Popisek',
- 'property_label_required' => 'Zadejte prosím popisek pole.',
- 'property_span_title' => 'Zarovnání',
- 'property_comment_title' => 'Komentář',
- 'property_comment_above_title' => 'Komentář nad',
- 'property_default_title' => 'Výchozí',
- 'property_checked_default_title' => 'Ve výchozím stavu zaškrtnuto',
- 'property_css_class_title' => 'CSS třída',
- 'property_css_class_description' => 'Volitelná CSS třída která se přiřadí ke kontejneru pole.',
- 'property_disabled_title' => 'Neaktivní',
- 'property_hidden_title' => 'Skrytý',
- 'property_required_title' => 'Povinný',
- 'property_field_name_title' => 'Název pole',
- 'property_placeholder_title' => 'Zástupný text',
- 'property_default_from_title' => 'Default from',
- 'property_stretch_title' => 'Stretch',
- 'property_stretch_description' => 'Definuje jestli se toto pole zmenší tak, aby se vešlo to rodičovského prvku na výšku.',
- 'property_context_title' => 'Kontext',
- 'property_context_description' => 'Definuje jaký kontext bude zobrazen při zobrazení tohoto pole.',
- 'property_context_create' => 'Vytvořit',
- 'property_context_update' => 'Upravit',
- 'property_context_preview' => 'Náhled',
- 'property_dependson_title' => 'Závisí na',
- 'property_trigger_action' => 'Akce',
- 'property_trigger_show' => 'Zobrazit',
- 'property_trigger_hide' => 'Schovat',
- 'property_trigger_enable' => 'Aktivní',
- 'property_trigger_disable' => 'Neaktivní',
- 'property_trigger_empty' => 'Prázdný',
- 'property_trigger_field' => 'Pole',
- 'property_trigger_field_description' => 'Defines the other field name that will trigger the action.',
- 'property_trigger_condition' => 'Podmínka',
- 'property_trigger_condition_description' => 'Determines the condition the specified field should satisfy for the condition to be considered "true". Supported values: checked, unchecked, value[somevalue].',
- 'property_trigger_condition_checked' => 'Zaškrtnuté',
- 'property_trigger_condition_unchecked' => 'Nezaškrtnuté',
- 'property_trigger_condition_somevalue' => 'value[enter-the-value-here]',
- 'property_preset_title' => 'Preset',
- 'property_preset_description' => 'Allows the field value to be initially set by the value of another field, converted using the input preset converter.',
- 'property_preset_field' => 'Pole',
- 'property_preset_field_description' => 'Defines the other field name to source the value from.',
- 'property_preset_type' => 'Typ',
- 'property_preset_type_description' => 'Specifies the conversion type',
- 'property_attributes_title' => 'Atributy',
- 'property_attributes_description' => 'Custom HTML attributes to add to the form field element.',
- 'property_container_attributes_title' => 'Kontejnér atributů',
- 'property_container_attributes_description' => 'Custom HTML attributes to add to the form field container element.',
- 'property_group_advanced' => 'Pokročilé',
- 'property_dependson_description' => 'A list of other field names this field depends on, when the other fields are modified, this field will update. One field per line.',
- 'property_trigger_title' => 'Trigger',
- 'property_trigger_description' => 'Allows to change elements attributes such as visibility or value, based on another elements\' state.',
- 'property_default_from_description' => 'Takes the default value from the value of another field.',
- 'property_field_name_required' => 'Název pole je povinný',
- 'property_field_name_regex' => 'Název pole může obsahovat pouze písmena, číslice, podtržítka, pomlčky a hranaté závorky.',
- 'property_attributes_size' => 'Velikost',
- 'property_attributes_size_tiny' => 'Nejmenší',
- 'property_attributes_size_small' => 'Malý',
- 'property_attributes_size_large' => 'Normální',
- 'property_attributes_size_huge' => 'Veliký',
- 'property_attributes_size_giant' => 'Obrovský',
- 'property_comment_position' => 'Zobrazit komentář',
- 'property_comment_position_above' => 'Nad prvkem',
- 'property_comment_position_below' => 'Pod prvkem',
- 'property_hint_path' => 'Hint partial path',
- 'property_hint_path_description' => 'Path to a partial file that contains the hint text. Use the $ symbol to refer the plugins root directory, for example: $/acme/blog/partials/_hint.htm',
- 'property_hint_path_required' => 'Please enter the hint partial path',
- 'property_partial_path' => 'Cesta k dílčímu souboru',
- 'property_partial_path_description' => 'Path to a partial file. Use the $ symbol to refer the plugins root directory, for example: $/acme/blog/partials/_partial.htm',
- 'property_partial_path_required' => 'Prosím zadejte cestu k dílčímu souboru',
- 'property_code_language' => 'Jazyk',
- 'property_code_theme' => 'Téma',
- 'property_theme_use_default' => 'Použít výchozí téma',
- 'property_group_code_editor' => 'Editor kódu',
- 'property_gutter' => 'Výplň',
- 'property_gutter_show' => 'Viditelný',
- 'property_gutter_hide' => 'Skrytý',
- 'property_wordwrap' => 'Word wrap',
- 'property_wordwrap_wrap' => 'Wrap',
- 'property_wordwrap_nowrap' => 'Don\'t wrap',
- 'property_fontsize' => 'Velikost písma',
- 'property_codefolding' => 'Code folding',
- 'property_codefolding_manual' => 'Manual',
- 'property_codefolding_markbegin' => 'Mark begin',
- 'property_codefolding_markbeginend' => 'Mark begin and end',
- 'property_autoclosing' => 'Automatické zavírání',
- 'property_enabled' => 'Aktivní',
- 'property_disabled' => 'Neaktivní',
- 'property_soft_tabs' => 'Soft tabs',
- 'property_tab_size' => 'Velikost záložky',
- 'property_readonly' => 'Pouze pro čtení',
- 'property_use_default' => 'Use default settings',
- 'property_options' => 'Volby',
- 'property_prompt' => 'Prompt',
- 'property_prompt_description' => 'Text to display for the create button.',
- 'property_prompt_default' => 'Přidat nový prvek',
- 'property_available_colors' => 'Dostupné barvy',
- 'property_available_colors_description' => 'List of available colors in hex format (#FF0000). Leave empty for the default color set. Enter one value per line.',
- 'property_datepicker_mode' => 'Mód',
- 'property_datepicker_mode_date' => 'Datum',
- 'property_datepicker_mode_datetime' => 'Datum a čas',
- 'property_datepicker_mode_time' => 'Čas',
- 'property_datepicker_min_date' => 'Min datum',
- 'property_datepicker_max_date' => 'Max datum',
- 'property_fileupload_mode' => 'Mód',
- 'property_fileupload_mode_file' => 'Soubor',
- 'property_fileupload_mode_image' => 'Obrázek',
- 'property_group_fileupload' => 'Nahrávání obrázků',
- 'property_fileupload_image_width' => 'Šířka obrázku',
- 'property_fileupload_image_width_description' => 'Optional parameter - images will be resized to this width. Applies to Image mode only.',
- 'property_fileupload_invalid_dimension' => 'Invalid dimension value - please enter a number.',
- 'property_fileupload_image_height' => 'Výška obrázku',
- 'property_fileupload_image_height_description' => 'Optional parameter - images will be resized to this height. Applies to Image mode only.',
- 'property_fileupload_file_types' => 'Typy souborů',
- 'property_fileupload_file_types_description' => 'Optional comma separated list of file extensions that are accepted by the uploader. Eg: zip,txt',
- 'property_fileupload_mime_types' => 'MIME typy',
- 'property_fileupload_mime_types_description' => 'Optional comma separated list of MIME types that are accepted by the uploader, either as file extensions or fully qualified names. Eg: bin,txt',
- 'property_fileupload_use_caption' => 'Použít popisek',
- 'property_fileupload_use_caption_description' => 'Allows a title and description to be set for the file.',
- 'property_fileupload_thumb_options' => 'Volby náhledu',
- 'property_fileupload_thumb_options_description' => 'Manages options for the automatically generated thumbnails. Applies only for the Image mode.',
- 'property_fileupload_thumb_mode' => 'Mód',
- 'property_fileupload_thumb_auto' => 'Auto',
- 'property_fileupload_thumb_exact' => 'Přesně',
- 'property_fileupload_thumb_portrait' => 'Portrét',
- 'property_fileupload_thumb_landscape' => 'Krajina',
- 'property_fileupload_thumb_crop' => 'Crop',
- 'property_fileupload_thumb_extension' => 'Přípona souboru',
- 'property_name_from' => 'Name column',
- 'property_name_from_description' => 'Relation column name to use for displaying a name.',
- 'property_description_from' => 'Description column',
- 'property_description_from_description' => 'Relation column name to use for displaying a description.',
- 'property_recordfinder_prompt' => 'Prompt',
- 'property_recordfinder_prompt_description' => 'Text to display when there is no record selected. The %s character represents the search icon. Leave empty for the default prompt.',
- 'property_recordfinder_list' => 'List configuration',
- 'property_recordfinder_list_description' => 'A reference to a list column definition file. Use the $ symbol to refer the plugins root directory, for example: $/acme/blog/lists/_list.yaml',
- 'property_recordfinder_list_required' => 'Please provide a path to the list YAML file',
- 'property_group_recordfinder' => 'Record finder',
- 'property_mediafinder_mode' => 'Mód',
- 'property_mediafinder_mode_file' => 'Soubor',
- 'property_mediafinder_mode_image' => 'Obrázek',
- 'property_group_relation' => 'Relace',
- 'property_relation_prompt' => 'Prompt',
- 'property_relation_prompt_description' => 'Text to display when there is no available selections.',
- 'control_group_standard' => 'Standardní',
- 'control_group_widgets' => 'Widgets',
- 'click_to_add_control' => 'Přidat prvek',
- 'loading' => 'Načítám...',
- 'control_text' => 'Text',
- 'control_text_description' => 'Single line text box',
- 'control_password' => 'Heslo',
- 'control_password_description' => 'Single line password text field',
- 'control_checkbox' => 'Checkbox',
- 'control_checkbox_description' => 'Single checkbox',
- 'control_switch' => 'Přepínač',
- 'control_switch_description' => 'Single switchbox, an alternative for checkbox',
- 'control_textarea' => 'Víceřádkové textové pole',
- 'control_textarea_description' => 'Multiline text box with controllable height',
- 'control_dropdown' => 'Dropdown',
- 'control_dropdown_description' => 'Dropdown list with static or dynamic options',
- 'control_unknown' => 'Unknown control type: :type',
- 'control_repeater' => 'Repeater',
- 'control_repeater_description' => 'Outputs a repeating set of form controls',
- 'control_number' => 'Číslo',
- 'control_number_description' => 'Single line text box that takes numbers only',
- 'control_hint' => 'Hint',
- 'control_hint_description' => 'Outputs a partial contents in a box that can be hidden by the user',
- 'control_partial' => 'Partial',
- 'control_partial_description' => 'Outputs a partial contents',
- 'control_section' => 'Sekce',
- 'control_section_description' => 'Displays a form section with heading and subheading',
- 'control_radio' => 'Radio list',
- 'control_radio_description' => 'A list of radio options, where only one item can be selected at a time',
- 'control_radio_option_1' => 'Volba 1',
- 'control_radio_option_2' => 'Volba 2',
- 'control_checkboxlist' => 'Checkbox list',
- 'control_checkboxlist_description' => 'A list of checkboxes, where multiple items can be selected',
- 'control_codeeditor' => 'Editor kódu',
- 'control_codeeditor_description' => 'Plaintext editor for formatted code or markup',
- 'control_colorpicker' => 'Výběr barvy',
- 'control_colorpicker_description' => 'A field for selecting a hexadecimal color value',
- 'control_datepicker' => 'Výběr data',
- 'control_datepicker_description' => 'Text field used for selecting date and times',
- 'control_richeditor' => 'Rich editor',
- 'control_richeditor_description' => 'Visual editor for rich formatted text, also known as a WYSIWYG editor',
- 'control_markdown' => 'Markdown editor',
- 'control_markdown_description' => 'Basic editor for Markdown formatted text',
- 'control_fileupload' => 'Nahrávání souborů',
- 'control_fileupload_description' => 'File uploader for images or regular files',
- 'control_recordfinder' => 'Record finder',
- 'control_recordfinder_description' => 'Field with details of a related record with the record search feature',
- 'control_mediafinder' => 'Media finder',
- 'control_mediafinder_description' => 'Field for selecting an item from the Media Manager library',
- 'control_relation' => 'Relace',
- 'control_relation_description' => 'Displays either a dropdown or checkbox list for selecting a related record',
- 'error_file_name_required' => 'Please enter the form file name.',
- 'error_file_name_invalid' => 'The file name can contain only Latin letters, digits, underscores, dots and hashes.',
- 'span_left' => 'Doleva',
- 'span_right' => 'Doprava',
- 'span_full' => 'Plná šířka',
- 'span_auto' => 'Automaticky',
- 'empty_tab' => 'Prázdná záložka',
- 'confirm_close_tab' => 'The tab contains controls which will be deleted. Continue?',
- 'tab' => 'Form tab',
- 'tab_title' => 'Název',
- 'controls' => 'Prvky formuláře',
- 'property_tab_title_required' => 'Název záložky je povinný.',
- 'tabs_primary' => 'Primární záložka',
- 'tabs_secondary' => 'Vedlejší záložka',
- 'tab_stretch' => 'Stretch',
- 'tab_stretch_description' => 'Specifies if this tabs container stretches to fit the parent height.',
- 'tab_css_class' => 'CSS třída',
- 'tab_css_class_description' => 'Přiřadí CSS třídu kontejneru záložky.',
- 'tab_name_template' => 'Záložka %s',
- 'tab_already_exists' => 'Záložka s tímto názvem již existuje.',
- ],
- 'list' => [
- 'tab_new_list' => 'Nový list',
- 'saved' => 'List byl úspěšně uložen.',
- 'confirm_delete' => 'Opravdu chcete smazat tento list?',
- 'tab_columns' => 'Sloupce',
- 'btn_add_column' => 'Přidat sloupec',
- 'btn_delete_column' => 'Smazat sloupec',
- 'column_dbfield_label' => 'Field',
- 'column_dbfield_required' => 'Please enter the model field',
- 'column_name_label' => 'Popisek',
- 'column_label_required' => 'Zadejte prosím popisek sloupce',
- 'column_type_label' => 'Type',
- 'column_type_required' => 'Zadejte prosím typ sloupce',
- 'column_type_text' => 'Text',
- 'column_type_number' => 'Číslo',
- 'column_type_switch' => 'Switch',
- 'column_type_datetime' => 'Datum a čas',
- 'column_type_date' => 'Datum',
- 'column_type_time' => 'Čas',
- 'column_type_timesince' => 'Čas od',
- 'column_type_timetense' => 'Čas do',
- 'column_type_select' => 'Select',
- 'column_type_partial' => 'Partial',
- 'column_label_default' => 'Výchozí',
- 'column_label_searchable' => 'Vyhledávání',
- 'column_label_sortable' => 'Řazení',
- 'column_label_invisible' => 'Neviditelný',
- 'column_label_select' => 'Výběr',
- 'column_label_relation' => 'Relace',
- 'column_label_css_class' => 'CSS class',
- 'column_label_width' => 'Šířka',
- 'column_label_path' => 'Cesta',
- 'column_label_format' => 'Formát',
- 'column_label_value_from' => 'Hodnota od',
- 'error_duplicate_column' => 'Duplicitní pole sloupce: \':column\'.',
- ],
- 'controller' => [
- 'menu_label' => 'Kontroléry',
- 'no_records' => 'Žádné kontrolery nebyly nalezeny',
- 'controller' => 'Kontrolér',
- 'behaviors' => 'Chování',
- 'new_controller' => 'Nový kontrolér',
- 'error_controller_has_no_behaviors' => 'The controller doesn\'t have configurable behaviors.',
- 'error_invalid_yaml_configuration' => 'Error loading behavior configuration file: :file',
- 'behavior_form_controller' => 'Možnost vytvářet a měnit záznamy',
- 'behavior_form_controller_description' => 'Přidá možnost vytvářet a měnit záznamy pomocí formulářů. Toto chování vytvoří tři pohledy pro tvorbu položky, úpravu a náhled.',
- 'property_behavior_form_placeholder' => '--vyberte formulář--',
- 'property_behavior_form_name' => 'Název',
- 'property_behavior_form_name_description' => 'The name of the object being managed by this form',
- 'property_behavior_form_name_required' => 'Please enter the form name',
- 'property_behavior_form_file' => 'Form configuration',
- 'property_behavior_form_file_description' => 'Reference to a form field definition file',
- 'property_behavior_form_file_required' => 'Please enter a path to the form configuration file',
- 'property_behavior_form_model_class' => 'Modelová třída',
- 'property_behavior_form_model_class_description' => 'A model class name, the form data is loaded and saved against this model.',
- 'property_behavior_form_model_class_required' => 'Please select a model class',
- 'property_behavior_form_default_redirect' => 'Výchozí přesměrování',
- 'property_behavior_form_default_redirect_description' => 'A page to redirect to by default when the form is saved or cancelled.',
- 'property_behavior_form_create' => 'Create record page',
- 'property_behavior_form_redirect' => 'Přesměrování',
- 'property_behavior_form_redirect_description' => 'A page to redirect to when a record is created.',
- 'property_behavior_form_redirect_close' => 'Close redirect',
- 'property_behavior_form_redirect_close_description' => 'A page to redirect to when a record is created and the close post variable is sent with the request.',
- 'property_behavior_form_flash_save' => 'Save flash message',
- 'property_behavior_form_flash_save_description' => 'Flash message to display when record is saved.',
- 'property_behavior_form_page_title' => 'Page title',
- 'property_behavior_form_update' => 'Update record page',
- 'property_behavior_form_update_redirect' => 'Přesměrování',
- 'property_behavior_form_create_redirect_description' => 'A page to redirect to when a record is saved.',
- 'property_behavior_form_flash_delete' => 'Delete flash message',
- 'property_behavior_form_flash_delete_description' => 'Flash message to display when record is deleted.',
- 'property_behavior_form_preview' => 'Preview record page',
- 'behavior_list_controller' => 'Možnost listování záznamy',
- 'behavior_list_controller_description' => 'Vytvoří tabulku s řazením a vyhledávání s možností definovat odkaz na detail jednotlivého záznamu. Chování automaticky vytvoří akci kontroléru "index".',
- 'property_behavior_list_title' => 'List title',
- 'property_behavior_list_title_required' => 'Please enter the list title',
- 'property_behavior_list_placeholder' => '--select list--',
- 'property_behavior_list_model_class' => 'Modelová třída',
- 'property_behavior_list_model_class_description' => 'A model class name, the list data is loaded from this model.',
- 'property_behavior_form_model_class_placeholder' => '--select model--',
- 'property_behavior_list_model_class_required' => 'Please select a model class',
- 'property_behavior_list_model_placeholder' => '--select model--',
- 'property_behavior_list_file' => 'List configuration file',
- 'property_behavior_list_file_description' => 'Reference to a list definition file',
- 'property_behavior_list_file_required' => 'Please enter a path to the list configuration file',
- 'property_behavior_list_record_url' => 'Record URL',
- 'property_behavior_list_record_url_description' => 'Link each list record to another page. Eg: users/update:id. The :id part is replaced with the record identifier.',
- 'property_behavior_list_no_records_message' => 'No records message',
- 'property_behavior_list_no_records_message_description' => 'A message to display when no records are found',
- 'property_behavior_list_recs_per_page' => 'Records per page',
- 'property_behavior_list_recs_per_page_description' => 'Records to display per page, use 0 for no pages. Default: 0',
- 'property_behavior_list_recs_per_page_regex' => 'Records per page should be an integer value',
- 'property_behavior_list_show_setup' => 'Show setup button',
- 'property_behavior_list_show_sorting' => 'Show sorting',
- 'property_behavior_list_default_sort' => 'Default sorting',
- 'property_behavior_form_ds_column' => 'Column',
- 'property_behavior_form_ds_direction' => 'Direction',
- 'property_behavior_form_ds_asc' => 'Ascending',
- 'property_behavior_form_ds_desc' => 'Descending',
- 'property_behavior_list_show_checkboxes' => 'Show checkboxes',
- 'property_behavior_list_onclick' => 'On click handler',
- 'property_behavior_list_onclick_description' => 'Custom JavaScript code to execute when clicking on a record.',
- 'property_behavior_list_show_tree' => 'Show tree',
- 'property_behavior_list_show_tree_description' => 'Displays a tree hierarchy for parent/child records.',
- 'property_behavior_list_tree_expanded' => 'Tree expanded',
- 'property_behavior_list_tree_expanded_description' => 'Determines if tree nodes should be expanded by default.',
- 'property_behavior_list_toolbar' => 'Toolbar',
- 'property_behavior_list_toolbar_buttons' => 'Buttons partial',
- 'property_behavior_list_toolbar_buttons_description' => 'Reference to a controller partial file with the toolbar buttons. Eg: list_toolbar',
- 'property_behavior_list_search' => 'Search',
- 'property_behavior_list_search_prompt' => 'Search prompt',
- 'property_behavior_list_filter' => 'Filter configuration',
- 'error_controller_not_found' => 'Original controller file is not found.',
- 'error_invalid_config_file_name' => 'The behavior :class configuration file name (:file) contains invalid characters and cannot be loaded.',
- 'error_file_not_yaml' => 'The behavior :class configuration file (:file) is not a YAML file. Only YAML configuration files are supported.',
- 'saved' => 'Kontrolér byl úspěšně uložen.',
- 'controller_name' => 'Název kontroléru',
- 'controller_name_description' => 'Název kontroléru definuje název třídy a URL kontroléru v administraci. Použijte prosím standardní pojmenování PHP tříd - první symbol je velkým písmenem a zbytek normálně, například: Categories, Posts, Products.',
- 'base_model_class' => 'Rodičovská třída',
- 'base_model_class_description' => 'Vyberte třídu modelu ze které bude tento kontrolér dědit. Chování kontroléru můžete nastavit později.',
- 'base_model_class_placeholder' => '--vyberte model--',
- 'controller_behaviors' => 'Chování',
- 'controller_behaviors_description' => 'Vyberte chování, které má kontrolér implementovat. Builder automaticky vytvoří požadované soubory.',
- 'controller_permissions' => 'Oprávnění',
- 'controller_permissions_description' => 'Vyberte uživatelská práva potřebná pro tento kontrolér. Práva můžete nastavit v sekci Oprávnění v levém menu. Toto nastavení můžete později změnit v PHP skriptu.',
- 'controller_permissions_no_permissions' => 'Plugin nemá vytvořena žádná oprávnění.',
- 'menu_item' => 'Aktivní položka menu',
- 'menu_item_description' => 'Vyberte položku menu, která bude aktivní pro tento kontrolér. Toto nastavení můžete kdykoli změnit v PHP skriptu.',
- 'menu_item_placeholder' => '--vyberte položku menu--',
- 'error_unknown_behavior' => 'Třída chování :class není registrovaná v knihovně všech chování.',
- 'error_behavior_view_conflict' => 'The selected behaviors provide conflicting views (:view) and cannot be used together in a controller.',
- 'error_behavior_config_conflict' => 'The selected behaviors provide conflicting configuration files (:file) and cannot be used together in a controller.',
- 'error_behavior_view_file_not_found' => 'View template :view of the behavior :class cannot be found.',
- 'error_behavior_config_file_not_found' => 'Configuration template :file of the behavior :class cannot be found.',
- 'error_controller_exists' => 'Controller file already exists: :file.',
- 'error_controller_name_invalid' => 'Invalid controller name format. The name can only contain digits and Latin letters. The first symbol should be a capital Latin letter.',
- 'error_behavior_view_file_exists' => 'Controller view file already exists: :view.',
- 'error_behavior_config_file_exists' => 'Behavior configuration file already exists: :file.',
- 'error_save_file' => 'Error saving controller file: :file',
- 'error_behavior_requires_base_model' => 'Behavior :behavior requires a base model class to be selected.',
- 'error_model_doesnt_have_lists' => 'The selected model doesn\'t have any lists. Please create a list first.',
- 'error_model_doesnt_have_forms' => 'The selected model doesn\'t have any forms. Please create a form first.',
- ],
- 'version' => [
- 'menu_label' => 'Verze',
- 'no_records' => 'Žádné verze pluginu',
- 'search' => 'Vyhledávání...',
- 'tab' => 'Verze',
- 'saved' => 'Verze byla úspěšně uložena.',
- 'confirm_delete' => 'Opravdu chcete smazat vybranou verzi?',
- 'tab_new_version' => 'Nová verze',
- 'migration' => 'Migraci',
- 'seeder' => 'Seeder',
- 'custom' => 'Novou verzi',
- 'apply_version' => 'Aplikovat tuto verzi',
- 'applying' => 'Aplikování verze...',
- 'rollback_version' => 'Vrátit na tuto verzi',
- 'rolling_back' => 'Vracení zpět...',
- 'applied' => 'Verze byla úspěšně aplikována.',
- 'rolled_back' => 'Verze byla úspěšně vrácena zpět.',
- 'hint_save_unapplied' => 'Byla uložena neaplikovaná verze. Neaplikované verze mohou být automaticky aplikovány po přihlášení do administrace jakýmkoli uživatelem a nebo pokud je databázová tabulka uložena v sekci Databáze.',
- 'hint_rollback' => 'Vracení verze zpět rovněž vrátí zpět všechny novější verze. Neaplikované verze mohou být automaticky aplikovány po přihlášení do administrace jakýmkoli uživatelem a nebo pokud je databázová tabulka uložena v sekci Databáze.',
- 'hint_apply' => 'Vracení verze zpět rovněž vrátí zpět všechny starší neaplikované verze.',
- 'dont_show_again' => 'Znovu nezobrazovat',
- 'save_unapplied_version' => 'Uložit neaplikovanou verzi',
- ],
- 'menu' => [
- 'menu_label' => 'Menu administrace',
- 'tab' => 'Menu',
- 'items' => 'Položky menu',
- 'saved' => 'Menu byla úspěšně uložena.',
- 'add_main_menu_item' => 'Přidat položku menu',
- 'new_menu_item' => 'Položka menu',
- 'add_side_menu_item' => 'Přidat pod-položku',
- 'side_menu_item' => 'Side menu item',
- 'property_label' => 'Popisek',
- 'property_label_required' => 'Zadejte prosím popisek položky menu.',
- 'property_url_required' => 'Zadejte prosím URL položky menu.',
- 'property_url' => 'URL',
- 'property_icon' => 'Ikona',
- 'property_icon_required' => 'Vyberte prosím ikonu',
- 'property_permissions' => 'Oprávnění',
- 'property_order' => 'Pořadí',
- 'property_order_invalid' => 'Zadejte prosím pořadí položky menu jako číslo.',
- 'property_order_description' => 'Pořadí položek určuje jejich posloupnost v menu. Pokud není pořadí zadáno, automaticky se umístí položka nakonec. Výchozí hodnoty pořadí jsou násobky 100.',
- 'property_attributes' => 'HTML attributy',
- 'property_code' => 'Kód',
- 'property_code_invalid' => 'Kód položky může obsahovat pouze písmena a číslice',
- 'property_code_required' => 'Zadejte prosím kód položky menu.',
- 'error_duplicate_main_menu_code' => 'Kód položky hlavního menu je duplicitní: \':code\'.',
- 'error_duplicate_side_menu_code' => 'Kód položky postranního menu je duplicitní: \':code\'.',
- ],
- 'localization' => [
- 'menu_label' => 'Lokalizace',
- 'language' => 'Zkratka jazyka',
- 'strings' => 'Řetězce',
- 'confirm_delete' => 'Opravdu chcete smazat soubor s překladem?',
- 'tab_new_language' => 'Nový jazyk',
- 'no_records' => 'Žádné jazyky nenalezeny',
- 'saved' => 'Soubor s překladem byl úspěšně uložen.',
- 'error_cant_load_file' => 'Nepodařilo se načíst požadovaný soubor protože neexistuje.',
- 'error_bad_localization_file_contents' => 'Nepodařilo se načíst požadovaný soubor. Soubory s překladem mohou obsahovat pouze pole definující překlady řetězců.',
- 'error_file_not_array' => 'Nepodařilo se načíst požadovaný soubor. Překladový soubor musí vrátit pole.',
- 'save_error' => 'Chyba ukládání souboru \':name\'. Zkontrolujte prosím práva k zápisu.',
- 'error_delete_file' => 'Chyba mazání překladového souboru.',
- 'add_missing_strings' => 'Přidat chybějící řetězce',
- 'copy' => 'Kopírovat',
- 'add_missing_strings_label' => 'Vyberte jazyk ze kterého se zkopírují chybějící řetězce',
- 'no_languages_to_copy_from' => 'Nejsou definovány žádné jazyky ze kterých bychom mohli zkopírovat řetězce.',
- 'new_string_warning' => 'Nový řetězec nebo sekce',
- 'structure_mismatch' => 'Struktura zdrojového jazykového souboru neodpovídá struktuře editovaného souboru. Některé nezávislé řetězce v editovaném souboru odpovídají sekcím ve zdrojovém souboru (nebo naopak) a nemohou být automaticky sloučeny.',
- 'create_string' => 'Vytvořit nový řetězec',
- 'string_key_label' => 'Klíč řetězce',
- 'string_key_comment' => 'Zadejte klíč řetězce s použitím tečky jako oddělovače, například: plugin.search. Řetězec bude vytvořen ve výchozím jazykovém souboru pluginu.',
- 'string_value' => 'Hodnota řetězce',
- 'string_key_is_empty' => 'Musíte vyplnit klíč řetězce',
- 'string_value_is_empty' => 'Musíte vyplnit hodnotu řetězce',
- 'string_key_exists' => 'Takový klíč řetězce již existuje',
- ],
- 'permission' => [
- 'menu_label' => 'Oprávnění',
- 'tab' => 'Oprávnění',
- 'form_tab_permissions' => 'Oprávnění',
- 'btn_add_permission' => 'Přidat oprávnění',
- 'btn_delete_permission' => 'Smazat oprávnění',
- 'column_permission_label' => 'Kód oprávnění',
- 'column_permission_required' => 'Zadejte prosím kód oprávnění',
- 'column_tab_label' => 'Název záložky',
- 'column_tab_required' => 'Zadejte prosím název záložky oprávnění',
- 'column_label_label' => 'Popisek',
- 'column_label_required' => 'Zadejte prosím popisek oprávnění',
- 'saved' => 'Oprávnění bylo úspěšně uloženo.',
- 'error_duplicate_code' => 'Kód oprávnění je duplicitní: \':code\'.',
- ],
- 'yaml' => [
- 'save_error' => 'Chyba ukládání souboru \':name\'. Zkontrolujte prosím práva k zápisu.',
- ],
- 'common' => [
- 'error_file_exists' => 'Soubor již existuje: \':path\'.',
- 'field_icon_description' => 'October používá ikony Font Autumn: http://octobercms.com/docs/ui/icon',
- 'destination_dir_not_exists' => 'Cílový adresář neexistuje: \':path\'.',
- 'error_make_dir' => 'Chyba vytváření adresáře: \':name\'.',
- 'error_dir_exists' => 'Adresář již existuje: \':path\'.',
- 'template_not_found' => 'Soubor šablony nebyl nalezen: \':name\'.',
- 'error_generating_file' => 'Chyba vytváření souboru: \':path\'.',
- 'error_loading_template' => 'Chyba načtení souboru šablony: \':name\'.',
- 'select_plugin_first' => 'Nejdříve vyberte plugin. Pro zobrazení všech pluginů klikněte na symbol > na vrchu levého menu.',
- 'plugin_not_selected' => 'Není vybrán žádný plugin',
- 'add' => 'Přidat',
- ],
- 'migration' => [
- 'entity_name' => 'Migrace',
- 'error_version_invalid' => 'The version should be specified in format 1.0.1',
- 'field_version' => 'Verze',
- 'field_description' => 'Popis migrace',
- 'field_code' => 'Kód migrace',
- 'save_and_apply' => 'Uložit a aplikovat',
- 'error_version_exists' => 'Tato verze migrace již existuje.',
- 'error_script_filename_invalid' => 'The migration script file name can contain only Latin letters, digits and underscores. The name should start with a Latin letter and could not contain spaces.',
- 'error_cannot_change_version_number' => 'Cannot change version number for an applied version.',
- 'error_file_must_define_class' => 'Migration code should define a migration or seeder class. Leave the code field blank if you only want to update the version number.',
- 'error_file_must_define_namespace' => 'Migration code should define a namespace. Leave the code field blank if you only want to update the version number.',
- 'no_changes_to_save' => 'Žádné změny k uložení.',
- 'error_namespace_mismatch' => 'Migrační kód by měl používat jmenný prostor pluginu: :namespace',
- 'error_migration_file_exists' => 'Migrační soubor :file již existuje. Zadejte prosím jiný název třídy.',
- 'error_cant_delete_applied' => 'This version has already been applied and cannot be deleted. Please rollback the version first.',
- ],
- 'components' => [
- 'list_title' => 'Record list',
- 'list_description' => 'Displays a list of records for a selected model',
- 'list_page_number' => 'Číslo stránky',
- 'list_page_number_description' => 'This value is used to determine what page the user is on.',
- 'list_records_per_page' => 'Records per page',
- 'list_records_per_page_description' => 'Number of records to display on a single page. Leave empty to disable pagination.',
- 'list_records_per_page_validation' => 'Invalid format of the records per page value. The value should be a number.',
- 'list_no_records' => 'No records message',
- 'list_no_records_description' => 'Message to display in the list in case if there are no records. Used in the default component\'s partial.',
- 'list_no_records_default' => 'Žádné záznamy nebyly nalezeny',
- 'list_sort_column' => 'Sort by column',
- 'list_sort_column_description' => 'Model column the records should be ordered by',
- 'list_sort_direction' => 'Směr',
- 'list_display_column' => 'Display column',
- 'list_display_column_description' => 'Column to display in the list. Used in the default component\'s partial.',
- 'list_display_column_required' => 'Please select a display column.',
- 'list_details_page' => 'Details page',
- 'list_details_page_description' => 'Page to display record details.',
- 'list_details_page_no' => '--no details page--',
- 'list_sorting' => 'Řazení',
- 'list_pagination' => 'Stránkování',
- 'list_order_direction_asc' => 'Vzestupně',
- 'list_order_direction_desc' => 'Sestupně',
- 'list_model' => 'Modelová třída',
- 'list_scope' => 'Scope',
- 'list_scope_description' => 'Optional model scope to fetch the records',
- 'list_scope_default' => '--select a scope, optional--',
- 'list_details_page_link' => 'Link to the details page',
- 'list_details_key_column' => 'Details key column',
- 'list_details_key_column_description' => 'Model column to use as a record identifier in the details page links.',
- 'list_details_url_parameter' => 'URL parameter name',
- 'list_details_url_parameter_description' => 'Name of the details page URL parameter which takes the record identifier.',
- 'details_title' => 'Record details',
- 'details_description' => 'Displays record details for a selected model',
- 'details_model' => 'Modelová třída',
- 'details_identifier_value' => 'Identifier value',
- 'details_identifier_value_description' => 'Identifier value to load the record from the database. Specify a fixed value or URL parameter name.',
- 'details_identifier_value_required' => 'The identifier value is required',
- 'details_key_column' => 'Key column',
- 'details_key_column_description' => 'Model column to use as a record identifier for fetching the record from the database.',
- 'details_key_column_required' => 'The key column name is required',
- 'details_display_column' => 'Display column',
- 'details_display_column_description' => 'Model column to display on the details page. Used in the default component\'s partial.',
- 'details_display_column_required' => 'Please select a display column.',
- 'details_not_found_message' => 'Not found message',
- 'details_not_found_message_description' => 'Message to display if the record is not found. Used in the default component\'s partial.',
- 'details_not_found_message_default' => 'Záznam nebyl nalezen',
- ],
+ [
+ 'name' => 'Builder',
+ 'description' => 'Poskytuje vizuální nástroj pro tvorbu October pluginů.',
+ 'add' => 'Vytvořit plugin',
+ 'no_records' => 'Žádný plugin nenalezen',
+ 'no_description' => 'Bez popisu',
+ 'no_name' => 'Bez jména',
+ 'search' => 'Vyhledávání...',
+ 'filter_description' => 'Zobrazit všechny pluginy, nebo pouze vaše.',
+ 'settings' => 'Nastavení',
+ 'entity_name' => 'Plugin',
+ 'field_name' => 'Název',
+ 'field_author' => 'Autor',
+ 'field_description' => 'Popis',
+ 'field_icon' => 'Ikona pluginu',
+ 'field_plugin_namespace' => 'Jmenný prostor pluginu',
+ 'field_author_namespace' => 'Jmenný prostor autora',
+ 'field_namespace_description' => 'Jmenný prostor může obsahovat pouze znaky, číslice a měl by začínat písmenem. Například Blog.',
+ 'field_author_namespace_description' => 'Zadaný jmenný prostor nebude možno přes Builder poté změnit. Příklad jmenného prostoru: JohnSmith.',
+ 'tab_general' => 'Základní parametry',
+ 'tab_description' => 'Popis',
+ 'field_homepage' => 'Domovská URL pluginu',
+ 'no_description' => 'Tento plugin nemá žádný popisek',
+ 'error_settings_not_editable' => 'Nastavení tohoto pluginu nelze přes Builder měnit, protože nemá soubor plugin.yaml.',
+ 'update_hint' => 'Překlad názvu a popisku můžete měnit v menu Lokalizace.',
+ 'manage_plugins' => 'Tvorba a úprava pluginů.',
+ ],
+ 'author_name' => [
+ 'title' => 'Jméno autora',
+ 'description' => 'Výchozí jméno autora pro nově vytvořené pluginy. Toto jméno však můžete změnit při vytváření nového pluginu, nebo poté v editaci.',
+ ],
+ 'author_namespace' => [
+ 'title' => 'Jmenný prostor autora',
+ 'description' => 'Pokud budete chtít plugin umístit na stránkách OctoberCMS, jmenný prostor by se měl být pro všechny vaše pluginy shodný. Více detailů najdete v dokumentaci publikace pluginů.',
+ ],
+ 'database' => [
+ 'menu_label' => 'Databáze',
+ 'no_records' => 'Žádné tabulky nebyly nalezeny',
+ 'search' => 'Vyhledávání...',
+ 'confirmation_delete_multiple' => 'Opravdu chcete odstranit vybrané tabulky?',
+ 'field_name' => 'Název databázové tabulky',
+ 'tab_columns' => 'Sloupce',
+ 'column_name_name' => 'Sloupec',
+ 'column_name_required' => 'Zadejte prosím název sloupce',
+ 'column_name_type' => 'Typ',
+ 'column_type_required' => 'Vyberte prosím typ sloupce',
+ 'column_name_length' => 'Délka',
+ 'column_validation_length' => "Délka by měla být zadaná číselně, nebo zadaná jako číslo a přesnost (10,2) pro desetinná čísla. Mezery nejsou povolené.",
+ 'column_validation_title' => 'V názvu sloupce mohou být pouze čísla, malá písmena a podtržítko.',
+ 'column_name_unsigned' => 'Bez znaménka',
+ 'column_name_nullable' => 'Nulový',
+ 'column_auto_increment' => 'AUTOINCR',
+ 'column_default' => 'Výchozí',
+ 'column_auto_primary_key' => 'PK',
+ 'tab_new_table' => 'Nová tabulka',
+ 'btn_add_column' => 'Přidat sloupec',
+ 'btn_delete_column' => 'Smazat sloupec',
+ 'confirm_delete' => 'Opravdu chcete smazat tuto tabulku?',
+ 'error_enum_not_supported' => 'Tabulka obsahuje sloupce s typem "enum" které Builder aktuálně nepodporuje.',
+ 'error_table_name_invalid_prefix' => "Název tabulky by měl začínat prefixem pluginu: ':prefix'.",
+ 'error_table_name_invalid_characters' => 'Formát názvu tabulky není správný, měl by obsahovat pouze písmena, číslice a nebo podtržítka. Název by měl začínat písmenem a neměl by obsahovat mezery.',
+ 'error_table_duplicate_column' => "Takový název sloupce již existuje: ':column'.",
+ 'error_table_auto_increment_in_compound_pk' => 'An auto-increment column cannot be a part of a compound primary key.',
+ 'error_table_mutliple_auto_increment' => 'Tabulka nemůže obsahovat více sloupců s auto-increment vlastností.',
+ 'error_table_auto_increment_non_integer' => 'Auto-increment sloupec by měl mít číselný typ.',
+ 'error_table_decimal_length' => "Zápis délky pro typ :type by měl být ve formátu '10,2', bez mezer.",
+ 'error_table_length' => 'Zápis délky pro typ :type by měl být zadaný jako číslo.',
+ 'error_unsigned_type_not_int' => "Chyba ve sloupci ':column'. Přiznak 'bez znaménka' můžete použít pouze pro číselné typy.",
+ 'error_integer_default_value' => "Chybná výchozí hodnota pro číselný sloupec ':column'. Povolené formáty jsou '10', '-10'.",
+ 'error_decimal_default_value' => "Chybná výchozí hodnota pro desetinný sloupec ':column'. Povolené formáty jsou '1.00', '-1.00'.",
+ 'error_boolean_default_value' => "Chybná výchozí hodnota pro pravdivostní sloupec ':column'. Povolené hodnoty jsou '0' and '1'.",
+ 'error_unsigned_negative_value' => "Výchozí hodnota pro sloupec bez znaménka ':column' nemůže být záporná.",
+ 'error_table_already_exists' => "Tabulka ':name' již v databázi existuje.",
+ ],
+ 'model' => [
+ 'menu_label' => 'Modely',
+ 'entity_name' => 'Model',
+ 'no_records' => 'Žádný model nebyl nalezen',
+ 'search' => 'Vyhledávání...',
+ 'add' => 'Přidat...',
+ 'forms' => 'Formuláře',
+ 'lists' => 'Listování',
+ 'field_class_name' => 'Název třídy',
+ 'field_database_table' => 'Databazová tabulka',
+ 'error_class_name_exists' => 'Soubor modelu pro tuto třídu již existuje: :path',
+ 'add_form' => 'Přidat formulář',
+ 'add_list' => 'Přidat listování',
+ ],
+ 'form' => [
+ 'saved'=> 'Formulář byl úspěšně uložen.',
+ 'confirm_delete' => 'Opravdu chcete smazat tento formulář?',
+ 'tab_new_form' => 'Nový formulář',
+ 'property_label_title' => 'Popisek',
+ 'property_label_required' => 'Zadejte prosím popisek pole.',
+ 'property_span_title' => 'Zarovnání',
+ 'property_comment_title' => 'Komentář',
+ 'property_comment_above_title' => 'Komentář nad',
+ 'property_default_title' => 'Výchozí',
+ 'property_checked_default_title' => 'Ve výchozím stavu zaškrtnuto',
+ 'property_css_class_title' => 'CSS třída',
+ 'property_css_class_description' => 'Volitelná CSS třída která se přiřadí ke kontejneru pole.',
+ 'property_disabled_title' => 'Neaktivní',
+ 'property_hidden_title' => 'Skrytý',
+ 'property_required_title' => 'Povinný',
+ 'property_field_name_title' => 'Název pole',
+ 'property_placeholder_title' => 'Zástupný text',
+ 'property_default_from_title' => 'Default from',
+ 'property_stretch_title' => 'Stretch',
+ 'property_stretch_description' => 'Definuje jestli se toto pole zmenší tak, aby se vešlo to rodičovského prvku na výšku.',
+ 'property_context_title' => 'Kontext',
+ 'property_context_description' => 'Definuje jaký kontext bude zobrazen při zobrazení tohoto pole.',
+ 'property_context_create' => 'Vytvořit',
+ 'property_context_update' => 'Upravit',
+ 'property_context_preview' => 'Náhled',
+ 'property_dependson_title' => 'Závisí na',
+ 'property_trigger_action' => 'Akce',
+ 'property_trigger_show' => 'Zobrazit',
+ 'property_trigger_hide' => 'Schovat',
+ 'property_trigger_enable' => 'Aktivní',
+ 'property_trigger_disable' => 'Neaktivní',
+ 'property_trigger_empty' => 'Prázdný',
+ 'property_trigger_field' => 'Pole',
+ 'property_trigger_field_description' => 'Defines the other field name that will trigger the action.',
+ 'property_trigger_condition' => 'Podmínka',
+ 'property_trigger_condition_description' => 'Determines the condition the specified field should satisfy for the condition to be considered "true". Supported values: checked, unchecked, value[somevalue].',
+ 'property_trigger_condition_checked' => 'Zaškrtnuté',
+ 'property_trigger_condition_unchecked' => 'Nezaškrtnuté',
+ 'property_trigger_condition_somevalue' => 'value[enter-the-value-here]',
+ 'property_preset_title' => 'Preset',
+ 'property_preset_description' => 'Allows the field value to be initially set by the value of another field, converted using the input preset converter.',
+ 'property_preset_field' => 'Pole',
+ 'property_preset_field_description' => 'Defines the other field name to source the value from.',
+ 'property_preset_type' => 'Typ',
+ 'property_preset_type_description' => 'Specifies the conversion type',
+ 'property_attributes_title' => 'Atributy',
+ 'property_attributes_description' => 'Custom HTML attributes to add to the form field element.',
+ 'property_container_attributes_title' => 'Kontejnér atributů',
+ 'property_container_attributes_description' => 'Custom HTML attributes to add to the form field container element.',
+ 'property_group_advanced' => 'Pokročilé',
+ 'property_dependson_description' => 'A list of other field names this field depends on, when the other fields are modified, this field will update. One field per line.',
+ 'property_trigger_title' => 'Trigger',
+ 'property_trigger_description' => 'Allows to change elements attributes such as visibility or value, based on another elements\' state.',
+ 'property_default_from_description' => 'Takes the default value from the value of another field.',
+ 'property_field_name_required' => 'Název pole je povinný',
+ 'property_field_name_regex' => 'Název pole může obsahovat pouze písmena, číslice, podtržítka, pomlčky a hranaté závorky.',
+ 'property_attributes_size' => 'Velikost',
+ 'property_attributes_size_tiny' => 'Nejmenší',
+ 'property_attributes_size_small' => 'Malý',
+ 'property_attributes_size_large' => 'Normální',
+ 'property_attributes_size_huge' => 'Veliký',
+ 'property_attributes_size_giant' => 'Obrovský',
+ 'property_comment_position' => 'Zobrazit komentář',
+ 'property_comment_position_above' => 'Nad prvkem',
+ 'property_comment_position_below' => 'Pod prvkem',
+ 'property_hint_path' => 'Hint partial path',
+ 'property_hint_path_description' => 'Path to a partial file that contains the hint text. Use the $ symbol to refer the plugins root directory, for example: $/acme/blog/partials/_hint.htm',
+ 'property_hint_path_required' => 'Please enter the hint partial path',
+ 'property_partial_path' => 'Cesta k dílčímu souboru',
+ 'property_partial_path_description' => 'Path to a partial file. Use the $ symbol to refer the plugins root directory, for example: $/acme/blog/partials/_partial.htm',
+ 'property_partial_path_required' => 'Prosím zadejte cestu k dílčímu souboru',
+ 'property_code_language' => 'Jazyk',
+ 'property_code_theme' => 'Téma',
+ 'property_theme_use_default' => 'Použít výchozí téma',
+ 'property_group_code_editor' => 'Editor kódu',
+ 'property_gutter' => 'Výplň',
+ 'property_gutter_show' => 'Viditelný',
+ 'property_gutter_hide' => 'Skrytý',
+ 'property_wordwrap' => 'Word wrap',
+ 'property_wordwrap_wrap' => 'Wrap',
+ 'property_wordwrap_nowrap' => 'Don\'t wrap',
+ 'property_fontsize' => 'Velikost písma',
+ 'property_codefolding' => 'Code folding',
+ 'property_codefolding_manual' => 'Manual',
+ 'property_codefolding_markbegin' => 'Mark begin',
+ 'property_codefolding_markbeginend' => 'Mark begin and end',
+ 'property_autoclosing' => 'Automatické zavírání',
+ 'property_enabled' => 'Aktivní',
+ 'property_disabled' => 'Neaktivní',
+ 'property_soft_tabs' => 'Soft tabs',
+ 'property_tab_size' => 'Velikost záložky',
+ 'property_readonly' => 'Pouze pro čtení',
+ 'property_use_default' => 'Use default settings',
+ 'property_options' => 'Volby',
+ 'property_prompt' => 'Prompt',
+ 'property_prompt_description' => 'Text to display for the create button.',
+ 'property_prompt_default' => 'Přidat nový prvek',
+ 'property_available_colors' => 'Dostupné barvy',
+ 'property_available_colors_description' => 'List of available colors in hex format (#FF0000). Leave empty for the default color set. Enter one value per line.',
+ 'property_datepicker_mode' => 'Mód',
+ 'property_datepicker_mode_date' => 'Datum',
+ 'property_datepicker_mode_datetime' => 'Datum a čas',
+ 'property_datepicker_mode_time' => 'Čas',
+ 'property_datepicker_min_date' => 'Min datum',
+ 'property_datepicker_max_date' => 'Max datum',
+ 'property_markdown_mode' => 'Mód',
+ 'property_markdown_mode_split' => 'Rozdělit',
+ 'property_markdown_mode_tab' => 'Záložka',
+ 'property_fileupload_mode' => 'Mód',
+ 'property_fileupload_mode_file' => 'Soubor',
+ 'property_fileupload_mode_image' => 'Obrázek',
+ 'property_group_fileupload' => 'Nahrávání obrázků',
+ 'property_fileupload_prompt' => 'Prompt',
+ 'property_fileupload_prompt_description' => 'Text to display for the upload button, applies to File mode only, optional.',
+ 'property_fileupload_image_width' => 'Šířka obrázku',
+ 'property_fileupload_image_width_description' => 'Optional parameter - images will be resized to this width. Applies to Image mode only.',
+ 'property_fileupload_invalid_dimension' => 'Invalid dimension value - please enter a number.',
+ 'property_fileupload_image_height' => 'Výška obrázku',
+ 'property_fileupload_image_height_description' => 'Optional parameter - images will be resized to this height. Applies to Image mode only.',
+ 'property_fileupload_file_types' => 'Typy souborů',
+ 'property_fileupload_file_types_description' => 'Optional comma separated list of file extensions that are accepted by the uploader. Eg: zip,txt',
+ 'property_fileupload_mime_types' => 'MIME typy',
+ 'property_fileupload_mime_types_description' => 'Optional comma separated list of MIME types that are accepted by the uploader, either as file extensions or fully qualified names. Eg: bin,txt',
+ 'property_fileupload_use_caption' => 'Použít popisek',
+ 'property_fileupload_use_caption_description' => 'Allows a title and description to be set for the file.',
+ 'property_fileupload_thumb_options' => 'Volby náhledu',
+ 'property_fileupload_thumb_options_description' => 'Manages options for the automatically generated thumbnails. Applies only for the Image mode.',
+ 'property_fileupload_thumb_mode' => 'Mód',
+ 'property_fileupload_thumb_auto' => 'Auto',
+ 'property_fileupload_thumb_exact' => 'Přesně',
+ 'property_fileupload_thumb_portrait' => 'Portrét',
+ 'property_fileupload_thumb_landscape' => 'Krajina',
+ 'property_fileupload_thumb_crop' => 'Crop',
+ 'property_fileupload_thumb_extension' => 'Přípona souboru',
+ 'property_name_from' => 'Name column',
+ 'property_name_from_description' => 'Relation column name to use for displaying a name.',
+ 'property_description_from' => 'Description column',
+ 'property_description_from_description' => 'Relation column name to use for displaying a description.',
+ 'property_recordfinder_prompt' => 'Prompt',
+ 'property_recordfinder_prompt_description' => 'Text to display when there is no record selected. The %s character represents the search icon. Leave empty for the default prompt.',
+ 'property_recordfinder_list' => 'List configuration',
+ 'property_recordfinder_list_description' => 'A reference to a list column definition file. Use the $ symbol to refer the plugins root directory, for example: $/acme/blog/lists/_list.yaml',
+ 'property_recordfinder_list_required' => 'Please provide a path to the list YAML file',
+ 'property_group_recordfinder' => 'Record finder',
+ 'property_mediafinder_mode' => 'Mód',
+ 'property_mediafinder_mode_file' => 'Soubor',
+ 'property_mediafinder_mode_image' => 'Obrázek',
+ 'property_mediafinder_prompt' => 'Prompt',
+ 'property_mediafinder_prompt_description' => 'Text to display when there is no item selected. The %s character represents the media manager icon. Leave empty for the default prompt.',
+ 'property_group_relation' => 'Relace',
+ 'property_relation_prompt' => 'Prompt',
+ 'property_relation_prompt_description' => 'Text to display when there is no available selections.',
+ 'control_group_standard' => 'Standardní',
+ 'control_group_widgets' => 'Widgets',
+ 'click_to_add_control' => 'Přidat prvek',
+ 'loading' => 'Načítám...',
+ 'control_text' => 'Text',
+ 'control_text_description' => 'Single line text box',
+ 'control_password' => 'Heslo',
+ 'control_password_description' => 'Single line password text field',
+ 'control_checkbox' => 'Checkbox',
+ 'control_checkbox_description' => 'Single checkbox',
+ 'control_switch' => 'Přepínač',
+ 'control_switch_description' => 'Single switchbox, an alternative for checkbox',
+ 'control_textarea' => 'Víceřádkové textové pole',
+ 'control_textarea_description' => 'Multiline text box with controllable height',
+ 'control_dropdown' => 'Dropdown',
+ 'control_dropdown_description' => 'Dropdown list with static or dynamic options',
+ 'control_unknown' => 'Unknown control type: :type',
+ 'control_repeater' => 'Repeater',
+ 'control_repeater_description' => 'Outputs a repeating set of form controls',
+ 'control_number' => 'Číslo',
+ 'control_number_description' => 'Single line text box that takes numbers only',
+ 'control_hint' => 'Hint',
+ 'control_hint_description' => 'Outputs a partial contents in a box that can be hidden by the user',
+ 'control_partial' => 'Partial',
+ 'control_partial_description' => 'Outputs a partial contents',
+ 'control_section' => 'Sekce',
+ 'control_section_description' => 'Displays a form section with heading and subheading',
+ 'control_radio' => 'Radio list',
+ 'control_radio_description' => 'A list of radio options, where only one item can be selected at a time',
+ 'control_radio_option_1' => 'Volba 1',
+ 'control_radio_option_2' => 'Volba 2',
+ 'control_checkboxlist' => 'Checkbox list',
+ 'control_checkboxlist_description' => 'A list of checkboxes, where multiple items can be selected',
+ 'control_codeeditor' => 'Editor kódu',
+ 'control_codeeditor_description' => 'Plaintext editor for formatted code or markup',
+ 'control_colorpicker' => 'Výběr barvy',
+ 'control_colorpicker_description' => 'A field for selecting a hexadecimal color value',
+ 'control_datepicker' => 'Výběr data',
+ 'control_datepicker_description' => 'Text field used for selecting date and times',
+ 'control_richeditor' => 'Rich editor',
+ 'control_richeditor_description' => 'Visual editor for rich formatted text, also known as a WYSIWYG editor',
+ 'control_markdown' => 'Markdown editor',
+ 'control_markdown_description' => 'Basic editor for Markdown formatted text',
+ 'control_fileupload' => 'Nahrávání souborů',
+ 'control_fileupload_description' => 'File uploader for images or regular files',
+ 'control_recordfinder' => 'Record finder',
+ 'control_recordfinder_description' => 'Field with details of a related record with the record search feature',
+ 'control_mediafinder' => 'Media finder',
+ 'control_mediafinder_description' => 'Field for selecting an item from the Media Manager library',
+ 'control_relation' => 'Relace',
+ 'control_relation_description' => 'Displays either a dropdown or checkbox list for selecting a related record',
+ 'error_file_name_required' => 'Please enter the form file name.',
+ 'error_file_name_invalid' => 'The file name can contain only Latin letters, digits, underscores, dots and hashes.',
+ 'span_left' => 'Doleva',
+ 'span_right' => 'Doprava',
+ 'span_full' => 'Plná šířka',
+ 'span_auto' => 'Automaticky',
+ 'empty_tab' => 'Prázdná záložka',
+ 'confirm_close_tab' => 'The tab contains controls which will be deleted. Continue?',
+ 'tab' => 'Form tab',
+ 'tab_title' => 'Název',
+ 'controls' => 'Prvky formuláře',
+ 'property_tab_title_required' => 'Název záložky je povinný.',
+ 'tabs_primary' => 'Primární záložka',
+ 'tabs_secondary' => 'Vedlejší záložka',
+ 'tab_stretch' => 'Stretch',
+ 'tab_stretch_description' => 'Specifies if this tabs container stretches to fit the parent height.',
+ 'tab_css_class' => 'CSS třída',
+ 'tab_css_class_description' => 'Přiřadí CSS třídu kontejneru záložky.',
+ 'tab_name_template' => 'Záložka %s',
+ 'tab_already_exists' => 'Záložka s tímto názvem již existuje.'
+ ],
+ 'list' => [
+ 'tab_new_list' => 'Nový list',
+ 'saved'=> 'List byl úspěšně uložen.',
+ 'confirm_delete' => 'Opravdu chcete smazat tento list?',
+ 'tab_columns' => 'Sloupce',
+ 'btn_add_column' => 'Přidat sloupec',
+ 'btn_delete_column' => 'Smazat sloupec',
+ 'column_dbfield_label' => 'Field',
+ 'column_dbfield_required' => 'Please enter the model field',
+ 'column_name_label' => 'Popisek',
+ 'column_label_required' => 'Zadejte prosím popisek sloupce',
+ 'column_type_label' => 'Type',
+ 'column_type_required' => 'Zadejte prosím typ sloupce',
+ 'column_type_text' => 'Text',
+ 'column_type_number' => 'Číslo',
+ 'column_type_switch' => 'Switch',
+ 'column_type_datetime' => 'Datum a čas',
+ 'column_type_date' => 'Datum',
+ 'column_type_time' => 'Čas',
+ 'column_type_timesince' => 'Čas od',
+ 'column_type_timetense' => 'Čas do',
+ 'column_type_select' => 'Select',
+ 'column_type_partial' => 'Partial',
+ 'column_label_default' => 'Výchozí',
+ 'column_label_searchable' => 'Vyhledávání',
+ 'column_label_sortable' => 'Řazení',
+ 'column_label_invisible' => 'Neviditelný',
+ 'column_label_select' => 'Výběr',
+ 'column_label_relation' => 'Relace',
+ 'column_label_css_class' => 'CSS class',
+ 'column_label_width' => 'Šířka',
+ 'column_label_path' => 'Cesta',
+ 'column_label_format' => 'Formát',
+ 'column_label_value_from' => 'Hodnota od',
+ 'error_duplicate_column' => "Duplicitní pole sloupce: ':column'."
+ ],
+ 'controller' => [
+ 'menu_label' => 'Kontroléry',
+ 'no_records' => 'Žádné kontrolery nebyly nalezeny',
+ 'controller' => 'Kontrolér',
+ 'behaviors' => 'Chování',
+ 'new_controller' => 'Nový kontrolér',
+ 'error_controller_has_no_behaviors' => 'The controller doesn\'t have configurable behaviors.',
+ 'error_invalid_yaml_configuration' => 'Error loading behavior configuration file: :file',
+ 'behavior_form_controller' => 'Možnost vytvářet a měnit záznamy',
+ 'behavior_form_controller_description' => 'Přidá možnost vytvářet a měnit záznamy pomocí formulářů. Toto chování vytvoří tři pohledy pro tvorbu položky, úpravu a náhled.',
+ 'property_behavior_form_placeholder' => '--vyberte formulář--',
+ 'property_behavior_form_name' => 'Název',
+ 'property_behavior_form_name_description' => 'The name of the object being managed by this form',
+ 'property_behavior_form_name_required' => 'Please enter the form name',
+ 'property_behavior_form_file' => 'Form configuration',
+ 'property_behavior_form_file_description' => 'Reference to a form field definition file',
+ 'property_behavior_form_file_required' => 'Please enter a path to the form configuration file',
+ 'property_behavior_form_model_class' => 'Modelová třída',
+ 'property_behavior_form_model_class_description' => 'A model class name, the form data is loaded and saved against this model.',
+ 'property_behavior_form_model_class_required' => 'Please select a model class',
+ 'property_behavior_form_default_redirect' => 'Výchozí přesměrování',
+ 'property_behavior_form_default_redirect_description' => 'A page to redirect to by default when the form is saved or cancelled.',
+ 'property_behavior_form_create' => 'Create record page',
+ 'property_behavior_form_redirect' => 'Přesměrování',
+ 'property_behavior_form_redirect_description' => 'A page to redirect to when a record is created.',
+ 'property_behavior_form_redirect_close' => 'Close redirect',
+ 'property_behavior_form_redirect_close_description' => 'A page to redirect to when a record is created and the close post variable is sent with the request.',
+ 'property_behavior_form_flash_save' => 'Save flash message',
+ 'property_behavior_form_flash_save_description' => 'Flash message to display when record is saved.',
+ 'property_behavior_form_page_title' => 'Page title',
+ 'property_behavior_form_update' => 'Update record page',
+ 'property_behavior_form_update_redirect' => 'Přesměrování',
+ 'property_behavior_form_create_redirect_description' => 'A page to redirect to when a record is saved.',
+ 'property_behavior_form_flash_delete' => 'Delete flash message',
+ 'property_behavior_form_flash_delete_description' => 'Flash message to display when record is deleted.',
+ 'property_behavior_form_preview' => 'Preview record page',
+ 'behavior_list_controller' => 'Možnost listování záznamy',
+ 'behavior_list_controller_description' => 'Vytvoří tabulku s řazením a vyhledávání s možností definovat odkaz na detail jednotlivého záznamu. Chování automaticky vytvoří akci kontroléru "index".',
+ 'property_behavior_list_title' => 'List title',
+ 'property_behavior_list_title_required' => 'Please enter the list title',
+ 'property_behavior_list_placeholder' => '--select list--',
+ 'property_behavior_list_model_class' => 'Modelová třída',
+ 'property_behavior_list_model_class_description' => 'A model class name, the list data is loaded from this model.',
+ 'property_behavior_form_model_class_placeholder' => '--select model--',
+ 'property_behavior_list_model_class_required' => 'Please select a model class',
+ 'property_behavior_list_model_placeholder' => '--select model--',
+ 'property_behavior_list_file' => 'List configuration file',
+ 'property_behavior_list_file_description' => 'Reference to a list definition file',
+ 'property_behavior_list_file_required' => 'Please enter a path to the list configuration file',
+ 'property_behavior_list_record_url' => 'Record URL',
+ 'property_behavior_list_record_url_description' => 'Link each list record to another page. Eg: users/update:id. The :id part is replaced with the record identifier.',
+ 'property_behavior_list_no_records_message' => 'No records message',
+ 'property_behavior_list_no_records_message_description' => 'A message to display when no records are found',
+ 'property_behavior_list_recs_per_page' => 'Records per page',
+ 'property_behavior_list_recs_per_page_description' => 'Records to display per page, use 0 for no pages. Default: 0',
+ 'property_behavior_list_recs_per_page_regex' => 'Records per page should be an integer value',
+ 'property_behavior_list_show_setup' => 'Show setup button',
+ 'property_behavior_list_show_sorting' => 'Show sorting',
+ 'property_behavior_list_default_sort' => 'Default sorting',
+ 'property_behavior_form_ds_column' => 'Column',
+ 'property_behavior_form_ds_direction' => 'Direction',
+ 'property_behavior_form_ds_asc' => 'Ascending',
+ 'property_behavior_form_ds_desc' => 'Descending',
+ 'property_behavior_list_show_checkboxes' => 'Show checkboxes',
+ 'property_behavior_list_onclick' => 'On click handler',
+ 'property_behavior_list_onclick_description' => 'Custom JavaScript code to execute when clicking on a record.',
+ 'property_behavior_list_show_tree' => 'Show tree',
+ 'property_behavior_list_show_tree_description' => 'Displays a tree hierarchy for parent/child records.',
+ 'property_behavior_list_tree_expanded' => 'Tree expanded',
+ 'property_behavior_list_tree_expanded_description' => 'Determines if tree nodes should be expanded by default.',
+ 'property_behavior_list_toolbar' => 'Toolbar',
+ 'property_behavior_list_toolbar_buttons' => 'Buttons partial',
+ 'property_behavior_list_toolbar_buttons_description' => 'Reference to a controller partial file with the toolbar buttons. Eg: list_toolbar',
+ 'property_behavior_list_search' => 'Search',
+ 'property_behavior_list_search_prompt' => 'Search prompt',
+ 'property_behavior_list_filter' => 'Filter configuration',
+ 'error_controller_not_found' => 'Original controller file is not found.',
+ 'error_invalid_config_file_name' => 'The behavior :class configuration file name (:file) contains invalid characters and cannot be loaded.',
+ 'error_file_not_yaml' => 'The behavior :class configuration file (:file) is not a YAML file. Only YAML configuration files are supported.',
+ 'saved' => 'Kontrolér byl úspěšně uložen.',
+ 'controller_name' => 'Název kontroléru',
+ 'controller_name_description' => 'Název kontroléru definuje název třídy a URL kontroléru v administraci. Použijte prosím standardní pojmenování PHP tříd - první symbol je velkým písmenem a zbytek normálně, například: Categories, Posts, Products.',
+ 'base_model_class' => 'Rodičovská třída',
+ 'base_model_class_description' => 'Vyberte třídu modelu ze které bude tento kontrolér dědit. Chování kontroléru můžete nastavit později.',
+ 'base_model_class_placeholder' => '--vyberte model--',
+ 'controller_behaviors' => 'Chování',
+ 'controller_behaviors_description' => 'Vyberte chování, které má kontrolér implementovat. Builder automaticky vytvoří požadované soubory.',
+ 'controller_permissions' => 'Oprávnění',
+ 'controller_permissions_description' => 'Vyberte uživatelská práva potřebná pro tento kontrolér. Práva můžete nastavit v sekci Oprávnění v levém menu. Toto nastavení můžete později změnit v PHP skriptu.',
+ 'controller_permissions_no_permissions' => 'Plugin nemá vytvořena žádná oprávnění.',
+ 'menu_item' => 'Aktivní položka menu',
+ 'menu_item_description' => 'Vyberte položku menu, která bude aktivní pro tento kontrolér. Toto nastavení můžete kdykoli změnit v PHP skriptu.',
+ 'menu_item_placeholder' => '--vyberte položku menu--',
+ 'error_unknown_behavior' => 'Třída chování :class není registrovaná v knihovně všech chování.',
+ 'error_behavior_view_conflict' => 'The selected behaviors provide conflicting views (:view) and cannot be used together in a controller.',
+ 'error_behavior_config_conflict' => 'The selected behaviors provide conflicting configuration files (:file) and cannot be used together in a controller.',
+ 'error_behavior_view_file_not_found' => 'View template :view of the behavior :class cannot be found.',
+ 'error_behavior_config_file_not_found' => 'Configuration template :file of the behavior :class cannot be found.',
+ 'error_controller_exists' => 'Controller file already exists: :file.',
+ 'error_controller_name_invalid' => 'Invalid controller name format. The name can only contain digits and Latin letters. The first symbol should be a capital Latin letter.',
+ 'error_behavior_view_file_exists' => 'Controller view file already exists: :view.',
+ 'error_behavior_config_file_exists' => 'Behavior configuration file already exists: :file.',
+ 'error_save_file' => 'Error saving controller file: :file',
+ 'error_behavior_requires_base_model' => 'Behavior :behavior requires a base model class to be selected.',
+ 'error_model_doesnt_have_lists' => 'The selected model doesn\'t have any lists. Please create a list first.',
+ 'error_model_doesnt_have_forms' => 'The selected model doesn\'t have any forms. Please create a form first.'
+ ],
+ 'version' => [
+ 'menu_label' => 'Verze',
+ 'no_records' => 'Žádné verze pluginu',
+ 'search' => 'Vyhledávání...',
+ 'tab' => 'Verze',
+ 'saved' => 'Verze byla úspěšně uložena.',
+ 'confirm_delete' => 'Opravdu chcete smazat vybranou verzi?',
+ 'tab_new_version' => 'Nová verze',
+ 'migration' => 'Migraci',
+ 'seeder' => 'Seeder',
+ 'custom' => 'Novou verzi',
+ 'apply_version' => 'Aplikovat tuto verzi',
+ 'applying' => 'Aplikování verze...',
+ 'rollback_version' => 'Vrátit na tuto verzi',
+ 'rolling_back' => 'Vracení zpět...',
+ 'applied' => 'Verze byla úspěšně aplikována.',
+ 'rolled_back' => 'Verze byla úspěšně vrácena zpět.',
+ 'hint_save_unapplied' => 'Byla uložena neaplikovaná verze. Neaplikované verze mohou být automaticky aplikovány po přihlášení do administrace jakýmkoli uživatelem a nebo pokud je databázová tabulka uložena v sekci Databáze.',
+ 'hint_rollback' => 'Vracení verze zpět rovněž vrátí zpět všechny novější verze. Neaplikované verze mohou být automaticky aplikovány po přihlášení do administrace jakýmkoli uživatelem a nebo pokud je databázová tabulka uložena v sekci Databáze.',
+ 'hint_apply' => 'Vracení verze zpět rovněž vrátí zpět všechny starší neaplikované verze.',
+ 'dont_show_again' => 'Znovu nezobrazovat',
+ 'save_unapplied_version' => 'Uložit neaplikovanou verzi'
+ ],
+ 'menu' => [
+ 'menu_label' => 'Menu administrace',
+ 'tab' => 'Menu',
+ 'items' => 'Položky menu',
+ 'saved' => 'Menu byla úspěšně uložena.',
+ 'add_main_menu_item' => 'Přidat položku menu',
+ 'new_menu_item' => 'Položka menu',
+ 'add_side_menu_item' => 'Přidat pod-položku',
+ 'side_menu_item' => 'Side menu item',
+ 'property_label' => 'Popisek',
+ 'property_label_required' => 'Zadejte prosím popisek položky menu.',
+ 'property_url_required' => 'Zadejte prosím URL položky menu.',
+ 'property_url' => 'URL',
+ 'property_icon' => 'Ikona',
+ 'property_icon_required' => 'Vyberte prosím ikonu',
+ 'property_permissions' => 'Oprávnění',
+ 'property_order' => 'Pořadí',
+ 'property_order_invalid' => 'Zadejte prosím pořadí položky menu jako číslo.',
+ 'property_order_description' => 'Pořadí položek určuje jejich posloupnost v menu. Pokud není pořadí zadáno, automaticky se umístí položka nakonec. Výchozí hodnoty pořadí jsou násobky 100.',
+ 'property_attributes' => 'HTML attributy',
+ 'property_code' => 'Kód',
+ 'property_code_invalid' => 'Kód položky může obsahovat pouze písmena a číslice',
+ 'property_code_required' => 'Zadejte prosím kód položky menu.',
+ 'error_duplicate_main_menu_code' => "Kód položky hlavního menu je duplicitní: ':code'.",
+ 'error_duplicate_side_menu_code' => "Kód položky postranního menu je duplicitní: ':code'.",
+ ],
+ 'localization' => [
+ 'menu_label' => 'Lokalizace',
+ 'language' => 'Zkratka jazyka',
+ 'strings' => 'Řetězce',
+ 'confirm_delete' => 'Opravdu chcete smazat soubor s překladem?',
+ 'tab_new_language' => 'Nový jazyk',
+ 'no_records' => 'Žádné jazyky nenalezeny',
+ 'saved' => 'Soubor s překladem byl úspěšně uložen.',
+ 'error_cant_load_file' => 'Nepodařilo se načíst požadovaný soubor protože neexistuje.',
+ 'error_bad_localization_file_contents' => 'Nepodařilo se načíst požadovaný soubor. Soubory s překladem mohou obsahovat pouze pole definující překlady řetězců.',
+ 'error_file_not_array' => 'Nepodařilo se načíst požadovaný soubor. Překladový soubor musí vrátit pole.',
+ 'save_error' => "Chyba ukládání souboru ':name'. Zkontrolujte prosím práva k zápisu.",
+ 'error_delete_file' => 'Chyba mazání překladového souboru.',
+ 'add_missing_strings' => 'Přidat chybějící řetězce',
+ 'copy' => 'Kopírovat',
+ 'add_missing_strings_label' => 'Vyberte jazyk ze kterého se zkopírují chybějící řetězce',
+ 'no_languages_to_copy_from' => 'Nejsou definovány žádné jazyky ze kterých bychom mohli zkopírovat řetězce.',
+ 'new_string_warning' => 'Nový řetězec nebo sekce',
+ 'structure_mismatch' => 'Struktura zdrojového jazykového souboru neodpovídá struktuře editovaného souboru. Některé nezávislé řetězce v editovaném souboru odpovídají sekcím ve zdrojovém souboru (nebo naopak) a nemohou být automaticky sloučeny.',
+ 'create_string' => 'Vytvořit nový řetězec',
+ 'string_key_label' => 'Klíč řetězce',
+ 'string_key_comment' => 'Zadejte klíč řetězce s použitím tečky jako oddělovače, například: plugin.search. Řetězec bude vytvořen ve výchozím jazykovém souboru pluginu.',
+ 'string_value' => 'Hodnota řetězce',
+ 'string_key_is_empty' => 'Musíte vyplnit klíč řetězce',
+ 'string_value_is_empty' => 'Musíte vyplnit hodnotu řetězce',
+ 'string_key_exists' => 'Takový klíč řetězce již existuje',
+ ],
+ 'permission' => [
+ 'menu_label' => 'Oprávnění',
+ 'tab' => 'Oprávnění',
+ 'form_tab_permissions' => 'Oprávnění',
+ 'btn_add_permission' => 'Přidat oprávnění',
+ 'btn_delete_permission' => 'Smazat oprávnění',
+ 'column_permission_label' => 'Kód oprávnění',
+ 'column_permission_required' => 'Zadejte prosím kód oprávnění',
+ 'column_tab_label' => 'Název záložky',
+ 'column_tab_required' => 'Zadejte prosím název záložky oprávnění',
+ 'column_label_label' => 'Popisek',
+ 'column_label_required' => 'Zadejte prosím popisek oprávnění',
+ 'saved' => 'Oprávnění bylo úspěšně uloženo.',
+ 'error_duplicate_code' => "Kód oprávnění je duplicitní: ':code'.",
+ ],
+ 'yaml' => [
+ 'save_error' => "Chyba ukládání souboru ':name'. Zkontrolujte prosím práva k zápisu.",
+ ],
+ 'common' => [
+ 'error_file_exists' => "Soubor již existuje: ':path'.",
+ 'field_icon_description' => 'October používá ikony Font Autumn: http://octobercms.com/docs/ui/icon',
+ 'destination_dir_not_exists' => "Cílový adresář neexistuje: ':path'.",
+ 'error_make_dir' => "Chyba vytváření adresáře: ':name'.",
+ 'error_dir_exists' => "Adresář již existuje: ':path'.",
+ 'template_not_found' => "Soubor šablony nebyl nalezen: ':name'.",
+ 'error_generating_file' => "Chyba vytváření souboru: ':path'.",
+ 'error_loading_template' => "Chyba načtení souboru šablony: ':name'.",
+ 'select_plugin_first' => 'Nejdříve vyberte plugin. Pro zobrazení všech pluginů klikněte na symbol > na vrchu levého menu.',
+ 'plugin_not_selected' => 'Není vybrán žádný plugin',
+ 'add' => 'Přidat',
+ ],
+ 'migration' => [
+ 'entity_name' => 'Migrace',
+ 'error_version_invalid' => 'The version should be specified in format 1.0.1',
+ 'field_version' => 'Verze',
+ 'field_description' => 'Popis migrace',
+ 'field_code' => 'Kód migrace',
+ 'save_and_apply' => 'Uložit a aplikovat',
+ 'error_version_exists' => 'Tato verze migrace již existuje.',
+ 'error_script_filename_invalid' => 'The migration script file name can contain only Latin letters, digits and underscores. The name should start with a Latin letter and could not contain spaces.',
+ 'error_cannot_change_version_number' => 'Cannot change version number for an applied version.',
+ 'error_file_must_define_class' => 'Migration code should define a migration or seeder class. Leave the code field blank if you only want to update the version number.',
+ 'error_file_must_define_namespace' => 'Migration code should define a namespace. Leave the code field blank if you only want to update the version number.',
+ 'no_changes_to_save' => 'Žádné změny k uložení.',
+ 'error_namespace_mismatch' => "Migrační kód by měl používat jmenný prostor pluginu: :namespace",
+ 'error_migration_file_exists' => "Migrační soubor :file již existuje. Zadejte prosím jiný název třídy.",
+ 'error_cant_delete_applied' => 'This version has already been applied and cannot be deleted. Please rollback the version first.',
+ ],
+ 'components' => [
+ 'list_title' => 'Record list',
+ 'list_description' => 'Displays a list of records for a selected model',
+ 'list_page_number' => 'Číslo stránky',
+ 'list_page_number_description' => 'This value is used to determine what page the user is on.',
+ 'list_records_per_page' => 'Records per page',
+ 'list_records_per_page_description' => 'Number of records to display on a single page. Leave empty to disable pagination.',
+ 'list_records_per_page_validation' => 'Invalid format of the records per page value. The value should be a number.',
+ 'list_no_records' => 'No records message',
+ 'list_no_records_description' => 'Message to display in the list in case if there are no records. Used in the default component\'s partial.',
+ 'list_no_records_default' => 'Žádné záznamy nebyly nalezeny',
+ 'list_sort_column' => 'Sort by column',
+ 'list_sort_column_description' => 'Model column the records should be ordered by',
+ 'list_sort_direction' => 'Směr',
+ 'list_display_column' => 'Display column',
+ 'list_display_column_description' => 'Column to display in the list. Used in the default component\'s partial.',
+ 'list_display_column_required' => 'Please select a display column.',
+ 'list_details_page' => 'Details page',
+ 'list_details_page_description' => 'Page to display record details.',
+ 'list_details_page_no' => '--no details page--',
+ 'list_sorting' => 'Řazení',
+ 'list_pagination' => 'Stránkování',
+ 'list_order_direction_asc' => 'Vzestupně',
+ 'list_order_direction_desc' => 'Sestupně',
+ 'list_model' => 'Modelová třída',
+ 'list_scope' => 'Scope',
+ 'list_scope_description' => 'Optional model scope to fetch the records',
+ 'list_scope_default' => '--select a scope, optional--',
+ 'list_details_page_link' => 'Link to the details page',
+ 'list_details_key_column' => 'Details key column',
+ 'list_details_key_column_description' => 'Model column to use as a record identifier in the details page links.',
+ 'list_details_url_parameter' => 'URL parameter name',
+ 'list_details_url_parameter_description' => 'Name of the details page URL parameter which takes the record identifier.',
+ 'details_title' => 'Record details',
+ 'details_description' => 'Displays record details for a selected model',
+ 'details_model' => 'Modelová třída',
+ 'details_identifier_value' => 'Identifier value',
+ 'details_identifier_value_description' => 'Identifier value to load the record from the database. Specify a fixed value or URL parameter name.',
+ 'details_identifier_value_required' => 'The identifier value is required',
+ 'details_key_column' => 'Key column',
+ 'details_key_column_description' => 'Model column to use as a record identifier for fetching the record from the database.',
+ 'details_key_column_required' => 'The key column name is required',
+ 'details_display_column' => 'Display column',
+ 'details_display_column_description' => 'Model column to display on the details page. Used in the default component\'s partial.',
+ 'details_display_column_required' => 'Please select a display column.',
+ 'details_not_found_message' => 'Not found message',
+ 'details_not_found_message_description' => 'Message to display if the record is not found. Used in the default component\'s partial.',
+ 'details_not_found_message_default' => 'Záznam nebyl nalezen',
+ ]
];
diff --git a/plugins/rainlab/builder/lang/en.json b/plugins/rainlab/builder/lang/en.json
deleted file mode 100644
index 0827897..0000000
--- a/plugins/rainlab/builder/lang/en.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "Builder": "Builder",
- "Provides visual tools for building October plugins.": "Provides visual tools for building October plugins.",
- "Options Method": "Options Method",
- "Request options from this method name defined on the model or as a static method (Class::method).": "Request options from this method name defined on the model or as a static method (Class::method)."
-}
\ No newline at end of file
diff --git a/plugins/rainlab/builder/lang/en/lang.php b/plugins/rainlab/builder/lang/en/lang.php
index 9659141..904e006 100644
--- a/plugins/rainlab/builder/lang/en/lang.php
+++ b/plugins/rainlab/builder/lang/en/lang.php
@@ -1,823 +1,749 @@
- [
- 'add' => 'Create Plugin',
- 'no_records' => 'No plugins found',
- 'no_name' => 'No Name',
- 'search' => 'Search...',
- 'filter_description' => 'Display all plugins or only your plugins.',
- 'settings' => 'Settings',
- 'entity_name' => 'Plugin',
- 'field_name' => 'Name',
- 'field_author' => 'Author',
- 'field_description' => 'Description',
- 'field_icon' => 'Plugin Icon',
- 'field_plugin_namespace' => 'Plugin Namespace',
- 'field_author_namespace' => 'Author Namespace',
- 'field_namespace_description' => 'Namespace can contain only Latin letters and digits and should start with a Latin letter. Example plugin namespace: Blog',
- 'field_author_namespace_description' => 'You cannot change the namespaces with Builder after you create the plugin. Example author namespace: JohnSmith',
- 'tab_general' => 'General Parameters',
- 'tab_description' => 'Description',
- 'field_homepage' => 'Plugin Homepage (URL)',
- 'no_description' => 'No description provided for this plugin',
- 'error_settings_not_editable' => 'Settings of this plugin cannot be edited with Builder.',
- 'update_hint' => 'You can edit localized plugin\'s name and description on the Localization tab.',
- 'manage_plugins' => 'Create and edit plugins',
- ],
- 'author_name' => [
- 'title' => 'Author Name',
- 'description' => 'Default author name to use for your new plugins. The author name is not fixed - you can change it in the plugins configuration at any time.',
- ],
- 'author_namespace' => [
- 'title' => 'Author Namespace',
- 'description' => 'If you develop for the Marketplace, the namespace should match the author code and cannot be changed. Refer to the documentation for details.',
- ],
- 'config' => [
- 'use_table_comments_label' => 'Include Table Comments',
- 'use_table_comments_comment' => 'Show comment field when defining table columns.',
- ],
- 'database' => [
- 'menu_label' => 'Database',
- 'no_records' => 'No tables found',
- 'search' => 'Search...',
- 'confirmation_delete_multiple' => 'Delete the selected tables?',
- 'field_name' => 'Table Name',
- 'tab_columns' => 'Columns',
- 'column_name_name' => 'Column',
- 'column_name_required' => 'Please provide the column name',
- 'column_name_type' => 'Type',
- 'column_type_required' => 'Please select the column type',
- 'column_name_length' => 'Length',
- 'column_validation_length' => 'The Length value should be integer or specified as precision and scale (10,2) for decimal columns. Spaces are not allowed in the length column.',
- 'column_validation_title' => 'Only digits, lower-case Latin letters and underscores are allowed in column names',
- 'column_name_unsigned' => 'Unsigned',
- 'column_name_nullable' => 'Nullable',
- 'column_auto_increment' => 'AUTOINCR',
- 'column_default' => 'Default',
- 'column_comment' => 'Comment',
- 'column_auto_primary_key' => 'PK',
- 'tab_new_table' => 'New Table',
- 'btn_add_column' => 'Add Column',
- 'btn_delete_column' => 'Delete Column',
- 'btn_add_id' => 'Add ID',
- 'btn_add_timestamps' => 'Add Timestamps',
- 'btn_add_soft_deleting' => 'Add Soft Deletes',
- 'id_exists' => 'ID column already exists in the table.',
- 'timestamps_exist' => 'created_at and deleted_at columns already exist in the table.',
- 'soft_deleting_exist' => 'deleted_at column already exists in the table.',
- 'confirm_delete' => 'Delete the table?',
- 'error_enum_not_supported' => 'The table contains column(s) with type "enum" which is not currently supported by the Builder.',
- 'error_table_name_invalid_prefix' => 'Table name should start with the plugin prefix: \':prefix\'.',
- 'error_table_name_invalid_characters' => 'Invalid table name. Table names should contain only Latin letters, digits and underscores. Names should start with a Latin letter and could not contain spaces.',
- 'error_table_duplicate_column' => 'Duplicate column name: \':column\'.',
- 'error_table_auto_increment_in_compound_pk' => 'An auto-increment column cannot be a part of a compound primary key.',
- 'error_table_mutliple_auto_increment' => 'The table cannot contain multiple auto-increment columns.',
- 'error_table_auto_increment_non_integer' => 'Auto-increment columns should have integer type.',
- 'error_table_decimal_length' => 'The Length parameter for :type type should be in format \'10,2\', without spaces.',
- 'error_table_length' => 'The Length parameter for :type type should be specified as integer.',
- 'error_unsigned_type_not_int' => 'Error in the \':column\' column. The Unsigned flag can be applied only to integer type columns.',
- 'error_integer_default_value' => 'Invalid default value for the integer column \':column\'. The allowed formats are \'10\', \'-10\'.',
- 'error_decimal_default_value' => 'Invalid default value for the decimal or double column \':column\'. The allowed formats are \'1.00\', \'-1.00\'.',
- 'error_boolean_default_value' => 'Invalid default value for the boolean column \':column\'. The allowed values are \'0\' and \'1\', or \'true\' and \'false\'.',
- 'error_unsigned_negative_value' => 'The default value for the unsigned column \':column\' can\'t be negative.',
- 'error_table_already_exists' => 'The table \':name\' already exists in the database.',
- 'error_table_name_too_long' => 'The table name should not be longer than 64 characters.',
- 'error_column_name_too_long' => 'The column name \':column\' is too long. Column names should not be longer than 64 characters.',
- ],
- 'model' => [
- 'menu_label' => 'Models',
- 'entity_name' => 'Model',
- 'no_records' => 'No models found',
- 'search' => 'Search...',
- 'add' => 'Add...',
- 'forms' => 'Forms',
- 'lists' => 'Lists',
- 'field_class_name' => 'Class Name',
- 'field_database_table' => 'Database Table',
- 'field_add_timestamps' => 'Add Timestamp Support',
- 'field_add_timestamps_description' => 'The database table must have created_at and updated_at columns.',
- 'field_add_soft_deleting' => 'Add Soft Deletes',
- 'field_add_soft_deleting_description' => 'The database table must have deleted_at column.',
- 'error_class_name_exists' => 'Model file already exists for the specified class name: :path',
- 'error_timestamp_columns_must_exist' => 'The database table must have created_at and updated_at columns.',
- 'error_deleted_at_column_must_exist' => 'The database table must have deleted_at column.',
- 'add_form' => 'Add Form',
- 'add_list' => 'Add List',
- ],
- 'form' => [
- 'saved' => 'Form saved',
- 'confirm_delete' => 'Delete the form?',
- 'tab_new_form' => 'New Form',
- 'btn_add_database_fields' => 'Add Database Fields',
- 'property_label_title' => 'Label',
- 'property_label_required' => 'Please specify the control label.',
- 'property_span_title' => 'Span',
- 'property_comment_title' => 'Comment',
- 'property_comment_above_title' => 'Comment Above',
- 'property_default_title' => 'Default',
- 'property_checked_default_title' => 'Checked by Default',
- 'property_css_class_title' => 'CSS Class',
- 'property_css_class_description' => 'Optional CSS class to assign to the field container.',
- 'property_disabled_title' => 'Disabled',
- 'property_read_only_title' => 'Read Only',
- 'property_hidden_title' => 'Hidden',
- 'property_required_title' => 'Required',
- 'property_field_name_title' => 'Field Name',
- 'property_placeholder_title' => 'Placeholder',
- 'property_default_from_title' => 'Default From',
- 'property_stretch_title' => 'Stretch',
- 'property_stretch_description' => 'Specifies if this field stretches to fit the parent height.',
- 'property_context_title' => 'Context',
- 'property_context_description' => 'Specifies what form context should be used when displaying the field.',
- 'property_context_create' => 'Create',
- 'property_context_update' => 'Update',
- 'property_context_preview' => 'Preview',
- 'property_dependson_title' => 'Depends On',
- 'property_trigger_action' => 'Action',
- 'property_trigger_show' => 'Show',
- 'property_trigger_hide' => 'Hide',
- 'property_trigger_enable' => 'Enable',
- 'property_trigger_disable' => 'Disable',
- 'property_trigger_empty' => 'Empty',
- 'property_trigger_field' => 'Field',
- 'property_trigger_field_description' => 'Defines the other field name that will trigger the action.',
- 'property_trigger_condition' => 'Condition',
- 'property_trigger_condition_description' => 'Determines the condition the specified field should satisfy for the condition to be considered "true". Supported values: checked, unchecked, value[somevalue].',
- 'property_trigger_condition_checked' => 'Checked',
- 'property_trigger_condition_unchecked' => 'Unchecked',
- 'property_trigger_condition_somevalue' => 'value[enter-the-value-here]',
- 'property_preset_title' => 'Preset',
- 'property_preset_description' => 'Allows the field value to be initially set by the value of another field, converted using the input preset converter.',
- 'property_preset_field' => 'Field',
- 'property_preset_field_description' => 'Defines the other field name to source the value from.',
- 'property_preset_type' => 'Type',
- 'property_preset_type_description' => 'Specifies the conversion type',
- 'property_attributes_title' => 'Attributes',
- 'property_attributes_description' => 'Custom HTML attributes to add to the form field element.',
- 'property_container_attributes_title' => 'Container Attributes',
- 'property_container_attributes_description' => 'Custom HTML attributes to add to the form field container element.',
- 'property_group_advanced' => 'Advanced',
- 'property_dependson_description' => 'A list of other field names this field depends on, when the other fields are modified, this field will update. One field per line.',
- 'property_trigger_title' => 'Trigger',
- 'property_trigger_description' => 'Allows to change elements attributes such as visibility or value, based on another elements\' state.',
- 'property_default_from_description' => 'Takes the default value from the value of another field.',
- 'property_field_name_required' => 'The field name is required',
- 'property_field_name_regex' => 'The field name can contain only Latin letters, digits, underscores, dashes and square brackets.',
- 'property_attributes_size' => 'Size',
- 'property_attributes_size_tiny' => 'Tiny',
- 'property_attributes_size_small' => 'Small',
- 'property_attributes_size_large' => 'Large',
- 'property_attributes_size_huge' => 'Huge',
- 'property_attributes_size_giant' => 'Giant',
- 'property_comment_position' => 'Comment Position',
- 'property_comment_position_above' => 'Above',
- 'property_comment_position_below' => 'Below',
- 'property_hint_path' => 'Partial Path',
- 'property_hint_path_description' => 'Path to a partial file that contains the hint text. Use the $ symbol to refer the plugins root directory, for example: $/acme/blog/partials/_hint.php',
- 'property_hint_path_required' => 'Please enter the hint partial path',
- 'property_partial_path' => 'Partial path',
- 'property_partial_path_description' => 'Path to a partial file. Use the $ symbol to refer the plugins root directory, for example: $/acme/blog/partials/_partial.php',
- 'property_partial_path_required' => 'Please enter the partial path',
- 'property_code_language' => 'Language',
- 'property_code_theme' => 'Theme',
- 'property_theme_use_default' => 'Use Default Theme',
- 'property_group_code_editor' => 'Code Editor',
- 'property_gutter' => 'Gutter',
- 'property_gutter_show' => 'Visible',
- 'property_gutter_hide' => 'Hidden',
- 'property_wordwrap' => 'Word Wrap',
- 'property_wordwrap_wrap' => 'Wrap',
- 'property_wordwrap_nowrap' => 'Don\'t wrap',
- 'property_fontsize' => 'Font Size',
- 'property_codefolding' => 'Code Folding',
- 'property_codefolding_manual' => 'Manual',
- 'property_codefolding_markbegin' => 'Mark Begin',
- 'property_codefolding_markbeginend' => 'Mark Begin and End',
- 'property_autoclosing' => 'Auto Closing',
- 'property_enabled' => 'Enabled',
- 'property_disabled' => 'Disabled',
- 'property_soft_tabs' => 'Soft tabs',
- 'property_tab_size' => 'Tab size',
- 'property_readonly' => 'Read only',
- 'property_use_default' => 'Use default settings',
- 'property_options' => 'Options',
- 'property_options_method' => 'Options Method',
- 'property_options_method_description' => 'Request options from this method name defined on the model or as a static method (Class::method).',
- 'property_prompt' => 'Prompt',
- 'property_prompt_description' => 'Text to display for the create button.',
- 'property_prompt_default' => 'Add new item',
- 'property_datepicker_mode' => 'Mode',
- 'property_datepicker_mode_date' => 'Date',
- 'property_datepicker_mode_datetime' => 'Date and Time',
- 'property_datepicker_mode_time' => 'Time',
- 'property_datepicker_min_date' => 'Min Date',
- 'property_datepicker_min_date_description' => 'The minimum/earliest date that can be selected. This may be any string accepted by Carbon. Leave empty for no minimum date.',
- 'property_datepicker_max_date' => 'Max Date',
- 'property_datepicker_max_date_description' => 'The maximum/latest date that can be selected. This may be any string accepted by Carbon. Leave empty for no maximum date.',
- 'property_datepicker_year_range' => 'Year Range',
- 'property_datepicker_year_range_description' => 'Number of years either side (eg 10) or array of upper/lower range (eg [1900,2015]). Leave empty for the default value (10).',
- 'property_datepicker_year_range_invalid_format' => 'Invalid year range format. Use number (eg "10") or array of upper/lower range (eg "[1900,2015]")',
- 'property_datepicker_first_day' => 'First Day',
- 'property_datepicker_first_day_description' => 'First day of the week (0 - 7) where 0 is Sunday.',
- 'property_datepicker_first_day_regex' => 'First day must be a number',
- 'property_datepicker_twelve_hour' => 'Twelve Hour',
- 'property_datepicker_twelve_hour_description' => 'Display a 12-hour clock for selecting time.',
- 'property_datepicker_show_week_number' => 'Show Week Number',
- 'property_datepicker_show_week_number_description' => 'Show week numbers at head of row.',
- 'property_datepicker_format' => 'Format',
- 'property_datepicker_year_format_description' => 'Define a custom date format. The default format is "Y-m-d"',
- 'property_fileupload_mode' => 'Mode',
- 'property_fileupload_mode_file' => 'File',
- 'property_fileupload_mode_image' => 'Image',
- 'property_group_fileupload' => 'File Upload',
- 'property_fileupload_image_width' => 'Image width',
- 'property_fileupload_image_width_description' => 'Optional parameter - images will be resized to this width. Applies to Image mode only.',
- 'property_fileupload_invalid_dimension' => 'Invalid dimension value - please enter a number.',
- 'property_fileupload_image_height' => 'Image height',
- 'property_fileupload_image_height_description' => 'Optional parameter - images will be resized to this height. Applies to Image mode only.',
- 'property_fileupload_file_types' => 'File types',
- 'property_fileupload_file_types_description' => 'Optional comma separated list of file extensions that are accepted by the uploader. Eg: zip,txt',
- 'property_fileupload_mime_types' => 'MIME types',
- 'property_fileupload_maxfilesize' => 'Max file size',
- 'property_fileupload_maxfilesize_description' => 'File size in Mb that are accepted by the uploader, optional.',
- 'property_fileupload_invalid_maxfilesize' => 'Invalid Max file size value',
- 'property_fileupload_maxfiles' => 'Max files',
- 'property_fileupload_invalid_maxfiles' => 'Invalid Max files value',
- 'property_fileupload_maxfiles_description' => 'Maximum number of files allowed to be uploaded',
- 'property_fileupload_mime_types_description' => 'Optional comma separated list of MIME types that are accepted by the uploader, either as file extensions or fully qualified names. Eg: bin,txt',
- 'property_fileupload_use_caption' => 'Use caption',
- 'property_fileupload_use_caption_description' => 'Allows a title and description to be set for the file.',
- 'property_fileupload_thumb_options' => 'Thumbnail options',
- 'property_fileupload_thumb_options_description' => 'Manages options for the automatically generated thumbnails. Applies only for the Image mode.',
- 'property_fileupload_thumb_mode' => 'Mode',
- 'property_fileupload_thumb_auto' => 'Auto',
- 'property_fileupload_thumb_exact' => 'Exact',
- 'property_fileupload_thumb_portrait' => 'Portrait',
- 'property_fileupload_thumb_landscape' => 'Landscape',
- 'property_fileupload_thumb_crop' => 'Crop',
- 'property_fileupload_thumb_extension' => 'File extension',
- 'property_name_from' => 'Name column',
- 'property_name_from_description' => 'Relation column name to use for displaying a name.',
- 'property_relation_select' => 'Select',
- 'property_relation_select_description' => 'CONCAT multiple columns together for displaying a name',
- 'property_relation_scope' => 'Scope',
- 'property_relation_scope_description' => 'Specifies a query scope method that\'s defined in the related form model to always apply to the list query.',
- 'property_description_from' => 'Description Column',
- 'property_description_from_description' => 'Relation column name to use for displaying a description.',
- 'property_recordfinder_title' => 'Prompt',
- 'property_recordfinder_title_description' => 'Text to display in the title section of the popup.',
- 'property_recordfinder_list' => 'List Configuration',
- 'property_recordfinder_list_description' => 'A reference to a list column definition file. Use the $ symbol to refer the plugins root directory, for example: $/acme/blog/lists/_list.yaml',
- 'property_recordfinder_list_required' => 'Please provide a path to the list YAML file',
- 'property_group_recordfinder' => 'Record Finder',
- 'property_mediafinder_mode' => 'Mode',
- 'property_mediafinder_mode_file' => 'File',
- 'property_mediafinder_mode_image' => 'Image',
- 'property_mediafinder_image_width_description' => 'If using image type, the preview image will be displayed to this width, optional.',
- 'property_mediafinder_image_height_description' => 'If using image type, the preview image will be displayed to this height, optional.',
- 'property_group_sensitive' => 'Sensitive',
- 'property_group_taglist' => 'Tag List',
- 'property_taglist_mode' => 'Mode',
- 'property_taglist_mode_description' => 'Defines the format that this field\'s value is returned as',
- 'property_taglist_mode_string' => 'String',
- 'property_taglist_mode_array' => 'Array',
- 'property_taglist_mode_relation' => 'Relation',
- 'property_taglist_separator' => 'Separator',
- 'property_taglist_separator_comma' => 'Commas',
- 'property_taglist_separator_space' => 'Spaces',
- 'property_taglist_options' => 'Predefined Tags',
- 'property_taglist_custom_tags' => 'Custom Tags',
- 'property_taglist_custom_tags_description' => 'Allow custom tags to be entered manually by the user.',
- 'property_taglist_name_from' => 'Name From',
- 'property_taglist_name_from_description' => 'Defines the relation model attribute displayed in the tag. Only used in "relation" mode.',
- 'property_taglist_use_key' => 'Use Key',
- 'property_taglist_use_key_description' => 'If checked, the tag list will use the key instead of the value for saving and reading data. Only used in "relation" mode.',
- 'property_group_relation' => 'Relation',
- 'property_relation_prompt' => 'Prompt',
- 'property_relation_prompt_description' => 'Text to display when there is no available selections.',
- 'property_empty_option' => 'Empty Option',
- 'property_empty_option_description' => 'The empty option corresponds to the empty selection, but unlike the placeholder it can be reselected.',
- 'property_show_search' => 'Show Search',
- 'property_show_search_description' => 'Enables the search feature for this dropdown.',
- 'property_title_from' => 'Title From',
- 'property_title_from_description' => 'Specify a child field name to use the value of that field as the title for each repeater item.',
- 'property_min_items' => 'Min Items',
- 'property_min_items_description' => 'Minimum number of items that can be selected.',
- 'property_min_items_integer' => 'Min items must be a positive integer.',
- 'property_max_items' => 'Max Items',
- 'property_max_items_description' => 'Maximum number of items that can be selected.',
- 'property_max_items_integer' => 'Max items must be a positive integer.',
- 'property_display_mode' => 'Display Mode',
- 'property_display_mode_description' => 'Defines the display mode visually.',
- 'control_group_standard' => 'Standard',
- 'control_group_widgets' => 'Widgets',
- 'control_group_ui' => 'UI',
- 'click_to_add_control' => 'Add control',
- 'loading' => 'Loading...',
- 'control_text' => 'Text',
- 'control_text_description' => 'Single line text box',
- 'control_email' => 'Email',
- 'control_email_description' => 'Single line text box that takes email addresses only',
- 'control_password' => 'Password',
- 'control_password_description' => 'Single line password text field',
- 'control_checkbox' => 'Checkbox',
- 'control_checkbox_description' => 'Single checkbox',
- 'control_switch' => 'Switch',
- 'control_switch_description' => 'Single light switch input, an alternative for checkbox',
- 'control_textarea' => 'Text Area',
- 'control_textarea_description' => 'Multiline text box with controllable height',
- 'control_dropdown' => 'Dropdown',
- 'control_dropdown_description' => 'Dropdown list with static or dynamic options',
- 'control_balloon-selector' => 'Balloon Selector',
- 'control_balloon-selector_description' => 'List where only one item can be selected at a time with static or dynamic options',
- 'control_unknown' => 'Unknown control type: :type',
- 'control_repeater' => 'Repeater',
- 'control_repeater_description' => 'Outputs a repeating set of form controls',
- 'property_repeater_show_reorder' => 'Show Reorder',
- 'property_repeater_show_reorder_description' => 'Displays an interface for sorting items.',
- 'property_repeater_show_duplicate' => 'Show Duplicate',
- 'property_repeater_show_duplicate_description' => 'Displays an interface for cloning items.',
- 'control_nestedform' => 'Nested Form',
- 'control_nestedform_description' => 'Outputs a nested set of form controls',
- 'property_nestedform_show_panel' => 'Show Panel',
- 'property_nestedform_show_panel_description' => 'Places the form inside a panel container.',
- 'property_nestedform_default_create' => 'Default Create',
- 'property_nestedform_default_create_description' => 'If a related record is not found, attempt to create one.',
- 'control_number' => 'Number',
- 'control_number_description' => 'Single line text box that takes numbers only',
- 'property_min' => 'Minimum',
- 'property_min_description' => 'The client-side minimum value.',
- 'property_min_number' => 'Minimum must be a number',
- 'property_max' => 'Maximum',
- 'property_max_description' => 'The client-side maximum value.',
- 'property_max_number' => 'Maximum must be a number',
- 'property_step' => 'Step',
- 'property_step_description' => 'The client-side step increment.',
- 'property_step_number' => 'Step must be a number',
- 'control_hint' => 'Hint',
- 'control_hint_description' => 'Outputs a partial contents in a box that can be hidden by the user',
- 'control_partial' => 'Partial',
- 'control_partial_description' => 'Outputs a partial contents',
- 'control_section' => 'Section',
- 'control_section_description' => 'Displays a form section with heading and subheading',
- 'control_ruler' => 'Horizontal Rule',
- 'control_ruler_description' => 'Displays a a horizontal rule to break up the contents',
- 'control_radio' => 'Radio List',
- 'control_radio_description' => 'A list of radio options, where only one item can be selected at a time',
- 'control_radio_option_1' => 'Option 1',
- 'control_radio_option_2' => 'Option 2',
- 'control_checkboxlist' => 'Checkbox List',
- 'control_checkboxlist_description' => 'A list of checkboxes, where multiple items can be selected',
- 'property_quickselect' => 'Quick Select',
- 'property_quickselect_description' => 'Show the quick selection buttons.',
- 'property_inline_options' => 'Inline Options',
- 'property_inline_options_description' => 'Display the options side-by-side instead of stacked, when less than 10 options.',
- 'control_codeeditor' => 'Code Editor',
- 'control_codeeditor_description' => 'Plaintext editor for formatted code or markup',
- 'control_colorpicker' => 'Color Picker',
- 'control_colorpicker_description' => 'A field for selecting a hexadecimal color value',
- 'property_group_colorpicker' => 'Color Picker',
- 'property_available_colors' => 'Available Colors',
- 'property_available_colors_description' => 'List of available colors in hex format (#FF0000). Leave empty for the default color set. Enter one value per line.',
- 'property_allow_empty' => 'Allow Empty',
- 'property_allow_empty_description' => 'Allow empty input values.',
- 'property_allow_custom' => 'Allow Custom',
- 'property_allow_custom_description' => 'Allow selection of a custom color.',
- 'property_show_alpha' => 'Show Alpha',
- 'property_show_alpha_description' => 'Displays an opacity slider and sets an 8-digit hex code.',
- 'property_show_input' => 'Show Input',
- 'property_show_input_description' => 'Displays a text input next to the color picker and disables available colors.',
- 'control_datatable' => 'Data Table',
- 'control_datatable_description' => 'Renders an editable table of records, formatted as a grid',
- 'property_group_datatable' => 'Data Table',
- 'property_columns' => 'Columns',
- 'property_columns_description' => 'Column configuration for the table',
- 'property_datatable_type' => 'Type',
- 'property_datatable_code' => 'Code',
- 'property_datatable_code_regex' => 'A unique code is required for the column',
- 'property_datatable_title' => 'Title',
- 'property_datatable_width' => 'Width',
- 'property_datatable_width_regex' => 'Width must be a number in pixels',
- 'property_datatable_adding' => 'Allow Adding',
- 'property_datatable_adding_description' => 'Allow records to be added.',
- 'property_datatable_deleting' => 'Allow Adding',
- 'property_datatable_deleting_description' => 'Allow records to be deleted.',
- 'property_datatable_searching' => 'Searching',
- 'property_datatable_searching_description' => 'Allow records to be searched.',
- 'control_datepicker' => 'Date Picker',
- 'control_datepicker_description' => 'Text field used for selecting date and times',
- 'property_group_datepicker' => 'Date Picker',
- 'control_richeditor' => 'Rich Editor',
- 'control_richeditor_description' => 'Visual editor for rich formatted text, also known as a WYSIWYG editor',
- 'control_pagefinder' => 'Page Finder',
- 'control_pagefinder_description' => 'Renders a field for selecting a page link',
- 'property_pagefinder_single_mode' => 'Single Mode',
- 'property_pagefinder_single_mode_description' => 'Only allows items to be selected that resolve to a single URL.',
- 'control_sensitive' => 'Sensitive',
- 'control_sensitive_description' => 'Renders a revealable password field that can be used for sensitive information, such as API keys or secrets.',
- 'allow_copy' => 'Allow Copy',
- 'allow_copy_description' => 'Adds a copy action to the field, allowing the user to copy the password without revealing it.',
- 'hidden_placeholder' => 'Hidden Placeholder',
- 'hidden_placeholder_description' => 'Sets a placeholder string to emulate the unrevealed value. You can change this to a long or short string to emulate a different length.',
- 'hide_on_tab_change' => 'Hide on Tab Change',
- 'hide_on_tab_change_description' => 'Hides the field again if the user navigates to a different tab.',
- 'property_group_rich_editor' => 'Rich Editor',
- 'property_richeditor_toolbar_buttons' => 'Toolbar Buttons',
- 'property_richeditor_toolbar_buttons_description' => 'Which buttons to show on the editor toolbar.',
- 'control_markdown' => 'Markdown Editor',
- 'control_markdown_description' => 'Basic editor for Markdown formatted text',
- 'property_side_by_side' => 'Side By Side',
- 'property_side_by_side_description' => 'Enables the side-by-side display mode by default',
- 'control_taglist' => 'Tag List',
- 'control_taglist_description' => 'Field for inputting a list of tags',
- 'control_fileupload' => 'File Upload',
- 'control_fileupload_description' => 'File uploader for images or regular files',
- 'control_recordfinder' => 'Record Finder',
- 'control_recordfinder_description' => 'Field with details of a related record with the record search feature',
- 'control_mediafinder' => 'Media Finder',
- 'control_mediafinder_description' => 'Field for selecting an item from the Media Manager library',
- 'control_relation' => 'Relation',
- 'control_relation_description' => 'Displays either a dropdown or checkbox list for selecting a related record',
- 'control_widget_type' => 'Widget Type',
- 'error_file_name_required' => 'Please enter the form file name.',
- 'error_file_name_invalid' => 'The file name can contain only Latin letters, digits, underscores, dots and hashes.',
- 'span_left' => 'Left',
- 'span_right' => 'Right',
- 'span_full' => 'Full',
- 'span_auto' => 'Auto',
- 'class_mode_tip' => 'Tip',
- 'class_mode_info' => 'Info',
- 'class_mode_warning' => 'Warning',
- 'class_mode_danger' => 'Danger',
- 'class_mode_success' => 'Success',
- 'display_mode_builder' => 'Builder',
- 'display_mode_accordion' => 'Accordion',
- 'empty_tab' => 'Empty tab',
- 'confirm_close_tab' => 'The tab contains controls which will be deleted. Continue?',
- 'tab' => 'Form tab',
- 'tab_title' => 'Title',
- 'controls' => 'Controls',
- 'property_tab_title_required' => 'The tab title is required.',
- 'tabs_primary' => 'Primary tabs',
- 'tabs_secondary' => 'Secondary tabs',
- 'tab_stretch' => 'Stretch',
- 'tab_stretch_description' => 'Specifies if this tabs container stretches to fit the parent height.',
- 'tab_css_class' => 'CSS class',
- 'tab_css_class_description' => 'Assigns a CSS class to the tabs container.',
- 'tab_name_template' => 'Tab %s',
- 'tab_already_exists' => 'Tab with the specified title already exists.',
- ],
- 'list' => [
- 'tab_new_list' => 'New List',
- 'saved' => 'List saved',
- 'confirm_delete' => 'Delete the list?',
- 'tab_columns' => 'Columns',
- 'btn_add_column' => 'Add Column',
- 'btn_delete_column' => 'Delete Column',
- 'column_dbfield_label' => 'Field',
- 'column_dbfield_required' => 'Please enter the model field',
- 'column_name_label' => 'Label',
- 'column_label_required' => 'Please provide the column label',
- 'column_type_label' => 'Type',
- 'column_type_required' => 'Please provide the column type',
- 'column_type_text' => 'Text',
- 'column_type_number' => 'Number',
- 'column_type_switch' => 'Switch',
- 'column_type_datetime' => 'Datetime',
- 'column_type_date' => 'Date',
- 'column_type_time' => 'Time',
- 'column_type_timesince' => 'Time Since',
- 'column_type_timetense' => 'Time Tense',
- 'column_type_select' => 'Select',
- 'column_type_partial' => 'Partial',
- 'column_label_default' => 'Default',
- 'column_label_searchable' => 'Search',
- 'column_label_sortable' => 'Sort',
- 'column_label_invisible' => 'Invisible',
- 'column_label_select' => 'Select',
- 'column_label_relation' => 'Relation',
- 'column_label_css_class' => 'CSS Class',
- 'column_label_width' => 'Width',
- 'column_label_path' => 'Path',
- 'column_label_format' => 'Format',
- 'column_label_value_from' => 'Value From',
- 'error_duplicate_column' => 'Duplicate column field name: \':column\'.',
- 'btn_add_database_columns' => 'Add Database Columns',
- 'all_database_columns_exist' => 'All database columns are already defined in the list',
- ],
- 'controller' => [
- 'menu_label' => 'Controllers',
- 'no_records' => 'No plugin controllers found',
- 'controller' => 'Controller',
- 'behaviors' => 'Behaviors',
- 'new_controller' => 'New Controller',
- 'error_controller_has_no_behaviors' => 'The controller doesn\'t have configurable behaviors.',
- 'error_invalid_yaml_configuration' => 'Error loading behavior configuration file: :file',
- 'behavior_form_controller' => 'Form Controller Behavior',
- 'behavior_form_controller_description' => 'Adds form functionality to a back-end page. The behavior provides three pages called Create, Update and Preview.',
- 'property_behavior_form_placeholder' => '--select form--',
- 'property_behavior_form_name' => 'Name',
- 'property_behavior_form_name_description' => 'The name of the object being managed by this form',
- 'property_behavior_form_name_required' => 'Please enter the form name',
- 'property_behavior_form_file' => 'Form Configuration',
- 'property_behavior_form_file_description' => 'Reference to a form field definition file',
- 'property_behavior_form_file_required' => 'Please enter a path to the form configuration file',
- 'property_behavior_form_model_class' => 'Model Class',
- 'property_behavior_form_model_class_description' => 'A model class name, the form data is loaded and saved against this model.',
- 'property_behavior_form_model_class_required' => 'Please select a model class',
- 'property_behavior_form_default_redirect' => 'Default Redirect',
- 'property_behavior_form_default_redirect_description' => 'A page to redirect to by default when the form is saved or cancelled.',
- 'property_behavior_form_create' => 'Create Record Page',
- 'property_behavior_form_redirect' => 'Redirect',
- 'property_behavior_form_redirect_description' => 'A page to redirect to when a record is created.',
- 'property_behavior_form_redirect_close' => 'Close Redirect',
- 'property_behavior_form_redirect_close_description' => 'A page to redirect to when a record is created and the close post variable is sent with the request.',
- 'property_behavior_form_flash_save' => 'Save Flash Message',
- 'property_behavior_form_flash_save_description' => 'Flash message to display when record is saved.',
- 'property_behavior_form_page_title' => 'Page Title',
- 'property_behavior_form_update' => 'Update Record Page',
- 'property_behavior_form_update_redirect' => 'Redirect',
- 'property_behavior_form_create_redirect_description' => 'A page to redirect to when a record is saved.',
- 'property_behavior_form_flash_delete' => 'Delete Flash Message',
- 'property_behavior_form_flash_delete_description' => 'Flash message to display when record is deleted.',
- 'property_behavior_form_preview' => 'Preview Record Page',
- 'behavior_list_controller' => 'List Controller Behavior',
- 'behavior_list_controller_description' => 'Provides the sortable and searchable list with optional links on its records. The behavior automatically creates the controller action "index".',
- 'property_behavior_list_title' => 'List Title',
- 'property_behavior_list_title_required' => 'Please enter the list title',
- 'property_behavior_list_placeholder' => '--select list--',
- 'property_behavior_list_model_class' => 'Model Class',
- 'property_behavior_list_model_class_description' => 'A model class name, the list data is loaded from this model.',
- 'property_behavior_form_model_class_placeholder' => '--select model--',
- 'property_behavior_list_model_class_required' => 'Please select a model class',
- 'property_behavior_list_model_placeholder' => '--select model--',
- 'property_behavior_list_file' => 'List Configuration File',
- 'property_behavior_list_file_description' => 'Reference to a list definition file',
- 'property_behavior_list_file_required' => 'Please enter a path to the list configuration file',
- 'property_behavior_list_record_url' => 'Record URL',
- 'property_behavior_list_record_url_description' => 'Link each list record to another page. Eg: users/update:id. The :id part is replaced with the record identifier.',
- 'property_behavior_list_no_records_message' => 'No Records Message',
- 'property_behavior_list_no_records_message_description' => 'A message to display when no records are found',
- 'property_behavior_list_recs_per_page' => 'Records Per Page',
- 'property_behavior_list_recs_per_page_description' => 'Records to display per page, use 0 for no pages. Default: 0',
- 'property_behavior_list_recs_per_page_regex' => 'Records per page should be an integer value',
- 'property_behavior_list_show_setup' => 'Show Setup Button',
- 'property_behavior_list_structure' => 'Structure',
- 'property_behavior_list_show_sorting' => 'Show Sorting',
- 'property_behavior_list_show_reorder' => 'Show Reorder',
- 'property_behavior_list_max_depth' => 'Max Depth',
- 'property_behavior_list_max_depth_regex' => 'Max depth should be an integer value',
- 'property_behavior_list_drag_row' => 'Draw Row',
- 'property_behavior_list_default_sort' => 'Default Sorting',
- 'property_behavior_form_ds_column' => 'Column',
- 'property_behavior_form_ds_direction' => 'Direction',
- 'property_behavior_form_ds_asc' => 'Ascending',
- 'property_behavior_form_ds_desc' => 'Descending',
- 'property_behavior_list_show_checkboxes' => 'Show Checkboxes',
- 'property_behavior_list_onclick' => 'On Click Handler',
- 'property_behavior_list_onclick_description' => 'Custom JavaScript code to execute when clicking on a record.',
- 'property_behavior_list_show_tree' => 'Show Tree',
- 'property_behavior_list_show_tree_description' => 'Displays a tree hierarchy for parent/child records.',
- 'property_behavior_list_tree_expanded' => 'Tree Expanded',
- 'property_behavior_list_tree_expanded_description' => 'Determines if tree nodes should be expanded by default.',
- 'property_behavior_list_toolbar' => 'Toolbar',
- 'property_behavior_list_toolbar_buttons' => 'Buttons Partial',
- 'property_behavior_list_toolbar_buttons_description' => 'Reference to a controller partial file with the toolbar buttons. Eg: list_toolbar',
- 'property_behavior_list_search' => 'Search',
- 'property_behavior_list_search_prompt' => 'Search Prompt',
- 'property_behavior_list_filter' => 'Filter Configuration',
- 'behavior_import_export_controller' => 'Import Export Controller Behavior',
- 'behavior_import_export_controller_description' => 'Provides features for importing and exporting records. The behavior automatically creates the controller actions "import" and "export".',
- 'property_group_import' => 'Import',
- 'property_group_export' => 'Export',
- 'property_behavior_import_title' => 'Import Title',
- 'property_behavior_export_title' => 'Export Title',
- 'property_behavior_import_title_required' => 'Please enter a title',
- 'property_behavior_import_model_class' => 'Import Model Class',
- 'property_behavior_import_model_class_description' => 'A model class name for importing, extending the Backend\Models\ImportModel class.',
- 'property_behavior_import_model_class_placeholder' => '--select model--',
- 'property_behavior_export_model_class' => 'Export Model Class',
- 'property_behavior_export_model_class_description' => 'A model class name for export, extending the Backend\Models\ExportModel class.',
- 'property_behavior_import_model_class_required' => 'Please select a model class',
- 'property_behavior_import_redirect' => 'Redirect',
- 'property_behavior_import_redirect_description' => 'A page to redirect to by default when the process is complete.',
- 'error_controller_not_found' => 'Original controller file is not found.',
- 'error_invalid_config_file_name' => 'The behavior :class configuration file name (:file) contains invalid characters and cannot be loaded.',
- 'error_file_not_yaml' => 'The behavior :class configuration file (:file) is not a YAML file. Only YAML configuration files are supported.',
- 'saved' => 'Controller saved',
- 'controller_name' => 'Controller Name',
- 'controller_name_description' => 'Controller name defines the class name and URL of the controller\'s back-end pages. Standard PHP variable naming conventions apply. The first symbol should be a capital Latin letter. Examples: Categories, Posts, Products.',
- 'base_model_class' => 'Base Model Class',
- 'base_model_class_description' => 'Select a model class to use as a base model in behaviors that require or support models. You can configure the behaviors later.',
- 'base_model_class_placeholder' => '--select model--',
- 'controller_behaviors' => 'Behaviors',
- 'controller_behaviors_description' => 'Select behaviors the controller should implement. Builder will create view files required for the behaviors automatically.',
- 'controller_permissions' => 'Permissions',
- 'controller_permissions_description' => 'Select user permissions that can access the controller views. Permissions can be defined on the Permissions tab of the Builder. You can change this option in the controller PHP script later.',
- 'controller_permissions_no_permissions' => 'The plugin doesn\'t define any permissions.',
- 'menu_item' => 'Active Menu Item',
- 'menu_item_description' => 'Select a menu item to make active for the controller pages. You can change this option in the controller PHP script later.',
- 'menu_item_placeholder' => '--select menu item--',
- 'error_unknown_behavior' => 'The behavior class :class is not registered in the behavior library.',
- 'error_behavior_view_conflict' => 'The selected behaviors provide conflicting views (:view) and cannot be used together in a controller.',
- 'error_behavior_config_conflict' => 'The selected behaviors provide conflicting configuration files (:file) and cannot be used together in a controller.',
- 'error_behavior_view_file_not_found' => 'View template :view of the behavior :class cannot be found.',
- 'error_behavior_config_file_not_found' => 'Configuration template :file of the behavior :class cannot be found.',
- 'error_controller_exists' => 'Controller file already exists: :file.',
- 'error_controller_name_invalid' => 'Invalid controller name format. The name can only contain digits and Latin letters. The first symbol should be a capital Latin letter.',
- 'error_behavior_view_file_exists' => 'Controller view file already exists: :view.',
- 'error_behavior_config_file_exists' => 'Behavior configuration file already exists: :file.',
- 'error_save_file' => 'Error saving controller file: :file',
- 'error_behavior_requires_base_model' => 'Behavior :behavior requires a base model class to be selected.',
- 'error_model_doesnt_have_lists' => 'The selected model doesn\'t have any lists. Please create a list first.',
- 'error_model_doesnt_have_forms' => 'The selected model doesn\'t have any forms. Please create a form first.',
- ],
- 'version' => [
- 'menu_label' => 'Versions',
- 'no_records' => 'No plugin versions found',
- 'search' => 'Search...',
- 'tab' => 'Versions',
- 'saved' => 'Version saved',
- 'confirm_delete' => 'Delete the version?',
- 'tab_new_version' => 'New version',
- 'migration' => 'Migration',
- 'seeder' => 'Seeder',
- 'custom' => 'Increase the version number',
- 'apply_version' => 'Apply version',
- 'applying' => 'Applying...',
- 'rollback_version' => 'Rollback version',
- 'rolling_back' => 'Rolling back...',
- 'applied' => 'Version applied',
- 'rolled_back' => 'Version rolled back',
- 'hint_save_unapplied' => 'You saved an unapplied version. Unapplied versions could be automatically applied when you or another user migrates the database or when a database table is saved in the Database section of the Builder.',
- 'hint_rollback' => 'Rolling back a version will also roll back all versions newer than this version. Please note that unapplied versions could be automatically applied by the system when you or another user logs into the back-end or when a database table is saved in the Database section of the Builder.',
- 'hint_apply' => 'Applying a version will also apply all older unapplied versions of the plugin.',
- 'dont_show_again' => 'Don\'t show again',
- 'save_unapplied_version' => 'Save unapplied version',
- 'sort_ascending' => 'Sort ascending',
- 'sort_descending' => 'Sort descending',
- ],
- 'menu' => [
- 'menu_label' => 'Backend Menu',
- 'tab' => 'Menus',
- 'items' => 'Menu items',
- 'saved' => 'Menus saved',
- 'add_main_menu_item' => 'Add main menu item',
- 'new_menu_item' => 'Menu Item',
- 'add_side_menu_item' => 'Add sub-item',
- 'side_menu_item' => 'Side menu item',
- 'property_label' => 'Label',
- 'property_label_required' => 'Please enter the menu item labels.',
- 'property_url_required' => 'Please enter the menu item URL',
- 'property_url' => 'URL',
- 'property_icon' => 'Icon',
- 'property_icon_required' => 'Please select an icon',
- 'property_permissions' => 'Permissions',
- 'property_order' => 'Order',
- 'property_order_invalid' => 'Please enter the menu item order as integer value.',
- 'property_order_description' => 'Menu item order manages its position in the menu. If the order is not provided, the item will be placed to the end of the menu. The default order values have the increment of 100.',
- 'property_attributes' => 'HTML Attributes',
- 'property_code' => 'Code',
- 'property_code_invalid' => 'The code should contain only Latin letter and digits',
- 'property_code_required' => 'Please enter the menu item code.',
- 'error_duplicate_main_menu_code' => 'Duplicate main menu item code: \':code\'.',
- 'error_duplicate_side_menu_code' => 'Duplicate side menu item code: \':code\'.',
- 'icon_svg' => 'Icon (SVG)',
- 'icon_svg_description' => 'An SVG icon to be used in place of the standard icon. The SVG icon should be a rectangle and can support colors',
- 'counter' => 'Counter',
- 'counter_description' => 'A numeric value to output near the menu icon. The value should be a number or a callable returning a number',
- 'counter_label' => 'Counter Label',
- 'counter_label_description' => 'A string value to describe the numeric reference in counter',
- 'counter_group' => 'Counter',
- ],
- 'localization' => [
- 'menu_label' => 'Localization',
- 'language' => 'Language',
- 'strings' => 'Strings',
- 'confirm_delete' => 'Delete the language?',
- 'tab_new_language' => 'New language',
- 'no_records' => 'No languages found',
- 'saved' => 'Language file saved',
- 'error_cant_load_file' => 'Cannot load the requested language file - file not found.',
- 'error_bad_localization_file_contents' => 'Cannot load the requested language file. Language files can only contain array definitions and strings.',
- 'error_file_not_array' => 'Cannot load the requested language file. Language files should return an array.',
- 'save_error' => 'Error saving file \':name\'. Please check write permissions.',
- 'error_delete_file' => 'Error deleting localization file.',
- 'add_missing_strings' => 'Add Missing Strings',
- 'copy' => 'Copy',
- 'add_missing_strings_label' => 'Select language to copy missing strings from',
- 'no_languages_to_copy_from' => 'There are no other languages to copy strings from.',
- 'new_string_warning' => 'New string or section',
- 'structure_mismatch' => 'The structure of the source language file doesn\'t match the structure of the file being edited. Some individual strings in the edited file correspond to sections in the source file (or vice versa) and cannot be merged automatically.',
- 'create_string' => 'Create Language String',
- 'string_key_label' => 'String Key',
- 'string_key_comment' => 'Enter the string key using period as a section separator. For example: plugin.search. The string will be created in the plugin\'s default language localization file.',
- 'string_value' => 'String Value',
- 'string_key_is_empty' => 'String key should not be empty',
- 'string_key_is_a_string' => ':key is a string and cannot contain other strings.',
- 'string_value_is_empty' => 'String value should not be empty',
- 'string_key_exists' => 'The string key already exists',
- ],
- 'permission' => [
- 'menu_label' => 'Permissions',
- 'tab' => 'Permissions',
- 'form_tab_permissions' => 'Permissions',
- 'btn_add_permission' => 'Add Permission',
- 'btn_delete_permission' => 'Delete Permission',
- 'column_permission_label' => 'Permission Code',
- 'column_permission_required' => 'Please enter the permission code',
- 'column_tab_label' => 'Tab Title',
- 'column_tab_required' => 'Please enter the permission tab title',
- 'column_label_label' => 'Label',
- 'column_label_required' => 'Please enter the permission label',
- 'saved' => 'Permissions saved',
- 'error_duplicate_code' => 'Duplicate permission code: \':code\'.',
- ],
- 'yaml' => [
- 'save_error' => 'Error saving file \':name\'. Please check write permissions.',
- ],
- 'common' => [
- 'error_file_exists' => 'File already exists: \':path\'.',
- 'field_icon_description' => 'October CMS uses Font Awesome icons: http://octobercms.com/docs/ui/icon',
- 'destination_dir_not_exists' => 'The destination directory doesn\'t exist: \':path\'.',
- 'error_make_dir' => 'Error creating directory: \':name\'.',
- 'error_dir_exists' => 'Directory already exists: \':path\'.',
- 'template_not_found' => 'Template file is not found: \':name\'.',
- 'error_generating_file' => 'Error generating file: \':path\'.',
- 'error_loading_template' => 'Error loading template file: \':name\'.',
- 'select_plugin_first' => 'Please select a plugin first. To see the plugin list click the > icon on the left sidebar.',
- 'not_match' => 'The object you\'re trying to access doesn\'t belong to the plugin being edited. Please reload the page.',
- 'plugin_not_selected' => 'Plugin is not selected',
- 'add' => 'Add',
- ],
- 'migration' => [
- 'entity_name' => 'Migration',
- 'error_version_invalid' => 'The version should be specified in format v1.0.1',
- 'field_version' => 'Version',
- 'field_description' => 'Description',
- 'field_code' => 'Code',
- 'save_and_apply' => 'Save & Apply',
- 'error_version_exists' => 'The migration version already exists.',
- 'error_script_filename_invalid' => 'The migration script file name can contain only Latin letters, digits and underscores. The name should start with a Latin letter and could not contain spaces.',
- 'error_cannot_change_version_number' => 'Cannot change version number for an applied version.',
- 'error_file_must_define_class' => 'Migration code should define a migration or seeder class. Leave the code field blank if you only want to update the version number.',
- 'error_file_must_define_namespace' => 'Migration code should define a namespace. Leave the code field blank if you only want to update the version number.',
- 'no_changes_to_save' => 'There are no changes to save.',
- 'error_namespace_mismatch' => 'The migration code should use the plugin namespace: :namespace',
- 'error_migration_file_exists' => 'Migration file :file already exists. Please use another class name.',
- 'error_cant_delete_applied' => 'This version has already been applied and cannot be deleted. Please rollback the version first.',
- ],
- 'components' => [
- 'list_title' => 'Record list',
- 'list_description' => 'Displays a list of records for a selected model',
- 'list_page_number' => 'Page number',
- 'list_page_number_description' => 'This value is used to determine what page the user is on.',
- 'list_records_per_page' => 'Records per page',
- 'list_records_per_page_description' => 'Number of records to display on a single page. Leave empty to disable pagination.',
- 'list_records_per_page_validation' => 'Invalid format of the records per page value. The value should be a number.',
- 'list_no_records' => 'No records message',
- 'list_no_records_description' => 'Message to display in the list in case if there are no records. Used in the default component\'s partial.',
- 'list_no_records_default' => 'No records found',
- 'list_sort_column' => 'Sort by column',
- 'list_sort_column_description' => 'Model column the records should be ordered by',
- 'list_sort_direction' => 'Direction',
- 'list_display_column' => 'Display column',
- 'list_display_column_description' => 'Column to display in the list. Used in the default component\'s partial.',
- 'list_display_column_required' => 'Please select a display column.',
- 'list_details_page' => 'Details page',
- 'list_details_page_description' => 'Page to display record details.',
- 'list_details_page_no' => '--no details page--',
- 'list_sorting' => 'Sorting',
- 'list_pagination' => 'Pagination',
- 'list_order_direction_asc' => 'Ascending',
- 'list_order_direction_desc' => 'Descending',
- 'list_model' => 'Model class',
- 'list_scope' => 'Scope',
- 'list_scope_description' => 'Optional model scope to fetch the records',
- 'list_scope_default' => '--select a scope, optional--',
- 'list_scope_value' => 'Scope value',
- 'list_scope_value_description' => 'Optional value to pass to the model scope',
- 'list_details_page_link' => 'Link to the details page',
- 'list_details_key_column' => 'Details key column',
- 'list_details_key_column_description' => 'Model column to use as a record identifier in the details page links.',
- 'list_details_url_parameter' => 'URL parameter name',
- 'list_details_url_parameter_description' => 'Name of the details page URL parameter which takes the record identifier.',
- 'details_title' => 'Record details',
- 'details_description' => 'Displays record details for a selected model',
- 'details_model' => 'Model class',
- 'details_identifier_value' => 'Identifier value',
- 'details_identifier_value_description' => 'Identifier value to load the record from the database. Specify a fixed value or URL parameter name.',
- 'details_identifier_value_required' => 'The identifier value is required',
- 'details_key_column' => 'Key column',
- 'details_key_column_description' => 'Model column to use as a record identifier for fetching the record from the database.',
- 'details_key_column_required' => 'The key column name is required',
- 'details_display_column' => 'Display column',
- 'details_display_column_description' => 'Model column to display on the details page. Used in the default component\'s partial.',
- 'details_display_column_required' => 'Please select a display column.',
- 'details_not_found_message' => 'Not found message',
- 'details_not_found_message_description' => 'Message to display if the record is not found. Used in the default component\'s partial.',
- 'details_not_found_message_default' => 'Record not found',
- ],
- 'validation' => [
- 'reserved' => ':attribute cannot be a PHP reserved keyword',
- ],
+ [
+ 'name' => 'Builder',
+ 'description' => 'Provides visual tools for building October plugins.',
+ 'add' => 'Create plugin',
+ 'no_records' => 'No plugins found',
+ 'no_name' => 'No name',
+ 'search' => 'Search...',
+ 'filter_description' => 'Display all plugins or only your plugins.',
+ 'settings' => 'Settings',
+ 'entity_name' => 'Plugin',
+ 'field_name' => 'Name',
+ 'field_author' => 'Author',
+ 'field_description' => 'Description',
+ 'field_icon' => 'Plugin icon',
+ 'field_plugin_namespace' => 'Plugin namespace',
+ 'field_author_namespace' => 'Author namespace',
+ 'field_namespace_description' => 'Namespace can contain only Latin letters and digits and should start with a Latin letter. Example plugin namespace: Blog',
+ 'field_author_namespace_description' => 'You cannot change the namespaces with Builder after you create the plugin. Example author namespace: JohnSmith',
+ 'tab_general' => 'General parameters',
+ 'tab_description' => 'Description',
+ 'field_homepage' => 'Plugin homepage URL',
+ 'no_description' => 'No description provided for this plugin',
+ 'error_settings_not_editable' => 'Settings of this plugin cannot be edited with Builder.',
+ 'update_hint' => 'You can edit localized plugin\'s name and description on the Localization tab.',
+ 'manage_plugins' => 'Create and edit plugins',
+ ],
+ 'author_name' => [
+ 'title' => 'Author Name',
+ 'description' => 'Default author name to use for your new plugins. The author name is not fixed - you can change it in the plugins configuration at any time.',
+ ],
+ 'author_namespace' => [
+ 'title' => 'Author Namespace',
+ 'description' => 'If you develop for the Marketplace, the namespace should match the author code and cannot be changed. Refer to the documentation for details.',
+ ],
+ 'config' => [
+ 'use_table_comments_label' => 'Include Table Comments',
+ 'use_table_comments_comment' => 'Show comment field when defining table columns.'
+ ],
+ 'database' => [
+ 'menu_label' => 'Database',
+ 'no_records' => 'No tables found',
+ 'search' => 'Search...',
+ 'confirmation_delete_multiple' => 'Delete the selected tables?',
+ 'field_name' => 'Table name',
+ 'tab_columns' => 'Columns',
+ 'column_name_name' => 'Column',
+ 'column_name_required' => 'Please provide the column name',
+ 'column_name_type' => 'Type',
+ 'column_type_required' => 'Please select the column type',
+ 'column_name_length' => 'Length',
+ 'column_validation_length' => 'The Length value should be integer or specified as precision and scale (10,2) for decimal columns. Spaces are not allowed in the length column.',
+ 'column_validation_title' => 'Only digits, lower-case Latin letters and underscores are allowed in column names',
+ 'column_name_unsigned' => 'Unsigned',
+ 'column_name_nullable' => 'Nullable',
+ 'column_auto_increment' => 'AUTOINCR',
+ 'column_default' => 'Default',
+ 'column_comment' => 'Comment',
+ 'column_auto_primary_key' => 'PK',
+ 'tab_new_table' => 'New table',
+ 'btn_add_column' => 'Add column',
+ 'btn_delete_column' => 'Delete column',
+ 'btn_add_id' => 'Add ID',
+ 'btn_add_timestamps' => 'Add timestamps',
+ 'btn_add_soft_deleting' => 'Add soft deleting support',
+ 'id_exists' => 'ID column already exists in the table.',
+ 'timestamps_exist' => 'created_at and deleted_at columns already exist in the table.',
+ 'soft_deleting_exist' => 'deleted_at column already exists in the table.',
+ 'confirm_delete' => 'Delete the table?',
+ 'error_enum_not_supported' => 'The table contains column(s) with type "enum" which is not currently supported by the Builder.',
+ 'error_table_name_invalid_prefix' => "Table name should start with the plugin prefix: ':prefix'.",
+ 'error_table_name_invalid_characters' => 'Invalid table name. Table names should contain only Latin letters, digits and underscores. Names should start with a Latin letter and could not contain spaces.',
+ 'error_table_duplicate_column' => "Duplicate column name: ':column'.",
+ 'error_table_auto_increment_in_compound_pk' => 'An auto-increment column cannot be a part of a compound primary key.',
+ 'error_table_mutliple_auto_increment' => 'The table cannot contain multiple auto-increment columns.',
+ 'error_table_auto_increment_non_integer' => 'Auto-increment columns should have integer type.',
+ 'error_table_decimal_length' => "The Length parameter for :type type should be in format '10,2', without spaces.",
+ 'error_table_length' => 'The Length parameter for :type type should be specified as integer.',
+ 'error_unsigned_type_not_int' => "Error in the ':column' column. The Unsigned flag can be applied only to integer type columns.",
+ 'error_integer_default_value' => "Invalid default value for the integer column ':column'. The allowed formats are '10', '-10'.",
+ 'error_decimal_default_value' => "Invalid default value for the decimal or double column ':column'. The allowed formats are '1.00', '-1.00'.",
+ 'error_boolean_default_value' => "Invalid default value for the boolean column ':column'. The allowed values are '0' and '1', or 'true' and 'false'.",
+ 'error_unsigned_negative_value' => "The default value for the unsigned column ':column' can't be negative.",
+ 'error_table_already_exists' => "The table ':name' already exists in the database.",
+ 'error_table_name_too_long' => "The table name should not be longer than 64 characters.",
+ 'error_column_name_too_long' => "The column name ':column' is too long. Column names should not be longer than 64 characters."
+ ],
+ 'model' => [
+ 'menu_label' => 'Models',
+ 'entity_name' => 'Model',
+ 'no_records' => 'No models found',
+ 'search' => 'Search...',
+ 'add' => 'Add...',
+ 'forms' => 'Forms',
+ 'lists' => 'Lists',
+ 'field_class_name' => 'Class name',
+ 'field_database_table' => 'Database table',
+ 'field_add_timestamps' => 'Add timestamp support',
+ 'field_add_timestamps_description' => 'The database table must have created_at and updated_at columns.',
+ 'field_add_soft_deleting' => 'Add soft deleting support',
+ 'field_add_soft_deleting_description' => 'The database table must have deleted_at column.',
+ 'error_class_name_exists' => 'Model file already exists for the specified class name: :path',
+ 'error_timestamp_columns_must_exist' => 'The database table must have created_at and updated_at columns.',
+ 'error_deleted_at_column_must_exist' => 'The database table must have deleted_at column.',
+ 'add_form' => 'Add form',
+ 'add_list' => 'Add list',
+ ],
+ 'form' => [
+ 'saved' => 'Form saved',
+ 'confirm_delete' => 'Delete the form?',
+ 'tab_new_form' => 'New form',
+ 'btn_add_database_fields' => 'Add database fields',
+ 'property_label_title' => 'Label',
+ 'property_label_required' => 'Please specify the control label.',
+ 'property_span_title' => 'Span',
+ 'property_comment_title' => 'Comment',
+ 'property_comment_above_title' => 'Comment above',
+ 'property_default_title' => 'Default',
+ 'property_checked_default_title' => 'Checked by default',
+ 'property_css_class_title' => 'CSS class',
+ 'property_css_class_description' => 'Optional CSS class to assign to the field container.',
+ 'property_disabled_title' => 'Disabled',
+ 'property_read_only_title' => 'Read only',
+ 'property_hidden_title' => 'Hidden',
+ 'property_required_title' => 'Required',
+ 'property_field_name_title' => 'Field name',
+ 'property_placeholder_title' => 'Placeholder',
+ 'property_default_from_title' => 'Default from',
+ 'property_stretch_title' => 'Stretch',
+ 'property_stretch_description' => 'Specifies if this field stretches to fit the parent height.',
+ 'property_context_title' => 'Context',
+ 'property_context_description' => 'Specifies what form context should be used when displaying the field.',
+ 'property_context_create' => 'Create',
+ 'property_context_update' => 'Update',
+ 'property_context_preview' => 'Preview',
+ 'property_dependson_title' => 'Depends on',
+ 'property_trigger_action' => 'Action',
+ 'property_trigger_show' => 'Show',
+ 'property_trigger_hide' => 'Hide',
+ 'property_trigger_enable' => 'Enable',
+ 'property_trigger_disable' => 'Disable',
+ 'property_trigger_empty' => 'Empty',
+ 'property_trigger_field' => 'Field',
+ 'property_trigger_field_description' => 'Defines the other field name that will trigger the action.',
+ 'property_trigger_condition' => 'Condition',
+ 'property_trigger_condition_description' => 'Determines the condition the specified field should satisfy for the condition to be considered "true". Supported values: checked, unchecked, value[somevalue].',
+ 'property_trigger_condition_checked' => 'Checked',
+ 'property_trigger_condition_unchecked' => 'Unchecked',
+ 'property_trigger_condition_somevalue' => 'value[enter-the-value-here]',
+ 'property_preset_title' => 'Preset',
+ 'property_preset_description' => 'Allows the field value to be initially set by the value of another field, converted using the input preset converter.',
+ 'property_preset_field' => 'Field',
+ 'property_preset_field_description' => 'Defines the other field name to source the value from.',
+ 'property_preset_type' => 'Type',
+ 'property_preset_type_description' => 'Specifies the conversion type',
+ 'property_attributes_title' => 'Attributes',
+ 'property_attributes_description' => 'Custom HTML attributes to add to the form field element.',
+ 'property_container_attributes_title' => 'Container attributes',
+ 'property_container_attributes_description' => 'Custom HTML attributes to add to the form field container element.',
+ 'property_group_advanced' => 'Advanced',
+ 'property_dependson_description' => 'A list of other field names this field depends on, when the other fields are modified, this field will update. One field per line.',
+ 'property_trigger_title' => 'Trigger',
+ 'property_trigger_description' => 'Allows to change elements attributes such as visibility or value, based on another elements\' state.',
+ 'property_default_from_description' => 'Takes the default value from the value of another field.',
+ 'property_field_name_required' => 'The field name is required',
+ 'property_field_name_regex' => 'The field name can contain only Latin letters, digits, underscores, dashes and square brackets.',
+ 'property_attributes_size' => 'Size',
+ 'property_attributes_size_tiny' => 'Tiny',
+ 'property_attributes_size_small' => 'Small',
+ 'property_attributes_size_large' => 'Large',
+ 'property_attributes_size_huge' => 'Huge',
+ 'property_attributes_size_giant' => 'Giant',
+ 'property_comment_position' => 'Comment position',
+ 'property_comment_position_above' => 'Above',
+ 'property_comment_position_below' => 'Below',
+ 'property_hint_path' => 'Hint partial path',
+ 'property_hint_path_description' => 'Path to a partial file that contains the hint text. Use the $ symbol to refer the plugins root directory, for example: $/acme/blog/partials/_hint.htm',
+ 'property_hint_path_required' => 'Please enter the hint partial path',
+ 'property_partial_path' => 'Partial path',
+ 'property_partial_path_description' => 'Path to a partial file. Use the $ symbol to refer the plugins root directory, for example: $/acme/blog/partials/_partial.htm',
+ 'property_partial_path_required' => 'Please enter the partial path',
+ 'property_code_language' => 'Language',
+ 'property_code_theme' => 'Theme',
+ 'property_theme_use_default' => 'Use default theme',
+ 'property_group_code_editor' => 'Code editor',
+ 'property_gutter' => 'Gutter',
+ 'property_gutter_show' => 'Visible',
+ 'property_gutter_hide' => 'Hidden',
+ 'property_wordwrap' => 'Word wrap',
+ 'property_wordwrap_wrap' => 'Wrap',
+ 'property_wordwrap_nowrap' => 'Don\'t wrap',
+ 'property_fontsize' => 'Font size',
+ 'property_codefolding' => 'Code folding',
+ 'property_codefolding_manual' => 'Manual',
+ 'property_codefolding_markbegin' => 'Mark begin',
+ 'property_codefolding_markbeginend' => 'Mark begin and end',
+ 'property_autoclosing' => 'Auto closing',
+ 'property_enabled' => 'Enabled',
+ 'property_disabled' => 'Disabled',
+ 'property_soft_tabs' => 'Soft tabs',
+ 'property_tab_size' => 'Tab size',
+ 'property_readonly' => 'Read only',
+ 'property_use_default' => 'Use default settings',
+ 'property_options' => 'Options',
+ 'property_prompt' => 'Prompt',
+ 'property_prompt_description' => 'Text to display for the create button.',
+ 'property_prompt_default' => 'Add new item',
+ 'property_available_colors' => 'Available colors',
+ 'property_available_colors_description' => 'List of available colors in hex format (#FF0000). Leave empty for the default color set. Enter one value per line.',
+ 'property_datepicker_mode' => 'Mode',
+ 'property_datepicker_mode_date' => 'Date',
+ 'property_datepicker_mode_datetime' => 'Date and time',
+ 'property_datepicker_mode_time' => 'Time',
+ 'property_datepicker_min_date' => 'Min date',
+ 'property_datepicker_min_date_description' => 'The minimum/earliest date that can be selected. This may be any string accepted by Carbon. Leave empty for no minimum date.',
+ 'property_datepicker_max_date' => 'Max date',
+ 'property_datepicker_max_date_description' => 'The maximum/latest date that can be selected. This may be any string accepted by Carbon. Leave empty for no maximum date.',
+ 'property_datepicker_year_range' => 'Year range',
+ 'property_datepicker_year_range_description' => 'Number of years either side (eg 10) or array of upper/lower range (eg [1900,2015]). Leave empty for the default value (10).',
+ 'property_datepicker_year_range_invalid_format' => 'Invalid year range format. Use number (eg "10") or array of upper/lower range (eg "[1900,2015]")',
+ 'property_datepicker_format' => 'Format',
+ 'property_datepicker_year_format_description' => 'Define a custom date format. The default format is "Y-m-d"',
+ 'property_markdown_mode' => 'Mode',
+ 'property_markdown_mode_split' => 'Split',
+ 'property_markdown_mode_tab' => 'Tab',
+ 'property_fileupload_mode' => 'Mode',
+ 'property_fileupload_mode_file' => 'File',
+ 'property_fileupload_mode_image' => 'Image',
+ 'property_group_fileupload' => 'File upload',
+ 'property_fileupload_prompt' => 'Prompt',
+ 'property_fileupload_prompt_description' => 'Text to display for the upload button, applies to File mode only, optional.',
+ 'property_fileupload_image_width' => 'Image width',
+ 'property_fileupload_image_width_description' => 'Optional parameter - images will be resized to this width. Applies to Image mode only.',
+ 'property_fileupload_invalid_dimension' => 'Invalid dimension value - please enter a number.',
+ 'property_fileupload_image_height' => 'Image height',
+ 'property_fileupload_image_height_description' => 'Optional parameter - images will be resized to this height. Applies to Image mode only.',
+ 'property_fileupload_file_types' => 'File types',
+ 'property_fileupload_file_types_description' => 'Optional comma separated list of file extensions that are accepted by the uploader. Eg: zip,txt',
+ 'property_fileupload_mime_types' => 'MIME types',
+ 'property_fileupload_maxfilesize' => 'Max file size',
+ 'property_fileupload_maxfilesize_description' => 'File size in Mb that are accepted by the uploader, optional.',
+ 'property_fileupload_invalid_maxfilesize' => 'Invalid Max file size value',
+ 'property_fileupload_maxfiles' => 'Max files',
+ 'property_fileupload_invalid_maxfiles' => 'Invalid Max files value',
+ 'property_fileupload_maxfiles_description' => 'Maximum number of files allowed to be uploaded',
+ 'property_fileupload_mime_types_description' => 'Optional comma separated list of MIME types that are accepted by the uploader, either as file extensions or fully qualified names. Eg: bin,txt',
+ 'property_fileupload_use_caption' => 'Use caption',
+ 'property_fileupload_use_caption_description' => 'Allows a title and description to be set for the file.',
+ 'property_fileupload_thumb_options' => 'Thumbnail options',
+ 'property_fileupload_thumb_options_description' => 'Manages options for the automatically generated thumbnails. Applies only for the Image mode.',
+ 'property_fileupload_thumb_mode' => 'Mode',
+ 'property_fileupload_thumb_auto' => 'Auto',
+ 'property_fileupload_thumb_exact' => 'Exact',
+ 'property_fileupload_thumb_portrait' => 'Portrait',
+ 'property_fileupload_thumb_landscape' => 'Landscape',
+ 'property_fileupload_thumb_crop' => 'Crop',
+ 'property_fileupload_thumb_extension' => 'File extension',
+ 'property_name_from' => 'Name column',
+ 'property_name_from_description' => 'Relation column name to use for displaying a name.',
+ 'property_relation_select' => 'Select',
+ 'property_relation_select_description' => 'CONCAT multiple columns together for displaying a name',
+ 'property_relation_scope' => 'Scope',
+ 'property_relation_scope_description' => 'Specifies a query scope method that\'s defined in the related form model to always apply to the list query.',
+ 'property_description_from' => 'Description column',
+ 'property_description_from_description' => 'Relation column name to use for displaying a description.',
+ 'property_recordfinder_prompt' => 'Prompt',
+ 'property_recordfinder_prompt_description' => 'Text to display when there is no record selected. The %s character represents the search icon. Leave empty for the default prompt.',
+ 'property_recordfinder_list' => 'List configuration',
+ 'property_recordfinder_list_description' => 'A reference to a list column definition file. Use the $ symbol to refer the plugins root directory, for example: $/acme/blog/lists/_list.yaml',
+ 'property_recordfinder_list_required' => 'Please provide a path to the list YAML file',
+ 'property_group_recordfinder' => 'Record finder',
+ 'property_mediafinder_mode' => 'Mode',
+ 'property_mediafinder_mode_file' => 'File',
+ 'property_mediafinder_mode_image' => 'Image',
+ 'property_mediafinder_prompt' => 'Prompt',
+ 'property_mediafinder_prompt_description' => 'Text to display when there is no item selected. The %s character represents the media manager icon. Leave empty for the default prompt.',
+ 'property_mediafinder_image_width_description' => 'If using image type, the preview image will be displayed to this width, optional.',
+ 'property_mediafinder_image_height_description' => 'If using image type, the preview image will be displayed to this height, optional.',
+ 'property_group_taglist' => 'Tag list',
+ 'property_taglist_mode' => 'Mode',
+ 'property_taglist_mode_description' => 'Defines the format that this field\'s value is returned as',
+ 'property_taglist_mode_string' => 'String',
+ 'property_taglist_mode_array' => 'Array',
+ 'property_taglist_mode_relation' => 'Relation',
+ 'property_taglist_separator' => 'Separator',
+ 'property_taglist_separator_comma' => 'Commas',
+ 'property_taglist_separator_space' => 'Spaces',
+ 'property_taglist_options' => 'Predefined tags',
+ 'property_taglist_custom_tags' => 'Custom tags',
+ 'property_taglist_custom_tags_description' => 'Allow custom tags to be entered manually by the user.',
+ 'property_taglist_name_from' => 'Name from',
+ 'property_taglist_name_from_description' => 'Defines the relation model attribute displayed in the tag. Only used in "relation" mode.',
+ 'property_taglist_use_key' => 'Use key',
+ 'property_taglist_use_key_description' => 'If checked, the tag list will use the key instead of the value for saving and reading data. Only used in "relation" mode.',
+ 'property_group_relation' => 'Relation',
+ 'property_relation_prompt' => 'Prompt',
+ 'property_relation_prompt_description' => 'Text to display when there is no available selections.',
+ 'property_empty_option' => 'Empty option',
+ 'property_empty_option_description' => 'The empty option corresponds to the empty selection, but unlike the placeholder it can be reselected.',
+ 'property_show_search' => 'Show search',
+ 'property_show_search_description' => 'Enables the search feature for this dropdown.',
+ 'property_title_from' => 'Title from',
+ 'property_title_from_description' => 'Specify a child field name to use the value of that field as the title for each repeater item.',
+ 'property_min_items' => 'Min items',
+ 'property_min_items_description' => 'Minimum number of items to allow within the repeater.',
+ 'property_min_items_integer' => 'Min items must be a positive integer.',
+ 'property_max_items' => 'Max items',
+ 'property_max_items_description' => 'Maximum number of items to allow within the repeater.',
+ 'property_max_items_integer' => 'Max items must be a positive integer.',
+ 'property_style' => 'Style',
+ 'property_style_description' => 'Defines the behaviour to apply to this repeater.',
+ 'property_switch_label_on' => 'ON label',
+ 'property_switch_label_on_description' => 'Set a custom label for an "ON" switch state',
+ 'property_switch_label_off' => 'OFF label',
+ 'property_switch_label_off_description' => 'Set a custom label for an "OFF" switch state',
+ 'control_group_standard' => 'Standard',
+ 'control_group_widgets' => 'Widgets',
+ 'click_to_add_control' => 'Add control',
+ 'loading' => 'Loading...',
+ 'control_text' => 'Text',
+ 'control_text_description' => 'Single line text box',
+ 'control_password' => 'Password',
+ 'control_password_description' => 'Single line password text field',
+ 'control_checkbox' => 'Checkbox',
+ 'control_checkbox_description' => 'Single checkbox',
+ 'control_switch' => 'Switch',
+ 'control_switch_description' => 'Single switchbox, an alternative for checkbox',
+ 'control_textarea' => 'Text area',
+ 'control_textarea_description' => 'Multiline text box with controllable height',
+ 'control_dropdown' => 'Dropdown',
+ 'control_dropdown_description' => 'Dropdown list with static or dynamic options',
+ 'control_balloon-selector' => 'Balloon Selector',
+ 'control_balloon-selector_description' => 'List where only one item can be selected at a time with static or dynamic options',
+ 'control_unknown' => 'Unknown control type: :type',
+ 'control_repeater' => 'Repeater',
+ 'control_repeater_description' => 'Outputs a repeating set of form controls',
+ 'control_number' => 'Number',
+ 'control_number_description' => 'Single line text box that takes numbers only',
+ 'control_hint' => 'Hint',
+ 'control_hint_description' => 'Outputs a partial contents in a box that can be hidden by the user',
+ 'control_partial' => 'Partial',
+ 'control_partial_description' => 'Outputs a partial contents',
+ 'control_section' => 'Section',
+ 'control_section_description' => 'Displays a form section with heading and subheading',
+ 'control_radio' => 'Radio list',
+ 'control_radio_description' => 'A list of radio options, where only one item can be selected at a time',
+ 'control_radio_option_1' => 'Option 1',
+ 'control_radio_option_2' => 'Option 2',
+ 'control_checkboxlist' => 'Checkbox list',
+ 'control_checkboxlist_description' => 'A list of checkboxes, where multiple items can be selected',
+ 'control_codeeditor' => 'Code editor',
+ 'control_codeeditor_description' => 'Plaintext editor for formatted code or markup',
+ 'control_colorpicker' => 'Color picker',
+ 'control_colorpicker_description' => 'A field for selecting a hexadecimal color value',
+ 'control_datepicker' => 'Date picker',
+ 'control_datepicker_description' => 'Text field used for selecting date and times',
+ 'control_richeditor' => 'Rich editor',
+ 'control_richeditor_description' => 'Visual editor for rich formatted text, also known as a WYSIWYG editor',
+ 'property_group_rich_editor' => 'Rich editor',
+ 'property_richeditor_toolbar_buttons' => 'Toolbar buttons',
+ 'property_richeditor_toolbar_buttons_description' => 'Which buttons to show on the editor toolbar.',
+ 'control_markdown' => 'Markdown editor',
+ 'control_markdown_description' => 'Basic editor for Markdown formatted text',
+ 'control_taglist' => 'Tag list',
+ 'control_taglist_description' => 'Field for inputting a list of tags',
+ 'control_fileupload' => 'File upload',
+ 'control_fileupload_description' => 'File uploader for images or regular files',
+ 'control_recordfinder' => 'Record finder',
+ 'control_recordfinder_description' => 'Field with details of a related record with the record search feature',
+ 'control_mediafinder' => 'Media finder',
+ 'control_mediafinder_description' => 'Field for selecting an item from the Media Manager library',
+ 'control_relation' => 'Relation',
+ 'control_relation_description' => 'Displays either a dropdown or checkbox list for selecting a related record',
+ 'control_widget_type' => 'Widget Type',
+ 'error_file_name_required' => 'Please enter the form file name.',
+ 'error_file_name_invalid' => 'The file name can contain only Latin letters, digits, underscores, dots and hashes.',
+ 'span_left' => 'Left',
+ 'span_right' => 'Right',
+ 'span_full' => 'Full',
+ 'span_auto' => 'Auto',
+ 'style_default' => 'Default',
+ 'style_collapsed' => 'Collapsed',
+ 'style_accordion' => 'Accordion',
+ 'empty_tab' => 'Empty tab',
+ 'confirm_close_tab' => 'The tab contains controls which will be deleted. Continue?',
+ 'tab' => 'Form tab',
+ 'tab_title' => 'Title',
+ 'controls' => 'Controls',
+ 'property_tab_title_required' => 'The tab title is required.',
+ 'tabs_primary' => 'Primary tabs',
+ 'tabs_secondary' => 'Secondary tabs',
+ 'tab_stretch' => 'Stretch',
+ 'tab_stretch_description' => 'Specifies if this tabs container stretches to fit the parent height.',
+ 'tab_css_class' => 'CSS class',
+ 'tab_css_class_description' => 'Assigns a CSS class to the tabs container.',
+ 'tab_name_template' => 'Tab %s',
+ 'tab_already_exists' => 'Tab with the specified title already exists.',
+ ],
+ 'list' => [
+ 'tab_new_list' => 'New list',
+ 'saved' => 'List saved',
+ 'confirm_delete' => 'Delete the list?',
+ 'tab_columns' => 'Columns',
+ 'btn_add_column' => 'Add column',
+ 'btn_delete_column' => 'Delete column',
+ 'column_dbfield_label' => 'Field',
+ 'column_dbfield_required' => 'Please enter the model field',
+ 'column_name_label' => 'Label',
+ 'column_label_required' => 'Please provide the column label',
+ 'column_type_label' => 'Type',
+ 'column_type_required' => 'Please provide the column type',
+ 'column_type_text' => 'Text',
+ 'column_type_number' => 'Number',
+ 'column_type_switch' => 'Switch',
+ 'column_type_datetime' => 'Datetime',
+ 'column_type_date' => 'Date',
+ 'column_type_time' => 'Time',
+ 'column_type_timesince' => 'Time since',
+ 'column_type_timetense' => 'Time tense',
+ 'column_type_select' => 'Select',
+ 'column_type_partial' => 'Partial',
+ 'column_label_default' => 'Default',
+ 'column_label_searchable' => 'Search',
+ 'column_label_sortable' => 'Sort',
+ 'column_label_invisible' => 'Invisible',
+ 'column_label_select' => 'Select',
+ 'column_label_relation' => 'Relation',
+ 'column_label_css_class' => 'CSS class',
+ 'column_label_width' => 'Width',
+ 'column_label_path' => 'Path',
+ 'column_label_format' => 'Format',
+ 'column_label_value_from' => 'Value from',
+ 'error_duplicate_column' => "Duplicate column field name: ':column'.",
+ 'btn_add_database_columns' => 'Add database columns',
+ 'all_database_columns_exist' => 'All database columns are already defined in the list'
+ ],
+ 'controller' => [
+ 'menu_label' => 'Controllers',
+ 'no_records' => 'No plugin controllers found',
+ 'controller' => 'Controller',
+ 'behaviors' => 'Behaviors',
+ 'new_controller' => 'New controller',
+ 'error_controller_has_no_behaviors' => 'The controller doesn\'t have configurable behaviors.',
+ 'error_invalid_yaml_configuration' => 'Error loading behavior configuration file: :file',
+ 'behavior_form_controller' => 'Form controller behavior',
+ 'behavior_form_controller_description' => 'Adds form functionality to a back-end page. The behavior provides three pages called Create, Update and Preview.',
+ 'property_behavior_form_placeholder' => '--select form--',
+ 'property_behavior_form_name' => 'Name',
+ 'property_behavior_form_name_description' => 'The name of the object being managed by this form',
+ 'property_behavior_form_name_required' => 'Please enter the form name',
+ 'property_behavior_form_file' => 'Form configuration',
+ 'property_behavior_form_file_description' => 'Reference to a form field definition file',
+ 'property_behavior_form_file_required' => 'Please enter a path to the form configuration file',
+ 'property_behavior_form_model_class' => 'Model class',
+ 'property_behavior_form_model_class_description' => 'A model class name, the form data is loaded and saved against this model.',
+ 'property_behavior_form_model_class_required' => 'Please select a model class',
+ 'property_behavior_form_default_redirect' => 'Default redirect',
+ 'property_behavior_form_default_redirect_description' => 'A page to redirect to by default when the form is saved or cancelled.',
+ 'property_behavior_form_create' => 'Create record page',
+ 'property_behavior_form_redirect' => 'Redirect',
+ 'property_behavior_form_redirect_description' => 'A page to redirect to when a record is created.',
+ 'property_behavior_form_redirect_close' => 'Close redirect',
+ 'property_behavior_form_redirect_close_description' => 'A page to redirect to when a record is created and the close post variable is sent with the request.',
+ 'property_behavior_form_flash_save' => 'Save flash message',
+ 'property_behavior_form_flash_save_description' => 'Flash message to display when record is saved.',
+ 'property_behavior_form_page_title' => 'Page title',
+ 'property_behavior_form_update' => 'Update record page',
+ 'property_behavior_form_update_redirect' => 'Redirect',
+ 'property_behavior_form_create_redirect_description' => 'A page to redirect to when a record is saved.',
+ 'property_behavior_form_flash_delete' => 'Delete flash message',
+ 'property_behavior_form_flash_delete_description' => 'Flash message to display when record is deleted.',
+ 'property_behavior_form_preview' => 'Preview record page',
+ 'behavior_list_controller' => 'List controller behavior',
+ 'behavior_list_controller_description' => 'Provides the sortable and searchable list with optional links on its records. The behavior automatically creates the controller action "index".',
+ 'property_behavior_list_title' => 'List title',
+ 'property_behavior_list_title_required' => 'Please enter the list title',
+ 'property_behavior_list_placeholder' => '--select list--',
+ 'property_behavior_list_model_class' => 'Model class',
+ 'property_behavior_list_model_class_description' => 'A model class name, the list data is loaded from this model.',
+ 'property_behavior_form_model_class_placeholder' => '--select model--',
+ 'property_behavior_list_model_class_required' => 'Please select a model class',
+ 'property_behavior_list_model_placeholder' => '--select model--',
+ 'property_behavior_list_file' => 'List configuration file',
+ 'property_behavior_list_file_description' => 'Reference to a list definition file',
+ 'property_behavior_list_file_required' => 'Please enter a path to the list configuration file',
+ 'property_behavior_list_record_url' => 'Record URL',
+ 'property_behavior_list_record_url_description' => 'Link each list record to another page. Eg: users/update:id. The :id part is replaced with the record identifier.',
+ 'property_behavior_list_no_records_message' => 'No records message',
+ 'property_behavior_list_no_records_message_description' => 'A message to display when no records are found',
+ 'property_behavior_list_recs_per_page' => 'Records per page',
+ 'property_behavior_list_recs_per_page_description' => 'Records to display per page, use 0 for no pages. Default: 0',
+ 'property_behavior_list_recs_per_page_regex' => 'Records per page should be an integer value',
+ 'property_behavior_list_show_setup' => 'Show setup button',
+ 'property_behavior_list_show_sorting' => 'Show sorting',
+ 'property_behavior_list_default_sort' => 'Default sorting',
+ 'property_behavior_form_ds_column' => 'Column',
+ 'property_behavior_form_ds_direction' => 'Direction',
+ 'property_behavior_form_ds_asc' => 'Ascending',
+ 'property_behavior_form_ds_desc' => 'Descending',
+ 'property_behavior_list_show_checkboxes' => 'Show checkboxes',
+ 'property_behavior_list_onclick' => 'On click handler',
+ 'property_behavior_list_onclick_description' => 'Custom JavaScript code to execute when clicking on a record.',
+ 'property_behavior_list_show_tree' => 'Show tree',
+ 'property_behavior_list_show_tree_description' => 'Displays a tree hierarchy for parent/child records.',
+ 'property_behavior_list_tree_expanded' => 'Tree expanded',
+ 'property_behavior_list_tree_expanded_description' => 'Determines if tree nodes should be expanded by default.',
+ 'property_behavior_list_toolbar' => 'Toolbar',
+ 'property_behavior_list_toolbar_buttons' => 'Buttons partial',
+ 'property_behavior_list_toolbar_buttons_description' => 'Reference to a controller partial file with the toolbar buttons. Eg: list_toolbar',
+ 'property_behavior_list_search' => 'Search',
+ 'property_behavior_list_search_prompt' => 'Search prompt',
+ 'property_behavior_list_filter' => 'Filter configuration',
+ 'behavior_reorder_controller' => 'Reorder controller behavior',
+ 'behavior_reorder_controller_description' => 'Provides features for sorting and reordering on its records. The behavior automatically creates the controller action "reorder".',
+ 'property_behavior_reorder_title' => 'Reorder title',
+ 'property_behavior_reorder_title_required' => 'Please enter the reorder title',
+ 'property_behavior_reorder_name_from' => 'Attribute name',
+ 'property_behavior_reorder_name_from_description' => 'Model\'s attribute that should be used as a label for each record.',
+ 'property_behavior_reorder_name_from_required' => 'Please enter the attribute name',
+ 'property_behavior_reorder_model_class' => 'Model class',
+ 'property_behavior_reorder_model_class_description' => 'A model class name, the reorder data is loaded from this model.',
+ 'property_behavior_reorder_model_class_placeholder' => '--select model--',
+ 'property_behavior_reorder_model_class_required' => 'Please select a model class',
+ 'property_behavior_reorder_model_placeholder' => '--select model--',
+ 'property_behavior_reorder_toolbar' => 'Toolbar',
+ 'property_behavior_reorder_toolbar_buttons' => 'Buttons partial',
+ 'property_behavior_reorder_toolbar_buttons_description' => 'Reference to a controller partial file with the toolbar buttons. Eg: reorder_toolbar',
+ 'error_controller_not_found' => 'Original controller file is not found.',
+ 'error_invalid_config_file_name' => 'The behavior :class configuration file name (:file) contains invalid characters and cannot be loaded.',
+ 'error_file_not_yaml' => 'The behavior :class configuration file (:file) is not a YAML file. Only YAML configuration files are supported.',
+ 'saved' => 'Controller saved',
+ 'controller_name' => 'Controller name',
+ 'controller_name_description' => 'Controller name defines the class name and URL of the controller\'s back-end pages. Standard PHP variable naming conventions apply. The first symbol should be a capital Latin letter. Examples: Categories, Posts, Products.',
+ 'base_model_class' => 'Base model class',
+ 'base_model_class_description' => 'Select a model class to use as a base model in behaviors that require or support models. You can configure the behaviors later.',
+ 'base_model_class_placeholder' => '--select model--',
+ 'controller_behaviors' => 'Behaviors',
+ 'controller_behaviors_description' => 'Select behaviors the controller should implement. Builder will create view files required for the behaviors automatically.',
+ 'controller_permissions' => 'Permissions',
+ 'controller_permissions_description' => 'Select user permissions that can access the controller views. Permissions can be defined on the Permissions tab of the Builder. You can change this option in the controller PHP script later.',
+ 'controller_permissions_no_permissions' => 'The plugin doesn\'t define any permissions.',
+ 'menu_item' => 'Active menu item',
+ 'menu_item_description' => 'Select a menu item to make active for the controller pages. You can change this option in the controller PHP script later.',
+ 'menu_item_placeholder' => '--select menu item--',
+ 'error_unknown_behavior' => 'The behavior class :class is not registered in the behavior library.',
+ 'error_behavior_view_conflict' => 'The selected behaviors provide conflicting views (:view) and cannot be used together in a controller.',
+ 'error_behavior_config_conflict' => 'The selected behaviors provide conflicting configuration files (:file) and cannot be used together in a controller.',
+ 'error_behavior_view_file_not_found' => 'View template :view of the behavior :class cannot be found.',
+ 'error_behavior_config_file_not_found' => 'Configuration template :file of the behavior :class cannot be found.',
+ 'error_controller_exists' => 'Controller file already exists: :file.',
+ 'error_controller_name_invalid' => 'Invalid controller name format. The name can only contain digits and Latin letters. The first symbol should be a capital Latin letter.',
+ 'error_behavior_view_file_exists' => 'Controller view file already exists: :view.',
+ 'error_behavior_config_file_exists' => 'Behavior configuration file already exists: :file.',
+ 'error_save_file' => 'Error saving controller file: :file',
+ 'error_behavior_requires_base_model' => 'Behavior :behavior requires a base model class to be selected.',
+ 'error_model_doesnt_have_lists' => 'The selected model doesn\'t have any lists. Please create a list first.',
+ 'error_model_doesnt_have_forms' => 'The selected model doesn\'t have any forms. Please create a form first.',
+ ],
+ 'version' => [
+ 'menu_label' => 'Versions',
+ 'no_records' => 'No plugin versions found',
+ 'search' => 'Search...',
+ 'tab' => 'Versions',
+ 'saved' => 'Version saved',
+ 'confirm_delete' => 'Delete the version?',
+ 'tab_new_version' => 'New version',
+ 'migration' => 'Migration',
+ 'seeder' => 'Seeder',
+ 'custom' => 'Increase the version number',
+ 'apply_version' => 'Apply version',
+ 'applying' => 'Applying...',
+ 'rollback_version' => 'Rollback version',
+ 'rolling_back' => 'Rolling back...',
+ 'applied' => 'Version applied',
+ 'rolled_back' => 'Version rolled back',
+ 'hint_save_unapplied' => 'You saved an unapplied version. Unapplied versions could be automatically applied when you or another user migrates the database or when a database table is saved in the Database section of the Builder.',
+ 'hint_rollback' => 'Rolling back a version will also roll back all versions newer than this version. Please note that unapplied versions could be automatically applied by the system when you or another user logs into the back-end or when a database table is saved in the Database section of the Builder.',
+ 'hint_apply' => 'Applying a version will also apply all older unapplied versions of the plugin.',
+ 'dont_show_again' => 'Don\'t show again',
+ 'save_unapplied_version' => 'Save unapplied version',
+ 'sort_ascending' => 'Sort ascending',
+ 'sort_descending' => 'Sort descending',
+ ],
+ 'menu' => [
+ 'menu_label' => 'Backend Menu',
+ 'tab' => 'Menus',
+ 'items' => 'Menu items',
+ 'saved' => 'Menus saved',
+ 'add_main_menu_item' => 'Add main menu item',
+ 'new_menu_item' => 'Menu Item',
+ 'add_side_menu_item' => 'Add sub-item',
+ 'side_menu_item' => 'Side menu item',
+ 'property_label' => 'Label',
+ 'property_label_required' => 'Please enter the menu item labels.',
+ 'property_url_required' => 'Please enter the menu item URL',
+ 'property_url' => 'URL',
+ 'property_icon' => 'Icon',
+ 'property_icon_required' => 'Please select an icon',
+ 'property_permissions' => 'Permissions',
+ 'property_order' => 'Order',
+ 'property_order_invalid' => 'Please enter the menu item order as integer value.',
+ 'property_order_description' => 'Menu item order manages its position in the menu. If the order is not provided, the item will be placed to the end of the menu. The default order values have the increment of 100.',
+ 'property_attributes' => 'HTML attributes',
+ 'property_code' => 'Code',
+ 'property_code_invalid' => 'The code should contain only Latin letter and digits',
+ 'property_code_required' => 'Please enter the menu item code.',
+ 'error_duplicate_main_menu_code' => "Duplicate main menu item code: ':code'.",
+ 'error_duplicate_side_menu_code' => "Duplicate side menu item code: ':code'.",
+ 'icon_svg' => 'iconSvg',
+ 'icon_svg_description' => 'An SVG icon to be used in place of the standard icon. The SVG icon should be a rectangle and can support colors',
+ 'counter' => 'Counter',
+ 'counter_description' => 'A numeric value to output near the menu icon. The value should be a number or a callable returning a number',
+ 'counter_label' => 'counterLabel',
+ 'counter_label_description' => 'A string value to describe the numeric reference in counter',
+ 'counter_group' => 'Counter'
+ ],
+ 'localization' => [
+ 'menu_label' => 'Localization',
+ 'language' => 'Language',
+ 'strings' => 'Strings',
+ 'confirm_delete' => 'Delete the language?',
+ 'tab_new_language' => 'New language',
+ 'no_records' => 'No languages found',
+ 'saved' => 'Language file saved',
+ 'error_cant_load_file' => 'Cannot load the requested language file - file not found.',
+ 'error_bad_localization_file_contents' => 'Cannot load the requested language file. Language files can only contain array definitions and strings.',
+ 'error_file_not_array' => 'Cannot load the requested language file. Language files should return an array.',
+ 'save_error' => "Error saving file ':name'. Please check write permissions.",
+ 'error_delete_file' => 'Error deleting localization file.',
+ 'add_missing_strings' => 'Add missing strings',
+ 'copy' => 'Copy',
+ 'add_missing_strings_label' => 'Select language to copy missing strings from',
+ 'no_languages_to_copy_from' => 'There are no other languages to copy strings from.',
+ 'new_string_warning' => 'New string or section',
+ 'structure_mismatch' => 'The structure of the source language file doesn\'t match the structure of the file being edited. Some individual strings in the edited file correspond to sections in the source file (or vice versa) and cannot be merged automatically.',
+ 'create_string' => 'Create new string',
+ 'string_key_label' => 'String key',
+ 'string_key_comment' => 'Enter the string key using period as a section separator. For example: plugin.search. The string will be created in the plugin\'s default language localization file.',
+ 'string_value' => 'String value',
+ 'string_key_is_empty' => 'String key should not be empty',
+ 'string_key_is_a_string' => ':key is a string and cannot contain other strings.',
+ 'string_value_is_empty' => 'String value should not be empty',
+ 'string_key_exists' => 'The string key already exists',
+ ],
+ 'permission' => [
+ 'menu_label' => 'Permissions',
+ 'tab' => 'Permissions',
+ 'form_tab_permissions' => 'Permissions',
+ 'btn_add_permission' => 'Add permission',
+ 'btn_delete_permission' => 'Delete permission',
+ 'column_permission_label' => 'Permission code',
+ 'column_permission_required' => 'Please enter the permission code',
+ 'column_tab_label' => 'Tab title',
+ 'column_tab_required' => 'Please enter the permission tab title',
+ 'column_label_label' => 'Label',
+ 'column_label_required' => 'Please enter the permission label',
+ 'saved' => 'Permissions saved',
+ 'error_duplicate_code' => "Duplicate permission code: ':code'.",
+ ],
+ 'yaml' => [
+ 'save_error' => "Error saving file ':name'. Please check write permissions.",
+ ],
+ 'common' => [
+ 'error_file_exists' => "File already exists: ':path'.",
+ 'field_icon_description' => 'October uses Font Autumn icons: http://octobercms.com/docs/ui/icon',
+ 'destination_dir_not_exists' => "The destination directory doesn't exist: ':path'.",
+ 'error_make_dir' => "Error creating directory: ':name'.",
+ 'error_dir_exists' => "Directory already exists: ':path'.",
+ 'template_not_found' => "Template file is not found: ':name'.",
+ 'error_generating_file' => "Error generating file: ':path'.",
+ 'error_loading_template' => "Error loading template file: ':name'.",
+ 'select_plugin_first' => 'Please select a plugin first. To see the plugin list click the > icon on the left sidebar.',
+ 'plugin_not_selected' => 'Plugin is not selected',
+ 'add' => 'Add',
+ ],
+ 'migration' => [
+ 'entity_name' => 'Migration',
+ 'error_version_invalid' => 'The version should be specified in format 1.0.1',
+ 'field_version' => 'Version',
+ 'field_description' => 'Description',
+ 'field_code' => 'Code',
+ 'save_and_apply' => 'Save & Apply',
+ 'error_version_exists' => 'The migration version already exists.',
+ 'error_script_filename_invalid' => 'The migration script file name can contain only Latin letters, digits and underscores. The name should start with a Latin letter and could not contain spaces.',
+ 'error_cannot_change_version_number' => 'Cannot change version number for an applied version.',
+ 'error_file_must_define_class' => 'Migration code should define a migration or seeder class. Leave the code field blank if you only want to update the version number.',
+ 'error_file_must_define_namespace' => 'Migration code should define a namespace. Leave the code field blank if you only want to update the version number.',
+ 'no_changes_to_save' => 'There are no changes to save.',
+ 'error_namespace_mismatch' => "The migration code should use the plugin namespace: :namespace",
+ 'error_migration_file_exists' => "Migration file :file already exists. Please use another class name.",
+ 'error_cant_delete_applied' => 'This version has already been applied and cannot be deleted. Please rollback the version first.',
+ ],
+ 'components' => [
+ 'list_title' => 'Record list',
+ 'list_description' => 'Displays a list of records for a selected model',
+ 'list_page_number' => 'Page number',
+ 'list_page_number_description' => 'This value is used to determine what page the user is on.',
+ 'list_records_per_page' => 'Records per page',
+ 'list_records_per_page_description' => 'Number of records to display on a single page. Leave empty to disable pagination.',
+ 'list_records_per_page_validation' => 'Invalid format of the records per page value. The value should be a number.',
+ 'list_no_records' => 'No records message',
+ 'list_no_records_description' => 'Message to display in the list in case if there are no records. Used in the default component\'s partial.',
+ 'list_no_records_default' => 'No records found',
+ 'list_sort_column' => 'Sort by column',
+ 'list_sort_column_description' => 'Model column the records should be ordered by',
+ 'list_sort_direction' => 'Direction',
+ 'list_display_column' => 'Display column',
+ 'list_display_column_description' => 'Column to display in the list. Used in the default component\'s partial.',
+ 'list_display_column_required' => 'Please select a display column.',
+ 'list_details_page' => 'Details page',
+ 'list_details_page_description' => 'Page to display record details.',
+ 'list_details_page_no' => '--no details page--',
+ 'list_sorting' => 'Sorting',
+ 'list_pagination' => 'Pagination',
+ 'list_order_direction_asc' => 'Ascending',
+ 'list_order_direction_desc' => 'Descending',
+ 'list_model' => 'Model class',
+ 'list_scope' => 'Scope',
+ 'list_scope_description' => 'Optional model scope to fetch the records',
+ 'list_scope_default' => '--select a scope, optional--',
+ 'list_scope_value' => 'Scope value',
+ 'list_scope_value_description' => 'Optional value to pass to the model scope',
+ 'list_details_page_link' => 'Link to the details page',
+ 'list_details_key_column' => 'Details key column',
+ 'list_details_key_column_description' => 'Model column to use as a record identifier in the details page links.',
+ 'list_details_url_parameter' => 'URL parameter name',
+ 'list_details_url_parameter_description' => 'Name of the details page URL parameter which takes the record identifier.',
+ 'details_title' => 'Record details',
+ 'details_description' => 'Displays record details for a selected model',
+ 'details_model' => 'Model class',
+ 'details_identifier_value' => 'Identifier value',
+ 'details_identifier_value_description' => 'Identifier value to load the record from the database. Specify a fixed value or URL parameter name.',
+ 'details_identifier_value_required' => 'The identifier value is required',
+ 'details_key_column' => 'Key column',
+ 'details_key_column_description' => 'Model column to use as a record identifier for fetching the record from the database.',
+ 'details_key_column_required' => 'The key column name is required',
+ 'details_display_column' => 'Display column',
+ 'details_display_column_description' => 'Model column to display on the details page. Used in the default component\'s partial.',
+ 'details_display_column_required' => 'Please select a display column.',
+ 'details_not_found_message' => 'Not found message',
+ 'details_not_found_message_description' => 'Message to display if the record is not found. Used in the default component\'s partial.',
+ 'details_not_found_message_default' => 'Record not found',
+ ],
+ 'validation' => [
+ 'reserved' => ':attribute cannot be a PHP reserved keyword'
+ ]
];
diff --git a/plugins/rainlab/builder/lang/es.json b/plugins/rainlab/builder/lang/es.json
deleted file mode 100644
index 16fb070..0000000
--- a/plugins/rainlab/builder/lang/es.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "Builder": "Builder",
- "Provides visual tools for building October plugins.": "Proporciona herramientas visuales para la construcción de plugins de October."
-}
\ No newline at end of file
diff --git a/plugins/rainlab/builder/lang/es/lang.php b/plugins/rainlab/builder/lang/es/lang.php
index 0e5adb6..0ee8050 100644
--- a/plugins/rainlab/builder/lang/es/lang.php
+++ b/plugins/rainlab/builder/lang/es/lang.php
@@ -1,642 +1,654 @@
- [
- 'add' => 'Crear plugin',
- 'no_records' => 'No se encuentran plugins',
- 'no_name' => 'Sin nombre',
- 'search' => 'Buscar...',
- 'filter_description' => 'Mostrar todos los plugins o sólo tus plugins.',
- 'settings' => 'Configuración',
- 'entity_name' => 'Plugin',
- 'field_name' => 'Nombre',
- 'field_author' => 'Autor',
- 'field_description' => 'Descripción',
- 'field_icon' => 'Icono plugin',
- 'field_plugin_namespace' => 'Espacio de nombres de plugin',
- 'field_author_namespace' => 'Espacio de nombres de autor',
- 'field_namespace_description' => 'Namespace can contain only Latin letters and digits and should start with a Latin letter. Example plugin namespace: Blog',
- 'field_author_namespace_description' => 'You cannot change the namespaces with Builder after you create the plugin. Example author namespace: JohnSmith',
- 'tab_general' => 'Parametros generales',
- 'tab_description' => 'Descripción',
- 'field_homepage' => 'Plugin Homepage (URL)',
- 'no_description' => 'No hay descripción proporcionada para este plugin',
- 'error_settings_not_editable' => 'Configuración de este plugin no se pueden editar con el Builder.',
- 'update_hint' => 'Puedes editar el nombre de plugins y descripción localizada en la pestaña de localizaciones.',
- 'manage_plugins' => 'Crear y editar plugins',
- ],
- 'author_name' => [
- 'title' => 'Nombre del autor',
- 'description' => 'Por defecto el nombre del autor a utilizar para sus nuevos plugins. El nombre del autor no es fijo - se puede cambiar en la configuración de los plugins en cualquier momento.',
- ],
- 'author_namespace' => [
- 'title' => 'Espacio de nombres',
- 'description' => 'Si desarrolla para el Marketplace, el espacio de nombres debe coincidir con el código de autor y no puede ser cambiado. Consulte la documentación para más detalles.',
- ],
- 'database' => [
- 'menu_label' => 'Base de datos',
- 'no_records' => 'Tablas no encontradas',
- 'search' => 'Buscar...',
- 'confirmation_delete_multiple' => '¿Eliminar las tablas seleccionadas?',
- 'field_name' => 'Nombre de la tabla',
- 'tab_columns' => 'Columnas',
- 'column_name_name' => 'Columna',
- 'column_name_required' => 'Por favor ingrese el nombre de la columna',
- 'column_name_type' => 'Tipo',
- 'column_type_required' => 'Please select the column type',
- 'column_name_length' => 'Length',
- 'column_validation_length' => 'The Length value should be integer or specified as precision and scale (10,2) for decimal columns. Spaces are not allowed in the length column.',
- 'column_validation_title' => 'Only digits, lower-case Latin letters and underscores are allowed in column names',
- 'column_name_unsigned' => 'Unsigned',
- 'column_name_nullable' => 'Nullable',
- 'column_auto_increment' => 'AUTOINCR',
- 'column_default' => 'Default',
- 'column_auto_primary_key' => 'PK',
- 'tab_new_table' => 'Nueva tabla',
- 'btn_add_column' => 'Añadir columna',
- 'btn_delete_column' => 'Borrar columna',
- 'btn_add_id' => 'Añadir ID',
- 'btn_add_timestamps' => 'Añadir timestamps',
- 'btn_add_soft_deleting' => 'Añadir columna para soft delete',
- 'confirm_delete' => '¿Borrar la tabla?',
- 'error_enum_not_supported' => 'The table contains column(s) with type "enum" which is not currently supported by the Builder.',
- 'error_table_name_invalid_prefix' => 'Table name should start with the plugin prefix: \':prefix\'.',
- 'error_table_name_invalid_characters' => 'Invalid table name. Table names should contain only Latin letters, digits and underscores. Names should start with a Latin letter and could not contain spaces.',
- 'error_table_duplicate_column' => 'Nombre de columna duplicada: \':column\'.',
- 'error_table_auto_increment_in_compound_pk' => 'An auto-increment column cannot be a part of a compound primary key.',
- 'error_table_mutliple_auto_increment' => 'La tabla no puede contener más de una columna auto-incrementable.',
- 'error_table_auto_increment_non_integer' => 'Las columnas Auto-incrementables deben ser de tipo numerico.',
- 'error_table_decimal_length' => 'The Length parameter for :type type should be in format \'10,2\', without spaces.',
- 'error_table_length' => 'The Length parameter for :type type should be specified as integer.',
- 'error_unsigned_type_not_int' => 'Error in the \':column\' column. The Unsigned flag can be applied only to integer type columns.',
- 'error_integer_default_value' => 'Invalid default value for the integer column \':column\'. The allowed formats are \'10\', \'-10\'.',
- 'error_decimal_default_value' => 'Invalid default value for the decimal or double column \':column\'. The allowed formats are \'1.00\', \'-1.00\'.',
- 'error_boolean_default_value' => 'Invalid default value for the boolean column \':column\'. The allowed values are \'0\' and \'1\'.',
- 'error_unsigned_negative_value' => 'The default value for the unsigned column \':column\' can\'t be negative.',
- 'error_table_already_exists' => 'La tabla \':name\' ya existe en la base de datos.',
- ],
- 'model' => [
- 'menu_label' => 'Modelos',
- 'entity_name' => 'Modelo',
- 'no_records' => 'Modelos no encontrados',
- 'search' => 'Buscar...',
- 'add' => 'Añadir...',
- 'forms' => 'Formularios',
- 'lists' => 'Listas',
- 'field_class_name' => 'Nombre Clase',
- 'field_database_table' => 'Tabla de base de datos',
- 'error_class_name_exists' => 'Ya existe el archivo modelo para el nombre de clase especificado: :path',
- 'add_form' => 'Añadir formulario',
- 'add_list' => 'Añadir lista',
- ],
- 'form' => [
- 'saved' => 'Formulario guardado',
- 'confirm_delete' => '¿Borrar el formulario?',
- 'tab_new_form' => 'Nuevo formulario',
- 'property_label_title' => 'Etiqueta',
- 'property_label_required' => 'Por favor especifique la etiqueta del control.',
- 'property_span_title' => 'Span',
- 'property_comment_title' => 'Commentario',
- 'property_comment_above_title' => 'Comentario encima',
- 'property_default_title' => 'Default',
- 'property_checked_default_title' => 'Checked by default',
- 'property_css_class_title' => 'CSS class',
- 'property_css_class_description' => 'Optional CSS class to assign to the field container.',
- 'property_disabled_title' => 'deshabilitado',
- 'property_hidden_title' => 'Oculto',
- 'property_required_title' => 'Requerido',
- 'property_field_name_title' => 'Nombre del campo',
- 'property_placeholder_title' => 'Placeholder',
- 'property_default_from_title' => 'Default from',
- 'property_stretch_title' => 'Stretch',
- 'property_stretch_description' => 'Specifies if this field stretches to fit the parent height.',
- 'property_context_title' => 'Context',
- 'property_context_description' => 'Specifies what form context should be used when displaying the field.',
- 'property_context_create' => 'Create',
- 'property_context_update' => 'Update',
- 'property_context_preview' => 'Preview',
- 'property_dependson_title' => 'Depends on',
- 'property_trigger_action' => 'Action',
- 'property_trigger_show' => 'Show',
- 'property_trigger_hide' => 'Hide',
- 'property_trigger_enable' => 'Enable',
- 'property_trigger_disable' => 'Disable',
- 'property_trigger_empty' => 'Vacio',
- 'property_trigger_field' => 'Campo',
- 'property_trigger_field_description' => 'Defines the other field name that will trigger the action.',
- 'property_trigger_condition' => 'Condition',
- 'property_trigger_condition_description' => 'Determines the condition the specified field should satisfy for the condition to be considered "true". Supported values: checked, unchecked, value[somevalue].',
- 'property_trigger_condition_checked' => 'Checked',
- 'property_trigger_condition_unchecked' => 'Unchecked',
- 'property_trigger_condition_somevalue' => 'value[enter-the-value-here]',
- 'property_preset_title' => 'Preset',
- 'property_preset_description' => 'Allows the field value to be initially set by the value of another field, converted using the input preset converter.',
- 'property_preset_field' => 'Field',
- 'property_preset_field_description' => 'Defines the other field name to source the value from.',
- 'property_preset_type' => 'Type',
- 'property_preset_type_description' => 'Specifies the conversion type',
- 'property_attributes_title' => 'Atributos',
- 'property_attributes_description' => 'Custom HTML attributes to add to the form field element.',
- 'property_container_attributes_title' => 'Container attributes',
- 'property_container_attributes_description' => 'Custom HTML attributes to add to the form field container element.',
- 'property_group_advanced' => 'Avanzado',
- 'property_dependson_description' => 'A list of other field names this field depends on, when the other fields are modified, this field will update. One field per line.',
- 'property_trigger_title' => 'Trigger',
- 'property_trigger_description' => 'Allows to change elements attributes such as visibility or value, based on another elements\' state.',
- 'property_default_from_description' => 'Takes the default value from the value of another field.',
- 'property_field_name_required' => 'El campo nombre es requerido',
- 'property_field_name_regex' => 'The field name can contain only Latin letters, digits, underscores, dashes and square brackets.',
- 'property_attributes_size' => 'Tamaño',
- 'property_attributes_size_tiny' => 'Diminuto',
- 'property_attributes_size_small' => 'Pequeño',
- 'property_attributes_size_large' => 'Grande',
- 'property_attributes_size_huge' => 'Enorme',
- 'property_attributes_size_giant' => 'Gigante',
- 'property_comment_position' => 'Posición del comentario',
- 'property_comment_position_above' => 'Arriba',
- 'property_comment_position_below' => 'Abajo',
- 'property_hint_path' => 'Hint partial path',
- 'property_hint_path_description' => 'Path to a partial file that contains the hint text. Use the $ symbol to refer the plugins root directory, for example: $/acme/blog/partials/_hint.htm',
- 'property_hint_path_required' => 'Por favor ingresa la ruta hacia el archivo parcial de la pista',
- 'property_partial_path' => 'Partial path',
- 'property_partial_path_description' => 'Path to a partial file. Use the $ symbol to refer the plugins root directory, for example: $/acme/blog/partials/_partial.htm',
- 'property_partial_path_required' => 'Please enter the partial path',
- 'property_code_language' => 'Idioma',
- 'property_code_theme' => 'Tema',
- 'property_theme_use_default' => 'Usar tema por defecto',
- 'property_group_code_editor' => 'Code editor',
- 'property_gutter' => 'Gutter',
- 'property_gutter_show' => 'Visible',
- 'property_gutter_hide' => 'Hidden',
- 'property_wordwrap' => 'Word wrap',
- 'property_wordwrap_wrap' => 'Wrap',
- 'property_wordwrap_nowrap' => 'Don\'t wrap',
- 'property_fontsize' => 'Font size',
- 'property_codefolding' => 'Code folding',
- 'property_codefolding_manual' => 'Manual',
- 'property_codefolding_markbegin' => 'Mark begin',
- 'property_codefolding_markbeginend' => 'Mark begin and end',
- 'property_autoclosing' => 'Auto closing',
- 'property_enabled' => 'Habilitado',
- 'property_disabled' => 'Deshabilitado',
- 'property_soft_tabs' => 'Soft tabs',
- 'property_tab_size' => 'Tamaño de la pestaña',
- 'property_readonly' => 'Solo lectura',
- 'property_use_default' => 'Use default settings',
- 'property_options' => 'Opciones',
- 'property_prompt' => 'Prompt',
- 'property_prompt_description' => 'Texto que se mostrará para el botón creado',
- 'property_prompt_default' => 'Añadir nuevo item',
- 'property_available_colors' => 'Colores disponibles',
- 'property_available_colors_description' => 'List of available colors in hex format (#FF0000). Leave empty for the default color set. Enter one value per line.',
- 'property_datepicker_mode' => 'Modo',
- 'property_datepicker_mode_date' => 'Fecha',
- 'property_datepicker_mode_datetime' => 'Fecha y hora',
- 'property_datepicker_mode_time' => 'Hora',
- 'property_datepicker_min_date' => 'Fecha mínima',
- 'property_datepicker_max_date' => 'Fecha máxima',
- 'property_fileupload_mode' => 'Mode',
- 'property_fileupload_mode_file' => 'Archivo',
- 'property_fileupload_mode_image' => 'Imágen',
- 'property_group_fileupload' => 'File upload',
- 'property_fileupload_image_width' => 'Ancho de la imagen (width)',
- 'property_fileupload_image_width_description' => 'Optional parameter - images will be resized to this width. Applies to Image mode only.',
- 'property_fileupload_invalid_dimension' => 'Invalid dimension value - please enter a number.',
- 'property_fileupload_image_height' => 'Alto de la imagen (height)',
- 'property_fileupload_image_height_description' => 'Optional parameter - images will be resized to this height. Applies to Image mode only.',
- 'property_fileupload_file_types' => 'File types',
- 'property_fileupload_file_types_description' => 'Optional comma separated list of file extensions that are accepted by the uploader. Eg: zip,txt',
- 'property_fileupload_mime_types' => 'MIME types',
- 'property_fileupload_mime_types_description' => 'Optional comma separated list of MIME types that are accepted by the uploader, either as file extensions or fully qualified names. Eg: bin,txt',
- 'property_fileupload_use_caption' => 'Use caption',
- 'property_fileupload_use_caption_description' => 'Allows a title and description to be set for the file.',
- 'property_fileupload_thumb_options' => 'Thumbnail options',
- 'property_fileupload_thumb_options_description' => 'Manages options for the automatically generated thumbnails. Applies only for the Image mode.',
- 'property_fileupload_thumb_mode' => 'Mode',
- 'property_fileupload_thumb_auto' => 'Auto',
- 'property_fileupload_thumb_exact' => 'Exact',
- 'property_fileupload_thumb_portrait' => 'Portrait',
- 'property_fileupload_thumb_landscape' => 'Landscape',
- 'property_fileupload_thumb_crop' => 'Crop',
- 'property_fileupload_thumb_extension' => 'Extensión del archivo',
- 'property_name_from' => 'Name column',
- 'property_name_from_description' => 'Relation column name to use for displaying a name.',
- 'property_relation_select' => 'Select',
- 'property_relation_select_description' => 'CONCAT multiple columns together for displaying a name',
- 'property_description_from' => 'Description column',
- 'property_description_from_description' => 'Relation column name to use for displaying a description.',
- 'property_recordfinder_prompt' => 'Prompt',
- 'property_recordfinder_prompt_description' => 'Text to display when there is no record selected. The %s character represents the search icon. Leave empty for the default prompt.',
- 'property_recordfinder_list' => 'List configuration',
- 'property_recordfinder_list_description' => 'A reference to a list column definition file. Use the $ symbol to refer the plugins root directory, for example: $/acme/blog/lists/_list.yaml',
- 'property_recordfinder_list_required' => 'Please provide a path to the list YAML file',
- 'property_group_recordfinder' => 'Record finder',
- 'property_mediafinder_mode' => 'Modo',
- 'property_mediafinder_mode_file' => 'Archivo',
- 'property_mediafinder_mode_image' => 'Imagen',
- 'property_group_relation' => 'Relation',
- 'property_relation_prompt' => 'Prompt',
- 'property_relation_prompt_description' => 'Text to display when there is no available selections.',
- 'control_group_standard' => 'Standard',
- 'control_group_widgets' => 'Widgets',
- 'click_to_add_control' => 'Añadir control',
- 'loading' => 'Cargando...',
- 'control_text' => 'Texto',
- 'control_text_description' => 'Campo de texto de una linea',
- 'control_password' => 'Contraseña',
- 'control_password_description' => 'Campo de contraseña de una linea',
- 'control_checkbox' => 'Checkbox',
- 'control_checkbox_description' => 'Checkbox único',
- 'control_switch' => 'Switch',
- 'control_switch_description' => 'Control switch único, una alternativa al checkbox',
- 'control_textarea' => 'Text area',
- 'control_textarea_description' => 'Campo de texto multilinea con altura personalizable',
- 'control_dropdown' => 'Dropdown',
- 'control_dropdown_description' => 'Dropdown list with static or dynamic options',
- 'control_unknown' => 'Unknown control type: :type',
- 'control_repeater' => 'Repeater',
- 'control_repeater_description' => 'Outputs a repeating set of form controls',
- 'control_number' => 'Número',
- 'control_number_description' => 'Campo de texto de una linea el cual sólo permite números',
- 'control_hint' => 'Pista',
- 'control_hint_description' => 'Despliega un contenido parcial en una caja que puede ser ocultado por el usuario',
- 'control_partial' => 'Partial',
- 'control_partial_description' => 'Incluye un contenido parcial',
- 'control_section' => 'Section',
- 'control_section_description' => 'Displays a form section with heading and subheading',
- 'control_radio' => 'Lista de radios',
- 'control_radio_description' => 'Una lista de radio buttons, donde solo un item puede ser seleccionado al mismo tiempo',
- 'control_radio_option_1' => 'Opción 1',
- 'control_radio_option_2' => 'Opción 2',
- 'control_checkboxlist' => 'Lista de Checkbox',
- 'control_checkboxlist_description' => 'Una lista de checkboxs, donde mas de un item puede ser seleccionado',
- 'control_codeeditor' => 'Editor de código',
- 'control_codeeditor_description' => 'Plaintext editor for formatted code or markup',
- 'control_colorpicker' => 'Selector de color',
- 'control_colorpicker_description' => 'Un campo para seleccionar un valor de color en hexadecimal',
- 'control_datepicker' => 'Selector de fecha',
- 'control_datepicker_description' => 'Un campo de texto para seleccionar fecha/hora',
- 'control_richeditor' => 'Editor enriquecido',
- 'control_richeditor_description' => 'Editor visual para texto enriquecido, también conocido como editor WYSIWYG',
- 'control_markdown' => 'Editor Markdown',
- 'control_markdown_description' => 'Editor básico para texto formateado en Markdown',
- 'control_fileupload' => 'File upload',
- 'control_fileupload_description' => 'File uploader for images or regular files',
- 'control_recordfinder' => 'Record finder',
- 'control_recordfinder_description' => 'Field with details of a related record with the record search feature',
- 'control_mediafinder' => 'Media finder',
- 'control_mediafinder_description' => 'Field for selecting an item from the Media Manager library',
- 'control_relation' => 'Relation',
- 'control_relation_description' => 'Despliega un Dropdown o una lista de Checkboxs para seleccionar el registro relacionado',
- 'error_file_name_required' => 'Por favor ingresa el nombre del archivo del formulario.',
- 'error_file_name_invalid' => 'El nombre de este archivo sólo puede contener letras, digitos, guiones (bajo y medio) y puntos.',
- 'span_left' => 'Izquierda',
- 'span_right' => 'Derecha',
- 'span_full' => 'Completo',
- 'span_auto' => 'Automático',
- 'empty_tab' => 'Pestaña vacia',
- 'confirm_close_tab' => 'La pestaña contiene controles que serán eliminados, ¿continuar?',
- 'tab' => 'Pestaña de formulario',
- 'tab_title' => 'Titulo',
- 'controls' => 'Controles',
- 'property_tab_title_required' => 'el campo titulo es requerido',
- 'tabs_primary' => 'Pestañas primarias',
- 'tabs_secondary' => 'Pestañas secundarias',
- 'tab_stretch' => 'Stretch',
- 'tab_stretch_description' => 'Especifica si el contenedor de esta pestaña se estira para ajustarse al alto del elemento padre.',
- 'tab_css_class' => 'Clase CSS',
- 'tab_css_class_description' => 'Asigna una clase CSS al contenedor de la pestaña.',
- 'tab_name_template' => 'Pestaña %s',
- 'tab_already_exists' => 'Ya existe una pestaña con el nombre especificado.',
- ],
- 'list' => [
- 'tab_new_list' => 'Nueva lista',
- 'saved' => 'Lista guardada',
- 'confirm_delete' => '¿Borrar la lista?',
- 'tab_columns' => 'Columnas',
- 'btn_add_column' => 'Añadir columna',
- 'btn_delete_column' => 'Borrar columna',
- 'column_dbfield_label' => 'Campo',
- 'column_dbfield_required' => 'Por favor proporcione el campo del modelo',
- 'column_name_label' => 'Etiqueta',
- 'column_label_required' => 'Por favor proporcione la etiqueta de columna',
- 'column_type_label' => 'Tipo',
- 'column_type_required' => 'Por favor indique el tipo de columna',
- 'column_type_text' => 'Texto',
- 'column_type_number' => 'Numero',
- 'column_type_switch' => 'Switch',
- 'column_type_datetime' => 'Datetime',
- 'column_type_date' => 'Fecha',
- 'column_type_time' => 'Hora',
- 'column_type_timesince' => 'Tine since',
- 'column_type_timetense' => 'Tine tense',
- 'column_type_select' => 'Select',
- 'column_type_partial' => 'Partial',
- 'column_label_default' => 'Default',
- 'column_label_searchable' => 'Buscable',
- 'column_label_sortable' => 'Ordenable',
- 'column_label_invisible' => 'Invisible',
- 'column_label_select' => 'Select',
- 'column_label_relation' => 'Relation',
- 'column_label_css_class' => 'CSS class',
- 'column_label_width' => 'Width',
- 'column_label_path' => 'Path',
- 'column_label_format' => 'Format',
- 'column_label_value_from' => 'Value from',
- 'error_duplicate_column' => 'Nombre del campo duplicado: \':column\'.',
- 'btn_add_database_columns' => 'Añadir columnas desde la base de datos',
- ],
- 'controller' => [
- 'menu_label' => 'Controladores',
- 'no_records' => 'No se encuentran controladores del plugin',
- 'controller' => 'Controlador',
- 'behaviors' => 'Comportamientos',
- 'new_controller' => 'Nuevo controlador',
- 'error_controller_has_no_behaviors' => 'El controlador no tiene un behaviors configurado.',
- 'error_invalid_yaml_configuration' => 'Error loading behavior configuration file: :file',
- 'behavior_form_controller' => 'Form controller behavior',
- 'behavior_form_controller_description' => 'Adds form functionality to a back-end page. The behavior provides three pages called Create, Update and Preview.',
- 'property_behavior_form_placeholder' => '--select form--',
- 'property_behavior_form_name' => 'Nombre',
- 'property_behavior_form_name_description' => 'The name of the object being managed by this form',
- 'property_behavior_form_name_required' => 'Por favor ingrese el nombre del formulario',
- 'property_behavior_form_file' => 'Configuración del formulario',
- 'property_behavior_form_file_description' => 'Reference to a form field definition file',
- 'property_behavior_form_file_required' => 'Please enter a path to the form configuration file',
- 'property_behavior_form_model_class' => 'Model class',
- 'property_behavior_form_model_class_description' => 'A model class name, the form data is loaded and saved against this model.',
- 'property_behavior_form_model_class_required' => 'Please select a model class',
- 'property_behavior_form_default_redirect' => 'Default redirect',
- 'property_behavior_form_default_redirect_description' => 'A page to redirect to by default when the form is saved or cancelled.',
- 'property_behavior_form_create' => 'Create record page',
- 'property_behavior_form_redirect' => 'Redirect',
- 'property_behavior_form_redirect_description' => 'Una página a la que redirigir una vez el registro sea creado',
- 'property_behavior_form_redirect_close' => 'Close redirect',
- 'property_behavior_form_redirect_close_description' => 'A page to redirect to when a record is created and the close post variable is sent with the request.',
- 'property_behavior_form_flash_save' => 'Save flash message',
- 'property_behavior_form_flash_save_description' => 'Flash message to display when record is saved.',
- 'property_behavior_form_page_title' => 'Page title',
- 'property_behavior_form_update' => 'Update record page',
- 'property_behavior_form_update_redirect' => 'Redirect',
- 'property_behavior_form_create_redirect_description' => 'A page to redirect to when a record is saved.',
- 'property_behavior_form_flash_delete' => 'Delete flash message',
- 'property_behavior_form_flash_delete_description' => 'Flash message to display when record is deleted.',
- 'property_behavior_form_preview' => 'Preview record page',
- 'behavior_list_controller' => 'List controller behavior',
- 'behavior_list_controller_description' => 'Provides the sortable and searchable list with optional links on its records. The behavior automatically creates the controller action "index".',
- 'property_behavior_list_title' => 'List title',
- 'property_behavior_list_title_required' => 'Please enter the list title',
- 'property_behavior_list_placeholder' => '--select list--',
- 'property_behavior_list_model_class' => 'Model class',
- 'property_behavior_list_model_class_description' => 'A model class name, the list data is loaded from this model.',
- 'property_behavior_form_model_class_placeholder' => '--select model--',
- 'property_behavior_list_model_class_required' => 'Please select a model class',
- 'property_behavior_list_model_placeholder' => '--select model--',
- 'property_behavior_list_file' => 'List configuration file',
- 'property_behavior_list_file_description' => 'Reference to a list definition file',
- 'property_behavior_list_file_required' => 'Please enter a path to the list configuration file',
- 'property_behavior_list_record_url' => 'Record URL',
- 'property_behavior_list_record_url_description' => 'Link each list record to another page. Eg: users/update:id. The :id part is replaced with the record identifier.',
- 'property_behavior_list_no_records_message' => 'No records message',
- 'property_behavior_list_no_records_message_description' => 'A message to display when no records are found',
- 'property_behavior_list_recs_per_page' => 'Records per page',
- 'property_behavior_list_recs_per_page_description' => 'Records to display per page, use 0 for no pages. Default: 0',
- 'property_behavior_list_recs_per_page_regex' => 'Records per page should be an integer value',
- 'property_behavior_list_show_setup' => 'Show setup button',
- 'property_behavior_list_show_sorting' => 'Show sorting',
- 'property_behavior_list_default_sort' => 'Default sorting',
- 'property_behavior_form_ds_column' => 'Columna',
- 'property_behavior_form_ds_direction' => 'Direction',
- 'property_behavior_form_ds_asc' => 'Ascending',
- 'property_behavior_form_ds_desc' => 'Descending',
- 'property_behavior_list_show_checkboxes' => 'Show checkboxes',
- 'property_behavior_list_onclick' => 'On click handler',
- 'property_behavior_list_onclick_description' => 'Custom JavaScript code to execute when clicking on a record.',
- 'property_behavior_list_show_tree' => 'Show tree',
- 'property_behavior_list_show_tree_description' => 'Displays a tree hierarchy for parent/child records.',
- 'property_behavior_list_tree_expanded' => 'Tree expanded',
- 'property_behavior_list_tree_expanded_description' => 'Determines if tree nodes should be expanded by default.',
- 'property_behavior_list_toolbar' => 'Toolbar',
- 'property_behavior_list_toolbar_buttons' => 'Buttons partial',
- 'property_behavior_list_toolbar_buttons_description' => 'Reference to a controller partial file with the toolbar buttons. Eg: list_toolbar',
- 'property_behavior_list_search' => 'Buscar',
- 'property_behavior_list_search_prompt' => 'Search prompt',
- 'property_behavior_list_filter' => 'Filter configuration',
- 'behavior_reorder_controller' => 'Reorder controller behavior',
- 'behavior_reorder_controller_description' => 'Provides features for sorting and reordering on its records. The behavior automatically creates the controller action "reorder".',
- 'property_behavior_reorder_title' => 'Reorder title',
- 'property_behavior_reorder_title_required' => 'Please enter the reorder title',
- 'property_behavior_reorder_name_from' => 'Attribute name',
- 'property_behavior_reorder_name_from_description' => 'Model\'s attribute that should be used as a label for each record.',
- 'property_behavior_reorder_name_from_required' => 'Please enter the attribute name',
- 'property_behavior_reorder_model_class' => 'Model class',
- 'property_behavior_reorder_model_class_description' => 'A model class name, the reorder data is loaded from this model.',
- 'property_behavior_reorder_model_class_placeholder' => '--select model--',
- 'property_behavior_reorder_model_class_required' => 'Please select a model class',
- 'property_behavior_reorder_model_placeholder' => '--select model--',
- 'property_behavior_reorder_toolbar' => 'Toolbar',
- 'property_behavior_reorder_toolbar_buttons' => 'Buttons partial',
- 'property_behavior_reorder_toolbar_buttons_description' => 'Reference to a controller partial file with the toolbar buttons. Eg: reorder_toolbar',
- 'error_controller_not_found' => 'Original controller file is not found.',
- 'error_invalid_config_file_name' => 'The behavior :class configuration file name (:file) contains invalid characters and cannot be loaded.',
- 'error_file_not_yaml' => 'The behavior :class configuration file (:file) is not a YAML file. Only YAML configuration files are supported.',
- 'saved' => 'Controlador guardado',
- 'controller_name' => 'Nombre del controlador',
- 'controller_name_description' => 'El nombre del controlador define el nombre de la clase y la URL del controlador en el backend. Se aplican Las convenciones estándar de nombramiento de variables. El primer simbolo debe ser una letra Mayúscula: Ejemplo: Categories, Posts, Products',
- 'base_model_class' => 'Clase de modelo base',
- 'base_model_class_description' => 'Selecciona la clase del modelo para usarla como modelo base en los behaviors que se requieran o soporte el modelo. Puedes configurar los behaviors más adelante.',
- 'base_model_class_placeholder' => '--selecciona el modelo--',
- 'controller_behaviors' => 'Behaviors',
- 'controller_behaviors_description' => 'Selecciona los behaviors que el controlador debe implementar. El Plugin Builder creará las vistas requeridas para los behaviors automáticamente.',
- 'controller_permissions' => 'Permisos',
- 'controller_permissions_description' => 'Select user permissions that can access the controller views. Permissions can be defined on the Permissions tab of the Builder. You can change this option in the controller PHP script later.',
- 'controller_permissions_no_permissions' => 'El plugin no define ningún permiso.',
- 'menu_item' => 'Item activo del menú',
- 'menu_item_description' => 'Selecciona un item del menú para se active para las páginas de este controlador. Puedes cambiar esta opción en el script de PHP del controlador mas adelante.',
- 'menu_item_placeholder' => '--selecciona el item del menú--',
- 'error_unknown_behavior' => 'La clase :class del behavior no está registrado en la librería de behaviors.',
- 'error_behavior_view_conflict' => 'El behaviors seleccionado provee vistas que ocasionan un conflicto (:view) y no pueden utilizarse juntas en un controlador.',
- 'error_behavior_config_conflict' => 'El behaviors seleccionado provee archivos de configuración que ocasionan un conflicto (:file) y no pueden utilizarse juntas en un controlador.',
- 'error_behavior_view_file_not_found' => 'View template :view of the behavior :class cannot be found.',
- 'error_behavior_config_file_not_found' => 'Configuration template :file of the behavior :class cannot be found.',
- 'error_controller_exists' => 'Controller file already exists: :file.',
- 'error_controller_name_invalid' => 'Formato del nombre del controlador invalido. El nombre solo puede contener letras y digitos. El primer simbolo debe ser una mayúscula.',
- 'error_behavior_view_file_exists' => 'El archivo de la vista del controlador ya existe: :view.',
- 'error_behavior_config_file_exists' => 'El archivo de configuración de este Behavior ya existe: :file.',
- 'error_save_file' => 'Error guardando el archivo del controlador: :file',
- 'error_behavior_requires_base_model' => 'El Behavior :behavior require de un modelo base para ser seleccionado.',
- 'error_model_doesnt_have_lists' => 'El modelo seleccionado no tiene ninguna lista. Favor de primero crear una lista.',
- 'error_model_doesnt_have_forms' => 'El modelo seleccionado no tiene ningún formulario. Favor de primero crear un formulario.',
- ],
- 'version' => [
- 'menu_label' => 'Versiones',
- 'no_records' => 'Versiones del plugin no encontradas',
- 'search' => 'Buscar...',
- 'tab' => 'Versiones',
- 'saved' => 'Versión guardada',
- 'confirm_delete' => '¿Borrar esta versión?',
- 'tab_new_version' => 'Nueva versión',
- 'migration' => 'Migración',
- 'seeder' => 'Seeder',
- 'custom' => 'Increase the verison number',
- 'apply_version' => 'Apply version',
- 'applying' => 'Applying...',
- 'rollback_version' => 'Rollback versión',
- 'rolling_back' => 'Rolling back...',
- 'applied' => 'Version applied',
- 'rolled_back' => 'Version rolled back',
- 'hint_save_unapplied' => 'You saved an unapplied version. Unapplied versions could be automatically applied when you or another user logs into the back-end or when a database table is saved in the Database section of the Builder.',
- 'hint_rollback' => 'Rolling back a version will also roll back all versions newer than this version. Please note that unapplied versions could be automatically applied by the system when you or another user logs into the back-end or when a database table is saved in the Database section of the Builder.',
- 'hint_apply' => 'Applying a version will also apply all older unapplied versions of the plugin.',
- 'dont_show_again' => 'Don\'t show again',
- 'save_unapplied_version' => 'Save unapplied version',
- ],
- 'menu' => [
- 'menu_label' => 'Backend Menu',
- 'tab' => 'Menus',
- 'items' => 'Items del menú',
- 'saved' => 'Menues guardados',
- 'add_main_menu_item' => 'Añadir item al menú principal',
- 'new_menu_item' => 'Menu Item',
- 'add_side_menu_item' => 'Agregar sub-item',
- 'side_menu_item' => 'Item de menú lateral',
- 'property_label' => 'Etiqueta',
- 'property_label_required' => 'Por favor ingrese la etiqueta para el item del menú.',
- 'property_url_required' => 'Por favor ingrese la URL para el item del menú',
- 'property_url' => 'URL',
- 'property_icon' => 'Icono',
- 'property_icon_required' => 'Por favor seleccione un ícono',
- 'property_permissions' => 'Permisos',
- 'property_order' => 'Orden',
- 'property_order_invalid' => 'Por favor ingrese el orden el item del menú como un valor numérico.',
- 'property_order_description' => 'Menu item order manages its position in the menu. If the order is not provided, the item will be placed to the end of the menu. The default order values have the increment of 100.',
- 'property_attributes' => 'Atributos HTML',
- 'property_code' => 'Código',
- 'property_code_invalid' => 'El código sólo puede contener letras y números',
- 'property_code_required' => 'Please enter the menu item code.',
- 'error_duplicate_main_menu_code' => 'Duplicate main menu item code: \':code\'.',
- 'error_duplicate_side_menu_code' => 'Duplicate side menu item code: \':code\'.',
- ],
- 'localization' => [
- 'menu_label' => 'Localización',
- 'language' => 'Lenguaje',
- 'strings' => 'Cadenas',
- 'confirm_delete' => '¿Borrar el lenguaje?',
- 'tab_new_language' => 'Nuevo lenguaje',
- 'no_records' => 'Lenguajes no encontrados',
- 'saved' => 'Archivo de lenguaje guardado',
- 'error_cant_load_file' => 'Cannot load the requested language file - file not found.',
- 'error_bad_localization_file_contents' => 'Cannot load the requested language file. Language files can only contain array definitions and strings.',
- 'error_file_not_array' => 'Cannot load the requested language file. Language files should return an array.',
- 'save_error' => 'Error saving file \':name\'. Please check write permissions.',
- 'error_delete_file' => 'Error deleting localization file.',
- 'add_missing_strings' => 'Añadir cadenas que faltan',
- 'copy' => 'Copiar',
- 'add_missing_strings_label' => 'Select language to copy missing strings from',
- 'no_languages_to_copy_from' => 'There are no other languages to copy strings from.',
- 'new_string_warning' => 'Nueva cadena o sección',
- 'structure_mismatch' => 'The structure of the source language file doesn\'t match the structure of the file being edited. Some individual strings in the edited file correspond to sections in the source file (or vice versa) and cannot be merged automatically.',
- 'create_string' => 'Create new string',
- 'string_key_label' => 'String key',
- 'string_key_comment' => 'Enter the string key using period as a section separator. For example: plugin.search. The string will be created in the plugin\'s default language localization file.',
- 'string_value' => 'String value',
- 'string_key_is_empty' => 'String key should not be empty',
- 'string_value_is_empty' => 'String value should not be empty',
- 'string_key_exists' => 'The string key already exists',
- ],
- 'permission' => [
- 'menu_label' => 'Permisos',
- 'tab' => 'Permisos',
- 'form_tab_permissions' => 'Permisos',
- 'btn_add_permission' => 'Añadir permisos',
- 'btn_delete_permission' => 'Borrar permisos',
- 'column_permission_label' => 'Código del permiso',
- 'column_permission_required' => 'Por favor ingrese el código del permiso',
- 'column_tab_label' => 'Titulo pestaña',
- 'column_tab_required' => 'Por favor introduzca el permiso de el título de la pestaña',
- 'column_label_label' => 'Etiqueta',
- 'column_label_required' => 'Por favor introduzca permiso de etiqueta',
- 'saved' => 'Permisos guardados',
- 'error_duplicate_code' => 'Código de permiso duplicado: \':code\'.',
- ],
- 'yaml' => [
- 'save_error' => 'Error al guardar el archivo \':name\'. Consulte permisos de escritura.',
- ],
- 'common' => [
- 'error_file_exists' => 'El archivo ya existe: \':path\'.',
- 'field_icon_description' => 'October usa Font Autumn icons: http://octobercms.com/docs/ui/icon',
- 'destination_dir_not_exists' => 'El directorio de destino no existe: \':path\'.',
- 'error_make_dir' => 'Error al crear directorio: \':name\'.',
- 'error_dir_exists' => 'El directorio ya existe!: \':path\'.',
- 'template_not_found' => 'Archivo de plantilla no encontrado: \':name\'.',
- 'error_generating_file' => 'Error al generar el archivo: \':path\'.',
- 'error_loading_template' => 'Error al cargar el archivo plantilla: \':name\'.',
- 'select_plugin_first' => 'Seleccione primero un plugin. Para ver la lista de plugin, haga clic en el icono > en la barra lateral izquierda.',
- 'plugin_not_selected' => 'Plugin no seleccionado',
- 'add' => 'Añadir',
- ],
- 'migration' => [
- 'entity_name' => 'Migración',
- 'error_version_invalid' => 'La versión debe ser especificada en el siguiente formato: 1.0.1',
- 'field_version' => 'Versión',
- 'field_description' => 'Descripción',
- 'field_code' => 'Código',
- 'save_and_apply' => 'Guardar y Aplicar',
- 'error_version_exists' => 'La versión de la migración ya existe.',
- 'error_script_filename_invalid' => 'El nombre del archivo de migración sólo puede contener letras, digitos y guiones bajos. El nombre de comenzar con el nombre debe comenzar con una letra y no puede contener espacios.',
- 'error_cannot_change_version_number' => 'No se puede cambiar el número de la versión para una versión ya aplicada.',
- 'error_file_must_define_class' => 'El código de la migración debe definir una clase de migración o de seeder. Dejar en blanco si solo quieres actualizar el número de la versión.',
- 'error_file_must_define_namespace' => 'La migración debe definir un namespace. Deja el campo de código en blanco si solo quieres actualizar el número de la versión.',
- 'no_changes_to_save' => 'No hay cambios que guardar.',
- 'error_namespace_mismatch' => 'El código de la migración debe utilizar el namespace del plugin :namespace',
- 'error_migration_file_exists' => 'El archivo de migración :file ya existe. Favor usa otro nombre para la clase.',
- 'error_cant_delete_applied' => 'Esta versión ya ha sido aplicada y no puede ser eliminada. Favor haz un rollback a la versión primero.',
- ],
- 'components' => [
- 'list_title' => 'Lista de registros',
- 'list_description' => 'Mostrar una lista de registros para el modelo seleccionado',
- 'list_page_number' => 'Número de página',
- 'list_page_number_description' => 'Este valor es usado para determinar en qué página se encuentra el usuario.',
- 'list_records_per_page' => 'Registros por página',
- 'list_records_per_page_description' => 'Número de registros a mostrar en una página. Dejar en blanco para desactivar paginación.',
- 'list_records_per_page_validation' => 'Invalid format of the records per page value. The value should be a number.',
- 'list_no_records' => 'No records message',
- 'list_no_records_description' => 'Message to display in the list in case if there are no records. Used in the default component\'s partial.',
- 'list_no_records_default' => 'No se han encontrado registros',
- 'list_sort_column' => 'Ordenar por columna',
- 'list_sort_column_description' => 'Model column the records should be ordered by',
- 'list_sort_direction' => 'Dirección',
- 'list_display_column' => 'Columna para mostrar',
- 'list_display_column_description' => 'Column to display in the list. Used in the default component\'s partial.',
- 'list_display_column_required' => 'Por favor, selecciona una columna para mostrar.',
- 'list_details_page' => 'Página de detalles',
- 'list_details_page_description' => 'Página para desplegar el registro de detalles.',
- 'list_details_page_no' => '--No hay página de detalles--',
- 'list_sorting' => 'Sorting',
- 'list_pagination' => 'Paginación',
- 'list_order_direction_asc' => 'Ascendente',
- 'list_order_direction_desc' => 'Descendente',
- 'list_model' => 'Model class',
- 'list_scope' => 'Scope',
- 'list_scope_description' => 'Optional model scope to fetch the records',
- 'list_scope_default' => '--select a scope, optional--',
- 'list_details_page_link' => 'Enlace a la página de detalles',
- 'list_details_key_column' => 'Details key column',
- 'list_details_key_column_description' => 'Model column to use as a record identifier in the details page links.',
- 'list_details_url_parameter' => 'URL parameter name',
- 'list_details_url_parameter_description' => 'Name of the details page URL parameter which takes the record identifier.',
- 'details_title' => 'Detalles de un registro',
- 'details_description' => 'Despliega el detalle de un registro para el modelo seleccionado',
- 'details_model' => 'Clase del modelo',
- 'details_identifier_value' => 'Identifier value',
- 'details_identifier_value_description' => 'Identifier value to load the record from the database. Specify a fixed value or URL parameter name.',
- 'details_identifier_value_required' => 'The identifier value is required',
- 'details_key_column' => 'Key column',
- 'details_key_column_description' => 'Model column to use as a record identifier for fetching the record from the database.',
- 'details_key_column_required' => 'The key column name is required',
- 'details_display_column' => 'Display column',
- 'details_display_column_description' => 'Model column to display on the details page. Used in the default component\'s partial.',
- 'details_display_column_required' => 'Por favor selecciona una columna para mostrar.',
- 'details_not_found_message' => 'Mensaje registro no encontrado',
- 'details_not_found_message_description' => 'Mensaje que se mostrará si el registro no fue encontrado. Usado en el partial del componente por defecto.',
- 'details_not_found_message_default' => 'Registro no encontrado',
- ],
+ [
+ 'name' => 'Builder',
+ 'description' => 'Proporciona herramientas visuales para la construcción de plugins de October.',
+ 'add' => 'Crear plugin',
+ 'no_records' => 'No se encuentran plugins',
+ 'no_name' => 'Sin nombre',
+ 'search' => 'Buscar...',
+ 'filter_description' => 'Mostrar todos los plugins o sólo tus plugins.',
+ 'settings' => 'Configuración',
+ 'entity_name' => 'Plugin',
+ 'field_name' => 'Nombre',
+ 'field_author' => 'Autor',
+ 'field_description' => 'Descripción',
+ 'field_icon' => 'Icono plugin',
+ 'field_plugin_namespace' => 'Espacio de nombres de plugin',
+ 'field_author_namespace' => 'Espacio de nombres de autor',
+ 'field_namespace_description' => 'Namespace can contain only Latin letters and digits and should start with a Latin letter. Example plugin namespace: Blog',
+ 'field_author_namespace_description' => 'You cannot change the namespaces with Builder after you create the plugin. Example author namespace: JohnSmith',
+ 'tab_general' => 'Parametros generales',
+ 'tab_description' => 'Descripción',
+ 'field_homepage' => 'Plugin homepage URL',
+ 'no_description' => 'No hay descripción proporcionada para este plugin',
+ 'error_settings_not_editable' => 'Configuración de este plugin no se pueden editar con el Builder.',
+ 'update_hint' => 'Puedes editar el nombre de plugins y descripción localizada en la pestaña de localizaciones.',
+ 'manage_plugins' => 'Crear y editar plugins',
+ ],
+ 'author_name' => [
+ 'title' => 'Nombre del autor',
+ 'description' => 'Por defecto el nombre del autor a utilizar para sus nuevos plugins. El nombre del autor no es fijo - se puede cambiar en la configuración de los plugins en cualquier momento.',
+ ],
+ 'author_namespace' => [
+ 'title' => 'Espacio de nombres',
+ 'description' => 'Si desarrolla para el Marketplace, el espacio de nombres debe coincidir con el código de autor y no puede ser cambiado. Consulte la documentación para más detalles.',
+ ],
+ 'database' => [
+ 'menu_label' => 'Base de datos',
+ 'no_records' => 'Tablas no encontradas',
+ 'search' => 'Buscar...',
+ 'confirmation_delete_multiple' => '¿Eliminar las tablas seleccionadas?',
+ 'field_name' => 'Nombre de la tabla',
+ 'tab_columns' => 'Columnas',
+ 'column_name_name' => 'Columna',
+ 'column_name_required' => 'Por favor ingrese el nombre de la columna',
+ 'column_name_type' => 'Tipo',
+ 'column_type_required' => 'Please select the column type',
+ 'column_name_length' => 'Length',
+ 'column_validation_length' => 'The Length value should be integer or specified as precision and scale (10,2) for decimal columns. Spaces are not allowed in the length column.',
+ 'column_validation_title' => 'Only digits, lower-case Latin letters and underscores are allowed in column names',
+ 'column_name_unsigned' => 'Unsigned',
+ 'column_name_nullable' => 'Nullable',
+ 'column_auto_increment' => 'AUTOINCR',
+ 'column_default' => 'Default',
+ 'column_auto_primary_key' => 'PK',
+ 'tab_new_table' => 'Nueva tabla',
+ 'btn_add_column' => 'Añadir columna',
+ 'btn_delete_column' => 'Borrar columna',
+ 'btn_add_id' => 'Añadir ID',
+ 'btn_add_timestamps' => 'Añadir timestamps',
+ 'btn_add_soft_deleting' => 'Añadir columna para soft delete',
+ 'confirm_delete' => '¿Borrar la tabla?',
+ 'error_enum_not_supported' => 'The table contains column(s) with type "enum" which is not currently supported by the Builder.',
+ 'error_table_name_invalid_prefix' => "Table name should start with the plugin prefix: ':prefix'.",
+ 'error_table_name_invalid_characters' => 'Invalid table name. Table names should contain only Latin letters, digits and underscores. Names should start with a Latin letter and could not contain spaces.',
+ 'error_table_duplicate_column' => "Nombre de columna duplicada: ':column'.",
+ 'error_table_auto_increment_in_compound_pk' => 'An auto-increment column cannot be a part of a compound primary key.',
+ 'error_table_mutliple_auto_increment' => 'La tabla no puede contener más de una columna auto-incrementable.',
+ 'error_table_auto_increment_non_integer' => 'Las columnas Auto-incrementables deben ser de tipo numerico.',
+ 'error_table_decimal_length' => "The Length parameter for :type type should be in format '10,2', without spaces.",
+ 'error_table_length' => 'The Length parameter for :type type should be specified as integer.',
+ 'error_unsigned_type_not_int' => "Error in the ':column' column. The Unsigned flag can be applied only to integer type columns.",
+ 'error_integer_default_value' => "Invalid default value for the integer column ':column'. The allowed formats are '10', '-10'.",
+ 'error_decimal_default_value' => "Invalid default value for the decimal or double column ':column'. The allowed formats are '1.00', '-1.00'.",
+ 'error_boolean_default_value' => "Invalid default value for the boolean column ':column'. The allowed values are '0' and '1'.",
+ 'error_unsigned_negative_value' => "The default value for the unsigned column ':column' can't be negative.",
+ 'error_table_already_exists' => "La tabla ':name' ya existe en la base de datos.",
+ ],
+ 'model' => [
+ 'menu_label' => 'Modelos',
+ 'entity_name' => 'Modelo',
+ 'no_records' => 'Modelos no encontrados',
+ 'search' => 'Buscar...',
+ 'add' => 'Añadir...',
+ 'forms' => 'Formularios',
+ 'lists' => 'Listas',
+ 'field_class_name' => 'Nombre Clase',
+ 'field_database_table' => 'Tabla de base de datos',
+ 'error_class_name_exists' => 'Ya existe el archivo modelo para el nombre de clase especificado: :path',
+ 'add_form' => 'Añadir formulario',
+ 'add_list' => 'Añadir lista',
+ ],
+ 'form' => [
+ 'saved' => 'Formulario guardado',
+ 'confirm_delete' => '¿Borrar el formulario?',
+ 'tab_new_form' => 'Nuevo formulario',
+ 'property_label_title' => 'Etiqueta',
+ 'property_label_required' => 'Por favor especifique la etiqueta del control.',
+ 'property_span_title' => 'Span',
+ 'property_comment_title' => 'Commentario',
+ 'property_comment_above_title' => 'Comentario encima',
+ 'property_default_title' => 'Default',
+ 'property_checked_default_title' => 'Checked by default',
+ 'property_css_class_title' => 'CSS class',
+ 'property_css_class_description' => 'Optional CSS class to assign to the field container.',
+ 'property_disabled_title' => 'deshabilitado',
+ 'property_hidden_title' => 'Oculto',
+ 'property_required_title' => 'Requerido',
+ 'property_field_name_title' => 'Nombre del campo',
+ 'property_placeholder_title' => 'Placeholder',
+ 'property_default_from_title' => 'Default from',
+ 'property_stretch_title' => 'Stretch',
+ 'property_stretch_description' => 'Specifies if this field stretches to fit the parent height.',
+ 'property_context_title' => 'Context',
+ 'property_context_description' => 'Specifies what form context should be used when displaying the field.',
+ 'property_context_create' => 'Create',
+ 'property_context_update' => 'Update',
+ 'property_context_preview' => 'Preview',
+ 'property_dependson_title' => 'Depends on',
+ 'property_trigger_action' => 'Action',
+ 'property_trigger_show' => 'Show',
+ 'property_trigger_hide' => 'Hide',
+ 'property_trigger_enable' => 'Enable',
+ 'property_trigger_disable' => 'Disable',
+ 'property_trigger_empty' => 'Vacio',
+ 'property_trigger_field' => 'Campo',
+ 'property_trigger_field_description' => 'Defines the other field name that will trigger the action.',
+ 'property_trigger_condition' => 'Condition',
+ 'property_trigger_condition_description' => 'Determines the condition the specified field should satisfy for the condition to be considered "true". Supported values: checked, unchecked, value[somevalue].',
+ 'property_trigger_condition_checked' => 'Checked',
+ 'property_trigger_condition_unchecked' => 'Unchecked',
+ 'property_trigger_condition_somevalue' => 'value[enter-the-value-here]',
+ 'property_preset_title' => 'Preset',
+ 'property_preset_description' => 'Allows the field value to be initially set by the value of another field, converted using the input preset converter.',
+ 'property_preset_field' => 'Field',
+ 'property_preset_field_description' => 'Defines the other field name to source the value from.',
+ 'property_preset_type' => 'Type',
+ 'property_preset_type_description' => 'Specifies the conversion type',
+ 'property_attributes_title' => 'Atributos',
+ 'property_attributes_description' => 'Custom HTML attributes to add to the form field element.',
+ 'property_container_attributes_title' => 'Container attributes',
+ 'property_container_attributes_description' => 'Custom HTML attributes to add to the form field container element.',
+ 'property_group_advanced' => 'Avanzado',
+ 'property_dependson_description' => 'A list of other field names this field depends on, when the other fields are modified, this field will update. One field per line.',
+ 'property_trigger_title' => 'Trigger',
+ 'property_trigger_description' => 'Allows to change elements attributes such as visibility or value, based on another elements\' state.',
+ 'property_default_from_description' => 'Takes the default value from the value of another field.',
+ 'property_field_name_required' => 'El campo nombre es requerido',
+ 'property_field_name_regex' => 'The field name can contain only Latin letters, digits, underscores, dashes and square brackets.',
+ 'property_attributes_size' => 'Tamaño',
+ 'property_attributes_size_tiny' => 'Diminuto',
+ 'property_attributes_size_small' => 'Pequeño',
+ 'property_attributes_size_large' => 'Grande',
+ 'property_attributes_size_huge' => 'Enorme',
+ 'property_attributes_size_giant' => 'Gigante',
+ 'property_comment_position' => 'Posición del comentario',
+ 'property_comment_position_above' => 'Arriba',
+ 'property_comment_position_below' => 'Abajo',
+ 'property_hint_path' => 'Hint partial path',
+ 'property_hint_path_description' => 'Path to a partial file that contains the hint text. Use the $ symbol to refer the plugins root directory, for example: $/acme/blog/partials/_hint.htm',
+ 'property_hint_path_required' => 'Por favor ingresa la ruta hacia el archivo parcial de la pista',
+ 'property_partial_path' => 'Partial path',
+ 'property_partial_path_description' => 'Path to a partial file. Use the $ symbol to refer the plugins root directory, for example: $/acme/blog/partials/_partial.htm',
+ 'property_partial_path_required' => 'Please enter the partial path',
+ 'property_code_language' => 'Idioma',
+ 'property_code_theme' => 'Tema',
+ 'property_theme_use_default' => 'Usar tema por defecto',
+ 'property_group_code_editor' => 'Code editor',
+ 'property_gutter' => 'Gutter',
+ 'property_gutter_show' => 'Visible',
+ 'property_gutter_hide' => 'Hidden',
+ 'property_wordwrap' => 'Word wrap',
+ 'property_wordwrap_wrap' => 'Wrap',
+ 'property_wordwrap_nowrap' => 'Don\'t wrap',
+ 'property_fontsize' => 'Font size',
+ 'property_codefolding' => 'Code folding',
+ 'property_codefolding_manual' => 'Manual',
+ 'property_codefolding_markbegin' => 'Mark begin',
+ 'property_codefolding_markbeginend' => 'Mark begin and end',
+ 'property_autoclosing' => 'Auto closing',
+ 'property_enabled' => 'Habilitado',
+ 'property_disabled' => 'Deshabilitado',
+ 'property_soft_tabs' => 'Soft tabs',
+ 'property_tab_size' => 'Tamaño de la pestaña',
+ 'property_readonly' => 'Solo lectura',
+ 'property_use_default' => 'Use default settings',
+ 'property_options' => 'Opciones',
+ 'property_prompt' => 'Prompt',
+ 'property_prompt_description' => 'Texto que se mostrará para el botón creado',
+ 'property_prompt_default' => 'Añadir nuevo item',
+ 'property_available_colors' => 'Colores disponibles',
+ 'property_available_colors_description' => 'List of available colors in hex format (#FF0000). Leave empty for the default color set. Enter one value per line.',
+ 'property_datepicker_mode' => 'Modo',
+ 'property_datepicker_mode_date' => 'Fecha',
+ 'property_datepicker_mode_datetime' => 'Fecha y hora',
+ 'property_datepicker_mode_time' => 'Hora',
+ 'property_datepicker_min_date' => 'Fecha mínima',
+ 'property_datepicker_max_date' => 'Fecha máxima',
+ 'property_markdown_mode' => 'Mode',
+ 'property_markdown_mode_split' => 'Split',
+ 'property_markdown_mode_tab' => 'Pestaña',
+ 'property_fileupload_mode' => 'Mode',
+ 'property_fileupload_mode_file' => 'Archivo',
+ 'property_fileupload_mode_image' => 'Imágen',
+ 'property_group_fileupload' => 'File upload',
+ 'property_fileupload_prompt' => 'Prompt',
+ 'property_fileupload_prompt_description' => 'Text to display for the upload button, applies to File mode only, optional.',
+ 'property_fileupload_image_width' => 'Ancho de la imagen (width)',
+ 'property_fileupload_image_width_description' => 'Optional parameter - images will be resized to this width. Applies to Image mode only.',
+ 'property_fileupload_invalid_dimension' => 'Invalid dimension value - please enter a number.',
+ 'property_fileupload_image_height' => 'Alto de la imagen (height)',
+ 'property_fileupload_image_height_description' => 'Optional parameter - images will be resized to this height. Applies to Image mode only.',
+ 'property_fileupload_file_types' => 'File types',
+ 'property_fileupload_file_types_description' => 'Optional comma separated list of file extensions that are accepted by the uploader. Eg: zip,txt',
+ 'property_fileupload_mime_types' => 'MIME types',
+ 'property_fileupload_mime_types_description' => 'Optional comma separated list of MIME types that are accepted by the uploader, either as file extensions or fully qualified names. Eg: bin,txt',
+ 'property_fileupload_use_caption' => 'Use caption',
+ 'property_fileupload_use_caption_description' => 'Allows a title and description to be set for the file.',
+ 'property_fileupload_thumb_options' => 'Thumbnail options',
+ 'property_fileupload_thumb_options_description' => 'Manages options for the automatically generated thumbnails. Applies only for the Image mode.',
+ 'property_fileupload_thumb_mode' => 'Mode',
+ 'property_fileupload_thumb_auto' => 'Auto',
+ 'property_fileupload_thumb_exact' => 'Exact',
+ 'property_fileupload_thumb_portrait' => 'Portrait',
+ 'property_fileupload_thumb_landscape' => 'Landscape',
+ 'property_fileupload_thumb_crop' => 'Crop',
+ 'property_fileupload_thumb_extension' => 'Extensión del archivo',
+ 'property_name_from' => 'Name column',
+ 'property_name_from_description' => 'Relation column name to use for displaying a name.',
+ 'property_relation_select' => 'Select',
+ 'property_relation_select_description' => 'CONCAT multiple columns together for displaying a name',
+ 'property_description_from' => 'Description column',
+ 'property_description_from_description' => 'Relation column name to use for displaying a description.',
+ 'property_recordfinder_prompt' => 'Prompt',
+ 'property_recordfinder_prompt_description' => 'Text to display when there is no record selected. The %s character represents the search icon. Leave empty for the default prompt.',
+ 'property_recordfinder_list' => 'List configuration',
+ 'property_recordfinder_list_description' => 'A reference to a list column definition file. Use the $ symbol to refer the plugins root directory, for example: $/acme/blog/lists/_list.yaml',
+ 'property_recordfinder_list_required' => 'Please provide a path to the list YAML file',
+ 'property_group_recordfinder' => 'Record finder',
+ 'property_mediafinder_mode' => 'Modo',
+ 'property_mediafinder_mode_file' => 'Archivo',
+ 'property_mediafinder_mode_image' => 'Imagen',
+ 'property_mediafinder_prompt' => 'Prompt',
+ 'property_mediafinder_prompt_description' => 'Text to display when there is no item selected. The %s character represents the media manager icon. Leave empty for the default prompt.',
+ 'property_group_relation' => 'Relation',
+ 'property_relation_prompt' => 'Prompt',
+ 'property_relation_prompt_description' => 'Text to display when there is no available selections.',
+ 'control_group_standard' => 'Standard',
+ 'control_group_widgets' => 'Widgets',
+ 'click_to_add_control' => 'Añadir control',
+ 'loading' => 'Cargando...',
+ 'control_text' => 'Texto',
+ 'control_text_description' => 'Campo de texto de una linea',
+ 'control_password' => 'Contraseña',
+ 'control_password_description' => 'Campo de contraseña de una linea',
+ 'control_checkbox' => 'Checkbox',
+ 'control_checkbox_description' => 'Checkbox único',
+ 'control_switch' => 'Switch',
+ 'control_switch_description' => 'Control switch único, una alternativa al checkbox',
+ 'control_textarea' => 'Text area',
+ 'control_textarea_description' => 'Campo de texto multilinea con altura personalizable',
+ 'control_dropdown' => 'Dropdown',
+ 'control_dropdown_description' => 'Dropdown list with static or dynamic options',
+ 'control_unknown' => 'Unknown control type: :type',
+ 'control_repeater' => 'Repeater',
+ 'control_repeater_description' => 'Outputs a repeating set of form controls',
+ 'control_number' => 'Número',
+ 'control_number_description' => 'Campo de texto de una linea el cual sólo permite números',
+ 'control_hint' => 'Pista',
+ 'control_hint_description' => 'Despliega un contenido parcial en una caja que puede ser ocultado por el usuario',
+ 'control_partial' => 'Partial',
+ 'control_partial_description' => 'Incluye un contenido parcial',
+ 'control_section' => 'Section',
+ 'control_section_description' => 'Displays a form section with heading and subheading',
+ 'control_radio' => 'Lista de radios',
+ 'control_radio_description' => 'Una lista de radio buttons, donde solo un item puede ser seleccionado al mismo tiempo',
+ 'control_radio_option_1' => 'Opción 1',
+ 'control_radio_option_2' => 'Opción 2',
+ 'control_checkboxlist' => 'Lista de Checkbox',
+ 'control_checkboxlist_description' => 'Una lista de checkboxs, donde mas de un item puede ser seleccionado',
+ 'control_codeeditor' => 'Editor de código',
+ 'control_codeeditor_description' => 'Plaintext editor for formatted code or markup',
+ 'control_colorpicker' => 'Selector de color',
+ 'control_colorpicker_description' => 'Un campo para seleccionar un valor de color en hexadecimal',
+ 'control_datepicker' => 'Selector de fecha',
+ 'control_datepicker_description' => 'Un campo de texto para seleccionar fecha/hora',
+ 'control_richeditor' => 'Editor enriquecido',
+ 'control_richeditor_description' => 'Editor visual para texto enriquecido, también conocido como editor WYSIWYG',
+ 'control_markdown' => 'Editor Markdown',
+ 'control_markdown_description' => 'Editor básico para texto formateado en Markdown',
+ 'control_fileupload' => 'File upload',
+ 'control_fileupload_description' => 'File uploader for images or regular files',
+ 'control_recordfinder' => 'Record finder',
+ 'control_recordfinder_description' => 'Field with details of a related record with the record search feature',
+ 'control_mediafinder' => 'Media finder',
+ 'control_mediafinder_description' => 'Field for selecting an item from the Media Manager library',
+ 'control_relation' => 'Relation',
+ 'control_relation_description' => 'Despliega un Dropdown o una lista de Checkboxs para seleccionar el registro relacionado',
+ 'error_file_name_required' => 'Por favor ingresa el nombre del archivo del formulario.',
+ 'error_file_name_invalid' => 'El nombre de este archivo sólo puede contener letras, digitos, guiones (bajo y medio) y puntos.',
+ 'span_left' => 'Izquierda',
+ 'span_right' => 'Derecha',
+ 'span_full' => 'Completo',
+ 'span_auto' => 'Automático',
+ 'empty_tab' => 'Pestaña vacia',
+ 'confirm_close_tab' => 'La pestaña contiene controles que serán eliminados, ¿continuar?',
+ 'tab' => 'Pestaña de formulario',
+ 'tab_title' => 'Titulo',
+ 'controls' => 'Controles',
+ 'property_tab_title_required' => 'el campo titulo es requerido',
+ 'tabs_primary' => 'Pestañas primarias',
+ 'tabs_secondary' => 'Pestañas secundarias',
+ 'tab_stretch' => 'Stretch',
+ 'tab_stretch_description' => 'Especifica si el contenedor de esta pestaña se estira para ajustarse al alto del elemento padre.',
+ 'tab_css_class' => 'Clase CSS',
+ 'tab_css_class_description' => 'Asigna una clase CSS al contenedor de la pestaña.',
+ 'tab_name_template' => 'Pestaña %s',
+ 'tab_already_exists' => 'Ya existe una pestaña con el nombre especificado.',
+ ],
+ 'list' => [
+ 'tab_new_list' => 'Nueva lista',
+ 'saved' => 'Lista guardada',
+ 'confirm_delete' => '¿Borrar la lista?',
+ 'tab_columns' => 'Columnas',
+ 'btn_add_column' => 'Añadir columna',
+ 'btn_delete_column' => 'Borrar columna',
+ 'column_dbfield_label' => 'Campo',
+ 'column_dbfield_required' => 'Por favor proporcione el campo del modelo',
+ 'column_name_label' => 'Etiqueta',
+ 'column_label_required' => 'Por favor proporcione la etiqueta de columna',
+ 'column_type_label' => 'Tipo',
+ 'column_type_required' => 'Por favor indique el tipo de columna',
+ 'column_type_text' => 'Texto',
+ 'column_type_number' => 'Numero',
+ 'column_type_switch' => 'Switch',
+ 'column_type_datetime' => 'Datetime',
+ 'column_type_date' => 'Fecha',
+ 'column_type_time' => 'Hora',
+ 'column_type_timesince' => 'Tine since',
+ 'column_type_timetense' => 'Tine tense',
+ 'column_type_select' => 'Select',
+ 'column_type_partial' => 'Partial',
+ 'column_label_default' => 'Default',
+ 'column_label_searchable' => 'Buscable',
+ 'column_label_sortable' => 'Ordenable',
+ 'column_label_invisible' => 'Invisible',
+ 'column_label_select' => 'Select',
+ 'column_label_relation' => 'Relation',
+ 'column_label_css_class' => 'CSS class',
+ 'column_label_width' => 'Width',
+ 'column_label_path' => 'Path',
+ 'column_label_format' => 'Format',
+ 'column_label_value_from' => 'Value from',
+ 'error_duplicate_column' => "Nombre del campo duplicado: ':column'.",
+ 'btn_add_database_columns' => 'Añadir columnas desde la base de datos',
+
+ ],
+ 'controller' => [
+ 'menu_label' => 'Controladores',
+ 'no_records' => 'No se encuentran controladores del plugin',
+ 'controller' => 'Controlador',
+ 'behaviors' => 'Comportamientos',
+ 'new_controller' => 'Nuevo controlador',
+ 'error_controller_has_no_behaviors' => 'El controlador no tiene un behaviors configurado.',
+ 'error_invalid_yaml_configuration' => 'Error loading behavior configuration file: :file',
+ 'behavior_form_controller' => 'Form controller behavior',
+ 'behavior_form_controller_description' => 'Adds form functionality to a back-end page. The behavior provides three pages called Create, Update and Preview.',
+ 'property_behavior_form_placeholder' => '--select form--',
+ 'property_behavior_form_name' => 'Nombre',
+ 'property_behavior_form_name_description' => 'The name of the object being managed by this form',
+ 'property_behavior_form_name_required' => 'Por favor ingrese el nombre del formulario',
+ 'property_behavior_form_file' => 'Configuración del formulario',
+ 'property_behavior_form_file_description' => 'Reference to a form field definition file',
+ 'property_behavior_form_file_required' => 'Please enter a path to the form configuration file',
+ 'property_behavior_form_model_class' => 'Model class',
+ 'property_behavior_form_model_class_description' => 'A model class name, the form data is loaded and saved against this model.',
+ 'property_behavior_form_model_class_required' => 'Please select a model class',
+ 'property_behavior_form_default_redirect' => 'Default redirect',
+ 'property_behavior_form_default_redirect_description' => 'A page to redirect to by default when the form is saved or cancelled.',
+ 'property_behavior_form_create' => 'Create record page',
+ 'property_behavior_form_redirect' => 'Redirect',
+ 'property_behavior_form_redirect_description' => 'Una página a la que redirigir una vez el registro sea creado',
+ 'property_behavior_form_redirect_close' => 'Close redirect',
+ 'property_behavior_form_redirect_close_description' => 'A page to redirect to when a record is created and the close post variable is sent with the request.',
+ 'property_behavior_form_flash_save' => 'Save flash message',
+ 'property_behavior_form_flash_save_description' => 'Flash message to display when record is saved.',
+ 'property_behavior_form_page_title' => 'Page title',
+ 'property_behavior_form_update' => 'Update record page',
+ 'property_behavior_form_update_redirect' => 'Redirect',
+ 'property_behavior_form_create_redirect_description' => 'A page to redirect to when a record is saved.',
+ 'property_behavior_form_flash_delete' => 'Delete flash message',
+ 'property_behavior_form_flash_delete_description' => 'Flash message to display when record is deleted.',
+ 'property_behavior_form_preview' => 'Preview record page',
+ 'behavior_list_controller' => 'List controller behavior',
+ 'behavior_list_controller_description' => 'Provides the sortable and searchable list with optional links on its records. The behavior automatically creates the controller action "index".',
+ 'property_behavior_list_title' => 'List title',
+ 'property_behavior_list_title_required' => 'Please enter the list title',
+ 'property_behavior_list_placeholder' => '--select list--',
+ 'property_behavior_list_model_class' => 'Model class',
+ 'property_behavior_list_model_class_description' => 'A model class name, the list data is loaded from this model.',
+ 'property_behavior_form_model_class_placeholder' => '--select model--',
+ 'property_behavior_list_model_class_required' => 'Please select a model class',
+ 'property_behavior_list_model_placeholder' => '--select model--',
+ 'property_behavior_list_file' => 'List configuration file',
+ 'property_behavior_list_file_description' => 'Reference to a list definition file',
+ 'property_behavior_list_file_required' => 'Please enter a path to the list configuration file',
+ 'property_behavior_list_record_url' => 'Record URL',
+ 'property_behavior_list_record_url_description' => 'Link each list record to another page. Eg: users/update:id. The :id part is replaced with the record identifier.',
+ 'property_behavior_list_no_records_message' => 'No records message',
+ 'property_behavior_list_no_records_message_description' => 'A message to display when no records are found',
+ 'property_behavior_list_recs_per_page' => 'Records per page',
+ 'property_behavior_list_recs_per_page_description' => 'Records to display per page, use 0 for no pages. Default: 0',
+ 'property_behavior_list_recs_per_page_regex' => 'Records per page should be an integer value',
+ 'property_behavior_list_show_setup' => 'Show setup button',
+ 'property_behavior_list_show_sorting' => 'Show sorting',
+ 'property_behavior_list_default_sort' => 'Default sorting',
+ 'property_behavior_form_ds_column' => 'Columna',
+ 'property_behavior_form_ds_direction' => 'Direction',
+ 'property_behavior_form_ds_asc' => 'Ascending',
+ 'property_behavior_form_ds_desc' => 'Descending',
+ 'property_behavior_list_show_checkboxes' => 'Show checkboxes',
+ 'property_behavior_list_onclick' => 'On click handler',
+ 'property_behavior_list_onclick_description' => 'Custom JavaScript code to execute when clicking on a record.',
+ 'property_behavior_list_show_tree' => 'Show tree',
+ 'property_behavior_list_show_tree_description' => 'Displays a tree hierarchy for parent/child records.',
+ 'property_behavior_list_tree_expanded' => 'Tree expanded',
+ 'property_behavior_list_tree_expanded_description' => 'Determines if tree nodes should be expanded by default.',
+ 'property_behavior_list_toolbar' => 'Toolbar',
+ 'property_behavior_list_toolbar_buttons' => 'Buttons partial',
+ 'property_behavior_list_toolbar_buttons_description' => 'Reference to a controller partial file with the toolbar buttons. Eg: list_toolbar',
+ 'property_behavior_list_search' => 'Buscar',
+ 'property_behavior_list_search_prompt' => 'Search prompt',
+ 'property_behavior_list_filter' => 'Filter configuration',
+ 'behavior_reorder_controller' => 'Reorder controller behavior',
+ 'behavior_reorder_controller_description' => 'Provides features for sorting and reordering on its records. The behavior automatically creates the controller action "reorder".',
+ 'property_behavior_reorder_title' => 'Reorder title',
+ 'property_behavior_reorder_title_required' => 'Please enter the reorder title',
+ 'property_behavior_reorder_name_from' => 'Attribute name',
+ 'property_behavior_reorder_name_from_description' => 'Model\'s attribute that should be used as a label for each record.',
+ 'property_behavior_reorder_name_from_required' => 'Please enter the attribute name',
+ 'property_behavior_reorder_model_class' => 'Model class',
+ 'property_behavior_reorder_model_class_description' => 'A model class name, the reorder data is loaded from this model.',
+ 'property_behavior_reorder_model_class_placeholder' => '--select model--',
+ 'property_behavior_reorder_model_class_required' => 'Please select a model class',
+ 'property_behavior_reorder_model_placeholder' => '--select model--',
+ 'property_behavior_reorder_toolbar' => 'Toolbar',
+ 'property_behavior_reorder_toolbar_buttons' => 'Buttons partial',
+ 'property_behavior_reorder_toolbar_buttons_description' => 'Reference to a controller partial file with the toolbar buttons. Eg: reorder_toolbar',
+ 'error_controller_not_found' => 'Original controller file is not found.',
+ 'error_invalid_config_file_name' => 'The behavior :class configuration file name (:file) contains invalid characters and cannot be loaded.',
+ 'error_file_not_yaml' => 'The behavior :class configuration file (:file) is not a YAML file. Only YAML configuration files are supported.',
+ 'saved' => 'Controlador guardado',
+ 'controller_name' => 'Nombre del controlador',
+ 'controller_name_description' => 'El nombre del controlador define el nombre de la clase y la URL del controlador en el backend. Se aplican Las convenciones estándar de nombramiento de variables. El primer simbolo debe ser una letra Mayúscula: Ejemplo: Categories, Posts, Products',
+ 'base_model_class' => 'Clase de modelo base',
+ 'base_model_class_description' => 'Selecciona la clase del modelo para usarla como modelo base en los behaviors que se requieran o soporte el modelo. Puedes configurar los behaviors más adelante.',
+ 'base_model_class_placeholder' => '--selecciona el modelo--',
+ 'controller_behaviors' => 'Behaviors',
+ 'controller_behaviors_description' => 'Selecciona los behaviors que el controlador debe implementar. El Plugin Builder creará las vistas requeridas para los behaviors automáticamente.',
+ 'controller_permissions' => 'Permisos',
+ 'controller_permissions_description' => 'Select user permissions that can access the controller views. Permissions can be defined on the Permissions tab of the Builder. You can change this option in the controller PHP script later.',
+ 'controller_permissions_no_permissions' => 'El plugin no define ningún permiso.',
+ 'menu_item' => 'Item activo del menú',
+ 'menu_item_description' => 'Selecciona un item del menú para se active para las páginas de este controlador. Puedes cambiar esta opción en el script de PHP del controlador mas adelante.',
+ 'menu_item_placeholder' => '--selecciona el item del menú--',
+ 'error_unknown_behavior' => 'La clase :class del behavior no está registrado en la librería de behaviors.',
+ 'error_behavior_view_conflict' => 'El behaviors seleccionado provee vistas que ocasionan un conflicto (:view) y no pueden utilizarse juntas en un controlador.',
+ 'error_behavior_config_conflict' => 'El behaviors seleccionado provee archivos de configuración que ocasionan un conflicto (:file) y no pueden utilizarse juntas en un controlador.',
+ 'error_behavior_view_file_not_found' => 'View template :view of the behavior :class cannot be found.',
+ 'error_behavior_config_file_not_found' => 'Configuration template :file of the behavior :class cannot be found.',
+ 'error_controller_exists' => 'Controller file already exists: :file.',
+ 'error_controller_name_invalid' => 'Formato del nombre del controlador invalido. El nombre solo puede contener letras y digitos. El primer simbolo debe ser una mayúscula.',
+ 'error_behavior_view_file_exists' => 'El archivo de la vista del controlador ya existe: :view.',
+ 'error_behavior_config_file_exists' => 'El archivo de configuración de este Behavior ya existe: :file.',
+ 'error_save_file' => 'Error guardando el archivo del controlador: :file',
+ 'error_behavior_requires_base_model' => 'El Behavior :behavior require de un modelo base para ser seleccionado.',
+ 'error_model_doesnt_have_lists' => 'El modelo seleccionado no tiene ninguna lista. Favor de primero crear una lista.',
+ 'error_model_doesnt_have_forms' => 'El modelo seleccionado no tiene ningún formulario. Favor de primero crear un formulario.',
+ ],
+ 'version' => [
+ 'menu_label' => 'Versiones',
+ 'no_records' => 'Versiones del plugin no encontradas',
+ 'search' => 'Buscar...',
+ 'tab' => 'Versiones',
+ 'saved' => 'Versión guardada',
+ 'confirm_delete' => '¿Borrar esta versión?',
+ 'tab_new_version' => 'Nueva versión',
+ 'migration' => 'Migración',
+ 'seeder' => 'Seeder',
+ 'custom' => 'Increase the verison number',
+ 'apply_version' => 'Apply version',
+ 'applying' => 'Applying...',
+ 'rollback_version' => 'Rollback versión',
+ 'rolling_back' => 'Rolling back...',
+ 'applied' => 'Version applied',
+ 'rolled_back' => 'Version rolled back',
+ 'hint_save_unapplied' => 'You saved an unapplied version. Unapplied versions could be automatically applied when you or another user logs into the back-end or when a database table is saved in the Database section of the Builder.',
+ 'hint_rollback' => 'Rolling back a version will also roll back all versions newer than this version. Please note that unapplied versions could be automatically applied by the system when you or another user logs into the back-end or when a database table is saved in the Database section of the Builder.',
+ 'hint_apply' => 'Applying a version will also apply all older unapplied versions of the plugin.',
+ 'dont_show_again' => 'Don\'t show again',
+ 'save_unapplied_version' => 'Save unapplied version',
+ ],
+ 'menu' => [
+ 'menu_label' => 'Backend Menu',
+ 'tab' => 'Menus',
+ 'items' => 'Items del menú',
+ 'saved' => 'Menues guardados',
+ 'add_main_menu_item' => 'Añadir item al menú principal',
+ 'new_menu_item' => 'Menu Item',
+ 'add_side_menu_item' => 'Agregar sub-item',
+ 'side_menu_item' => 'Item de menú lateral',
+ 'property_label' => 'Etiqueta',
+ 'property_label_required' => 'Por favor ingrese la etiqueta para el item del menú.',
+ 'property_url_required' => 'Por favor ingrese la URL para el item del menú',
+ 'property_url' => 'URL',
+ 'property_icon' => 'Icono',
+ 'property_icon_required' => 'Por favor seleccione un ícono',
+ 'property_permissions' => 'Permisos',
+ 'property_order' => 'Orden',
+ 'property_order_invalid' => 'Por favor ingrese el orden el item del menú como un valor numérico.',
+ 'property_order_description' => 'Menu item order manages its position in the menu. If the order is not provided, the item will be placed to the end of the menu. The default order values have the increment of 100.',
+ 'property_attributes' => 'Atributos HTML',
+ 'property_code' => 'Código',
+ 'property_code_invalid' => 'El código sólo puede contener letras y números',
+ 'property_code_required' => 'Please enter the menu item code.',
+ 'error_duplicate_main_menu_code' => "Duplicate main menu item code: ':code'.",
+ 'error_duplicate_side_menu_code' => "Duplicate side menu item code: ':code'.",
+ ],
+ 'localization' => [
+ 'menu_label' => 'Localización',
+ 'language' => 'Lenguaje',
+ 'strings' => 'Cadenas',
+ 'confirm_delete' => '¿Borrar el lenguaje?',
+ 'tab_new_language' => 'Nuevo lenguaje',
+ 'no_records' => 'Lenguajes no encontrados',
+ 'saved' => 'Archivo de lenguaje guardado',
+ 'error_cant_load_file' => 'Cannot load the requested language file - file not found.',
+ 'error_bad_localization_file_contents' => 'Cannot load the requested language file. Language files can only contain array definitions and strings.',
+ 'error_file_not_array' => 'Cannot load the requested language file. Language files should return an array.',
+ 'save_error' => "Error saving file ':name'. Please check write permissions.",
+ 'error_delete_file' => 'Error deleting localization file.',
+ 'add_missing_strings' => 'Añadir cadenas que faltan',
+ 'copy' => 'Copiar',
+ 'add_missing_strings_label' => 'Select language to copy missing strings from',
+ 'no_languages_to_copy_from' => 'There are no other languages to copy strings from.',
+ 'new_string_warning' => 'Nueva cadena o sección',
+ 'structure_mismatch' => 'The structure of the source language file doesn\'t match the structure of the file being edited. Some individual strings in the edited file correspond to sections in the source file (or vice versa) and cannot be merged automatically.',
+ 'create_string' => 'Create new string',
+ 'string_key_label' => 'String key',
+ 'string_key_comment' => 'Enter the string key using period as a section separator. For example: plugin.search. The string will be created in the plugin\'s default language localization file.',
+ 'string_value' => 'String value',
+ 'string_key_is_empty' => 'String key should not be empty',
+ 'string_value_is_empty' => 'String value should not be empty',
+ 'string_key_exists' => 'The string key already exists',
+ ],
+ 'permission' => [
+ 'menu_label' => 'Permisos',
+ 'tab' => 'Permisos',
+ 'form_tab_permissions' => 'Permisos',
+ 'btn_add_permission' => 'Añadir permisos',
+ 'btn_delete_permission' => 'Borrar permisos',
+ 'column_permission_label' => 'Código del permiso',
+ 'column_permission_required' => 'Por favor ingrese el código del permiso',
+ 'column_tab_label' => 'Titulo pestaña',
+ 'column_tab_required' => 'Por favor introduzca el permiso de el título de la pestaña',
+ 'column_label_label' => 'Etiqueta',
+ 'column_label_required' => 'Por favor introduzca permiso de etiqueta',
+ 'saved' => 'Permisos guardados',
+ 'error_duplicate_code' => "Código de permiso duplicado: ':code'.",
+ ],
+ 'yaml' => [
+ 'save_error' => "Error al guardar el archivo ':name'. Consulte permisos de escritura.",
+ ],
+ 'common' => [
+ 'error_file_exists' => "El archivo ya existe: ':path'.",
+ 'field_icon_description' => 'October usa Font Autumn icons: http://octobercms.com/docs/ui/icon',
+ 'destination_dir_not_exists' => "El directorio de destino no existe: ':path'.",
+ 'error_make_dir' => "Error al crear directorio: ':name'.",
+ 'error_dir_exists' => "El directorio ya existe!: ':path'.",
+ 'template_not_found' => "Archivo de plantilla no encontrado: ':name'.",
+ 'error_generating_file' => "Error al generar el archivo: ':path'.",
+ 'error_loading_template' => "Error al cargar el archivo plantilla: ':name'.",
+ 'select_plugin_first' => 'Seleccione primero un plugin. Para ver la lista de plugin, haga clic en el icono > en la barra lateral izquierda.',
+ 'plugin_not_selected' => 'Plugin no seleccionado',
+ 'add' => 'Añadir',
+ ],
+ 'migration' => [
+ 'entity_name' => 'Migración',
+ 'error_version_invalid' => 'La versión debe ser especificada en el siguiente formato: 1.0.1',
+ 'field_version' => 'Versión',
+ 'field_description' => 'Descripción',
+ 'field_code' => 'Código',
+ 'save_and_apply' => 'Guardar y Aplicar',
+ 'error_version_exists' => 'La versión de la migración ya existe.',
+ 'error_script_filename_invalid' => 'El nombre del archivo de migración sólo puede contener letras, digitos y guiones bajos. El nombre de comenzar con el nombre debe comenzar con una letra y no puede contener espacios.',
+ 'error_cannot_change_version_number' => 'No se puede cambiar el número de la versión para una versión ya aplicada.',
+ 'error_file_must_define_class' => 'El código de la migración debe definir una clase de migración o de seeder. Dejar en blanco si solo quieres actualizar el número de la versión.',
+ 'error_file_must_define_namespace' => 'La migración debe definir un namespace. Deja el campo de código en blanco si solo quieres actualizar el número de la versión.',
+ 'no_changes_to_save' => 'No hay cambios que guardar.',
+ 'error_namespace_mismatch' => "El código de la migración debe utilizar el namespace del plugin :namespace",
+ 'error_migration_file_exists' => "El archivo de migración :file ya existe. Favor usa otro nombre para la clase.",
+ 'error_cant_delete_applied' => 'Esta versión ya ha sido aplicada y no puede ser eliminada. Favor haz un rollback a la versión primero.',
+ ],
+ 'components' => [
+ 'list_title' => 'Lista de registros',
+ 'list_description' => 'Mostrar una lista de registros para el modelo seleccionado',
+ 'list_page_number' => 'Número de página',
+ 'list_page_number_description' => 'Este valor es usado para determinar en qué página se encuentra el usuario.',
+ 'list_records_per_page' => 'Registros por página',
+ 'list_records_per_page_description' => 'Número de registros a mostrar en una página. Dejar en blanco para desactivar paginación.',
+ 'list_records_per_page_validation' => 'Invalid format of the records per page value. The value should be a number.',
+ 'list_no_records' => 'No records message',
+ 'list_no_records_description' => 'Message to display in the list in case if there are no records. Used in the default component\'s partial.',
+ 'list_no_records_default' => 'No se han encontrado registros',
+ 'list_sort_column' => 'Ordenar por columna',
+ 'list_sort_column_description' => 'Model column the records should be ordered by',
+ 'list_sort_direction' => 'Dirección',
+ 'list_display_column' => 'Columna para mostrar',
+ 'list_display_column_description' => 'Column to display in the list. Used in the default component\'s partial.',
+ 'list_display_column_required' => 'Por favor, selecciona una columna para mostrar.',
+ 'list_details_page' => 'Página de detalles',
+ 'list_details_page_description' => 'Página para desplegar el registro de detalles.',
+ 'list_details_page_no' => '--No hay página de detalles--',
+ 'list_sorting' => 'Sorting',
+ 'list_pagination' => 'Paginación',
+ 'list_order_direction_asc' => 'Ascendente',
+ 'list_order_direction_desc' => 'Descendente',
+ 'list_model' => 'Model class',
+ 'list_scope' => 'Scope',
+ 'list_scope_description' => 'Optional model scope to fetch the records',
+ 'list_scope_default' => '--select a scope, optional--',
+ 'list_details_page_link' => 'Enlace a la página de detalles',
+ 'list_details_key_column' => 'Details key column',
+ 'list_details_key_column_description' => 'Model column to use as a record identifier in the details page links.',
+ 'list_details_url_parameter' => 'URL parameter name',
+ 'list_details_url_parameter_description' => 'Name of the details page URL parameter which takes the record identifier.',
+ 'details_title' => 'Detalles de un registro',
+ 'details_description' => 'Despliega el detalle de un registro para el modelo seleccionado',
+ 'details_model' => 'Clase del modelo',
+ 'details_identifier_value' => 'Identifier value',
+ 'details_identifier_value_description' => 'Identifier value to load the record from the database. Specify a fixed value or URL parameter name.',
+ 'details_identifier_value_required' => 'The identifier value is required',
+ 'details_key_column' => 'Key column',
+ 'details_key_column_description' => 'Model column to use as a record identifier for fetching the record from the database.',
+ 'details_key_column_required' => 'The key column name is required',
+ 'details_display_column' => 'Display column',
+ 'details_display_column_description' => 'Model column to display on the details page. Used in the default component\'s partial.',
+ 'details_display_column_required' => 'Por favor selecciona una columna para mostrar.',
+ 'details_not_found_message' => 'Mensaje registro no encontrado',
+ 'details_not_found_message_description' => 'Mensaje que se mostrará si el registro no fue encontrado. Usado en el partial del componente por defecto.',
+ 'details_not_found_message_default' => 'Registro no encontrado',
+ ],
];
diff --git a/plugins/rainlab/builder/lang/fa.json b/plugins/rainlab/builder/lang/fa.json
deleted file mode 100644
index 8fafe6a..0000000
--- a/plugins/rainlab/builder/lang/fa.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "Builder": "افزونه ساز",
- "Provides visual tools for building October plugins.": "ساخت افزونه های اکتبر به صورت دیداری"
-}
\ No newline at end of file
diff --git a/plugins/rainlab/builder/lang/fa/lang.php b/plugins/rainlab/builder/lang/fa/lang.php
index 3675efa..9699379 100644
--- a/plugins/rainlab/builder/lang/fa/lang.php
+++ b/plugins/rainlab/builder/lang/fa/lang.php
@@ -1,622 +1,634 @@
- [
- 'add' => 'ایجاد افزونه',
- 'no_records' => 'افزونه ای یافت نشد',
- 'no_description' => 'توضیحی برای این افزونه وارد نشده است',
- 'no_name' => 'بدون نام',
- 'search' => 'جستجو...',
- 'filter_description' => 'نمایش تمام افزونه ها و یا افزونه های نوشته شده توسط شما',
- 'settings' => 'تنظیمات',
- 'entity_name' => 'افزونه',
- 'field_name' => 'نام',
- 'field_author' => 'صاحب امتیاز',
- 'field_description' => 'توضحات',
- 'field_icon' => 'آیکن افزونه',
- 'field_plugin_namespace' => 'نیم اسپیس افزونه',
- 'field_author_namespace' => 'نیم اسپیس صاحب امتیاز',
- 'field_namespace_description' => 'نیم اسپیس میتواند شامل حروف لاتین و اعداد باشد و باید با یک حرف لاتین آغاز شود مانند: Blog',
- 'field_author_namespace_description' => 'امکان تغییر نیم پس از ایجاد آن توسط افزونه ساز وجود ندارد نمونه ای از نیم اسپیس صاحب امتیاز: OctoberFa',
- 'tab_general' => 'پارامتر های عمومی',
- 'tab_description' => 'توضیحات',
- 'field_homepage' => 'آدرس وب افزونه',
- 'error_settings_not_editable' => 'تنظیمات این افزونه توسط افزونه ساز قابل ویرایش نمی باشد.',
- 'update_hint' => 'امکان ترجمه نام و توضیحات افزونه در بخش ترجمه وجود دارد',
- ],
- 'author_name' => [
- 'title' => 'نام صاحب امتیاز',
- 'description' => 'نام صاحب امتیاز به هنگام ایجاد افزونه جدید، این نام را همیشه میتوان در تنظیمات افزونه ویرایش کرد.',
- ],
- 'author_namespace' => [
- 'title' => 'نیم اسپیس صاحب امتیاز',
- 'description' => 'اگر شما در فروشگاه افزونه ها حساب کاربری دارید این گزینه باید با نیم اسپیس آن حساب یکی باشد.',
- ],
- 'database' => [
- 'menu_label' => 'پایگاه داده',
- 'no_records' => 'جدولی یافت نشد',
- 'search' => 'جستجو...',
- 'confirmation_delete_multiple' => 'آیا از حذف جدول های انتخاب شده اطمینان دارید؟',
- 'field_name' => 'نام جدول',
- 'tab_columns' => 'ستون ها',
- 'column_name_name' => 'ستون',
- 'column_name_required' => 'لطفا نام ستون را وارد نمایید',
- 'column_name_type' => 'نوع',
- 'column_type_required' => 'لطفا نوع ستون را وارد نمایید',
- 'column_name_length' => 'طول',
- 'column_validation_length' => 'مقدار این گزینه باید یک عدد صحیح بوده و برای داده های اعشاری در بازه 2 تا 10 باشد.',
- 'column_validation_title' => 'این گزینه باید فقط شامل اعداد، حروف لاتین و خط زیر باشد.',
- 'column_name_unsigned' => 'بدون علامت',
- 'column_name_nullable' => 'nullable',
- 'column_auto_increment' => 'افزایشی خودکار',
- 'column_default' => 'پیشفرض',
- 'column_auto_primary_key' => 'PK',
- 'tab_new_table' => 'جدول جدید',
- 'btn_add_column' => 'افزودن ستون',
- 'btn_delete_column' => 'حذف ستون',
- 'confirm_delete' => 'آیا از حذف ان جدول اطمینان دارید؟',
- 'error_enum_not_supported' => 'جدول حاوی ستون(ها) ای با نوع enum می باشد که در حال حاظر توسط افزونه ساز پشتیبانی نمیشود.',
- 'error_table_name_invalid_prefix' => 'نام جدول باید با پیشوند افزونه \':prefix\' آغاز شود. ',
- 'error_table_name_invalid_characters' => 'نام جدول صحیح نمی باشد. نام جدول میتواند حاوی حروف لاتین، اعداد و خط زیر باشد و باید با حرف لاتین شروع شود. همچنین نام جدول نمیتواند شامل فاصله باشد.',
- 'error_table_duplicate_column' => 'نام ستون \':column\' تکراری می باشد.',
- 'error_table_auto_increment_in_compound_pk' => 'ستون افزایشی خودکار نمیتواند بخشی از کلید اصلی مرکب باشد',
- 'error_table_mutliple_auto_increment' => 'جدول فقط میتواند شامل یک ستون افزایشی باشد.',
- 'error_table_auto_increment_non_integer' => 'نوع ستون افزایشی باید عدد صحیح (integer) باشد.',
- 'error_table_decimal_length' => 'طول نوع :type باید در قالب \'10,2\' بدون فاصله باشد.',
- 'error_table_length' => 'طول نوع :type باید یک عدد صحیح باشد.',
- 'error_unsigned_type_not_int' => 'خطا در ایجاد ستون \':column\'، فقط ستون هایی از نوع عدد صحیح میتوانند نشانه بدون علامت داشته باشند.',
- 'error_integer_default_value' => 'مقدار پیشفرض وارد شده برای ستون \':column\' باید یک مقدار صحیح باشد.',
- 'error_decimal_default_value' => 'مقدار پیشفرض وارد شده برای ستون \':column\' باید یک عدد اعشاری باشد.',
- 'error_boolean_default_value' => 'مقدار پیشفرض ستون \':column\' باید 0 ویا 1 باشد',
- 'error_unsigned_negative_value' => 'مقدار پیشفرض ستون \':column\' باید یک عدد صحیح مثبت باشد.',
- 'error_table_already_exists' => 'نام جدول \':name\' تکراری می باشد.',
- ],
- 'model' => [
- 'menu_label' => 'مدل ها',
- 'entity_name' => 'مدل',
- 'no_records' => 'مدلی یافت نشد',
- 'search' => 'جستجو...',
- 'add' => 'افزودن...',
- 'forms' => 'فرم ها',
- 'lists' => 'لیست ها',
- 'field_class_name' => 'نام کلاس',
- 'field_database_table' => 'نام پایگاه داده',
- 'error_class_name_exists' => 'نام مدل برای کلاس وارد شده :path تکاریست',
- 'add_form' => 'فرم جدید',
- 'add_list' => 'لیست جدید',
- ],
- 'form' => [
- 'saved' => 'فرم با موفقیت ذخیره شد.',
- 'confirm_delete' => 'آیا از حذف این فرم اطمینان دارید؟',
- 'tab_new_form' => 'فرم جدید',
- 'property_label_title' => 'برچسب',
- 'property_label_required' => 'لطفا برچسب را وارد نمایید',
- 'property_span_title' => 'موقعیت',
- 'property_comment_title' => 'توضیح',
- 'property_comment_above_title' => 'توضیح بالا',
- 'property_default_title' => 'پیشفرض',
- 'property_checked_default_title' => 'انتخاب شده (پیشفرض)',
- 'property_css_class_title' => 'کلاس CSS',
- 'property_css_class_description' => 'کلاس CSS اختیاری جهت والد فیلد',
- 'property_disabled_title' => 'غیر فعال',
- 'property_hidden_title' => 'مخفی',
- 'property_required_title' => 'اجباری',
- 'property_field_name_title' => 'نام فیلد',
- 'property_placeholder_title' => 'پیش نوشته (Placeholder)',
- 'property_default_from_title' => 'فرم پیشفرض',
- 'property_stretch_title' => 'کامل',
- 'property_stretch_description' => 'اگر میخواهید طول فیلد درون والد خود کامل باشد این گزینه را انتخاب نمایید.',
- 'property_context_title' => 'بخش',
- 'property_context_description' => 'مشخص کننده نمایش فیلد در حالت های فرم',
- 'property_context_create' => 'ایجاد',
- 'property_context_update' => 'به روز رسانی',
- 'property_context_preview' => 'پیش نمایش',
- 'property_dependson_title' => 'وابستگی',
- 'property_trigger_action' => 'عمل',
- 'property_trigger_show' => 'نمایش',
- 'property_trigger_hide' => 'عدم نمایش',
- 'property_trigger_enable' => 'فعال',
- 'property_trigger_disable' => 'غیر فعال',
- 'property_trigger_empty' => 'خالی',
- 'property_trigger_field' => 'فیلد',
- 'property_trigger_field_description' => 'نام فیلدی را که عمل را اجرا میکند وارد نمایید',
- 'property_trigger_condition' => 'شرط',
- 'property_trigger_condition_description' => 'شرطی که در صورت درستی عمل انجام میشود. مقادیر پشتیبانی شده این فیلد: checked، unchecked، value[somevalue].',
- 'property_trigger_condition_checked' => 'Checked',
- 'property_trigger_condition_unchecked' => 'Unchecked',
- 'property_trigger_condition_somevalue' => 'value[enter-the-value-here]',
- 'property_preset_title' => 'از پیش تایین شده',
- 'property_preset_description' => 'این امکان را میدهد که نام فیلد توسط فیلد دیگری مقدار دهی شده و با مبدل از پیش تعریف شده ای تبدیل شود.',
- 'property_preset_field' => 'فیلد',
- 'property_preset_field_description' => 'فیلد منبعی که مقدار از آن گرفته میشود را وارد نمایید.',
- 'property_preset_type' => 'نوع',
- 'property_preset_type_description' => 'مشخص کردن نوع تبدیل',
- 'property_attributes_title' => 'ویژگی ها',
- 'property_attributes_description' => 'ویژگی های HTML ای را که میخواهید به فیلد بدهید را وارد نمایید',
- 'property_container_attributes_title' => 'ویژگی های والد',
- 'property_container_attributes_description' => 'ویژگی های HTML ای که والد فیلد باید داشته باشد را وارد نمایید.',
- 'property_group_advanced' => 'پیشرفته',
- 'property_dependson_description' => 'فیلد های دیگری را که این فیلد به آنها وابسته می باشد و به هنگام تغییر آن ها این فیلد نیز تغییر پیدا میکند را وارد نمایید. هر فیلد در یک خط تعریف می شود.',
- 'property_trigger_title' => 'عکس العمل',
- 'property_trigger_description' => 'به فیلد این اجاره را میدهد که با تغییر فیلد دیگری ویژگی های خود را مانند حالت نمایش و مقدار خود کنترل نماید',
- 'property_default_from_description' => 'مقدار پیشفرض را از مقدار فیلد دیگری بگیر.',
- 'property_field_name_required' => 'ورود نام فیلد اجباریست',
- 'property_field_name_regex' => 'نام فیلد میتواند شامل حروف لاتین، اعداد، خط زیر، خط تیره و کروشه باشد.',
- 'property_attributes_size' => 'اندازه',
- 'property_attributes_size_tiny' => 'خیلی کوچک',
- 'property_attributes_size_small' => 'کوچک',
- 'property_attributes_size_large' => 'متوسط',
- 'property_attributes_size_huge' => 'بزرک',
- 'property_attributes_size_giant' => 'خیلی بزرگ',
- 'property_comment_position' => 'محل قرارگیری توضیح',
- 'property_comment_position_above' => 'قبل',
- 'property_comment_position_below' => 'بعد',
- 'property_hint_path' => 'آدرس فایل بخش راهنما',
- 'property_hint_path_description' => 'آدرس فایل بخشی که شامل متن راهنما می باشد. علامت $ به پوشه افزونه ها اشاره میکند برای مثال: $/acme/blog/partials/_hint.htm',
- 'property_hint_path_required' => 'لطفا مسیر بخش راهنما را وارد نمایید.',
- 'property_partial_path' => 'مسیر بخش',
- 'property_partial_path_description' => 'مسیر فال مربوط به بخش را وارد نمایید. علامت $ به پوشه پلاگین ها اشاره میکند برای مثال: $/acme/blog/partials/_hint.htm',
- 'property_partial_path_required' => 'لطفا مسیر فایل بخش را وارد نمایید.',
- 'property_code_language' => 'زبان',
- 'property_code_theme' => 'قالب',
- 'property_theme_use_default' => 'استفاده از قالب پیشفرض',
- 'property_group_code_editor' => 'ویرایشگر کد',
- 'property_gutter' => 'شیار',
- 'property_gutter_show' => 'قابل مشاهده',
- 'property_gutter_hide' => 'مخقی',
- 'property_wordwrap' => 'Word wrap',
- 'property_wordwrap_wrap' => 'Wrap',
- 'property_wordwrap_nowrap' => 'Don\'t wrap',
- 'property_fontsize' => 'اندازه فونت',
- 'property_codefolding' => 'Code folding',
- 'property_codefolding_manual' => 'دستی',
- 'property_codefolding_markbegin' => 'علامت گذازی آغاز',
- 'property_codefolding_markbeginend' => 'علامت گذاری آغاز و پایان',
- 'property_autoclosing' => 'بستن خودکار',
- 'property_enabled' => 'فعال',
- 'property_disabled' => 'غیر فعال',
- 'property_soft_tabs' => 'استفاده از فاصله به جای Tab',
- 'property_tab_size' => 'اندازه Tab',
- 'property_readonly' => 'فقط خواندنی',
- 'property_use_default' => 'استفاده از تنظیمات پیشفرض',
- 'property_options' => 'گزینه ها',
- 'property_prompt' => 'متن',
- 'property_prompt_description' => 'متن نمایش داده شده برای دکمه ایجاد',
- 'property_prompt_default' => 'افزودن گزینه جدید',
- 'property_available_colors' => 'رنگ های موجود',
- 'property_available_colors_description' => 'لیست رنگ های موجود در قالب هگزادسیمال (#FF0000). برای استفاده از رنگ های پیشفرض این گزینه را خالی رها کنید. در هر خط یک رنگ وارد نمایید.',
- 'property_datepicker_mode' => 'نحوه نمایش',
- 'property_datepicker_mode_date' => 'تاریخ',
- 'property_datepicker_mode_datetime' => 'تاریخ و ساعت',
- 'property_datepicker_mode_time' => 'ساعت',
- 'property_datepicker_min_date' => 'کمترین تاریخ',
- 'property_datepicker_max_date' => 'بیشترین تاریخ',
- 'property_fileupload_mode' => 'نحوه نمایش',
- 'property_fileupload_mode_file' => 'فایل',
- 'property_fileupload_mode_image' => 'تصویر',
- 'property_group_fileupload' => 'ارسال فایل',
- 'property_fileupload_image_width' => 'عرض تصویر',
- 'property_fileupload_image_width_description' => 'گزینه اختیاری جهت تغییر اندازه عرض تصویر که فقط در حالت تصویر مورد استفاده قرار میگیرد.',
- 'property_fileupload_invalid_dimension' => 'مقدار وارد شده صحیح نیست. لطفا یک عدد وارد نمایید',
- 'property_fileupload_image_height' => 'طول تصویر',
- 'property_fileupload_image_height_description' => 'گزینه اختیاری جهت تغییر اندازه طول تصویر که فقط در حالت تصویر مورد استفاده قرار میگیرد.',
- 'property_fileupload_file_types' => 'نوع فایل ها',
- 'property_fileupload_file_types_description' => 'گزینه اختیاری جهت تایین پسوند فایل های ارسالی که با کاما از هم جدا شنده اند برای مثال: zip,txt',
- 'property_fileupload_mime_types' => 'MIME types',
- 'property_fileupload_mime_types_description' => 'لیست اختیاری از MIME Type های مجاز جهت ارسال فایل که با کاما از هم جدا شده اند برای مثال: bin,txt',
- 'property_fileupload_use_caption' => 'از عنوان استفاده شود',
- 'property_fileupload_use_caption_description' => 'اجازه ورود عنوان و توضیحات برای فایل ارسالی.',
- 'property_fileupload_thumb_options' => 'گزینه های تصویر بند انگشتی',
- 'property_fileupload_thumb_options_description' => 'مدیریت گزینه های تولید خودکار تصویر بند انگشتی که فقط در حالت تصویر مورد استفاده قرار میگیرد.',
- 'property_fileupload_thumb_mode' => 'حالت نمایش',
- 'property_fileupload_thumb_auto' => 'خودکار',
- 'property_fileupload_thumb_exact' => 'دقیقا',
- 'property_fileupload_thumb_portrait' => 'Portrait',
- 'property_fileupload_thumb_landscape' => 'Landscape',
- 'property_fileupload_thumb_crop' => 'Crop',
- 'property_fileupload_thumb_extension' => 'پسوند فایل',
- 'property_name_from' => 'نام ستون',
- 'property_name_from_description' => 'نام ستون ارتباطی جهت نمایش نام.',
- 'property_description_from' => 'ستون توضیحات',
- 'property_description_from_description' => 'نام ستون ارتباطی جهت نمایش توضیحات.',
- 'property_recordfinder_prompt' => 'متن',
- 'property_recordfinder_prompt_description' => 'متنی که به هنگام نبود هیچ رکوردی به نمایش در می آید. %s بیانگر آیکن جستجو می باشد. جهت استفاده از مقدار پیشفرض این گزینه را خالی رها کنید.',
- 'property_recordfinder_list' => 'تنظیمات لیست',
- 'property_recordfinder_list_description' => 'مرجعی برای تعریف ستون های لیست. علامت $ به پوشه افزونه ها اشاره میکند برای مثال: $/acme/blog/lists/_list.yaml',
- 'property_recordfinder_list_required' => 'لطفا آدرس فایل YAML را وارد نمایید',
- 'property_group_recordfinder' => 'انتخابگر رکورد',
- 'property_mediafinder_mode' => 'حالت نمایش',
- 'property_mediafinder_mode_file' => 'فایل',
- 'property_mediafinder_mode_image' => 'تصویر',
- 'property_group_relation' => 'ارتباط',
- 'property_relation_select' => 'تحديد',
- 'property_relation_select_description' => 'كونكات أعمدة متعددة معا لعرض اسم',
- 'property_relation_prompt' => 'متن',
- 'property_relation_prompt_description' => 'متنی که به هنگام موجود نبودن موردی جهت انتخاب نمایش داده میشود.',
- 'control_group_standard' => 'استاندارد',
- 'control_group_widgets' => 'ابزارک ها',
- 'click_to_add_control' => 'افزودن کنترل',
- 'loading' => 'درحال بارگذاری...',
- 'control_text' => 'متن',
- 'control_text_description' => 'ابزار ورود متن تک خطی',
- 'control_password' => 'کلمه عبور',
- 'control_password_description' => 'ابزار ورود کلمه عبور',
- 'control_checkbox' => 'چک باکس',
- 'control_checkbox_description' => 'یک چک باکس',
- 'control_switch' => 'سویچ',
- 'control_switch_description' => 'سوئیچ روشن و خاموش که میتواند جایگزین چک باکس شود.',
- 'control_textarea' => 'متن چند خطی',
- 'control_textarea_description' => 'ابزار ورود متن چند خطی',
- 'control_dropdown' => 'لیست بازشونده',
- 'control_dropdown_description' => 'لیست بازشونده با موارد مشخص و یا متغیر',
- 'control_unknown' => 'نوع ابزار :type یافت نشد',
- 'control_repeater' => 'تکرار کننده',
- 'control_repeater_description' => 'تکرار کننده مجموعه ای از ابزار ها',
- 'control_number' => 'عدد',
- 'control_number_description' => 'ابزار تک خطی جهت ورود عدد.',
- 'control_hint' => 'هشدار',
- 'control_hint_description' => 'نشان دهنده یک بخش به عنوان هشدار و یا راهنمایی که میتواند توسط کاربر مخفی شود.',
- 'control_partial' => 'بخش',
- 'control_partial_description' => 'نشان دهنده محتوی یک بخش',
- 'control_section' => 'قسمت',
- 'control_section_description' => 'نمایش یک قسمت از فرم با عنوان و زیر عنوان',
- 'control_radio' => 'لیست رادیویی',
- 'control_radio_description' => 'لیستی از انتخاب گر های رادیویی که در هر لحظه فقط یک مورد میتواند انتخاب شود.',
- 'control_radio_option_1' => 'گزینه 1',
- 'control_radio_option_2' => 'گزینه 2',
- 'control_checkboxlist' => 'لیست چک باکس',
- 'control_checkboxlist_description' => 'لیستی از چک باکس',
- 'control_codeeditor' => 'ادیتور کد',
- 'control_codeeditor_description' => 'ادیتور کد که جهت ورود کد مورد استفاده قرار میگیرد',
- 'control_colorpicker' => 'انتخابگر رنگ',
- 'control_colorpicker_description' => 'فیلدی جهت انتخاب کد هگزادسیمال رنگ',
- 'control_datepicker' => 'انتخابگر تاریخ',
- 'control_datepicker_description' => 'ابزاری جهت انتخای تاریخ و زمان',
- 'control_richeditor' => 'ویرایشگر متن',
- 'control_richeditor_description' => 'ابزاری جهت ویرایش و فرمت بندی متن',
- 'control_markdown' => 'ویرایشگر مارک داون',
- 'control_markdown_description' => 'ویرایشگر ابتدایی جهت ورود و ویرایش متن در قالب مارک داون',
- 'control_fileupload' => 'ارسال فایل',
- 'control_fileupload_description' => 'ارسال کننده فایل جهت ارسال تصویر و یا فایل',
- 'control_recordfinder' => 'انتخاب گر موارد',
- 'control_recordfinder_description' => 'ابزاری جهت انتخاب موارد مرتبط در پایگاه داده با امکان جستجو',
- 'control_mediafinder' => 'انتخابگر چند رسانه ای',
- 'control_mediafinder_description' => 'ابزاری جهت انتخاب فایل های چند رسانه ای در ابزار مدیریت چند رسانه ای',
- 'control_relation' => 'ارتباط',
- 'control_relation_description' => 'نمایش لیست بازشونده و یا لیست چک باکس جهت انتخاب ارتباطات پایگاه داده',
- 'error_file_name_required' => 'لطفا نام فایل فرم را وارد نمایید.',
- 'error_file_name_invalid' => 'نام فایل میتواند شامل حروف لاتین، اعداد، خط زیر، خط تیره و یا نقطه باشد.',
- 'span_left' => 'چپ',
- 'span_right' => 'راست',
- 'span_full' => 'کامل',
- 'span_auto' => 'خودکار',
- 'empty_tab' => 'بخش خالی',
- 'confirm_close_tab' => 'بخش حاوی ابزار هایی می باشد که پاک خواهند شد. آیا میخواهید ادامه دهید؟',
- 'tab' => 'بخش فرم',
- 'tab_title' => 'عنوان',
- 'controls' => 'ابزار ها',
- 'property_tab_title_required' => 'وارد کردن عنوان بخش اجباریست',
- 'tabs_primary' => 'بخش اصلی',
- 'tabs_secondary' => 'بخش ثانویه',
- 'tab_stretch' => 'کامل',
- 'tab_stretch_description' => 'مشخص میکند که طول بخش برابر با طول والد خود باشد یا خیر',
- 'tab_css_class' => 'کلاس CSS',
- 'tab_css_class_description' => 'مقدار دهی خاصیت کلاس دربرگیرنده ابزار',
- 'tab_name_template' => 'بخش %s',
- 'tab_already_exists' => 'بخشی با نام مشخص شده وجود دارد',
- ],
- 'list' => [
- 'tab_new_list' => 'لیست جدید',
- 'saved' => 'لیست با موفقیت ذخیره شد.',
- 'confirm_delete' => 'آیا از حذف این لیست اطمینان دارید؟',
- 'tab_columns' => 'ستون ها',
- 'btn_add_column' => 'ستون جدید',
- 'btn_delete_column' => 'حذف ستون',
- 'column_dbfield_label' => 'فیلد',
- 'column_dbfield_required' => 'لطفا فیلد مدل را وارد نمایید',
- 'column_name_label' => 'عنوان',
- 'column_label_required' => 'لطفا عنوان ستون را وارد نمایید.',
- 'column_type_label' => 'نوع',
- 'column_type_required' => 'لطفا نوع ستون را وارد نمایید.',
- 'column_type_text' => 'متن',
- 'column_type_number' => 'عدد',
- 'column_type_switch' => 'سوییچ',
- 'column_type_datetime' => 'تاریخ و زمان',
- 'column_type_date' => 'تاریخ',
- 'column_type_time' => 'زمان',
- 'column_type_timesince' => 'تفاوت زمانی',
- 'column_type_timetense' => 'تفاوت زمانی',
- 'column_type_select' => 'انتخاب',
- 'column_type_partial' => 'بخش',
- 'column_label_default' => 'پیشفرض',
- 'column_label_searchable' => 'قابلیت جستجو',
- 'column_label_sortable' => 'قابلیت مرتب سازی',
- 'column_label_invisible' => 'مخفی',
- 'column_label_select' => 'انتخاب',
- 'column_label_relation' => 'ارتباط پایگاه داده',
- 'column_label_css_class' => 'کلاس CSS',
- 'column_label_width' => 'عرض',
- 'column_label_path' => 'مسیر',
- 'column_label_format' => 'قالب',
- 'column_label_value_from' => 'مقدار گرفته شده از',
- 'error_duplicate_column' => 'نام \':column\' برای ستون تکراری میباشد.',
- ],
- 'controller' => [
- 'menu_label' => 'کنترلر ها',
- 'no_records' => 'کنترلری در افزونه یافت نشد.',
- 'controller' => 'کنترلر',
- 'behaviors' => 'کنترل کننده رفتار از پیش تایین شده',
- 'new_controller' => 'کنترلر جدید',
- 'error_controller_has_no_behaviors' => 'کنترلر حاوی کنترل کننده رفتار از پیش تایین شده که حاوی تنظیمات باشد ندارد',
- 'error_invalid_yaml_configuration' => 'خطایی در بارگذاری فایل :file مربوط به تنظیمات کنترل کننده رفتار از پیش تایین شده به وجود آمده است',
- 'behavior_form_controller' => 'کنترل کننده رفتار از پیش تایین شده فرم',
- 'behavior_form_controller_description' => 'افزودن امکان مدیریت فرم ها به صفحه مدیریت. این امکان سه صفحه ایجاد، به روزرسانی و پیش نمایش را اضافه میکند.',
- 'property_behavior_form_placeholder' => '--انتخاب فرم--',
- 'property_behavior_form_name' => 'نام',
- 'property_behavior_form_name_description' => 'نام شی ای که توسط فرم مدیریت می شود',
- 'property_behavior_form_name_required' => 'لطفا نام فرم را وارد نمایید.',
- 'property_behavior_form_file' => 'تنظیمات فرم',
- 'property_behavior_form_file_description' => 'به یک فایل تعریف فرم اشاره میکند.',
- 'property_behavior_form_file_required' => 'لطفا آدرس فایل تنظیمات فرم را وارد نمایید.',
- 'property_behavior_form_model_class' => 'کلاس مدل',
- 'property_behavior_form_model_class_description' => 'نام کلاس مدل که داده ها از آن بارگذاری شده و ذخیره می شوند.',
- 'property_behavior_form_model_class_required' => 'لطفا نام کلاس مدل را وارد نمایید',
- 'property_behavior_form_default_redirect' => 'مسیر انتقال پیشفرض',
- 'property_behavior_form_default_redirect_description' => 'آدرس صفحه ای جهت انتقال به هنگامی که فرم ذخیره میشود یا کاربر از ادامه کار انصراف می دهد.',
- 'property_behavior_form_create' => 'صفحه ایجاد',
- 'property_behavior_form_redirect' => 'انتقال',
- 'property_behavior_form_redirect_description' => 'آدرس صفحه ای که به هنگام ایجاد مورد جدید به آن انتقال داده میشود',
- 'property_behavior_form_redirect_close' => 'انتقال به هنگام خروج',
- 'property_behavior_form_redirect_close_description' => 'آدرس صفحه ای که به هنگام کلیک دکمه انتقال و خروج به آن انتقال داده می شود.',
- 'property_behavior_form_flash_save' => 'پیغام نمایش داده شده به هنگام ذخیره',
- 'property_behavior_form_flash_save_description' => 'پیغامی که به هنگام ذخیره مورد نمایش داده می شود.',
- 'property_behavior_form_page_title' => 'عنوان صفحه',
- 'property_behavior_form_update' => 'صفحه ویرایش',
- 'property_behavior_form_update_redirect' => 'انتقال',
- 'property_behavior_form_create_redirect_description' => 'صفحه ای که به هنگام ذخیره مورد به آن انتقال داده می شود.',
- 'property_behavior_form_flash_delete' => 'پیغام حذف',
- 'property_behavior_form_flash_delete_description' => 'پیغامی که به هنگام حذف نمایش داده میشود.',
- 'property_behavior_form_preview' => 'صفحه پیش نمایش',
- 'behavior_list_controller' => 'کنترل کننده رفتار از پیش تایین شده لیست',
- 'behavior_list_controller_description' => 'امکان نمایش لیستی با قابلیت جستجو و مرتب سازی را به کنترلر اظافه میکند. این امکان صفحه اصلی (index) را در کنترلر ایجاد میکند.',
- 'property_behavior_list_title' => 'عنوان لیست',
- 'property_behavior_list_title_required' => 'لطفا عنوان لیست را وارد نمایید',
- 'property_behavior_list_placeholder' => '--انتخاب لیست--',
- 'property_behavior_list_model_class' => 'کلاس مدل',
- 'property_behavior_list_model_class_description' => 'نام کلاس مدلی که اطلاعات لیست از آن بارگذاری میشود.',
- 'property_behavior_form_model_class_placeholder' => '--انتخاب مدل--',
- 'property_behavior_list_model_class_required' => 'لطفا کلاس مدل را انتخاب نمایید',
- 'property_behavior_list_model_placeholder' => '--انتخاب مدل--',
- 'property_behavior_list_file' => 'فایل تنظیمات لیست',
- 'property_behavior_list_file_description' => 'به یک فایل تعریف لیست اشاره میکند',
- 'property_behavior_list_file_required' => 'لطفا مسیر فایل تنظیمات لیست را وارد نمایید.',
- 'property_behavior_list_record_url' => 'آدرس مورد',
- 'property_behavior_list_record_url_description' => 'آدرس صفحه هر مورد در لیست که در آن :id به مشخصه لیست اشاره میکند برای مثال: users/update:id',
- 'property_behavior_list_no_records_message' => 'پیغام خالی بودن لیست',
- 'property_behavior_list_no_records_message_description' => 'پیغامی که به هنگام خالی بودن لیست به نمایش در می آید.',
- 'property_behavior_list_recs_per_page' => 'تعداد موارد در هر صفحه',
- 'property_behavior_list_recs_per_page_description' => 'تعداد موارد در هر صفحه را مشخص میکند برای نمایش تمام موارد در یک صفحه این مقدار را 0 قرار دهید. مقدار پیشفرض: 0',
- 'property_behavior_list_recs_per_page_regex' => 'مقدار تعداد موارد در هر صفحه باید یک عدد صحیح باشد.',
- 'property_behavior_list_show_setup' => 'نمایش دکمه تنظیمات',
- 'property_behavior_list_show_sorting' => 'نمایش مرتب سازی',
- 'property_behavior_list_default_sort' => 'مرتب سازی پیشفرض',
- 'property_behavior_form_ds_column' => 'ستون',
- 'property_behavior_form_ds_direction' => 'جهت مرتب سازی',
- 'property_behavior_form_ds_asc' => 'صعودی',
- 'property_behavior_form_ds_desc' => 'نزولی',
- 'property_behavior_list_show_checkboxes' => 'نمایش چک باکس',
- 'property_behavior_list_onclick' => 'کنترل کننده کلیک',
- 'property_behavior_list_onclick_description' => 'کد شخصی سازی شده جاوا اسکریپت به هنگام کلیک هر رکورد.',
- 'property_behavior_list_show_tree' => 'نمایش درخت وار',
- 'property_behavior_list_show_tree_description' => 'نمایش درخت وار موارد والد و فرزندی.',
- 'property_behavior_list_tree_expanded' => 'درخت باز شده',
- 'property_behavior_list_tree_expanded_description' => 'آیا تمامی موارد درخت به صورت پیشفرض باز باشند؟',
- 'property_behavior_list_toolbar' => 'نوار ابزار',
- 'property_behavior_list_toolbar_buttons' => 'بخش دکمه ها',
- 'property_behavior_list_toolbar_buttons_description' => 'به یک فایل بخش موجود در کنترلر اشاره میکند. به عنوان مثال: list_toolbar',
- 'property_behavior_list_search' => 'جستجو',
- 'property_behavior_list_search_prompt' => 'متن جستجو',
- 'property_behavior_list_filter' => 'تنظیمات فیلتر',
- 'error_controller_not_found' => 'فایل کنترلر یافت نشد',
- 'error_invalid_config_file_name' => 'تعریف فایل (:file) مربوط به کنترل کننده از پیش تایین شده :class صحیح نمی باشد.',
- 'error_file_not_yaml' => 'فایل تنطیمات (:file) مربوط به کنترل کننده از پیش تایین شده باید از نوع YAML باشد.',
- 'saved' => 'کنترلر با موفقیت ذخیره شدو',
- 'controller_name' => 'نام کنترلر',
- 'controller_name_description' => 'نام کنترلر مشخص کننده نام و آدرس آن در صفحه مدیریت می باشد و باید از استاندارد های نامگذاری متغیر در PHP پیروی کند. همچنین نام باید با حرف بزرگ لاتین شروع شود برای مثال: Categories',
- 'base_model_class' => 'کلاس مدل',
- 'base_model_class_description' => 'نام کلاس مدلی را که جهت استفاده توسط کنترل کننده های رفتار از پیش تایین شده مورد استفاده قرار میگیرد را وارد نمایید.',
- 'base_model_class_placeholder' => '--انتخاب مدل--',
- 'controller_behaviors' => 'کنترل کننده های رفتار از پیش تایین شده',
- 'controller_behaviors_description' => 'لطفا کنترل کننده های رفتار از پیش تایین شده برای کنترلر را انتخاب نمایید. سازنده فایل های نمایش مربوط به هر یک از آنها را به صورت خودکار ایجاد میکند.',
- 'controller_permissions' => 'مجوزهای دسترسی',
- 'controller_permissions_description' => 'مجوز های دسترسی برای هر یک از بخش های کنترلر را وارد نمایید. مجوز ها در بخش مجوز ها قابل تعریف میباشند و شما میتوانید آنها را بعدا در کد PHP ویرایش نمایید.',
- 'controller_permissions_no_permissions' => 'این افزونه دارای مجوزی نمی باشد.',
- 'menu_item' => 'منوی فعال',
- 'menu_item_description' => 'منو ای را که میخواهید به هنگام نمایش صفحه کنترلر فعال شود انتخاب نمایید. این گزینه بعدا در کد PHP کنترلر قابل تغییر می باشد.',
- 'menu_item_placeholder' => '--انتخاب منو--',
- 'error_unknown_behavior' => 'کنترل کننده رفتار از پیش تایین شده :class در شی مدیریت این موارد اضافه نشده است.',
- 'error_behavior_view_conflict' => 'کنترل کننده های رفتار از پیش تایین شده انتخاب شده دارای موارد تداخلی (:view) می باشد و نمیتواند همزمان استفاده شود.',
- 'error_behavior_config_conflict' => 'کنترل کننده های رفتار انتخاب شده حاوی فایل تنظیمات (:file) تداخلی بود و نمی توانند همزمان استفاده شوند.',
- 'error_behavior_view_file_not_found' => 'قالب نمایشی :view در کنترل کننده رفتار از پیش تایین شده :class یافت نشد.',
- 'error_behavior_config_file_not_found' => 'قالب فایل تنظیمات :file در کنترل کننده رفتار از پیش تایین شده :class یافت نشد.',
- 'error_controller_exists' => 'فایل کنترلر :file قبلا ایجاد شده است.',
- 'error_controller_name_invalid' => 'نام کنترلر صحیح نمی باشد. نام میتواند شامل حروف لاتین و اعداد بوده و باید با یک حرف بزرگ لاتین شروع شود.',
- 'error_behavior_view_file_exists' => 'فایل نمایشی کنترلر :view قبلا ایجاد شده است.',
- 'error_behavior_config_file_exists' => 'فایل تنظیمات :file مربوط به کنترل کننده رفتار از پیش تایین شده قبلا ایجاد شده است.',
- 'error_save_file' => 'خطا به هنگام ذخیره فایل کنترلر: :file',
- 'error_behavior_requires_base_model' => 'کنترل کننده رفتار از پیش تایین شده :behavior نیاز به انتخاب شدن کلاس مدل دارد.',
- 'error_model_doesnt_have_lists' => 'مدل انتخاب شده حاوی لیستی نمی باشد. لطفا یک لیست برای آن ایجاد کنید.',
- 'error_model_doesnt_have_forms' => 'مدل انتخاب شده حاوی فرمی نمی باشد. لطفا یک فرم برای آن ایجاد کنید.',
- ],
- 'version' => [
- 'menu_label' => 'ویرایش ها',
- 'no_records' => 'ویرایشی برای افزونه یافت نشد',
- 'search' => 'جستجو...',
- 'tab' => 'ویرایش ها',
- 'saved' => 'ویرایش با موفقیت ذخیره شد.',
- 'confirm_delete' => 'آیا از حذف این ویرایش اطمینان دارید؟',
- 'tab_new_version' => 'ویرایش جدید',
- 'migration' => 'ساختار پایگاه داده',
- 'seeder' => 'داده های پایگاه داده',
- 'custom' => 'افزودن عدد ویرایش',
- 'apply_version' => 'اعمال ویرایش',
- 'applying' => 'درحال اعمال...',
- 'rollback_version' => 'عقب گرد ویرایش',
- 'rolling_back' => 'درحال عقبگرد...',
- 'applied' => 'ویرایش با موفقیت اعمال شد.',
- 'rolled_back' => 'ویرایش با موفقیت به عقب بازگشت.',
- 'hint_save_unapplied' => 'شما یک نسخه اعمال نشده را ذخیره کردید. این نسخه ها به هنگام ورود شما و یا کاربر دیگری و یا ذخیره جدولی در پایگاه داده به صورت خودکار اعمال خواهند شد.',
- 'hint_rollback' => 'ویرایش های قبلی و بازگشت داده شده به صورت خودکار در هنگام اعمال ویرایش جدید تر، ورود به بخش مدیریت و یا ایجاد و ذخیره جدولی در پایگاه داده به صورت خودکار اعمال خواهند شد.',
- 'hint_apply' => 'اعمال یک ویرایش تمامی ویرایش های قبلی اعمال نشده را نیز اعمال خواهد کرد',
- 'dont_show_again' => 'مجددا نمایش نده.',
- 'save_unapplied_version' => 'ذخیره ویرایش اعمال نشده',
- ],
- 'menu' => [
- 'menu_label' => 'منوی مدیریت',
- 'tab' => 'منو ها',
- 'items' => 'موارد منو',
- 'saved' => 'این منو با موفقیت ذخیره شد.',
- 'add_main_menu_item' => 'افزودن منوی جدید در ریشه',
- 'new_menu_item' => 'مورد منو',
- 'add_side_menu_item' => 'افزودن زیر منو',
- 'side_menu_item' => 'مورد منوی کناری',
- 'property_label' => 'عنوان',
- 'property_label_required' => 'لطفا عنوان منو را وارد نمایید',
- 'property_url_required' => 'لطفا آدرس منو را وارد نمایید',
- 'property_url' => 'آدرس',
- 'property_icon' => 'آیکن',
- 'property_icon_required' => 'لطفا آیکن منو را وارد نمایید',
- 'property_permissions' => 'مجوز ها',
- 'property_order' => 'ترتیب',
- 'property_order_invalid' => 'مقدار وارد شده برای ترتیب منو باید عدد صحیح باشد.',
- 'property_order_description' => 'ترتیب منو مشخص کننده ترتیب قرارگیری آن می باشد و اگر وارد نشود منو در انتهای لیست قرار میگیرد. مقدار این مورد بهتر است بیش از عدد 100 باشد.',
- 'property_attributes' => 'خصوصیات HTML',
- 'property_code' => 'کد',
- 'property_code_invalid' => 'کد میتواند حاوی حروف لاتین و اعداد باشد.',
- 'property_code_required' => 'لطفا کد مربوط به منو را وارد نمایید.',
- 'error_duplicate_main_menu_code' => 'کد \':code\' وارد شده برای منوی اصلی تکراریست.',
- 'error_duplicate_side_menu_code' => 'کد \':code\' وارد شده برای منوی کناری تکراریست.',
- ],
- 'localization' => [
- 'menu_label' => 'بومی سازی',
- 'language' => 'زبان',
- 'strings' => 'رشته های متنی',
- 'confirm_delete' => 'آیا از حذف این زبان اطمینان دارید؟',
- 'tab_new_language' => 'ربان جدید',
- 'no_records' => 'زبانی یافت نشد.',
- 'saved' => 'فایل زبان با موفقیت ذخیره شد.',
- 'error_cant_load_file' => 'فایل زبان مورد درخواست یافت نشد.',
- 'error_bad_localization_file_contents' => 'خطا در بارگذاری فایل زبان. فایل زبان میتواند شامل تعریف آرایه و رشته های متنی باشد.',
- 'error_file_not_array' => 'خطا در بارگذاری فایل زبان. فایل زبان باید یک آرایه بازگرداند/',
- 'save_error' => 'خطا در ذخیره فایل \':name\'. لطفا مجوز خای ذخیره فایل را بررسی نمایید.',
- 'error_delete_file' => 'خطا در حذف فایل زبان.',
- 'add_missing_strings' => 'افزودن رشته های جدید',
- 'copy' => 'کپی',
- 'add_missing_strings_label' => 'زبانی را که حاوی رشته جدید میباشد را انتخاب نمایید.',
- 'no_languages_to_copy_from' => 'زبان دیگری جهت کپی رشته های جدید موجود نمی باشد.',
- 'new_string_warning' => 'رشته یا بخش جدید',
- 'structure_mismatch' => 'ساختار فایل منبع زبان با فایلی که در حال ویرایش می باشد مطابقت ندارد. برخی رشته ها در فایل در حال ویرایش فایل منبع را دچار مشکل میکند و فایل ها به صورت خودکار قابلیت تجمیع ندارند. ',
- 'create_string' => 'ایجاد رشته متنی جدید',
- 'string_key_label' => 'کلید رشته متنی',
- 'string_key_comment' => 'کلید رشته متنی را که از نقطه به عنوان جدا کننده بخش ها استفاده میکند وارد نمایید. به عنوان مثال: plugin.search. رشته متنی در زبان پیشفرض بومی سازی افزونه ذخیره خواهد شد.',
- 'string_value' => 'مقدار رشته متنی',
- 'string_key_is_empty' => 'ورود کلید رشته متنی اجباریست.',
- 'string_value_is_empty' => 'ورود مقدار رشته متنی اجباریست.',
- 'string_key_exists' => 'کلید رشته وارد شده تکراری می باشد.',
- ],
- 'permission' => [
- 'menu_label' => 'مجوز های دسترسی',
- 'tab' => 'مجوز های دسترسی',
- 'form_tab_permissions' => 'مجوز های دسترسی',
- 'btn_add_permission' => 'مجوز دسترسی جدید',
- 'btn_delete_permission' => 'حذف مجوز دسترسی',
- 'column_permission_label' => 'کد مجوز دسترسی',
- 'column_permission_required' => 'لطفا کد مجوز دسترسی را وارد نمایید',
- 'column_tab_label' => 'عنوان بخش',
- 'column_tab_required' => 'لطفا عنوان بخش مجوز دسترسی را وارد نمایید',
- 'column_label_label' => 'عنوان',
- 'column_label_required' => 'لطفا عنوان مجوز دسترسی را وارد نمایید.',
- 'saved' => 'مجوز های دسترسی با موفقیت ذخیره شدند.',
- 'error_duplicate_code' => 'کد وارد شده \':code\' برای مجوز دسترسی تکراری می باشد.',
- ],
- 'yaml' => [
- 'save_error' => 'خطا در ذخیره فایل \':name\'. لطفا مجوزهای مربوط به نوشتن بر روی دیسک را بررسی نمایید.',
- ],
- 'common' => [
- 'error_file_exists' => 'فایل \':path\' قبلا ایجاد شده است.',
- 'field_icon_description' => 'اکتبر از آیکن فونت خود به آدری http://daftspunk.github.io/Font-Autumn استفاده می نماید',
- 'destination_dir_not_exists' => 'پوشه هدف به آدرس \':path\' یافت نشد.',
- 'error_make_dir' => 'خطا در ایجاد پوشه به آدرس \':name\'',
- 'error_dir_exists' => 'پوشه \':path\' قبلا ایجاد شده است.',
- 'template_not_found' => 'فایل قالب \':name\' یافت نشد.',
- 'error_generating_file' => 'خطا در تولید فایل \':path\'.',
- 'error_loading_template' => 'خطا در بارگذاری قالب \':name\'.',
- 'select_plugin_first' => 'لطفا افزونه ای را انتخاب نمایید. جهت انتخاب افزونه بر روی آیکون > در سمت راست منوی کناری کلیک نمایید.',
- 'plugin_not_selected' => 'افزونه ای انتخاب نشده است',
- 'add' => 'افرودن',
- ],
- 'migration' => [
- 'entity_name' => 'ساختار بانک اطلاعاتی',
- 'error_version_invalid' => 'ویرایش باید در این قالب وارد شود: 1.0.1',
- 'field_version' => 'ویرایش',
- 'field_description' => 'توضیحات',
- 'field_code' => 'کد',
- 'save_and_apply' => 'ذخیره و اعمال',
- 'error_version_exists' => 'فایل ساختار بانک اطلاعاتی قبلا تعریف شده است.',
- 'error_script_filename_invalid' => 'نام فایل ساختار بانک اطلاعاتی فقط میتواند حاوی حروف لاتین، اعداد و خط زیر باشد و با یک حرف لاتین بزرگ شروع شود.',
- 'error_cannot_change_version_number' => 'شماره ویرایش اعمال شده قابل تغییر نمی باشد.',
- 'error_file_must_define_class' => 'کد ساختار بانک اطلاعاتی باید کلاس migration و یا seeder را تعریف کند. اگر فقط میخواهید فقط نسخه را افزایش دهید کد را خالی بگذارید.',
- 'error_file_must_define_namespace' => 'ساختار بانک اطلاعاتی باشد شامل نیم اسپیس باشد. اگر فقط میخواهید شماره ویرایش را افزایش دهید کد را خالی بگذارید.',
- 'no_changes_to_save' => 'تغییراتی جهت ذخیره وجود ندارد.',
- 'error_namespace_mismatch' => 'کد ساختار بانک اطلاعاتی باید از نیم اسپیس افزونه :namespace استفاده نماید.',
- 'error_migration_file_exists' => 'فایل ساختار بانک اطلاعات :file وجود دارد لطفا نام دیگری را وارد نمایید.',
- 'error_cant_delete_applied' => 'این ویرایش اعمال شده است و شما نمیتوانید آن را حذف کنید لطفا جهت حذف آن ویرایش را به عقب باز گردانید.',
- ],
- 'components' => [
- 'list_title' => 'لیست موارد',
- 'list_description' => 'نمایش لیستی از موارد مدل انتخاب شده',
- 'list_page_number' => 'شماره صفحه',
- 'list_page_number_description' => 'این مقدار جهت تعیین صفحه ای که کاربر در آن می باشد مورد استفاده قرار میگیرد.',
- 'list_records_per_page' => 'تعداد موارد در هر صفحه',
- 'list_records_per_page_description' => 'تعداد مواردی که در هر صفحه به نمایش در می آیند. جهت استفاده نکردن از خاصیت چند صفحه ای این مورد را خالی بگذارید.',
- 'list_records_per_page_validation' => 'مقدار وارد شده در تعداد موارد در هر صفحه باید یک عدد صحیح باشد.',
- 'list_no_records' => 'پیغام خالی بودن لیست',
- 'list_no_records_description' => 'پیغامی که به هنگام نبودن موردی جهت نمایش به نمایش در می آید.',
- 'list_no_records_default' => 'موردی یافت نشد',
- 'list_sort_column' => 'مرتب سازی بر اساس',
- 'list_sort_column_description' => 'ستونی که موارد بر اساس آن باید مرتب شوند',
- 'list_sort_direction' => 'ترتیب مرتب سازی',
- 'list_display_column' => 'نمایش ستون',
- 'list_display_column_description' => 'ستونی که در لیست به نمایش در می آید.',
- 'list_display_column_required' => 'لطفا ستونی را جهت نمایش انتخاب کنید.',
- 'list_details_page' => 'صفحه جزییات',
- 'list_details_page_description' => 'صفحه ای جهت نمایش جزییات موارد',
- 'list_details_page_no' => '--صفحه جزییات موجود نیست--',
- 'list_sorting' => 'مرتب سازی',
- 'list_pagination' => 'صفحه بندی',
- 'list_order_direction_asc' => 'صعودی',
- 'list_order_direction_desc' => 'نزولی',
- 'list_model' => 'کلاس مدل',
- 'list_scope' => 'محدوده',
- 'list_scope_description' => 'محدوده اختیاری کلاس مدل جهت واکشی موارد',
- 'list_scope_default' => '--محدوده را انتخاب نمایید، اختیاری--',
- 'list_details_page_link' => 'آدرس صفحه جزییات',
- 'list_details_key_column' => 'ستون کلید جزییات',
- 'list_details_key_column_description' => 'ستونی در مدل به عنوان کلید که مورد جهت نمایش جزییات از طریق آن در پایگاه داده یافت می شود.',
- 'list_details_url_parameter' => 'پارامتر نام آدرس',
- 'list_details_url_parameter_description' => 'نام پارامتر آدرس صفحه جزییات که کلید مورد را دریافت میکند.',
- 'details_title' => 'جزییات مورد',
- 'details_description' => 'نمایش جزییات مورد از مدل انتخاب شده',
- 'details_model' => 'کلاس مدل',
- 'details_identifier_value' => 'مقدار مشخصه',
- 'details_identifier_value_description' => 'مقدار مشخصه جهت بارگذاری مورد از پایگاه داده. میتواند یک مقدار ثابت و یا پارامتر آدرس باشد.',
- 'details_identifier_value_required' => 'وارد کردن مقدار مشخصه اجباریست',
- 'details_key_column' => 'ستون کلید',
- 'details_key_column_description' => 'ستونی در مدل که به عنوان مشخصه برای واکشی مورد در پایگاه داده مورد استفاده قرار میگیرد.',
- 'details_key_column_required' => 'وارد کردن ستون کلید اجباریست',
- 'details_display_column' => 'ستون نمایشی',
- 'details_display_column_description' => 'ستونی در مدل که جهت نمایش در صفحه جزییات مورد استفاده قرار میگیرد.',
- 'details_display_column_required' => 'وارد کردن ستون نمایشی اجباریست',
- 'details_not_found_message' => 'موردی یافت نشد',
- 'details_not_found_message_description' => 'پیغامی که به هنگام یافت نشدن مورد مورد استفاده قرار میگیرد.',
- 'details_not_found_message_default' => 'موردی یافت نشد.',
- ],
+ [
+ 'name' => 'افزونه ساز',
+ 'description' => 'ساخت افزونه های اکتبر به صورت دیداری',
+ 'add' => 'ایجاد افزونه',
+ 'no_records' => 'افزونه ای یافت نشد',
+ 'no_description' => 'بدون توضیح',
+ 'no_name' => 'بدون نام',
+ 'search' => 'جستجو...',
+ 'filter_description' => 'نمایش تمام افزونه ها و یا افزونه های نوشته شده توسط شما',
+ 'settings' => 'تنظیمات',
+ 'entity_name' => 'افزونه',
+ 'field_name' => 'نام',
+ 'field_author' => 'صاحب امتیاز',
+ 'field_description' => 'توضحات',
+ 'field_icon' => 'آیکن افزونه',
+ 'field_plugin_namespace' => 'نیم اسپیس افزونه',
+ 'field_author_namespace' => 'نیم اسپیس صاحب امتیاز',
+ 'field_namespace_description' => 'نیم اسپیس میتواند شامل حروف لاتین و اعداد باشد و باید با یک حرف لاتین آغاز شود مانند: Blog',
+ 'field_author_namespace_description' => 'امکان تغییر نیم پس از ایجاد آن توسط افزونه ساز وجود ندارد نمونه ای از نیم اسپیس صاحب امتیاز: OctoberFa',
+ 'tab_general' => 'پارامتر های عمومی',
+ 'tab_description' => 'توضیحات',
+ 'field_homepage' => 'آدرس وب افزونه',
+ 'no_description' => 'توضیحی برای این افزونه وارد نشده است',
+ 'error_settings_not_editable' => 'تنظیمات این افزونه توسط افزونه ساز قابل ویرایش نمی باشد.',
+ 'update_hint' => 'امکان ترجمه نام و توضیحات افزونه در بخش ترجمه وجود دارد'
+ ],
+ 'author_name' => [
+ 'title' => 'نام صاحب امتیاز',
+ 'description' => 'نام صاحب امتیاز به هنگام ایجاد افزونه جدید، این نام را همیشه میتوان در تنظیمات افزونه ویرایش کرد.'
+ ],
+ 'author_namespace' => [
+ 'title' => 'نیم اسپیس صاحب امتیاز',
+ 'description' => 'اگر شما در فروشگاه افزونه ها حساب کاربری دارید این گزینه باید با نیم اسپیس آن حساب یکی باشد.'
+ ],
+ 'database' => [
+ 'menu_label' => 'پایگاه داده',
+ 'no_records' => 'جدولی یافت نشد',
+ 'search' => 'جستجو...',
+ 'confirmation_delete_multiple' => 'آیا از حذف جدول های انتخاب شده اطمینان دارید؟',
+ 'field_name' => 'نام جدول',
+ 'tab_columns' => 'ستون ها',
+ 'column_name_name' => 'ستون',
+ 'column_name_required' => 'لطفا نام ستون را وارد نمایید',
+ 'column_name_type' => 'نوع',
+ 'column_type_required' => 'لطفا نوع ستون را وارد نمایید',
+ 'column_name_length' => 'طول',
+ 'column_validation_length' => 'مقدار این گزینه باید یک عدد صحیح بوده و برای داده های اعشاری در بازه 2 تا 10 باشد.',
+ 'column_validation_title' => 'این گزینه باید فقط شامل اعداد، حروف لاتین و خط زیر باشد.',
+ 'column_name_unsigned' => 'بدون علامت',
+ 'column_name_nullable' => 'nullable',
+ 'column_auto_increment' => 'افزایشی خودکار',
+ 'column_default' => 'پیشفرض',
+ 'column_auto_primary_key' => 'PK',
+ 'tab_new_table' => 'جدول جدید',
+ 'btn_add_column' => 'افزودن ستون',
+ 'btn_delete_column' => 'حذف ستون',
+ 'confirm_delete' => 'آیا از حذف ان جدول اطمینان دارید؟',
+ 'error_enum_not_supported' => 'جدول حاوی ستون(ها) ای با نوع enum می باشد که در حال حاظر توسط افزونه ساز پشتیبانی نمیشود.',
+ 'error_table_name_invalid_prefix' => 'نام جدول باید با پیشوند افزونه \':prefix\' آغاز شود. ',
+ 'error_table_name_invalid_characters' => 'نام جدول صحیح نمی باشد. نام جدول میتواند حاوی حروف لاتین، اعداد و خط زیر باشد و باید با حرف لاتین شروع شود. همچنین نام جدول نمیتواند شامل فاصله باشد.',
+ 'error_table_duplicate_column' => 'نام ستون \':column\' تکراری می باشد.',
+ 'error_table_auto_increment_in_compound_pk' => 'ستون افزایشی خودکار نمیتواند بخشی از کلید اصلی مرکب باشد',
+ 'error_table_mutliple_auto_increment' => 'جدول فقط میتواند شامل یک ستون افزایشی باشد.',
+ 'error_table_auto_increment_non_integer' => 'نوع ستون افزایشی باید عدد صحیح (integer) باشد.',
+ 'error_table_decimal_length' => "طول نوع :type باید در قالب '10,2' بدون فاصله باشد.",
+ 'error_table_length' => 'طول نوع :type باید یک عدد صحیح باشد.',
+ 'error_unsigned_type_not_int' => "خطا در ایجاد ستون ':column'، فقط ستون هایی از نوع عدد صحیح میتوانند نشانه بدون علامت داشته باشند.",
+ 'error_integer_default_value' => "مقدار پیشفرض وارد شده برای ستون ':column' باید یک مقدار صحیح باشد.",
+ 'error_decimal_default_value' => "مقدار پیشفرض وارد شده برای ستون ':column' باید یک عدد اعشاری باشد.",
+ 'error_boolean_default_value' => "مقدار پیشفرض ستون ':column' باید 0 ویا 1 باشد",
+ 'error_unsigned_negative_value' => "مقدار پیشفرض ستون ':column' باید یک عدد صحیح مثبت باشد.",
+ 'error_table_already_exists' => "نام جدول ':name' تکراری می باشد."
+ ],
+ 'model' => [
+ 'menu_label' => 'مدل ها',
+ 'entity_name' => 'مدل',
+ 'no_records' => 'مدلی یافت نشد',
+ 'search' => 'جستجو...',
+ 'add' => 'افزودن...',
+ 'forms' => 'فرم ها',
+ 'lists' => 'لیست ها',
+ 'field_class_name' => 'نام کلاس',
+ 'field_database_table' => 'نام پایگاه داده',
+ 'error_class_name_exists' => 'نام مدل برای کلاس وارد شده :path تکاریست',
+ 'add_form' => 'فرم جدید',
+ 'add_list' => 'لیست جدید',
+ ],
+ 'form' => [
+ 'saved'=> 'فرم با موفقیت ذخیره شد.',
+ 'confirm_delete' => 'آیا از حذف این فرم اطمینان دارید؟',
+ 'tab_new_form' => 'فرم جدید',
+ 'property_label_title' => 'برچسب',
+ 'property_label_required' => 'لطفا برچسب را وارد نمایید',
+ 'property_span_title' => 'موقعیت',
+ 'property_comment_title' => 'توضیح',
+ 'property_comment_above_title' => 'توضیح بالا',
+ 'property_default_title' => 'پیشفرض',
+ 'property_checked_default_title' => 'انتخاب شده (پیشفرض)',
+ 'property_css_class_title' => 'کلاس CSS',
+ 'property_css_class_description' => 'کلاس CSS اختیاری جهت والد فیلد',
+ 'property_disabled_title' => 'غیر فعال',
+ 'property_hidden_title' => 'مخفی',
+ 'property_required_title' => 'اجباری',
+ 'property_field_name_title' => 'نام فیلد',
+ 'property_placeholder_title' => 'پیش نوشته (Placeholder)',
+ 'property_default_from_title' => 'فرم پیشفرض',
+ 'property_stretch_title' => 'کامل',
+ 'property_stretch_description' => 'اگر میخواهید طول فیلد درون والد خود کامل باشد این گزینه را انتخاب نمایید.',
+ 'property_context_title' => 'بخش',
+ 'property_context_description' => 'مشخص کننده نمایش فیلد در حالت های فرم',
+ 'property_context_create' => 'ایجاد',
+ 'property_context_update' => 'به روز رسانی',
+ 'property_context_preview' => 'پیش نمایش',
+ 'property_dependson_title' => 'وابستگی',
+ 'property_trigger_action' => 'عمل',
+ 'property_trigger_show' => 'نمایش',
+ 'property_trigger_hide' => 'عدم نمایش',
+ 'property_trigger_enable' => 'فعال',
+ 'property_trigger_disable' => 'غیر فعال',
+ 'property_trigger_empty' => 'خالی',
+ 'property_trigger_field' => 'فیلد',
+ 'property_trigger_field_description' => 'نام فیلدی را که عمل را اجرا میکند وارد نمایید',
+ 'property_trigger_condition' => 'شرط',
+ 'property_trigger_condition_description' => 'شرطی که در صورت درستی عمل انجام میشود. مقادیر پشتیبانی شده این فیلد: checked، unchecked، value[somevalue].',
+ 'property_trigger_condition_checked' => 'Checked',
+ 'property_trigger_condition_unchecked' => 'Unchecked',
+ 'property_trigger_condition_somevalue' => 'value[enter-the-value-here]',
+ 'property_preset_title' => 'از پیش تایین شده',
+ 'property_preset_description' => 'این امکان را میدهد که نام فیلد توسط فیلد دیگری مقدار دهی شده و با مبدل از پیش تعریف شده ای تبدیل شود.',
+ 'property_preset_field' => 'فیلد',
+ 'property_preset_field_description' => 'فیلد منبعی که مقدار از آن گرفته میشود را وارد نمایید.',
+ 'property_preset_type' => 'نوع',
+ 'property_preset_type_description' => 'مشخص کردن نوع تبدیل',
+ 'property_attributes_title' => 'ویژگی ها',
+ 'property_attributes_description' => 'ویژگی های HTML ای را که میخواهید به فیلد بدهید را وارد نمایید',
+ 'property_container_attributes_title' => 'ویژگی های والد',
+ 'property_container_attributes_description' => 'ویژگی های HTML ای که والد فیلد باید داشته باشد را وارد نمایید.',
+ 'property_group_advanced' => 'پیشرفته',
+ 'property_dependson_description' => 'فیلد های دیگری را که این فیلد به آنها وابسته می باشد و به هنگام تغییر آن ها این فیلد نیز تغییر پیدا میکند را وارد نمایید. هر فیلد در یک خط تعریف می شود.',
+ 'property_trigger_title' => 'عکس العمل',
+ 'property_trigger_description' => 'به فیلد این اجاره را میدهد که با تغییر فیلد دیگری ویژگی های خود را مانند حالت نمایش و مقدار خود کنترل نماید',
+ 'property_default_from_description' => 'مقدار پیشفرض را از مقدار فیلد دیگری بگیر.',
+ 'property_field_name_required' => 'ورود نام فیلد اجباریست',
+ 'property_field_name_regex' => 'نام فیلد میتواند شامل حروف لاتین، اعداد، خط زیر، خط تیره و کروشه باشد.',
+ 'property_attributes_size' => 'اندازه',
+ 'property_attributes_size_tiny' => 'خیلی کوچک',
+ 'property_attributes_size_small' => 'کوچک',
+ 'property_attributes_size_large' => 'متوسط',
+ 'property_attributes_size_huge' => 'بزرک',
+ 'property_attributes_size_giant' => 'خیلی بزرگ',
+ 'property_comment_position' => 'محل قرارگیری توضیح',
+ 'property_comment_position_above' => 'قبل',
+ 'property_comment_position_below' => 'بعد',
+ 'property_hint_path' => 'آدرس فایل بخش راهنما',
+ 'property_hint_path_description' => 'آدرس فایل بخشی که شامل متن راهنما می باشد. علامت $ به پوشه افزونه ها اشاره میکند برای مثال: $/acme/blog/partials/_hint.htm',
+ 'property_hint_path_required' => 'لطفا مسیر بخش راهنما را وارد نمایید.',
+ 'property_partial_path' => 'مسیر بخش',
+ 'property_partial_path_description' => 'مسیر فال مربوط به بخش را وارد نمایید. علامت $ به پوشه پلاگین ها اشاره میکند برای مثال: $/acme/blog/partials/_hint.htm',
+ 'property_partial_path_required' => 'لطفا مسیر فایل بخش را وارد نمایید.',
+ 'property_code_language' => 'زبان',
+ 'property_code_theme' => 'قالب',
+ 'property_theme_use_default' => 'استفاده از قالب پیشفرض',
+ 'property_group_code_editor' => 'ویرایشگر کد',
+ 'property_gutter' => 'شیار',
+ 'property_gutter_show' => 'قابل مشاهده',
+ 'property_gutter_hide' => 'مخقی',
+ 'property_wordwrap' => 'Word wrap',
+ 'property_wordwrap_wrap' => 'Wrap',
+ 'property_wordwrap_nowrap' => 'Don\'t wrap',
+ 'property_fontsize' => 'اندازه فونت',
+ 'property_codefolding' => 'Code folding',
+ 'property_codefolding_manual' => 'دستی',
+ 'property_codefolding_markbegin' => 'علامت گذازی آغاز',
+ 'property_codefolding_markbeginend' => 'علامت گذاری آغاز و پایان',
+ 'property_autoclosing' => 'بستن خودکار',
+ 'property_enabled' => 'فعال',
+ 'property_disabled' => 'غیر فعال',
+ 'property_soft_tabs' => 'استفاده از فاصله به جای Tab',
+ 'property_tab_size' => 'اندازه Tab',
+ 'property_readonly' => 'فقط خواندنی',
+ 'property_use_default' => 'استفاده از تنظیمات پیشفرض',
+ 'property_options' => 'گزینه ها',
+ 'property_prompt' => 'متن',
+ 'property_prompt_description' => 'متن نمایش داده شده برای دکمه ایجاد',
+ 'property_prompt_default' => 'افزودن گزینه جدید',
+ 'property_available_colors' => 'رنگ های موجود',
+ 'property_available_colors_description' => 'لیست رنگ های موجود در قالب هگزادسیمال (#FF0000). برای استفاده از رنگ های پیشفرض این گزینه را خالی رها کنید. در هر خط یک رنگ وارد نمایید.',
+ 'property_datepicker_mode' => 'نحوه نمایش',
+ 'property_datepicker_mode_date' => 'تاریخ',
+ 'property_datepicker_mode_datetime' => 'تاریخ و ساعت',
+ 'property_datepicker_mode_time' => 'ساعت',
+ 'property_datepicker_min_date' => 'کمترین تاریخ',
+ 'property_datepicker_max_date' => 'بیشترین تاریخ',
+ 'property_markdown_mode' => 'نحوه نمایش',
+ 'property_markdown_mode_split' => 'پنجره کنار هم',
+ 'property_markdown_mode_tab' => 'Tab',
+ 'property_fileupload_mode' => 'نحوه نمایش',
+ 'property_fileupload_mode_file' => 'فایل',
+ 'property_fileupload_mode_image' => 'تصویر',
+ 'property_group_fileupload' => 'ارسال فایل',
+ 'property_fileupload_prompt' => 'متن',
+ 'property_fileupload_prompt_description' => 'گزینه اختیاری جهت متن دکمه ارسال که در حالت فایل مورد استفاده قرار می گیرد.',
+ 'property_fileupload_image_width' => 'عرض تصویر',
+ 'property_fileupload_image_width_description' => 'گزینه اختیاری جهت تغییر اندازه عرض تصویر که فقط در حالت تصویر مورد استفاده قرار میگیرد.',
+ 'property_fileupload_invalid_dimension' => 'مقدار وارد شده صحیح نیست. لطفا یک عدد وارد نمایید',
+ 'property_fileupload_image_height' => 'طول تصویر',
+ 'property_fileupload_image_height_description' => 'گزینه اختیاری جهت تغییر اندازه طول تصویر که فقط در حالت تصویر مورد استفاده قرار میگیرد.',
+ 'property_fileupload_file_types' => 'نوع فایل ها',
+ 'property_fileupload_file_types_description' => 'گزینه اختیاری جهت تایین پسوند فایل های ارسالی که با کاما از هم جدا شنده اند برای مثال: zip,txt',
+ 'property_fileupload_mime_types' => 'MIME types',
+ 'property_fileupload_mime_types_description' => 'لیست اختیاری از MIME Type های مجاز جهت ارسال فایل که با کاما از هم جدا شده اند برای مثال: bin,txt',
+ 'property_fileupload_use_caption' => 'از عنوان استفاده شود',
+ 'property_fileupload_use_caption_description' => 'اجازه ورود عنوان و توضیحات برای فایل ارسالی.',
+ 'property_fileupload_thumb_options' => 'گزینه های تصویر بند انگشتی',
+ 'property_fileupload_thumb_options_description' => 'مدیریت گزینه های تولید خودکار تصویر بند انگشتی که فقط در حالت تصویر مورد استفاده قرار میگیرد.',
+ 'property_fileupload_thumb_mode' => 'حالت نمایش',
+ 'property_fileupload_thumb_auto' => 'خودکار',
+ 'property_fileupload_thumb_exact' => 'دقیقا',
+ 'property_fileupload_thumb_portrait' => 'Portrait',
+ 'property_fileupload_thumb_landscape' => 'Landscape',
+ 'property_fileupload_thumb_crop' => 'Crop',
+ 'property_fileupload_thumb_extension' => 'پسوند فایل',
+ 'property_name_from' => 'نام ستون',
+ 'property_name_from_description' => 'نام ستون ارتباطی جهت نمایش نام.',
+ 'property_description_from' => 'ستون توضیحات',
+ 'property_description_from_description' => 'نام ستون ارتباطی جهت نمایش توضیحات.',
+ 'property_recordfinder_prompt' => 'متن',
+ 'property_recordfinder_prompt_description' => 'متنی که به هنگام نبود هیچ رکوردی به نمایش در می آید. %s بیانگر آیکن جستجو می باشد. جهت استفاده از مقدار پیشفرض این گزینه را خالی رها کنید.',
+ 'property_recordfinder_list' => 'تنظیمات لیست',
+ 'property_recordfinder_list_description' => 'مرجعی برای تعریف ستون های لیست. علامت $ به پوشه افزونه ها اشاره میکند برای مثال: $/acme/blog/lists/_list.yaml',
+ 'property_recordfinder_list_required' => 'لطفا آدرس فایل YAML را وارد نمایید',
+ 'property_group_recordfinder' => 'انتخابگر رکورد',
+ 'property_mediafinder_mode' => 'حالت نمایش',
+ 'property_mediafinder_mode_file' => 'فایل',
+ 'property_mediafinder_mode_image' => 'تصویر',
+ 'property_mediafinder_prompt' => 'متن',
+ 'property_mediafinder_prompt_description' => 'متنی که به هنگام خالی بودن نمایش داده شود. %s به آیکن جستجو اشاره میکند. جهت استفاده از مقدار پیشفرض این گزینه را خالی بگذارید.',
+ 'property_group_relation' => 'ارتباط',
+ 'property_relation_select' => 'تحديد',
+ 'property_relation_select_description' => 'كونكات أعمدة متعددة معا لعرض اسم',
+ 'property_relation_prompt' => 'متن',
+ 'property_relation_prompt_description' => 'متنی که به هنگام موجود نبودن موردی جهت انتخاب نمایش داده میشود.',
+ 'control_group_standard' => 'استاندارد',
+ 'control_group_widgets' => 'ابزارک ها',
+ 'click_to_add_control' => 'افزودن کنترل',
+ 'loading' => 'درحال بارگذاری...',
+ 'control_text' => 'متن',
+ 'control_text_description' => 'ابزار ورود متن تک خطی',
+ 'control_password' => 'کلمه عبور',
+ 'control_password_description' => 'ابزار ورود کلمه عبور',
+ 'control_checkbox' => 'چک باکس',
+ 'control_checkbox_description' => 'یک چک باکس',
+ 'control_switch' => 'سویچ',
+ 'control_switch_description' => 'سوئیچ روشن و خاموش که میتواند جایگزین چک باکس شود.',
+ 'control_textarea' => 'متن چند خطی',
+ 'control_textarea_description' => 'ابزار ورود متن چند خطی',
+ 'control_dropdown' => 'لیست بازشونده',
+ 'control_dropdown_description' => 'لیست بازشونده با موارد مشخص و یا متغیر',
+ 'control_unknown' => 'نوع ابزار :type یافت نشد',
+ 'control_repeater' => 'تکرار کننده',
+ 'control_repeater_description' => 'تکرار کننده مجموعه ای از ابزار ها',
+ 'control_number' => 'عدد',
+ 'control_number_description' => 'ابزار تک خطی جهت ورود عدد.',
+ 'control_hint' => 'هشدار',
+ 'control_hint_description' => 'نشان دهنده یک بخش به عنوان هشدار و یا راهنمایی که میتواند توسط کاربر مخفی شود.',
+ 'control_partial' => 'بخش',
+ 'control_partial_description' => 'نشان دهنده محتوی یک بخش',
+ 'control_section' => 'قسمت',
+ 'control_section_description' => 'نمایش یک قسمت از فرم با عنوان و زیر عنوان',
+ 'control_radio' => 'لیست رادیویی',
+ 'control_radio_description' => 'لیستی از انتخاب گر های رادیویی که در هر لحظه فقط یک مورد میتواند انتخاب شود.',
+ 'control_radio_option_1' => 'گزینه 1',
+ 'control_radio_option_2' => 'گزینه 2',
+ 'control_checkboxlist' => 'لیست چک باکس',
+ 'control_checkboxlist_description' => 'لیستی از چک باکس',
+ 'control_codeeditor' => 'ادیتور کد',
+ 'control_codeeditor_description' => 'ادیتور کد که جهت ورود کد مورد استفاده قرار میگیرد',
+ 'control_colorpicker' => 'انتخابگر رنگ',
+ 'control_colorpicker_description' => 'فیلدی جهت انتخاب کد هگزادسیمال رنگ',
+ 'control_datepicker' => 'انتخابگر تاریخ',
+ 'control_datepicker_description' => 'ابزاری جهت انتخای تاریخ و زمان',
+ 'control_richeditor' => 'ویرایشگر متن',
+ 'control_richeditor_description' => 'ابزاری جهت ویرایش و فرمت بندی متن',
+ 'control_markdown' => 'ویرایشگر مارک داون',
+ 'control_markdown_description' => 'ویرایشگر ابتدایی جهت ورود و ویرایش متن در قالب مارک داون',
+ 'control_fileupload' => 'ارسال فایل',
+ 'control_fileupload_description' => 'ارسال کننده فایل جهت ارسال تصویر و یا فایل',
+ 'control_recordfinder' => 'انتخاب گر موارد',
+ 'control_recordfinder_description' => 'ابزاری جهت انتخاب موارد مرتبط در پایگاه داده با امکان جستجو',
+ 'control_mediafinder' => 'انتخابگر چند رسانه ای',
+ 'control_mediafinder_description' => 'ابزاری جهت انتخاب فایل های چند رسانه ای در ابزار مدیریت چند رسانه ای',
+ 'control_relation' => 'ارتباط',
+ 'control_relation_description' => 'نمایش لیست بازشونده و یا لیست چک باکس جهت انتخاب ارتباطات پایگاه داده',
+ 'error_file_name_required' => 'لطفا نام فایل فرم را وارد نمایید.',
+ 'error_file_name_invalid' => 'نام فایل میتواند شامل حروف لاتین، اعداد، خط زیر، خط تیره و یا نقطه باشد.',
+ 'span_left' => 'چپ',
+ 'span_right' => 'راست',
+ 'span_full' => 'کامل',
+ 'span_auto' => 'خودکار',
+ 'empty_tab' => 'بخش خالی',
+ 'confirm_close_tab' => 'بخش حاوی ابزار هایی می باشد که پاک خواهند شد. آیا میخواهید ادامه دهید؟',
+ 'tab' => 'بخش فرم',
+ 'tab_title' => 'عنوان',
+ 'controls' => 'ابزار ها',
+ 'property_tab_title_required' => 'وارد کردن عنوان بخش اجباریست',
+ 'tabs_primary' => 'بخش اصلی',
+ 'tabs_secondary' => 'بخش ثانویه',
+ 'tab_stretch' => 'کامل',
+ 'tab_stretch_description' => 'مشخص میکند که طول بخش برابر با طول والد خود باشد یا خیر',
+ 'tab_css_class' => 'کلاس CSS',
+ 'tab_css_class_description' => 'مقدار دهی خاصیت کلاس دربرگیرنده ابزار',
+ 'tab_name_template' => 'بخش %s',
+ 'tab_already_exists' => 'بخشی با نام مشخص شده وجود دارد'
+ ],
+ 'list' => [
+ 'tab_new_list' => 'لیست جدید',
+ 'saved'=> 'لیست با موفقیت ذخیره شد.',
+ 'confirm_delete' => 'آیا از حذف این لیست اطمینان دارید؟',
+ 'tab_columns' => 'ستون ها',
+ 'btn_add_column' => 'ستون جدید',
+ 'btn_delete_column' => 'حذف ستون',
+ 'column_dbfield_label' => 'فیلد',
+ 'column_dbfield_required' => 'لطفا فیلد مدل را وارد نمایید',
+ 'column_name_label' => 'عنوان',
+ 'column_label_required' => 'لطفا عنوان ستون را وارد نمایید.',
+ 'column_type_label' => 'نوع',
+ 'column_type_required' => 'لطفا نوع ستون را وارد نمایید.',
+ 'column_type_text' => 'متن',
+ 'column_type_number' => 'عدد',
+ 'column_type_switch' => 'سوییچ',
+ 'column_type_datetime' => 'تاریخ و زمان',
+ 'column_type_date' => 'تاریخ',
+ 'column_type_time' => 'زمان',
+ 'column_type_timesince' => 'تفاوت زمانی',
+ 'column_type_timetense' => 'تفاوت زمانی',
+ 'column_type_select' => 'انتخاب',
+ 'column_type_partial' => 'بخش',
+ 'column_label_default' => 'پیشفرض',
+ 'column_label_searchable' => 'قابلیت جستجو',
+ 'column_label_sortable' => 'قابلیت مرتب سازی',
+ 'column_label_invisible' => 'مخفی',
+ 'column_label_select' => 'انتخاب',
+ 'column_label_relation' => 'ارتباط پایگاه داده',
+ 'column_label_css_class' => 'کلاس CSS',
+ 'column_label_width' => 'عرض',
+ 'column_label_path' => 'مسیر',
+ 'column_label_format' => 'قالب',
+ 'column_label_value_from' => 'مقدار گرفته شده از',
+ 'error_duplicate_column' => "نام ':column' برای ستون تکراری میباشد."
+ ],
+ 'controller' => [
+ 'menu_label' => 'کنترلر ها',
+ 'no_records' => 'کنترلری در افزونه یافت نشد.',
+ 'controller' => 'کنترلر',
+ 'behaviors' => 'کنترل کننده رفتار از پیش تایین شده',
+ 'new_controller' => 'کنترلر جدید',
+ 'error_controller_has_no_behaviors' => 'کنترلر حاوی کنترل کننده رفتار از پیش تایین شده که حاوی تنظیمات باشد ندارد',
+ 'error_invalid_yaml_configuration' => 'خطایی در بارگذاری فایل :file مربوط به تنظیمات کنترل کننده رفتار از پیش تایین شده به وجود آمده است',
+ 'behavior_form_controller' => 'کنترل کننده رفتار از پیش تایین شده فرم',
+ 'behavior_form_controller_description' => 'افزودن امکان مدیریت فرم ها به صفحه مدیریت. این امکان سه صفحه ایجاد، به روزرسانی و پیش نمایش را اضافه میکند.',
+ 'property_behavior_form_placeholder' => '--انتخاب فرم--',
+ 'property_behavior_form_name' => 'نام',
+ 'property_behavior_form_name_description' => 'نام شی ای که توسط فرم مدیریت می شود',
+ 'property_behavior_form_name_required' => 'لطفا نام فرم را وارد نمایید.',
+ 'property_behavior_form_file' => 'تنظیمات فرم',
+ 'property_behavior_form_file_description' => 'به یک فایل تعریف فرم اشاره میکند.',
+ 'property_behavior_form_file_required' => 'لطفا آدرس فایل تنظیمات فرم را وارد نمایید.',
+ 'property_behavior_form_model_class' => 'کلاس مدل',
+ 'property_behavior_form_model_class_description' => 'نام کلاس مدل که داده ها از آن بارگذاری شده و ذخیره می شوند.',
+ 'property_behavior_form_model_class_required' => 'لطفا نام کلاس مدل را وارد نمایید',
+ 'property_behavior_form_default_redirect' => 'مسیر انتقال پیشفرض',
+ 'property_behavior_form_default_redirect_description' => 'آدرس صفحه ای جهت انتقال به هنگامی که فرم ذخیره میشود یا کاربر از ادامه کار انصراف می دهد.',
+ 'property_behavior_form_create' => 'صفحه ایجاد',
+ 'property_behavior_form_redirect' => 'انتقال',
+ 'property_behavior_form_redirect_description' => 'آدرس صفحه ای که به هنگام ایجاد مورد جدید به آن انتقال داده میشود',
+ 'property_behavior_form_redirect_close' => 'انتقال به هنگام خروج',
+ 'property_behavior_form_redirect_close_description' => 'آدرس صفحه ای که به هنگام کلیک دکمه انتقال و خروج به آن انتقال داده می شود.',
+ 'property_behavior_form_flash_save' => 'پیغام نمایش داده شده به هنگام ذخیره',
+ 'property_behavior_form_flash_save_description' => 'پیغامی که به هنگام ذخیره مورد نمایش داده می شود.',
+ 'property_behavior_form_page_title' => 'عنوان صفحه',
+ 'property_behavior_form_update' => 'صفحه ویرایش',
+ 'property_behavior_form_update_redirect' => 'انتقال',
+ 'property_behavior_form_create_redirect_description' => 'صفحه ای که به هنگام ذخیره مورد به آن انتقال داده می شود.',
+ 'property_behavior_form_flash_delete' => 'پیغام حذف',
+ 'property_behavior_form_flash_delete_description' => 'پیغامی که به هنگام حذف نمایش داده میشود.',
+ 'property_behavior_form_preview' => 'صفحه پیش نمایش',
+ 'behavior_list_controller' => 'کنترل کننده رفتار از پیش تایین شده لیست',
+ 'behavior_list_controller_description' => 'امکان نمایش لیستی با قابلیت جستجو و مرتب سازی را به کنترلر اظافه میکند. این امکان صفحه اصلی (index) را در کنترلر ایجاد میکند.',
+ 'property_behavior_list_title' => 'عنوان لیست',
+ 'property_behavior_list_title_required' => 'لطفا عنوان لیست را وارد نمایید',
+ 'property_behavior_list_placeholder' => '--انتخاب لیست--',
+ 'property_behavior_list_model_class' => 'کلاس مدل',
+ 'property_behavior_list_model_class_description' => 'نام کلاس مدلی که اطلاعات لیست از آن بارگذاری میشود.',
+ 'property_behavior_form_model_class_placeholder' => '--انتخاب مدل--',
+ 'property_behavior_list_model_class_required' => 'لطفا کلاس مدل را انتخاب نمایید',
+ 'property_behavior_list_model_placeholder' => '--انتخاب مدل--',
+ 'property_behavior_list_file' => 'فایل تنظیمات لیست',
+ 'property_behavior_list_file_description' => 'به یک فایل تعریف لیست اشاره میکند',
+ 'property_behavior_list_file_required' => 'لطفا مسیر فایل تنظیمات لیست را وارد نمایید.',
+ 'property_behavior_list_record_url' => 'آدرس مورد',
+ 'property_behavior_list_record_url_description' => 'آدرس صفحه هر مورد در لیست که در آن :id به مشخصه لیست اشاره میکند برای مثال: users/update:id',
+ 'property_behavior_list_no_records_message' => 'پیغام خالی بودن لیست',
+ 'property_behavior_list_no_records_message_description' => 'پیغامی که به هنگام خالی بودن لیست به نمایش در می آید.',
+ 'property_behavior_list_recs_per_page' => 'تعداد موارد در هر صفحه',
+ 'property_behavior_list_recs_per_page_description' => 'تعداد موارد در هر صفحه را مشخص میکند برای نمایش تمام موارد در یک صفحه این مقدار را 0 قرار دهید. مقدار پیشفرض: 0',
+ 'property_behavior_list_recs_per_page_regex' => 'مقدار تعداد موارد در هر صفحه باید یک عدد صحیح باشد.',
+ 'property_behavior_list_show_setup' => 'نمایش دکمه تنظیمات',
+ 'property_behavior_list_show_sorting' => 'نمایش مرتب سازی',
+ 'property_behavior_list_default_sort' => 'مرتب سازی پیشفرض',
+ 'property_behavior_form_ds_column' => 'ستون',
+ 'property_behavior_form_ds_direction' => 'جهت مرتب سازی',
+ 'property_behavior_form_ds_asc' => 'صعودی',
+ 'property_behavior_form_ds_desc' => 'نزولی',
+ 'property_behavior_list_show_checkboxes' => 'نمایش چک باکس',
+ 'property_behavior_list_onclick' => 'کنترل کننده کلیک',
+ 'property_behavior_list_onclick_description' => 'کد شخصی سازی شده جاوا اسکریپت به هنگام کلیک هر رکورد.',
+ 'property_behavior_list_show_tree' => 'نمایش درخت وار',
+ 'property_behavior_list_show_tree_description' => 'نمایش درخت وار موارد والد و فرزندی.',
+ 'property_behavior_list_tree_expanded' => 'درخت باز شده',
+ 'property_behavior_list_tree_expanded_description' => 'آیا تمامی موارد درخت به صورت پیشفرض باز باشند؟',
+ 'property_behavior_list_toolbar' => 'نوار ابزار',
+ 'property_behavior_list_toolbar_buttons' => 'بخش دکمه ها',
+ 'property_behavior_list_toolbar_buttons_description' => 'به یک فایل بخش موجود در کنترلر اشاره میکند. به عنوان مثال: list_toolbar',
+ 'property_behavior_list_search' => 'جستجو',
+ 'property_behavior_list_search_prompt' => 'متن جستجو',
+ 'property_behavior_list_filter' => 'تنظیمات فیلتر',
+ 'error_controller_not_found' => 'فایل کنترلر یافت نشد',
+ 'error_invalid_config_file_name' => 'تعریف فایل (:file) مربوط به کنترل کننده از پیش تایین شده :class صحیح نمی باشد.',
+ 'error_file_not_yaml' => 'فایل تنطیمات (:file) مربوط به کنترل کننده از پیش تایین شده باید از نوع YAML باشد.',
+ 'saved' => 'کنترلر با موفقیت ذخیره شدو',
+ 'controller_name' => 'نام کنترلر',
+ 'controller_name_description' => 'نام کنترلر مشخص کننده نام و آدرس آن در صفحه مدیریت می باشد و باید از استاندارد های نامگذاری متغیر در PHP پیروی کند. همچنین نام باید با حرف بزرگ لاتین شروع شود برای مثال: Categories',
+ 'base_model_class' => 'کلاس مدل',
+ 'base_model_class_description' => 'نام کلاس مدلی را که جهت استفاده توسط کنترل کننده های رفتار از پیش تایین شده مورد استفاده قرار میگیرد را وارد نمایید.',
+ 'base_model_class_placeholder' => '--انتخاب مدل--',
+ 'controller_behaviors' => 'کنترل کننده های رفتار از پیش تایین شده',
+ 'controller_behaviors_description' => 'لطفا کنترل کننده های رفتار از پیش تایین شده برای کنترلر را انتخاب نمایید. سازنده فایل های نمایش مربوط به هر یک از آنها را به صورت خودکار ایجاد میکند.',
+ 'controller_permissions' => 'مجوزهای دسترسی',
+ 'controller_permissions_description' => 'مجوز های دسترسی برای هر یک از بخش های کنترلر را وارد نمایید. مجوز ها در بخش مجوز ها قابل تعریف میباشند و شما میتوانید آنها را بعدا در کد PHP ویرایش نمایید.',
+ 'controller_permissions_no_permissions' => 'این افزونه دارای مجوزی نمی باشد.',
+ 'menu_item' => 'منوی فعال',
+ 'menu_item_description' => 'منو ای را که میخواهید به هنگام نمایش صفحه کنترلر فعال شود انتخاب نمایید. این گزینه بعدا در کد PHP کنترلر قابل تغییر می باشد.',
+ 'menu_item_placeholder' => '--انتخاب منو--',
+ 'error_unknown_behavior' => 'کنترل کننده رفتار از پیش تایین شده :class در شی مدیریت این موارد اضافه نشده است.',
+ 'error_behavior_view_conflict' => 'کنترل کننده های رفتار از پیش تایین شده انتخاب شده دارای موارد تداخلی (:view) می باشد و نمیتواند همزمان استفاده شود.',
+ 'error_behavior_config_conflict' => 'کنترل کننده های رفتار انتخاب شده حاوی فایل تنظیمات (:file) تداخلی بود و نمی توانند همزمان استفاده شوند.',
+ 'error_behavior_view_file_not_found' => 'قالب نمایشی :view در کنترل کننده رفتار از پیش تایین شده :class یافت نشد.',
+ 'error_behavior_config_file_not_found' => 'قالب فایل تنظیمات :file در کنترل کننده رفتار از پیش تایین شده :class یافت نشد.',
+ 'error_controller_exists' => 'فایل کنترلر :file قبلا ایجاد شده است.',
+ 'error_controller_name_invalid' => 'نام کنترلر صحیح نمی باشد. نام میتواند شامل حروف لاتین و اعداد بوده و باید با یک حرف بزرگ لاتین شروع شود.',
+ 'error_behavior_view_file_exists' => 'فایل نمایشی کنترلر :view قبلا ایجاد شده است.',
+ 'error_behavior_config_file_exists' => 'فایل تنظیمات :file مربوط به کنترل کننده رفتار از پیش تایین شده قبلا ایجاد شده است.',
+ 'error_save_file' => 'خطا به هنگام ذخیره فایل کنترلر: :file',
+ 'error_behavior_requires_base_model' => 'کنترل کننده رفتار از پیش تایین شده :behavior نیاز به انتخاب شدن کلاس مدل دارد.',
+ 'error_model_doesnt_have_lists' => 'مدل انتخاب شده حاوی لیستی نمی باشد. لطفا یک لیست برای آن ایجاد کنید.',
+ 'error_model_doesnt_have_forms' => 'مدل انتخاب شده حاوی فرمی نمی باشد. لطفا یک فرم برای آن ایجاد کنید.'
+ ],
+ 'version' => [
+ 'menu_label' => 'ویرایش ها',
+ 'no_records' => 'ویرایشی برای افزونه یافت نشد',
+ 'search' => 'جستجو...',
+ 'tab' => 'ویرایش ها',
+ 'saved' => 'ویرایش با موفقیت ذخیره شد.',
+ 'confirm_delete' => 'آیا از حذف این ویرایش اطمینان دارید؟',
+ 'tab_new_version' => 'ویرایش جدید',
+ 'migration' => 'ساختار پایگاه داده',
+ 'seeder' => 'داده های پایگاه داده',
+ 'custom' => 'افزودن عدد ویرایش',
+ 'apply_version' => 'اعمال ویرایش',
+ 'applying' => 'درحال اعمال...',
+ 'rollback_version' => 'عقب گرد ویرایش',
+ 'rolling_back' => 'درحال عقبگرد...',
+ 'applied' => 'ویرایش با موفقیت اعمال شد.',
+ 'rolled_back' => 'ویرایش با موفقیت به عقب بازگشت.',
+ 'hint_save_unapplied' => 'شما یک نسخه اعمال نشده را ذخیره کردید. این نسخه ها به هنگام ورود شما و یا کاربر دیگری و یا ذخیره جدولی در پایگاه داده به صورت خودکار اعمال خواهند شد.',
+ 'hint_rollback' => 'ویرایش های قبلی و بازگشت داده شده به صورت خودکار در هنگام اعمال ویرایش جدید تر، ورود به بخش مدیریت و یا ایجاد و ذخیره جدولی در پایگاه داده به صورت خودکار اعمال خواهند شد.',
+ 'hint_apply' => 'اعمال یک ویرایش تمامی ویرایش های قبلی اعمال نشده را نیز اعمال خواهد کرد',
+ 'dont_show_again' => 'مجددا نمایش نده.',
+ 'save_unapplied_version' => 'ذخیره ویرایش اعمال نشده'
+ ],
+ 'menu' => [
+ 'menu_label' => 'منوی مدیریت',
+ 'tab' => 'منو ها',
+ 'items' => 'موارد منو',
+ 'saved' => 'این منو با موفقیت ذخیره شد.',
+ 'add_main_menu_item' => 'افزودن منوی جدید در ریشه',
+ 'new_menu_item' => 'مورد منو',
+ 'add_side_menu_item' => 'افزودن زیر منو',
+ 'side_menu_item' => 'مورد منوی کناری',
+ 'property_label' => 'عنوان',
+ 'property_label_required' => 'لطفا عنوان منو را وارد نمایید',
+ 'property_url_required' => 'لطفا آدرس منو را وارد نمایید',
+ 'property_url' => 'آدرس',
+ 'property_icon' => 'آیکن',
+ 'property_icon_required' => 'لطفا آیکن منو را وارد نمایید',
+ 'property_permissions' => 'مجوز ها',
+ 'property_order' => 'ترتیب',
+ 'property_order_invalid' => 'مقدار وارد شده برای ترتیب منو باید عدد صحیح باشد.',
+ 'property_order_description' => 'ترتیب منو مشخص کننده ترتیب قرارگیری آن می باشد و اگر وارد نشود منو در انتهای لیست قرار میگیرد. مقدار این مورد بهتر است بیش از عدد 100 باشد.',
+ 'property_attributes' => 'خصوصیات HTML',
+ 'property_code' => 'کد',
+ 'property_code_invalid' => 'کد میتواند حاوی حروف لاتین و اعداد باشد.',
+ 'property_code_required' => 'لطفا کد مربوط به منو را وارد نمایید.',
+ 'error_duplicate_main_menu_code' => "کد ':code' وارد شده برای منوی اصلی تکراریست.",
+ 'error_duplicate_side_menu_code' => "کد ':code' وارد شده برای منوی کناری تکراریست."
+ ],
+ 'localization' => [
+ 'menu_label' => 'بومی سازی',
+ 'language' => 'زبان',
+ 'strings' => 'رشته های متنی',
+ 'confirm_delete' => 'آیا از حذف این زبان اطمینان دارید؟',
+ 'tab_new_language' => 'ربان جدید',
+ 'no_records' => 'زبانی یافت نشد.',
+ 'saved' => 'فایل زبان با موفقیت ذخیره شد.',
+ 'error_cant_load_file' => 'فایل زبان مورد درخواست یافت نشد.',
+ 'error_bad_localization_file_contents' => 'خطا در بارگذاری فایل زبان. فایل زبان میتواند شامل تعریف آرایه و رشته های متنی باشد.',
+ 'error_file_not_array' => 'خطا در بارگذاری فایل زبان. فایل زبان باید یک آرایه بازگرداند/',
+ 'save_error' => "خطا در ذخیره فایل ':name'. لطفا مجوز خای ذخیره فایل را بررسی نمایید.",
+ 'error_delete_file' => 'خطا در حذف فایل زبان.',
+ 'add_missing_strings' => 'افزودن رشته های جدید',
+ 'copy' => 'کپی',
+ 'add_missing_strings_label' => 'زبانی را که حاوی رشته جدید میباشد را انتخاب نمایید.',
+ 'no_languages_to_copy_from' => 'زبان دیگری جهت کپی رشته های جدید موجود نمی باشد.',
+ 'new_string_warning' => 'رشته یا بخش جدید',
+ 'structure_mismatch' => 'ساختار فایل منبع زبان با فایلی که در حال ویرایش می باشد مطابقت ندارد. برخی رشته ها در فایل در حال ویرایش فایل منبع را دچار مشکل میکند و فایل ها به صورت خودکار قابلیت تجمیع ندارند. ',
+ 'create_string' => 'ایجاد رشته متنی جدید',
+ 'string_key_label' => 'کلید رشته متنی',
+ 'string_key_comment' => 'کلید رشته متنی را که از نقطه به عنوان جدا کننده بخش ها استفاده میکند وارد نمایید. به عنوان مثال: plugin.search. رشته متنی در زبان پیشفرض بومی سازی افزونه ذخیره خواهد شد.',
+ 'string_value' => 'مقدار رشته متنی',
+ 'string_key_is_empty' => 'ورود کلید رشته متنی اجباریست.',
+ 'string_value_is_empty' => 'ورود مقدار رشته متنی اجباریست.',
+ 'string_key_exists' => 'کلید رشته وارد شده تکراری می باشد.'
+ ],
+ 'permission' => [
+ 'menu_label' => 'مجوز های دسترسی',
+ 'tab' => 'مجوز های دسترسی',
+ 'form_tab_permissions' => 'مجوز های دسترسی',
+ 'btn_add_permission' => 'مجوز دسترسی جدید',
+ 'btn_delete_permission' => 'حذف مجوز دسترسی',
+ 'column_permission_label' => 'کد مجوز دسترسی',
+ 'column_permission_required' => 'لطفا کد مجوز دسترسی را وارد نمایید',
+ 'column_tab_label' => 'عنوان بخش',
+ 'column_tab_required' => 'لطفا عنوان بخش مجوز دسترسی را وارد نمایید',
+ 'column_label_label' => 'عنوان',
+ 'column_label_required' => 'لطفا عنوان مجوز دسترسی را وارد نمایید.',
+ 'saved' => 'مجوز های دسترسی با موفقیت ذخیره شدند.',
+ 'error_duplicate_code' => "کد وارد شده ':code' برای مجوز دسترسی تکراری می باشد."
+ ],
+ 'yaml' => [
+ 'save_error' => "خطا در ذخیره فایل ':name'. لطفا مجوزهای مربوط به نوشتن بر روی دیسک را بررسی نمایید."
+ ],
+ 'common' => [
+ 'error_file_exists' => "فایل ':path' قبلا ایجاد شده است.",
+ 'field_icon_description' => 'اکتبر از آیکن فونت خود به آدری http://daftspunk.github.io/Font-Autumn استفاده می نماید',
+ 'destination_dir_not_exists' => "پوشه هدف به آدرس ':path' یافت نشد.",
+ 'error_make_dir' => "خطا در ایجاد پوشه به آدرس ':name'",
+ 'error_dir_exists' => "پوشه ':path' قبلا ایجاد شده است.",
+ 'template_not_found' => "فایل قالب ':name' یافت نشد.",
+ 'error_generating_file' => "خطا در تولید فایل ':path'.",
+ 'error_loading_template' => "خطا در بارگذاری قالب ':name'.",
+ 'select_plugin_first' => 'لطفا افزونه ای را انتخاب نمایید. جهت انتخاب افزونه بر روی آیکون > در سمت راست منوی کناری کلیک نمایید.',
+ 'plugin_not_selected' => 'افزونه ای انتخاب نشده است',
+ 'add' => 'افرودن'
+ ],
+ 'migration' => [
+ 'entity_name' => 'ساختار بانک اطلاعاتی',
+ 'error_version_invalid' => 'ویرایش باید در این قالب وارد شود: 1.0.1',
+ 'field_version' => 'ویرایش',
+ 'field_description' => 'توضیحات',
+ 'field_code' => 'کد',
+ 'save_and_apply' => 'ذخیره و اعمال',
+ 'error_version_exists' => 'فایل ساختار بانک اطلاعاتی قبلا تعریف شده است.',
+ 'error_script_filename_invalid' => 'نام فایل ساختار بانک اطلاعاتی فقط میتواند حاوی حروف لاتین، اعداد و خط زیر باشد و با یک حرف لاتین بزرگ شروع شود.',
+ 'error_cannot_change_version_number' => 'شماره ویرایش اعمال شده قابل تغییر نمی باشد.',
+ 'error_file_must_define_class' => 'کد ساختار بانک اطلاعاتی باید کلاس migration و یا seeder را تعریف کند. اگر فقط میخواهید فقط نسخه را افزایش دهید کد را خالی بگذارید.',
+ 'error_file_must_define_namespace' => 'ساختار بانک اطلاعاتی باشد شامل نیم اسپیس باشد. اگر فقط میخواهید شماره ویرایش را افزایش دهید کد را خالی بگذارید.',
+ 'no_changes_to_save' => 'تغییراتی جهت ذخیره وجود ندارد.',
+ 'error_namespace_mismatch' => "کد ساختار بانک اطلاعاتی باید از نیم اسپیس افزونه :namespace استفاده نماید.",
+ 'error_migration_file_exists' => "فایل ساختار بانک اطلاعات :file وجود دارد لطفا نام دیگری را وارد نمایید.",
+ 'error_cant_delete_applied' => 'این ویرایش اعمال شده است و شما نمیتوانید آن را حذف کنید لطفا جهت حذف آن ویرایش را به عقب باز گردانید.'
+ ],
+ 'components' => [
+ 'list_title' => 'لیست موارد',
+ 'list_description' => 'نمایش لیستی از موارد مدل انتخاب شده',
+ 'list_page_number' => 'شماره صفحه',
+ 'list_page_number_description' => 'این مقدار جهت تعیین صفحه ای که کاربر در آن می باشد مورد استفاده قرار میگیرد.',
+ 'list_records_per_page' => 'تعداد موارد در هر صفحه',
+ 'list_records_per_page_description' => 'تعداد مواردی که در هر صفحه به نمایش در می آیند. جهت استفاده نکردن از خاصیت چند صفحه ای این مورد را خالی بگذارید.',
+ 'list_records_per_page_validation' => 'مقدار وارد شده در تعداد موارد در هر صفحه باید یک عدد صحیح باشد.',
+ 'list_no_records' => 'پیغام خالی بودن لیست',
+ 'list_no_records_description' => 'پیغامی که به هنگام نبودن موردی جهت نمایش به نمایش در می آید.',
+ 'list_no_records_default' => 'موردی یافت نشد',
+ 'list_sort_column' => 'مرتب سازی بر اساس',
+ 'list_sort_column_description' => 'ستونی که موارد بر اساس آن باید مرتب شوند',
+ 'list_sort_direction' => 'ترتیب مرتب سازی',
+ 'list_display_column' => 'نمایش ستون',
+ 'list_display_column_description' => 'ستونی که در لیست به نمایش در می آید.',
+ 'list_display_column_required' => 'لطفا ستونی را جهت نمایش انتخاب کنید.',
+ 'list_details_page' => 'صفحه جزییات',
+ 'list_details_page_description' => 'صفحه ای جهت نمایش جزییات موارد',
+ 'list_details_page_no' => '--صفحه جزییات موجود نیست--',
+ 'list_sorting' => 'مرتب سازی',
+ 'list_pagination' => 'صفحه بندی',
+ 'list_order_direction_asc' => 'صعودی',
+ 'list_order_direction_desc' => 'نزولی',
+ 'list_model' => 'کلاس مدل',
+ 'list_scope' => 'محدوده',
+ 'list_scope_description' => 'محدوده اختیاری کلاس مدل جهت واکشی موارد',
+ 'list_scope_default' => '--محدوده را انتخاب نمایید، اختیاری--',
+ 'list_details_page_link' => 'آدرس صفحه جزییات',
+ 'list_details_key_column' => 'ستون کلید جزییات',
+ 'list_details_key_column_description' => 'ستونی در مدل به عنوان کلید که مورد جهت نمایش جزییات از طریق آن در پایگاه داده یافت می شود.',
+ 'list_details_url_parameter' => 'پارامتر نام آدرس',
+ 'list_details_url_parameter_description' => 'نام پارامتر آدرس صفحه جزییات که کلید مورد را دریافت میکند.',
+ 'details_title' => 'جزییات مورد',
+ 'details_description' => 'نمایش جزییات مورد از مدل انتخاب شده',
+ 'details_model' => 'کلاس مدل',
+ 'details_identifier_value' => 'مقدار مشخصه',
+ 'details_identifier_value_description' => 'مقدار مشخصه جهت بارگذاری مورد از پایگاه داده. میتواند یک مقدار ثابت و یا پارامتر آدرس باشد.',
+ 'details_identifier_value_required' => 'وارد کردن مقدار مشخصه اجباریست',
+ 'details_key_column' => 'ستون کلید',
+ 'details_key_column_description' => 'ستونی در مدل که به عنوان مشخصه برای واکشی مورد در پایگاه داده مورد استفاده قرار میگیرد.',
+ 'details_key_column_required' => 'وارد کردن ستون کلید اجباریست',
+ 'details_display_column' => 'ستون نمایشی',
+ 'details_display_column_description' => 'ستونی در مدل که جهت نمایش در صفحه جزییات مورد استفاده قرار میگیرد.',
+ 'details_display_column_required' => 'وارد کردن ستون نمایشی اجباریست',
+ 'details_not_found_message' => 'موردی یافت نشد',
+ 'details_not_found_message_description' => 'پیغامی که به هنگام یافت نشدن مورد مورد استفاده قرار میگیرد.',
+ 'details_not_found_message_default' => 'موردی یافت نشد.',
+ ]
];
diff --git a/plugins/rainlab/builder/lang/nl.json b/plugins/rainlab/builder/lang/nl.json
deleted file mode 100644
index 12b1912..0000000
--- a/plugins/rainlab/builder/lang/nl.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "Builder": "Builder",
- "Provides visual tools for building October plugins.": "Stelt visuele hulpmiddelen beschikbaar om October plugins te maken."
-}
\ No newline at end of file
diff --git a/plugins/rainlab/builder/lang/nl/lang.php b/plugins/rainlab/builder/lang/nl/lang.php
index a414140..31787a4 100644
--- a/plugins/rainlab/builder/lang/nl/lang.php
+++ b/plugins/rainlab/builder/lang/nl/lang.php
@@ -1,639 +1,650 @@
- [
- 'add' => 'Maak plugin',
- 'no_records' => 'Geen plugins aanwezig',
- 'no_name' => 'Geen naam',
- 'search' => 'Zoeken...',
- 'filter_description' => 'Toon alle plugins of alleen eigen plugins.',
- 'settings' => 'Instellingen',
- 'entity_name' => 'Plugin',
- 'field_name' => 'Naam',
- 'field_author' => 'Auteur',
- 'field_description' => 'Omschrijving',
- 'field_icon' => 'Icoon',
- 'field_plugin_namespace' => 'Plugin namespace',
- 'field_author_namespace' => 'Auteur namespace',
- 'field_namespace_description' => 'Een namespace kan alleen latijnse letters en cijfers bevatten en mag ook alleen met een letter beginnen. Bijvoorbeeld: Blog',
- 'field_author_namespace_description' => 'Je kan de namespace van een Builder plugin niet meer wijzigen nadat je de plugin hebt gemaakt. Bijvoorbeeld: JohnSmith',
- 'tab_general' => 'Algemeen',
- 'tab_description' => 'Details',
- 'field_homepage' => 'Plugin homepagina URL',
- 'no_description' => 'Er is geen omschrijving opgegeven voor deze plugin.',
- 'error_settings_not_editable' => 'De instellingen van deze plugin kunnen niet met Builder worden gewijzigd.',
- 'update_hint' => 'Je kan de naam en omschrijving van de plugin vertalen in de \'Vertalen\' tab.',
- ],
- 'author_name' => [
- 'title' => 'Auteursnaam',
- 'description' => 'Dit is de standaard auteursnaam die wordt gebruikt bij het maken van plugins. Deze naam staat niet vast, je kan hem altijd wijzigen in de instellingen van de plugin.',
- ],
- 'author_namespace' => [
- 'title' => 'Auteur namespace',
- 'description' => 'Als je plugins maakt voor de Marketplace, dan moet de namespace gelijk zijn aan de auteur code en niet gewijzigd worden. Raadpleeg de documentatie voor aanvullende details.',
- ],
- 'database' => [
- 'menu_label' => 'Database',
- 'no_records' => 'Geen database tabellen aanwezig',
- 'search' => 'Zoeken...',
- 'confirmation_delete_multiple' => 'Weet je zeker dat je de geselecteerde tabellen wilt verwijderen?',
- 'field_name' => 'Tabelnaam',
- 'tab_columns' => 'Kolommen',
- 'column_name_name' => 'Kolom',
- 'column_name_required' => 'Geef kolomnaam op',
- 'column_name_type' => 'Type',
- 'column_type_required' => 'Selecteer kolomtype',
- 'column_name_length' => 'Lengte',
- 'column_validation_length' => 'Lengte moet een getal zijn of een getal met dicimalen (10,2). Spaties zijn niet toegestaan.',
- 'column_validation_title' => 'Alleen getallen, kleine letters en underscores zijn toegestaan in kolomnamen',
- 'column_name_unsigned' => 'Unsigned',
- 'column_name_nullable' => 'Nullable',
- 'column_auto_increment' => 'AUTOINCR',
- 'column_default' => 'Standaardwaarde',
- 'column_auto_primary_key' => 'PK',
- 'tab_new_table' => 'Nieuwe tabel',
- 'btn_add_column' => 'Kolom toevoegen',
- 'btn_delete_column' => 'Kolom verwijderen',
- 'confirm_delete' => 'Do you really want to delete the table?',
- 'error_enum_not_supported' => 'De tabel bevat kolom(men) van het type "enum", deze worden momenteel niet ondersteund door Builder.',
- 'error_table_name_invalid_prefix' => 'De tabelnaam moet starten met de plugin prefix: \':prefix\'.',
- 'error_table_name_invalid_characters' => 'Ongeldige tabelnaam. Tabelnamen mogen alleen latijnse letters, cijfers en underscores bevatten. Tabelnamen moeten beginnen met een letter en mogen geen spaties bevatten.',
- 'error_table_duplicate_column' => 'Kolomnaam bestaat reeds: \':column\'.',
- 'error_table_auto_increment_in_compound_pk' => 'Een `auto-increment` kolom kan geen deel uitmaken van een `compound primary key`.',
- 'error_table_mutliple_auto_increment' => 'De tabel kan niet meerdere `auto-increment` kolommen bevatten.',
- 'error_table_auto_increment_non_integer' => 'Auto-increment kolommen moeten van het type `integer` zijn.',
- 'error_table_decimal_length' => 'De lengte voor type `:type` moet voldoen aan het formaat \'10,2\', zonder spaties.',
- 'error_table_length' => 'De lengte voor type `:type` moet als een integer worden gespecificeerd.',
- 'error_unsigned_type_not_int' => 'Fout gevonden in kolomdefinitie \':column\'. De `unsigned` vlag mag alleen op type `integer` kolommen worden toegepast.',
- 'error_integer_default_value' => 'Ongeldige standaardwaarde voor kolom \':column\'. Toegestane waardes zijn \'10\', \'-10\'.',
- 'error_decimal_default_value' => 'Ongeldige standaardwaarde voor kolom \':column\'. Toegestane waardes zijn \'1.00\', \'-1.00\'.',
- 'error_boolean_default_value' => 'Ongeldige standaardwaarde voor kolom \':column\'. Toegestane waardes zijn \'0\' and \'1\'.',
- 'error_unsigned_negative_value' => 'De standaardwaarde voor de kolom \':column\' mag niet negatief zijn.',
- 'error_table_already_exists' => 'De tabel \':name\' bestaat reeds in de database.',
- ],
- 'model' => [
- 'menu_label' => 'Models',
- 'entity_name' => 'Model',
- 'no_records' => 'Geen models aanwezig',
- 'search' => 'Zoeken...',
- 'add' => 'Toevoegen...',
- 'forms' => 'Formulieren',
- 'lists' => 'Lijsten',
- 'field_class_name' => 'Klasse naam',
- 'field_database_table' => 'Database tabel',
- 'error_class_name_exists' => 'Model bestand bestaat reeds voor de opgegeven klasse naam: :path',
- 'add_form' => 'Fomulier toevoegen',
- 'add_list' => 'Lijst toevoegen',
- ],
- 'form' => [
- 'saved' => 'Het formulier is succesvol opgeslagen.',
- 'confirm_delete' => 'Weet je zeker dat je het formulier wilt verwijderen?',
- 'tab_new_form' => 'Nieuw formulier',
- 'property_label_title' => 'Label',
- 'property_label_required' => 'Voor waarde voor label in.',
- 'property_span_title' => 'Uitlijning',
- 'property_comment_title' => 'Toelichting',
- 'property_comment_above_title' => 'Toelichting (boven)',
- 'property_default_title' => 'Standaard',
- 'property_checked_default_title' => 'Standaard aangevinkt',
- 'property_css_class_title' => 'CSS klassenaam',
- 'property_css_class_description' => 'Optionele CSS klassenaam die wordt toegewezen aan het veld element.',
- 'property_disabled_title' => 'Uitgeschakeld',
- 'property_hidden_title' => 'Verborgen',
- 'property_required_title' => 'Verplicht',
- 'property_field_name_title' => 'Veldnaam',
- 'property_placeholder_title' => 'Tijdelijke aanduiding',
- 'property_default_from_title' => 'Waarde van',
- 'property_stretch_title' => 'Uitrekken',
- 'property_stretch_description' => 'Geeft aan of dit veld uitrekt naar de breedte van het bovenliggende element.',
- 'property_context_title' => 'Context',
- 'property_context_description' => 'Geeft aan welk formulier context gebruikt moet worden om het veld weer te geven.',
- 'property_context_create' => 'Aanmaken',
- 'property_context_update' => 'Wijzigen',
- 'property_context_preview' => 'Voorvertoning',
- 'property_dependson_title' => 'Afhankelijk van',
- 'property_trigger_action' => 'Actie',
- 'property_trigger_show' => 'Weergeven',
- 'property_trigger_hide' => 'Verbergen',
- 'property_trigger_enable' => 'Inschakelen',
- 'property_trigger_disable' => 'Uitschakelen',
- 'property_trigger_empty' => 'Leeg',
- 'property_trigger_field' => 'Veld',
- 'property_trigger_field_description' => 'Geeft het veld aan wat de actie veroorzaakt.',
- 'property_trigger_condition' => 'Voorwaarde',
- 'property_trigger_condition_description' => 'Bepaald de voorwaarde waaraan het betreffende veld aan moet voldoen. Ondersteunde waarden: checked, unchecked, value[waarde].',
- 'property_trigger_condition_checked' => 'Aangevinkt: checked',
- 'property_trigger_condition_unchecked' => 'Uitgevinkt: unchecked',
- 'property_trigger_condition_somevalue' => 'Waarde: value[waarde]',
- 'property_preset_title' => 'Voorinstelling',
- 'property_preset_description' => 'Zorgt ervoor dat de veldwaarde initieel wordt gevuld met de waarde van een ander veld, al dan niet geconverteerd.',
- 'property_preset_field' => 'Veld',
- 'property_preset_field_description' => 'Het veld waarvan de waarde moet overgenomen worden.',
- 'property_preset_type' => 'Type',
- 'property_preset_type_description' => 'Conversie type',
- 'property_attributes_title' => 'Attributen',
- 'property_attributes_description' => 'Custom HTML attributen die aan het formulier veld moeten worden toegevoegd.',
- 'property_container_attributes_title' => 'Container attributen',
- 'property_container_attributes_description' => 'Custom HTML attributen die aan het formulier veld container moeten worden toegevoegd.',
- 'property_group_advanced' => 'Geavanceerd',
- 'property_dependson_description' => 'Een lijst van veldnamen waar dit veld van afhankelijk is. Als die velden een andere waarde krijgen, zal dit veld worden bijgewerkt. Een veld per regel.',
- 'property_trigger_title' => 'Trigger',
- 'property_trigger_description' => 'Zorgt ervoor dat veld eigenschappen veranderen, zoals bijvoorbeeld zichtbaarheid of waarde, gebaseerd op de staat van een ander veld.',
- 'property_default_from_description' => 'Neemt de standaardwaarde over van een ander veld.',
- 'property_field_name_required' => 'Veldnaam is verplicht',
- 'property_field_name_regex' => 'Veldnaam kan alleen latijnse karakters bevatten of _ - [ ] .',
- 'property_attributes_size' => 'Grootte',
- 'property_attributes_size_tiny' => 'Kleiner',
- 'property_attributes_size_small' => 'Klein',
- 'property_attributes_size_large' => 'Groter',
- 'property_attributes_size_huge' => 'Groot',
- 'property_attributes_size_giant' => 'Grootst',
- 'property_comment_position' => 'Toelichting positie',
- 'property_comment_position_above' => 'Boven',
- 'property_comment_position_below' => 'Beneden',
- 'property_hint_path' => 'Pad naar hint-sjabloon',
- 'property_hint_path_description' => 'Pad naar sjabloon bestand die de hint tekst bevat. Gebruik het $ symbool om het hoofdpad van de plugin aan te geven. Voorbeeld: $/acme/blog/partials/_partial.htm',
- 'property_hint_path_required' => 'Geef het hint-sjabloon pad op',
- 'property_partial_path' => 'Pad naar sjabloon',
- 'property_partial_path_description' => 'Pad naar sjabloon bestand. Gebruik het $ symbool om het hoofdpad van de plugin aan te geven. Voorbeeld: $/acme/blog/partials/_partial.htm',
- 'property_partial_path_required' => 'Geef het sjabloon pad op',
- 'property_code_language' => 'Taal',
- 'property_code_theme' => 'Thema',
- 'property_theme_use_default' => 'Gebruik standaard thema',
- 'property_group_code_editor' => 'Code editor',
- 'property_gutter' => 'Goot',
- 'property_gutter_show' => 'Weergeven',
- 'property_gutter_hide' => 'Verbergen',
- 'property_wordwrap' => 'Woordafbreking',
- 'property_wordwrap_wrap' => 'Afbreken',
- 'property_wordwrap_nowrap' => 'Niet afbreken',
- 'property_fontsize' => 'Grootte lettertype',
- 'property_codefolding' => 'Code inklappen',
- 'property_codefolding_manual' => 'Handmatig',
- 'property_codefolding_markbegin' => 'Begin markeren',
- 'property_codefolding_markbeginend' => 'Begin en einde markeren',
- 'property_autoclosing' => 'Automatisch sluiten',
- 'property_enabled' => 'Ingeschakeld',
- 'property_disabled' => 'Uitgeschakeld',
- 'property_soft_tabs' => 'Zachte tabs',
- 'property_tab_size' => 'Tab grootte',
- 'property_readonly' => 'Alleen-lezen',
- 'property_use_default' => 'Standaard instelling',
- 'property_options' => 'Opties',
- 'property_prompt' => 'Invoer',
- 'property_prompt_description' => 'Tekst op de toevoegknop.',
- 'property_prompt_default' => 'Nieuw item',
- 'property_available_colors' => 'Beschikbare kleuren',
- 'property_available_colors_description' => 'Lijst van beschikbare kleuren in HEX formaat (#FF0000). Laat leeg voor standaard kleuren set. Een waarde per regel.',
- 'property_datepicker_mode' => 'Modus',
- 'property_datepicker_mode_date' => 'Datum',
- 'property_datepicker_mode_datetime' => 'Datum en tijd',
- 'property_datepicker_mode_time' => 'Tijd',
- 'property_datepicker_min_date' => 'Minimale datum',
- 'property_datepicker_max_date' => 'Maximale datum',
- 'property_fileupload_mode' => 'Modus',
- 'property_fileupload_mode_file' => 'Bestand',
- 'property_fileupload_mode_image' => 'Afbeelding',
- 'property_group_fileupload' => 'Bestandsupload',
- 'property_fileupload_image_width' => 'Breedte afbeelding',
- 'property_fileupload_image_width_description' => 'Afbeeldingen zullen geschaald worden naar deze breedte (optioneel).',
- 'property_fileupload_invalid_dimension' => 'Ongeldige waarde voor breedte/hoogte afbeelding, geef een getal in.',
- 'property_fileupload_image_height' => 'Hoogte afbeelding',
- 'property_fileupload_image_height_description' => 'Afbeeldingen zullen geschaald worden naar deze hoogte (optioneel).',
- 'property_fileupload_file_types' => 'Bestandstypes',
- 'property_fileupload_file_types_description' => 'Komma gescheiden lijst van toegestane bestandsextenties, bijvoorbeeld: zip,txt (optioneel).',
- 'property_fileupload_mime_types' => 'MIME typen',
- 'property_fileupload_mime_types_description' => 'Komma gescheiden lijst van toegestane MIME-typen; bestandsextenties of volledige namen, bijvoorbeeld: zip,txt',
- 'property_fileupload_use_caption' => 'Gebruik annotatie',
- 'property_fileupload_use_caption_description' => 'Staat toe dat er een titel en omschrijving kunnen worden opgegeven voor het bestand.',
- 'property_fileupload_thumb_options' => 'Miniatuurweergave opties',
- 'property_fileupload_thumb_options_description' => 'Beheer opties voor de automatisch gegenereerde miniatuurweergaven. Alleen van toepassing bij Afbeelding modus.',
- 'property_fileupload_thumb_mode' => 'Modus',
- 'property_fileupload_thumb_auto' => 'Automatisch',
- 'property_fileupload_thumb_exact' => 'Exact',
- 'property_fileupload_thumb_portrait' => 'Staand',
- 'property_fileupload_thumb_landscape' => 'Liggend',
- 'property_fileupload_thumb_crop' => 'Uitsnijden',
- 'property_fileupload_thumb_extension' => 'Bestandsextentie',
- 'property_name_from' => 'Kolomnaam',
- 'property_name_from_description' => 'Gerelateerde kolomnaam die gebruikt moet worden voor het weergeven van een naam.',
- 'property_description_from' => 'Omschrijving kolom',
- 'property_description_from_description' => 'Gerelateerde kolomnaam die gebruikt moet worden voor het weergeven van een omschrijving.',
- 'property_recordfinder_prompt' => 'Prompt',
- 'property_recordfinder_prompt_description' => 'Text to display when there is no record selected. The %s character represents the search icon. Leave empty for the default prompt.',
- 'property_recordfinder_list' => 'Lijst configuratie',
- 'property_recordfinder_list_description' => 'Een referentie naar een lijstkolom definitie bestand. Gebruik het $ symbool om te refereren naar de plugin map, bijvoorbeeld: $/acme/blog/lists/_list.yaml',
- 'property_recordfinder_list_required' => 'Geef een pad op naar het YAML bestand',
- 'property_group_recordfinder' => 'Record zoeker',
- 'property_mediafinder_mode' => 'Modus',
- 'property_mediafinder_mode_file' => 'Bestand',
- 'property_mediafinder_mode_image' => 'Afbeelding',
- 'property_group_relation' => 'Relatie',
- 'property_relation_select' => 'kiezen',
- 'property_relation_select_description' => 'CONCAT meerdere kolommen samen voor het weergeven van een naam',
- 'property_relation_prompt' => 'Prompt',
- 'property_relation_prompt_description' => 'Tekst om weer te geven als er geen selecties beschikbaar zijn.',
- 'property_max_items' => 'Maximum aantal',
- 'property_max_items_description' => 'Maximum toegelaten aantal items in de herhaler.',
- 'control_group_standard' => 'Standaard',
- 'control_group_widgets' => 'Widgets',
- 'click_to_add_control' => 'Element toevoegen',
- 'loading' => 'Bezig met laden...',
- 'control_text' => 'Tekst',
- 'control_text_description' => 'Invoerveld voor één regel tekst.',
- 'control_password' => 'Wachtwoord',
- 'control_password_description' => 'Invoerveld voor een wachtwoord.',
- 'control_checkbox' => 'Keuzevakje',
- 'control_checkbox_description' => 'Enkelvoudig keuzevakje.',
- 'control_switch' => 'Schakelaar',
- 'control_switch_description' => 'Enkelvoudige schakelaar, een alternatief voor het keuzevakje.',
- 'control_textarea' => 'Tekst',
- 'control_textarea_description' => 'Tekstvak voor meerdere regels met instelbare hoogte.',
- 'control_dropdown' => 'Selectieveld',
- 'control_dropdown_description' => 'Een selectie lijst met vaste of dynamische opties.',
- 'control_unknown' => 'Onbekend element type: :type',
- 'control_repeater' => 'Herhaler',
- 'control_repeater_description' => 'Toont een set van herhalende formulier elementen.',
- 'control_number' => 'Nummer',
- 'control_number_description' => 'Invoerveld voor een nummer.',
- 'control_hint' => 'Tip',
- 'control_hint_description' => 'Toont een tip in een vakje die verborgen kan worden door een gebruiker.',
- 'control_partial' => 'Partial',
- 'control_partial_description' => 'Toont inhoud van een zgn. partial.',
- 'control_section' => 'Sectie',
- 'control_section_description' => 'Toont een formuliersectie met een kop- en subkoptekst.',
- 'control_radio' => 'Lijst van invoerrondjes',
- 'control_radio_description' => 'Een lijst van invoerrondjes, er kan maar één invoerrondje geselecteerd worden.',
- 'control_radio_option_1' => 'Optie 1',
- 'control_radio_option_2' => 'Optie 2',
- 'control_checkboxlist' => 'Lijst van keuzevakjes',
- 'control_checkboxlist_description' => 'Een lijst van keuzevakjes, er kunnen meerdere keuzevakjes geselecteerd worden.',
- 'control_codeeditor' => 'Code editor',
- 'control_codeeditor_description' => 'Een editor voor het bewerken van geformatteerde code of opmaakcode.',
- 'control_colorpicker' => 'Kleur kiezer',
- 'control_colorpicker_description' => 'Een veld met de mogelijkheid voor het selecteren van een hexadecimale kleurcode.',
- 'control_datepicker' => 'Datum kiezer',
- 'control_datepicker_description' => 'Een veld met de mogelijkheid voor het selecteren van een datum en tijd.',
- 'control_richeditor' => 'WYSIWYG editor',
- 'control_richeditor_description' => 'Een editor voor het bewerken van uitgebreide opgemaakte tekst.',
- 'control_markdown' => 'Markdown editor',
- 'control_markdown_description' => 'Een editor voor het bewerken van tekst in het Markdown formaat.',
- 'control_fileupload' => 'Bestand uploader',
- 'control_fileupload_description' => 'Een bestandsuploader voor afbeeldingen of reguliere bestanden.',
- 'control_recordfinder' => 'Record veld',
- 'control_recordfinder_description' => 'Een zoekveld met details van een gerelateerd record.',
- 'control_mediafinder' => 'Media veld',
- 'control_mediafinder_description' => 'Een veld die een item uit de Media bibliotheek kan bevatten.',
- 'control_relation' => 'Relatie',
- 'control_relation_description' => 'Toont een selectieveld of een lijst van keuzevakjes om een gerelateerd record te selecteren.',
- 'error_file_name_required' => 'Voer bestandsnaam in van het formulier.',
- 'error_file_name_invalid' => 'Bestandsnaam kan alleen latijnse karakters, cijfers of een van de volgende tekens bevatten: _ - #',
- 'span_left' => 'Links',
- 'span_right' => 'Rechts',
- 'span_full' => 'Volledige breedte',
- 'span_auto' => 'Automatisch',
- 'empty_tab' => 'Leeg tabblad',
- 'confirm_close_tab' => 'Het tabblad bevat elementen die verwijderd zullen worden. Doorgaan?',
- 'tab' => 'Formulier tabblad',
- 'tab_title' => 'Titel',
- 'controls' => 'Elementen',
- 'property_tab_title_required' => 'De titel van het tabblad is verplicht.',
- 'tabs_primary' => 'Primaire tabs',
- 'tabs_secondary' => 'Secundaire tabs',
- 'tab_stretch' => 'Uitrekken',
- 'tab_stretch_description' => 'Met deze optie geef je aan dat de inhoud van het tabblad meerekt naar de hoogte van het bovenliggende element.',
- 'tab_css_class' => 'CSS class',
- 'tab_css_class_description' => 'Wijst een CSS class toe aan de inhoud van het tabblad.',
- 'tab_name_template' => 'Tabblad %s',
- 'tab_already_exists' => 'Tabblad met opgegeven titel bestaat reeds.',
- ],
- 'list' => [
- 'tab_new_list' => 'Nieuwe lijst',
- 'saved' => 'De lijst is succesvol opgeslagen.',
- 'confirm_delete' => 'Weet je zeker dat je de lijst wilt verwijderen?',
- 'tab_columns' => 'Kolommen',
- 'btn_add_column' => 'Kolom toevoegen',
- 'btn_delete_column' => 'Kolom verwijderen',
- 'column_dbfield_label' => 'Veld',
- 'column_dbfield_required' => 'Geef Model veld op',
- 'column_name_label' => 'Label',
- 'column_label_required' => 'Geef kolom label op',
- 'column_type_label' => 'Type',
- 'column_type_required' => 'Geef kolomtype op',
- 'column_type_text' => 'Tekst',
- 'column_type_number' => 'Numeriek',
- 'column_type_switch' => 'Schakelaar',
- 'column_type_datetime' => 'Datum & Tijd',
- 'column_type_date' => 'Datum',
- 'column_type_time' => 'Tijd',
- 'column_type_timesince' => 'Datum & tijd sinds',
- 'column_type_timetense' => 'Datum & tijd afgekort',
- 'column_type_select' => 'Keuze',
- 'column_type_partial' => 'Partial',
- 'column_label_default' => 'Standaard',
- 'column_label_searchable' => 'Zoeken',
- 'column_label_sortable' => 'Sorteerbaar',
- 'column_label_invisible' => 'Onzichtbaar',
- 'column_label_select' => 'Select',
- 'column_label_relation' => 'Relatie',
- 'column_label_css_class' => 'CSS class',
- 'column_label_width' => 'Breedte',
- 'column_label_path' => 'Pad',
- 'column_label_format' => 'Formaat',
- 'column_label_value_from' => 'Waarde van',
- 'error_duplicate_column' => 'Kolom veldnaam bestaat reeds: \':column\'.',
- ],
- 'controller' => [
- 'menu_label' => 'Controllers',
- 'no_records' => 'Geen controllers aanwezig',
- 'controller' => 'Controller',
- 'behaviors' => 'Behaviors',
- 'new_controller' => 'Nieuwe controller',
- 'error_controller_has_no_behaviors' => 'De controller heeft geen configureerbare behaviors.',
- 'error_invalid_yaml_configuration' => 'Fout bij laden behavior configuratie bestand: :file',
- 'behavior_form_controller' => 'Formulier controller behavior',
- 'behavior_form_controller_description' => 'Voegt formulier functionaliteit toe aan een back-end pagina. Deze behavior bevat drie pagina\'s: Create (aanmaken), Update (wijzigen) en Preview (voorbeeldweergave).',
- 'property_behavior_form_placeholder' => '-- Selecteer formulier --',
- 'property_behavior_form_name' => 'Naam',
- 'property_behavior_form_name_description' => 'De naam van het object wat beheerd wordt door dit formulier.',
- 'property_behavior_form_name_required' => 'Geef de naam van het formulier op',
- 'property_behavior_form_file' => 'Formulier configuratie',
- 'property_behavior_form_file_description' => 'Referentie naar het formulieren veld definitie bestand.',
- 'property_behavior_form_file_required' => 'Geef het pad op naar het configuratiebestand van het formulier',
- 'property_behavior_form_model_class' => 'Model class',
- 'property_behavior_form_model_class_description' => 'Klassenaam van een model, de data van het formulier wordt geladen en opgeslagen met dit model.',
- 'property_behavior_form_model_class_required' => 'Selecteer een model class',
- 'property_behavior_form_default_redirect' => 'Standaard redirect',
- 'property_behavior_form_default_redirect_description' => 'De standaard pagina waarnaar verwezen wordt nadat het formulier is opgeslagen.',
- 'property_behavior_form_create' => 'Maak record pagina',
- 'property_behavior_form_redirect' => 'Redirect',
- 'property_behavior_form_redirect_description' => 'Een pagina waarnaar verwezen wordt wanneer een record is aangemaakt.',
- 'property_behavior_form_redirect_close' => 'Sluiten redirect',
- 'property_behavior_form_redirect_close_description' => 'Een pagina waarnaar verwezen wordt wanneer er gekozen is voor \'Opslaan en sluiten\'.',
- 'property_behavior_form_flash_save' => 'Bericht bij opslaan',
- 'property_behavior_form_flash_save_description' => 'Bericht om weer te geven nadat een record is opgeslagen.',
- 'property_behavior_form_page_title' => 'Paginatitel',
- 'property_behavior_form_update' => 'Record bijwerken pagina',
- 'property_behavior_form_update_redirect' => 'Redirect',
- 'property_behavior_form_create_redirect_description' => 'Een pagina waarnaar verwezen wordt als een record wordt opgeslagen.',
- 'property_behavior_form_flash_delete' => 'Delete flash message',
- 'property_behavior_form_flash_delete_description' => 'Flash message to display when record is deleted.',
- 'property_behavior_form_preview' => 'Voorbeeldweergave record pagina',
- 'behavior_list_controller' => 'Lijst controller behavior',
- 'behavior_list_controller_description' => 'Stelt een sorteerbare en doorzoekbare lijst beschikbaar. De \'behavior\' maakt de controller action "index" beschikbaar.',
- 'property_behavior_list_title' => 'Titel lijst',
- 'property_behavior_list_title_required' => 'Geeft de titel van de lijst op',
- 'property_behavior_list_placeholder' => '-- Selecteer lijst --',
- 'property_behavior_list_model_class' => 'Model class',
- 'property_behavior_list_model_class_description' => 'Klassenaam van een model, de lijst wordt geladen m.b.v. dit model.',
- 'property_behavior_form_model_class_placeholder' => '-- Selecteer model --',
- 'property_behavior_list_model_class_required' => 'Selecteer een model class',
- 'property_behavior_list_model_placeholder' => '-- Selecteer model --',
- 'property_behavior_list_file' => 'Configuratiebestand lijst',
- 'property_behavior_list_file_description' => 'Referentie naar een definitiebestand van een lijst.',
- 'property_behavior_list_file_required' => 'Geeft het pad op naar het configuratiebestand van de lijst',
- 'property_behavior_list_record_url' => 'Record URL',
- 'property_behavior_list_record_url_description' => 'Koppel elk record van de lijst aan een andere pagina. Bijv. users/update:id. Het :id gedeelte wordt vervangen met het identificatie nummer van het record.',
- 'property_behavior_list_no_records_message' => 'Bericht bij geen records',
- 'property_behavior_list_no_records_message_description' => 'Het bericht wat moet worden weergegeven als er geen records gevonden zijn.',
- 'property_behavior_list_recs_per_page' => 'Records per pagina',
- 'property_behavior_list_recs_per_page_description' => 'Aantal records wat weergegeven moet worden per pagina. Geef 0 op om geen paginatie te gebruiken. Standaardwaarde: 0',
- 'property_behavior_list_recs_per_page_regex' => 'Het aantal records per pagina moet een numerieke waarde zijn',
- 'property_behavior_list_show_setup' => 'Toon setup knop',
- 'property_behavior_list_show_sorting' => 'Toon sorteren',
- 'property_behavior_list_default_sort' => 'Standaard sortering',
- 'property_behavior_form_ds_column' => 'Kolom',
- 'property_behavior_form_ds_direction' => 'Richting',
- 'property_behavior_form_ds_asc' => 'Oplopend',
- 'property_behavior_form_ds_desc' => 'Aflopend',
- 'property_behavior_list_show_checkboxes' => 'Toon keuzevakjes',
- 'property_behavior_list_onclick' => 'Klik handler',
- 'property_behavior_list_onclick_description' => 'JavaScript code wat uitgevoerd moet worden als er op een record wordt geklikt.',
- 'property_behavior_list_show_tree' => 'Toon hiërarchie',
- 'property_behavior_list_show_tree_description' => 'Toont een hiërarchie boom voor ouder/kind-records.',
- 'property_behavior_list_tree_expanded' => 'Uitgeklapte weergave',
- 'property_behavior_list_tree_expanded_description' => 'Geeft aan of de hiërarchische boom standaard uitgeklapt moet worden weergegeven.',
- 'property_behavior_list_toolbar' => 'Toolbar',
- 'property_behavior_list_toolbar_buttons' => 'Knoppen partial bestand',
- 'property_behavior_list_toolbar_buttons_description' => 'Referentie naar een partial bestand met de toolbar knoppen. Bijv. list_toolbar',
- 'property_behavior_list_search' => 'Zoeken',
- 'property_behavior_list_search_prompt' => 'Zoek prompt',
- 'property_behavior_list_filter' => 'Filter configuratie',
- 'behavior_reorder_controller' => 'Reorder controller behavior',
- 'behavior_reorder_controller_description' => 'Stelt functies beschikbaar voor het sorteren en rangschikken van records. De behavior maakt automatisch de "reorder" controller actie aan.',
- 'property_behavior_reorder_title' => 'Rangschik titel',
- 'property_behavior_reorder_title_required' => 'De rangschik titel is verplicht.',
- 'property_behavior_reorder_name_from' => 'Attribuut naam',
- 'property_behavior_reorder_name_from_description' => 'Attribuut van het model wat als weergavenaam van het record moet worden gebruikt.',
- 'property_behavior_reorder_name_from_required' => 'De attribuut naam is verplicht.',
- 'property_behavior_reorder_model_class' => 'Model class',
- 'property_behavior_reorder_model_class_description' => 'Model klassenaam, de rangschik data wordt geladen uit dit model.',
- 'property_behavior_reorder_model_class_placeholder' => '-- Selecteer model --',
- 'property_behavior_reorder_model_class_required' => 'Selecteer een model class',
- 'property_behavior_reorder_model_placeholder' => '-- Selecteer model --',
- 'property_behavior_reorder_toolbar' => 'Toolbar',
- 'property_behavior_reorder_toolbar_buttons' => 'Knoppen partial bestand',
- 'property_behavior_reorder_toolbar_buttons_description' => 'Referentie naar een partial bestand met de toolbar knoppen. Bijv. reorder_toolbar',
- 'error_controller_not_found' => 'Het originele controller bestand kan niet gevonden worden.',
- 'error_invalid_config_file_name' => 'De bestandsnaam van configuratiebestand :fil) (van behavior :class) bevat ongeldige karakters en kan daarom niet worden geladen.',
- 'error_file_not_yaml' => 'Het configuratiebestad :file (van behavior :class) is geen YAML-bestand. Alleen YAML-bestanden worden ondersteund.',
- 'saved' => 'De controller is succesvol opgeslagen.',
- 'controller_name' => 'Naam controller',
- 'controller_name_description' => 'De naam van de controller bepaald de uiteindelijk URL waarmee de controller beschikbaar is in de back-end. De standaard PHP conventies zijn van toepassing. Het eerste karakter moet een hoofdletter zijn. Voorbeelden van geldige namen: Categories, Posts of Products.',
- 'base_model_class' => 'Basis model class',
- 'base_model_class_description' => 'Selecteer een model class om te gebruiken als basis model in behaviors die models vereisen of ondersteunen. Je kan de behaviors later configureren.',
- 'base_model_class_placeholder' => '-- Selecteer model --',
- 'controller_behaviors' => 'Behaviors',
- 'controller_behaviors_description' => 'Seleteer de behaviors die de controller moet implementeren. De view bestanden, die vereist zijn voor de behaviors, zullen automatisch worden aangemaakt.',
- 'controller_permissions' => 'Toegangsrechten',
- 'controller_permissions_description' => 'Selecteer de gebruikersrechten die toegang hebben tot de controller view. Toegangsrechten kunnen aangemaakt worden via het tabblad Toegangsrechten in het linkermenu. Je kunt deze optie ook later aanpassen in de PHP-code van de controller.',
- 'controller_permissions_no_permissions' => 'De plugin heeft (nog) geen toegangsrechten gedefinieerd.',
- 'menu_item' => 'Actief menu item',
- 'menu_item_description' => 'Selecteer een menu item dat geactiveerd moet worden voor de pagina\'s van deze controller. Je kunt deze optie ook later aanpassen in de PHP-code van de controller.',
- 'menu_item_placeholder' => '-- Selecteer menu item --',
- 'error_unknown_behavior' => 'De behavior class :class is niet geregistreerd in de behavior bibliotheek.',
- 'error_behavior_view_conflict' => 'De geselecteerde behaviors leveren conflicterende views (:view) en kunnen daarom niet samen worden gebruikt in een controller.',
- 'error_behavior_config_conflict' => 'De geselecteerde behaviors leveren conflicterende configuratiebestanden op (:file) en kunnen daarom niet samen worden gebruikt in een controller.',
- 'error_behavior_view_file_not_found' => 'De view template :view van behavior :class kan niet worden gevonden.',
- 'error_behavior_config_file_not_found' => 'Het configuratiebestand template :file van behavior :class kan niet worden gevonden.',
- 'error_controller_exists' => 'Het controller bestand :file bestaat reeds.',
- 'error_controller_name_invalid' => 'Ongeldigde controllernaam. Voorbeelden van geldige namen: Posts, Categories of Products.',
- 'error_behavior_view_file_exists' => 'De view :view bestaat reeds voor deze controller.',
- 'error_behavior_config_file_exists' => 'Het behavior configuratiebestand: file bestaat reeds.',
- 'error_save_file' => 'Fout bij opslaan van het controller bestand :file.',
- 'error_behavior_requires_base_model' => 'Er moet een basis model class worden geselecteer voor behavior :behavior.',
- 'error_model_doesnt_have_lists' => 'Het geselecteerde model heeft geen lijsten. Maak eerst een lijst.',
- 'error_model_doesnt_have_forms' => 'Het geselecteerde model heeft geen formulieren. Maak eerst een formulier.',
- ],
- 'version' => [
- 'menu_label' => 'Versies',
- 'no_records' => 'Geen plugin versies aanwezig',
- 'search' => 'Zoeken...',
- 'tab' => 'Versies',
- 'saved' => 'De versie is succesvol opgeslagen.',
- 'confirm_delete' => 'Weet je zeker dat je deze versie wilt verwijderen?',
- 'tab_new_version' => 'Nieuwe versie',
- 'migration' => 'Migratie',
- 'seeder' => 'Seeder',
- 'custom' => 'Versienummer ophogen',
- 'apply_version' => 'Versie toepassen',
- 'applying' => 'Bezig met toepassen...',
- 'rollback_version' => 'Versie terugzetten',
- 'rolling_back' => 'Bezig met terugzerren...',
- 'applied' => 'De versie is succesvol toegepast.',
- 'rolled_back' => 'De versie is succesvol teruggezet.',
- 'hint_save_unapplied' => 'Je hebt een nog niet geactiveerde versie opgeslagen. Niet geactiveerde versies kunnen automatisch worden geactiveerd als jij of een andere gebruiker inlogd op de back-end. Of als een database tabel wordt opgeslagen binnen de Database sectie van de Builder plugin.',
- 'hint_rollback' => 'Het terugzetten van een versie zal ook alle versies nieuwer dan deze versie terugzetten. Wees je ervan bewust dat niet geactiveerde versies automatisch geactiveerd kunnen worden, als jij of een andere gebruiker inlogd op de back-end. Of als een database tabel wordt opgeslagen binnen de Database sectie van de Builder plugin.',
- 'hint_apply' => 'Het activeren van een versie zal ook oudere niet geactiveerde versies activeren.',
- 'dont_show_again' => 'Laat niet meer zien',
- 'save_unapplied_version' => 'Niet geactiveerde versie opslaan',
- ],
- 'menu' => [
- 'menu_label' => 'Backend menu',
- 'tab' => 'Menu\'s',
- 'items' => 'Menu items',
- 'saved' => 'De menu\'s zijn succesvol opgeslagen.',
- 'add_main_menu_item' => 'Hoofdmenu item toevoegen',
- 'new_menu_item' => 'Menu item',
- 'add_side_menu_item' => 'Sub-item toevoegen',
- 'side_menu_item' => 'Linker menu item',
- 'property_label' => 'Label',
- 'property_label_required' => 'Voer label in van menu item.',
- 'property_url_required' => 'Voer URL in van menu item.',
- 'property_url' => 'URL',
- 'property_icon' => 'Icoon',
- 'property_icon_required' => 'Selecteer een icoon.',
- 'property_permissions' => 'Toegangsrechten',
- 'property_order' => 'Volgorde',
- 'property_order_invalid' => 'Geef de volgorde aan met een getal.',
- 'property_order_description' => 'De volgorde bepaalde de positie van het menu item. Als de volgorde niet is opgegeven zal het item aan het einde van het menu worden toegevoegd. De standaardwaarden van de volgordes worden elke keer opgehoogd met 100.',
- 'property_attributes' => 'HTML attributen',
- 'property_code' => 'Code',
- 'property_code_invalid' => 'De code mag alleen bestaan uit letters en cijfers.',
- 'property_code_required' => 'Geef menu item code op.',
- 'error_duplicate_main_menu_code' => 'Dupliceer hoofdmenu item code: \':code\'.',
- 'error_duplicate_side_menu_code' => 'Dupliceer linker menu item code: \':code\'.',
- ],
- 'localization' => [
- 'menu_label' => 'Vertalen',
- 'language' => 'Taal',
- 'strings' => 'Taallabels',
- 'confirm_delete' => 'Weet je zeker dat je deze taal wilt verwijderen?',
- 'tab_new_language' => 'Nieuwe taal',
- 'no_records' => 'Geen talen aanwezig',
- 'saved' => 'Het taalbestand is succesvol opgeslagen.',
- 'error_cant_load_file' => 'Kan het taalbestand niet laden, bestand is niet gevonden.',
- 'error_bad_localization_file_contents' => 'Kan het taalbestand niet laden. Taalbestanden kunnen alleen array-definities en teksten bevatten.',
- 'error_file_not_array' => 'Kan het taalbestand niet laden. Taalbestanden moeten een array teruggeven.',
- 'save_error' => 'Fout bij opslaan van bestand \':name\'. Controleer schrijfrechten.',
- 'error_delete_file' => 'Fout bij verwijderen van taalbestand.',
- 'add_missing_strings' => 'Toevoegen van ontbrekende taallabels.',
- 'copy' => 'Kopiëren',
- 'add_missing_strings_label' => 'Selecteer een taal waarvan de taallabels gekopiëerd moeten worden.',
- 'no_languages_to_copy_from' => 'Er zijn geen andere talen waar de taallabels van gekopiëerd kunnen worden.',
- 'new_string_warning' => 'Nieuwe taallabel of sectie',
- 'structure_mismatch' => 'De structuur van het bron taalbestand komt niet overeen met het bestand wat nu wordt gewijzigd. Een aantal taallabels in het gewijzigde bestand corresponderen met secties in het bronbestand (of vice versa) en kunnen daarom niet automatisch worden samengevoegd.',
- 'create_string' => 'Nieuw taallabel toevoegen',
- 'string_key_label' => 'Taallabel ID',
- 'string_key_comment' => 'Geef het taallabel ID op gescheiden met een punt, bijvoorbeeld: plugin.search. De taallabel zal worden aangemaakt in het standaard taalbestand van de plugin.',
- 'string_value' => 'Taallabel waarde',
- 'string_key_is_empty' => 'Het taallabel ID mag niet leeg zijn.',
- 'string_value_is_empty' => 'Taallabel waarde mag niet leeg zijn.',
- 'string_key_exists' => 'Het taallabel ID bestaat reeds. Geef een ander ID op.',
- ],
- 'permission' => [
- 'menu_label' => 'Toegangsrechten',
- 'tab' => 'Toegangsrechten',
- 'form_tab_permissions' => 'Toegangsrechten',
- 'btn_add_permission' => 'Toegangsrechten toevoegen',
- 'btn_delete_permission' => 'Toegangsrechten verwijderen',
- 'column_permission_label' => 'Code',
- 'column_permission_required' => 'Geef de code op.',
- 'column_tab_label' => 'Tabblad titel',
- 'column_tab_required' => 'Geef tabblad titel op.',
- 'column_label_label' => 'Label',
- 'column_label_required' => 'Geef een label op.',
- 'saved' => 'Toegangsrechten zijn succesvol opgeslagen.',
- 'error_duplicate_code' => 'Dupliceer code: \':code\'.',
- ],
- 'yaml' => [
- 'save_error' => 'Fout bij opslaan bestan \':name\'. Controleer schrijfrechten.',
- ],
- 'common' => [
- 'error_file_exists' => 'Het bestand bestaat reeds: \':path\'.',
- 'field_icon_description' => 'OctoberCMS gebruikt Font Autumn iconen, zie: http://octobercms.com/docs/ui/icon',
- 'destination_dir_not_exists' => 'De doel directory bestaat niet: \':path\'.',
- 'error_make_dir' => 'Fout bij aanmaken van directory: \':name\'.',
- 'error_dir_exists' => 'Directory bestaat reeds: \':path\'.',
- 'template_not_found' => 'Template-bestand kan niet worden gevonden: \':name\'.',
- 'error_generating_file' => 'Fout bij genreren van bestand: \':path\'.',
- 'error_loading_template' => 'Fout bij laden van template-bestand: \':name\'.',
- 'select_plugin_first' => 'Selecteer eerst een plugin. Om een lijst van plugins te tonen, klik op het > icoon in de linker zijbalk.',
- 'plugin_not_selected' => 'Plugin is niet geselecteerd.',
- 'add' => 'Toevoegen',
- ],
- 'migration' => [
- 'entity_name' => 'Migratie',
- 'error_version_invalid' => 'Het versienummer moet voldoen aan het formaat 1.0.1',
- 'field_version' => 'Versie',
- 'field_description' => 'Omschrijving',
- 'field_code' => 'Code',
- 'save_and_apply' => 'Opslaan & toepassen',
- 'error_version_exists' => 'De migratie-versie bestaat reeds.',
- 'error_script_filename_invalid' => 'De bestandsnaam van de migratie kan alleen letters, getallen en underscores bevatten. De naam moet beginnen met een letter en mag geen spaties bevatten.',
- 'error_cannot_change_version_number' => 'Kan het versienummer niet aanpassen voor een reeds toegepaste versie.',
- 'error_file_must_define_class' => 'De migratie code moet een migratie of een seeder class definieren. Laat het code veld leeg als je alleen het versienummer wilt bijwerken.',
- 'error_file_must_define_namespace' => 'De migratie code moet een namespace definieren. Laat het code veld leeg als je alleen het versienummer wilt bijwerken.',
- 'no_changes_to_save' => 'Er zijn geen wijzigingen om op te slaan.',
- 'error_namespace_mismatch' => 'The migratie code moet de plugin namespace :namespace gebruiken.',
- 'error_migration_file_exists' => 'Het migratie bestand :file bestaat reeds. Gebruik een andere klasse naam.',
- 'error_cant_delete_applied' => 'Deze versie is reeds toegepast en kan daarom niet worden verwijderd. Ga eerst terug naar deze versie (rollback).',
- ],
- 'components' => [
- 'list_title' => 'Record lijst',
- 'list_description' => 'Toont een lijst van records voor geselecteerde model.',
- 'list_page_number' => 'Paginanummer',
- 'list_page_number_description' => 'De waarde hiervan wordt gebruikt om te bepalen op welke pagina de gebruiker zit.',
- 'list_records_per_page' => 'Records per pagina',
- 'list_records_per_page_description' => 'Het aantal records wat per pagina moet worden weergegeven. Laat leeg om paginatie uit te schakelen.',
- 'list_records_per_page_validation' => 'Ongeldige waarde. Het aantal records per pagina moet worden aangegeven met een nummer.',
- 'list_no_records' => 'Bericht bij geen records',
- 'list_no_records_description' => 'Bericht wat moet worden weergegeven als er geen records zijn.',
- 'list_no_records_default' => 'Geen records gevonden',
- 'list_sort_column' => 'Sorteer op kolom',
- 'list_sort_column_description' => 'Kolom van model waarop de records gesorteerd moeten worden.',
- 'list_sort_direction' => 'Sorteerrichting',
- 'list_display_column' => 'Weergave kolom',
- 'list_display_column_description' => 'Kolom die moet worden weergegeven in de lijst.',
- 'list_display_column_required' => 'Selecteer een weergave kolom.',
- 'list_details_page' => 'Detailpagina',
- 'list_details_page_description' => 'Pagina waarop record details worden weergegeven.',
- 'list_details_page_no' => '-- Geen detailpagina --',
- 'list_sorting' => 'Sortering',
- 'list_pagination' => 'Paginatie',
- 'list_order_direction_asc' => 'Oplopend',
- 'list_order_direction_desc' => 'Aflopend',
- 'list_model' => 'Model class',
- 'list_scope' => 'Scope',
- 'list_scope_description' => 'Model scope waarin de records moeten worden opgevraagd (optioneel).',
- 'list_scope_default' => '-- Selecteer een scope (optioneel) --',
- 'list_details_page_link' => 'Link naar de detailpagina',
- 'list_details_key_column' => 'Detail sleutelkolom',
- 'list_details_key_column_description' => 'Model kolom die moet worden gebruikt als record ID in de detailpagina links.',
- 'list_details_url_parameter' => 'URL parameter naam',
- 'list_details_url_parameter_description' => 'Naam van de detailpagina URL parameter. De parameter bevat het record ID.',
- 'details_title' => 'Record details',
- 'details_description' => 'Toont record details voor een geselecteerd model.',
- 'details_model' => 'Model class',
- 'details_identifier_value' => 'ID-waarde',
- 'details_identifier_value_description' => 'ID-waarde waarmee het record wordt opgevraagd uit de database. Geef een vaste waarde op of een parameter naam voor in de URL.',
- 'details_identifier_value_required' => 'De ID-waarde mag niet leeg zijn.',
- 'details_key_column' => 'Sleutelkolom',
- 'details_key_column_description' => 'De kolom die gebruikt moet worden om het record (met ID-waarde) uit de database te kunnen opvragen.',
- 'details_key_column_required' => 'De sleutelkolom mag niet leeg zijn.',
- 'details_display_column' => 'Weergave kolom',
- 'details_display_column_description' => 'De kolom uit het model die moet worden weergegeven op de detailpagina.',
- 'details_display_column_required' => 'Selecteer de weergave kolom.',
- 'details_not_found_message' => 'Bericht voor niet gevonden',
- 'details_not_found_message_description' => 'Bericht wat moet worden weergegeven als het record niet is gevonden.',
- 'details_not_found_message_default' => 'Record niet gevonden',
- ],
+ [
+ 'name' => 'Builder',
+ 'description' => 'Stelt visuele hulpmiddelen beschikbaar om October plugins te maken.',
+ 'add' => 'Maak plugin',
+ 'no_records' => 'Geen plugins aanwezig',
+ 'no_name' => 'Geen naam',
+ 'search' => 'Zoeken...',
+ 'filter_description' => 'Toon alle plugins of alleen eigen plugins.',
+ 'settings' => 'Instellingen',
+ 'entity_name' => 'Plugin',
+ 'field_name' => 'Naam',
+ 'field_author' => 'Auteur',
+ 'field_description' => 'Omschrijving',
+ 'field_icon' => 'Icoon',
+ 'field_plugin_namespace' => 'Plugin namespace',
+ 'field_author_namespace' => 'Auteur namespace',
+ 'field_namespace_description' => 'Een namespace kan alleen latijnse letters en cijfers bevatten en mag ook alleen met een letter beginnen. Bijvoorbeeld: Blog',
+ 'field_author_namespace_description' => 'Je kan de namespace van een Builder plugin niet meer wijzigen nadat je de plugin hebt gemaakt. Bijvoorbeeld: JohnSmith',
+ 'tab_general' => 'Algemeen',
+ 'tab_description' => 'Details',
+ 'field_homepage' => 'Plugin homepagina URL',
+ 'no_description' => 'Er is geen omschrijving opgegeven voor deze plugin.',
+ 'error_settings_not_editable' => 'De instellingen van deze plugin kunnen niet met Builder worden gewijzigd.',
+ 'update_hint' => 'Je kan de naam en omschrijving van de plugin vertalen in de \'Vertalen\' tab.',
+ ],
+ 'author_name' => [
+ 'title' => 'Auteursnaam',
+ 'description' => 'Dit is de standaard auteursnaam die wordt gebruikt bij het maken van plugins. Deze naam staat niet vast, je kan hem altijd wijzigen in de instellingen van de plugin.',
+ ],
+ 'author_namespace' => [
+ 'title' => 'Auteur namespace',
+ 'description' => 'Als je plugins maakt voor de Marketplace, dan moet de namespace gelijk zijn aan de auteur code en niet gewijzigd worden. Raadpleeg de documentatie voor aanvullende details.',
+ ],
+ 'database' => [
+ 'menu_label' => 'Database',
+ 'no_records' => 'Geen database tabellen aanwezig',
+ 'search' => 'Zoeken...',
+ 'confirmation_delete_multiple' => 'Weet je zeker dat je de geselecteerde tabellen wilt verwijderen?',
+ 'field_name' => 'Tabelnaam',
+ 'tab_columns' => 'Kolommen',
+ 'column_name_name' => 'Kolom',
+ 'column_name_required' => 'Geef kolomnaam op',
+ 'column_name_type' => 'Type',
+ 'column_type_required' => 'Selecteer kolomtype',
+ 'column_name_length' => 'Lengte',
+ 'column_validation_length' => 'Lengte moet een getal zijn of een getal met dicimalen (10,2). Spaties zijn niet toegestaan.',
+ 'column_validation_title' => 'Alleen getallen, kleine letters en underscores zijn toegestaan in kolomnamen',
+ 'column_name_unsigned' => 'Unsigned',
+ 'column_name_nullable' => 'Nullable',
+ 'column_auto_increment' => 'AUTOINCR',
+ 'column_default' => 'Standaardwaarde',
+ 'column_auto_primary_key' => 'PK',
+ 'tab_new_table' => 'Nieuwe tabel',
+ 'btn_add_column' => 'Kolom toevoegen',
+ 'btn_delete_column' => 'Kolom verwijderen',
+ 'confirm_delete' => 'Do you really want to delete the table?',
+ 'error_enum_not_supported' => 'De tabel bevat kolom(men) van het type "enum", deze worden momenteel niet ondersteund door Builder.',
+ 'error_table_name_invalid_prefix' => "De tabelnaam moet starten met de plugin prefix: ':prefix'.",
+ 'error_table_name_invalid_characters' => 'Ongeldige tabelnaam. Tabelnamen mogen alleen latijnse letters, cijfers en underscores bevatten. Tabelnamen moeten beginnen met een letter en mogen geen spaties bevatten.',
+ 'error_table_duplicate_column' => "Kolomnaam bestaat reeds: ':column'.",
+ 'error_table_auto_increment_in_compound_pk' => 'Een `auto-increment` kolom kan geen deel uitmaken van een `compound primary key`.',
+ 'error_table_mutliple_auto_increment' => 'De tabel kan niet meerdere `auto-increment` kolommen bevatten.',
+ 'error_table_auto_increment_non_integer' => 'Auto-increment kolommen moeten van het type `integer` zijn.',
+ 'error_table_decimal_length' => "De lengte voor type `:type` moet voldoen aan het formaat '10,2', zonder spaties.",
+ 'error_table_length' => 'De lengte voor type `:type` moet als een integer worden gespecificeerd.',
+ 'error_unsigned_type_not_int' => "Fout gevonden in kolomdefinitie ':column'. De `unsigned` vlag mag alleen op type `integer` kolommen worden toegepast.",
+ 'error_integer_default_value' => "Ongeldige standaardwaarde voor kolom ':column'. Toegestane waardes zijn '10', '-10'.",
+ 'error_decimal_default_value' => "Ongeldige standaardwaarde voor kolom ':column'. Toegestane waardes zijn '1.00', '-1.00'.",
+ 'error_boolean_default_value' => "Ongeldige standaardwaarde voor kolom ':column'. Toegestane waardes zijn '0' and '1'.",
+ 'error_unsigned_negative_value' => "De standaardwaarde voor de kolom ':column' mag niet negatief zijn.",
+ 'error_table_already_exists' => "De tabel ':name' bestaat reeds in de database.",
+ ],
+ 'model' => [
+ 'menu_label' => 'Models',
+ 'entity_name' => 'Model',
+ 'no_records' => 'Geen models aanwezig',
+ 'search' => 'Zoeken...',
+ 'add' => 'Toevoegen...',
+ 'forms' => 'Formulieren',
+ 'lists' => 'Lijsten',
+ 'field_class_name' => 'Klasse naam',
+ 'field_database_table' => 'Database tabel',
+ 'error_class_name_exists' => 'Model bestand bestaat reeds voor de opgegeven klasse naam: :path',
+ 'add_form' => 'Fomulier toevoegen',
+ 'add_list' => 'Lijst toevoegen',
+ ],
+ 'form' => [
+ 'saved' => 'Het formulier is succesvol opgeslagen.',
+ 'confirm_delete' => 'Weet je zeker dat je het formulier wilt verwijderen?',
+ 'tab_new_form' => 'Nieuw formulier',
+ 'property_label_title' => 'Label',
+ 'property_label_required' => 'Voor waarde voor label in.',
+ 'property_span_title' => 'Uitlijning',
+ 'property_comment_title' => 'Toelichting',
+ 'property_comment_above_title' => 'Toelichting (boven)',
+ 'property_default_title' => 'Standaard',
+ 'property_checked_default_title' => 'Standaard aangevinkt',
+ 'property_css_class_title' => 'CSS klassenaam',
+ 'property_css_class_description' => 'Optionele CSS klassenaam die wordt toegewezen aan het veld element.',
+ 'property_disabled_title' => 'Uitgeschakeld',
+ 'property_hidden_title' => 'Verborgen',
+ 'property_required_title' => 'Verplicht',
+ 'property_field_name_title' => 'Veldnaam',
+ 'property_placeholder_title' => 'Tijdelijke aanduiding',
+ 'property_default_from_title' => 'Waarde van',
+ 'property_stretch_title' => 'Uitrekken',
+ 'property_stretch_description' => 'Geeft aan of dit veld uitrekt naar de breedte van het bovenliggende element.',
+ 'property_context_title' => 'Context',
+ 'property_context_description' => 'Geeft aan welk formulier context gebruikt moet worden om het veld weer te geven.',
+ 'property_context_create' => 'Aanmaken',
+ 'property_context_update' => 'Wijzigen',
+ 'property_context_preview' => 'Voorvertoning',
+ 'property_dependson_title' => 'Afhankelijk van',
+ 'property_trigger_action' => 'Actie',
+ 'property_trigger_show' => 'Weergeven',
+ 'property_trigger_hide' => 'Verbergen',
+ 'property_trigger_enable' => 'Inschakelen',
+ 'property_trigger_disable' => 'Uitschakelen',
+ 'property_trigger_empty' => 'Leeg',
+ 'property_trigger_field' => 'Veld',
+ 'property_trigger_field_description' => 'Geeft het veld aan wat de actie veroorzaakt.',
+ 'property_trigger_condition' => 'Voorwaarde',
+ 'property_trigger_condition_description' => 'Bepaald de voorwaarde waaraan het betreffende veld aan moet voldoen. Ondersteunde waarden: checked, unchecked, value[waarde].',
+ 'property_trigger_condition_checked' => 'Aangevinkt: checked',
+ 'property_trigger_condition_unchecked' => 'Uitgevinkt: unchecked',
+ 'property_trigger_condition_somevalue' => 'Waarde: value[waarde]',
+ 'property_preset_title' => 'Voorinstelling',
+ 'property_preset_description' => 'Zorgt ervoor dat de veldwaarde initieel wordt gevuld met de waarde van een ander veld, al dan niet geconverteerd.',
+ 'property_preset_field' => 'Veld',
+ 'property_preset_field_description' => 'Het veld waarvan de waarde moet overgenomen worden.',
+ 'property_preset_type' => 'Type',
+ 'property_preset_type_description' => 'Conversie type',
+ 'property_attributes_title' => 'Attributen',
+ 'property_attributes_description' => 'Custom HTML attributen die aan het formulier veld moeten worden toegevoegd.',
+ 'property_container_attributes_title' => 'Container attributen',
+ 'property_container_attributes_description' => 'Custom HTML attributen die aan het formulier veld container moeten worden toegevoegd.',
+ 'property_group_advanced' => 'Geavanceerd',
+ 'property_dependson_description' => 'Een lijst van veldnamen waar dit veld van afhankelijk is. Als die velden een andere waarde krijgen, zal dit veld worden bijgewerkt. Een veld per regel.',
+ 'property_trigger_title' => 'Trigger',
+ 'property_trigger_description' => 'Zorgt ervoor dat veld eigenschappen veranderen, zoals bijvoorbeeld zichtbaarheid of waarde, gebaseerd op de staat van een ander veld.',
+ 'property_default_from_description' => 'Neemt de standaardwaarde over van een ander veld.',
+ 'property_field_name_required' => 'Veldnaam is verplicht',
+ 'property_field_name_regex' => 'Veldnaam kan alleen latijnse karakters bevatten of _ - [ ] .',
+ 'property_attributes_size' => 'Grootte',
+ 'property_attributes_size_tiny' => 'Kleiner',
+ 'property_attributes_size_small' => 'Klein',
+ 'property_attributes_size_large' => 'Groter',
+ 'property_attributes_size_huge' => 'Groot',
+ 'property_attributes_size_giant' => 'Grootst',
+ 'property_comment_position' => 'Toelichting positie',
+ 'property_comment_position_above' => 'Boven',
+ 'property_comment_position_below' => 'Beneden',
+ 'property_hint_path' => 'Pad naar hint-sjabloon',
+ 'property_hint_path_description' => 'Pad naar sjabloon bestand die de hint tekst bevat. Gebruik het $ symbool om het hoofdpad van de plugin aan te geven. Voorbeeld: $/acme/blog/partials/_partial.htm',
+ 'property_hint_path_required' => 'Geef het hint-sjabloon pad op',
+ 'property_partial_path' => 'Pad naar sjabloon',
+ 'property_partial_path_description' => 'Pad naar sjabloon bestand. Gebruik het $ symbool om het hoofdpad van de plugin aan te geven. Voorbeeld: $/acme/blog/partials/_partial.htm',
+ 'property_partial_path_required' => 'Geef het sjabloon pad op',
+ 'property_code_language' => 'Taal',
+ 'property_code_theme' => 'Thema',
+ 'property_theme_use_default' => 'Gebruik standaard thema',
+ 'property_group_code_editor' => 'Code editor',
+ 'property_gutter' => 'Goot',
+ 'property_gutter_show' => 'Weergeven',
+ 'property_gutter_hide' => 'Verbergen',
+ 'property_wordwrap' => 'Woordafbreking',
+ 'property_wordwrap_wrap' => 'Afbreken',
+ 'property_wordwrap_nowrap' => 'Niet afbreken',
+ 'property_fontsize' => 'Grootte lettertype',
+ 'property_codefolding' => 'Code inklappen',
+ 'property_codefolding_manual' => 'Handmatig',
+ 'property_codefolding_markbegin' => 'Begin markeren',
+ 'property_codefolding_markbeginend' => 'Begin en einde markeren',
+ 'property_autoclosing' => 'Automatisch sluiten',
+ 'property_enabled' => 'Ingeschakeld',
+ 'property_disabled' => 'Uitgeschakeld',
+ 'property_soft_tabs' => 'Zachte tabs',
+ 'property_tab_size' => 'Tab grootte',
+ 'property_readonly' => 'Alleen-lezen',
+ 'property_use_default' => 'Standaard instelling',
+ 'property_options' => 'Opties',
+ 'property_prompt' => 'Invoer',
+ 'property_prompt_description' => 'Tekst op de toevoegknop.',
+ 'property_prompt_default' => 'Nieuw item',
+ 'property_available_colors' => 'Beschikbare kleuren',
+ 'property_available_colors_description' => 'Lijst van beschikbare kleuren in HEX formaat (#FF0000). Laat leeg voor standaard kleuren set. Een waarde per regel.',
+ 'property_datepicker_mode' => 'Modus',
+ 'property_datepicker_mode_date' => 'Datum',
+ 'property_datepicker_mode_datetime' => 'Datum en tijd',
+ 'property_datepicker_mode_time' => 'Tijd',
+ 'property_datepicker_min_date' => 'Minimale datum',
+ 'property_datepicker_max_date' => 'Maximale datum',
+ 'property_markdown_mode' => 'Modus',
+ 'property_markdown_mode_split' => 'Gesplitst',
+ 'property_markdown_mode_tab' => 'Tabblad',
+ 'property_fileupload_mode' => 'Modus',
+ 'property_fileupload_mode_file' => 'Bestand',
+ 'property_fileupload_mode_image' => 'Afbeelding',
+ 'property_group_fileupload' => 'Bestandsupload',
+ 'property_fileupload_prompt' => 'Prompt',
+ 'property_fileupload_prompt_description' => 'Tekst op de upload knop. Alleen van toepassing op bestandsmodus (optioneel).',
+ 'property_fileupload_image_width' => 'Breedte afbeelding',
+ 'property_fileupload_image_width_description' => 'Afbeeldingen zullen geschaald worden naar deze breedte (optioneel).',
+ 'property_fileupload_invalid_dimension' => 'Ongeldige waarde voor breedte/hoogte afbeelding, geef een getal in.',
+ 'property_fileupload_image_height' => 'Hoogte afbeelding',
+ 'property_fileupload_image_height_description' => 'Afbeeldingen zullen geschaald worden naar deze hoogte (optioneel).',
+ 'property_fileupload_file_types' => 'Bestandstypes',
+ 'property_fileupload_file_types_description' => 'Komma gescheiden lijst van toegestane bestandsextenties, bijvoorbeeld: zip,txt (optioneel).',
+ 'property_fileupload_mime_types' => 'MIME typen',
+ 'property_fileupload_mime_types_description' => 'Komma gescheiden lijst van toegestane MIME-typen; bestandsextenties of volledige namen, bijvoorbeeld: zip,txt',
+ 'property_fileupload_use_caption' => 'Gebruik annotatie',
+ 'property_fileupload_use_caption_description' => 'Staat toe dat er een titel en omschrijving kunnen worden opgegeven voor het bestand.',
+ 'property_fileupload_thumb_options' => 'Miniatuurweergave opties',
+ 'property_fileupload_thumb_options_description' => 'Beheer opties voor de automatisch gegenereerde miniatuurweergaven. Alleen van toepassing bij Afbeelding modus.',
+ 'property_fileupload_thumb_mode' => 'Modus',
+ 'property_fileupload_thumb_auto' => 'Automatisch',
+ 'property_fileupload_thumb_exact' => 'Exact',
+ 'property_fileupload_thumb_portrait' => 'Staand',
+ 'property_fileupload_thumb_landscape' => 'Liggend',
+ 'property_fileupload_thumb_crop' => 'Uitsnijden',
+ 'property_fileupload_thumb_extension' => 'Bestandsextentie',
+ 'property_name_from' => 'Kolomnaam',
+ 'property_name_from_description' => 'Gerelateerde kolomnaam die gebruikt moet worden voor het weergeven van een naam.',
+ 'property_description_from' => 'Omschrijving kolom',
+ 'property_description_from_description' => 'Gerelateerde kolomnaam die gebruikt moet worden voor het weergeven van een omschrijving.',
+ 'property_recordfinder_prompt' => 'Prompt',
+ 'property_recordfinder_prompt_description' => 'Text to display when there is no record selected. The %s character represents the search icon. Leave empty for the default prompt.',
+ 'property_recordfinder_list' => 'Lijst configuratie',
+ 'property_recordfinder_list_description' => 'Een referentie naar een lijstkolom definitie bestand. Gebruik het $ symbool om te refereren naar de plugin map, bijvoorbeeld: $/acme/blog/lists/_list.yaml',
+ 'property_recordfinder_list_required' => 'Geef een pad op naar het YAML bestand',
+ 'property_group_recordfinder' => 'Record zoeker',
+ 'property_mediafinder_mode' => 'Modus',
+ 'property_mediafinder_mode_file' => 'Bestand',
+ 'property_mediafinder_mode_image' => 'Afbeelding',
+ 'property_mediafinder_prompt' => 'Prompt',
+ 'property_mediafinder_prompt_description' => 'Tekst om weer te geven als er geen item geselecteerd is. Het karakter %s representeerd het media beheer icoon. Laat leeg voor de standaard prompt.',
+ 'property_group_relation' => 'Relatie',
+ 'property_relation_select' => 'kiezen',
+ 'property_relation_select_description' => 'CONCAT meerdere kolommen samen voor het weergeven van een naam',
+ 'property_relation_prompt' => 'Prompt',
+ 'property_relation_prompt_description' => 'Tekst om weer te geven als er geen selecties beschikbaar zijn.',
+ 'property_max_items' => 'Maximum aantal',
+ 'property_max_items_description' => 'Maximum toegelaten aantal items in de herhaler.',
+ 'control_group_standard' => 'Standaard',
+ 'control_group_widgets' => 'Widgets',
+ 'click_to_add_control' => 'Element toevoegen',
+ 'loading' => 'Bezig met laden...',
+ 'control_text' => 'Tekst',
+ 'control_text_description' => 'Invoerveld voor één regel tekst.',
+ 'control_password' => 'Wachtwoord',
+ 'control_password_description' => 'Invoerveld voor een wachtwoord.',
+ 'control_checkbox' => 'Keuzevakje',
+ 'control_checkbox_description' => 'Enkelvoudig keuzevakje.',
+ 'control_switch' => 'Schakelaar',
+ 'control_switch_description' => 'Enkelvoudige schakelaar, een alternatief voor het keuzevakje.',
+ 'control_textarea' => 'Tekst',
+ 'control_textarea_description' => 'Tekstvak voor meerdere regels met instelbare hoogte.',
+ 'control_dropdown' => 'Selectieveld',
+ 'control_dropdown_description' => 'Een selectie lijst met vaste of dynamische opties.',
+ 'control_unknown' => 'Onbekend element type: :type',
+ 'control_repeater' => 'Herhaler',
+ 'control_repeater_description' => 'Toont een set van herhalende formulier elementen.',
+ 'control_number' => 'Nummer',
+ 'control_number_description' => 'Invoerveld voor een nummer.',
+ 'control_hint' => 'Tip',
+ 'control_hint_description' => 'Toont een tip in een vakje die verborgen kan worden door een gebruiker.',
+ 'control_partial' => 'Partial',
+ 'control_partial_description' => 'Toont inhoud van een zgn. partial.',
+ 'control_section' => 'Sectie',
+ 'control_section_description' => 'Toont een formuliersectie met een kop- en subkoptekst.',
+ 'control_radio' => 'Lijst van invoerrondjes',
+ 'control_radio_description' => 'Een lijst van invoerrondjes, er kan maar één invoerrondje geselecteerd worden.',
+ 'control_radio_option_1' => 'Optie 1',
+ 'control_radio_option_2' => 'Optie 2',
+ 'control_checkboxlist' => 'Lijst van keuzevakjes',
+ 'control_checkboxlist_description' => 'Een lijst van keuzevakjes, er kunnen meerdere keuzevakjes geselecteerd worden.',
+ 'control_codeeditor' => 'Code editor',
+ 'control_codeeditor_description' => 'Een editor voor het bewerken van geformatteerde code of opmaakcode.',
+ 'control_colorpicker' => 'Kleur kiezer',
+ 'control_colorpicker_description' => 'Een veld met de mogelijkheid voor het selecteren van een hexadecimale kleurcode.',
+ 'control_datepicker' => 'Datum kiezer',
+ 'control_datepicker_description' => 'Een veld met de mogelijkheid voor het selecteren van een datum en tijd.',
+ 'control_richeditor' => 'WYSIWYG editor',
+ 'control_richeditor_description' => 'Een editor voor het bewerken van uitgebreide opgemaakte tekst.',
+ 'control_markdown' => 'Markdown editor',
+ 'control_markdown_description' => 'Een editor voor het bewerken van tekst in het Markdown formaat.',
+ 'control_fileupload' => 'Bestand uploader',
+ 'control_fileupload_description' => 'Een bestandsuploader voor afbeeldingen of reguliere bestanden.',
+ 'control_recordfinder' => 'Record veld',
+ 'control_recordfinder_description' => 'Een zoekveld met details van een gerelateerd record.',
+ 'control_mediafinder' => 'Media veld',
+ 'control_mediafinder_description' => 'Een veld die een item uit de Media bibliotheek kan bevatten.',
+ 'control_relation' => 'Relatie',
+ 'control_relation_description' => 'Toont een selectieveld of een lijst van keuzevakjes om een gerelateerd record te selecteren.',
+ 'error_file_name_required' => 'Voer bestandsnaam in van het formulier.',
+ 'error_file_name_invalid' => 'Bestandsnaam kan alleen latijnse karakters, cijfers of een van de volgende tekens bevatten: _ - #',
+ 'span_left' => 'Links',
+ 'span_right' => 'Rechts',
+ 'span_full' => 'Volledige breedte',
+ 'span_auto' => 'Automatisch',
+ 'empty_tab' => 'Leeg tabblad',
+ 'confirm_close_tab' => 'Het tabblad bevat elementen die verwijderd zullen worden. Doorgaan?',
+ 'tab' => 'Formulier tabblad',
+ 'tab_title' => 'Titel',
+ 'controls' => 'Elementen',
+ 'property_tab_title_required' => 'De titel van het tabblad is verplicht.',
+ 'tabs_primary' => 'Primaire tabs',
+ 'tabs_secondary' => 'Secundaire tabs',
+ 'tab_stretch' => 'Uitrekken',
+ 'tab_stretch_description' => 'Met deze optie geef je aan dat de inhoud van het tabblad meerekt naar de hoogte van het bovenliggende element.',
+ 'tab_css_class' => 'CSS class',
+ 'tab_css_class_description' => 'Wijst een CSS class toe aan de inhoud van het tabblad.',
+ 'tab_name_template' => 'Tabblad %s',
+ 'tab_already_exists' => 'Tabblad met opgegeven titel bestaat reeds.',
+ ],
+ 'list' => [
+ 'tab_new_list' => 'Nieuwe lijst',
+ 'saved' => 'De lijst is succesvol opgeslagen.',
+ 'confirm_delete' => 'Weet je zeker dat je de lijst wilt verwijderen?',
+ 'tab_columns' => 'Kolommen',
+ 'btn_add_column' => 'Kolom toevoegen',
+ 'btn_delete_column' => 'Kolom verwijderen',
+ 'column_dbfield_label' => 'Veld',
+ 'column_dbfield_required' => 'Geef Model veld op',
+ 'column_name_label' => 'Label',
+ 'column_label_required' => 'Geef kolom label op',
+ 'column_type_label' => 'Type',
+ 'column_type_required' => 'Geef kolomtype op',
+ 'column_type_text' => 'Tekst',
+ 'column_type_number' => 'Numeriek',
+ 'column_type_switch' => 'Schakelaar',
+ 'column_type_datetime' => 'Datum & Tijd',
+ 'column_type_date' => 'Datum',
+ 'column_type_time' => 'Tijd',
+ 'column_type_timesince' => 'Datum & tijd sinds',
+ 'column_type_timetense' => 'Datum & tijd afgekort',
+ 'column_type_select' => 'Keuze',
+ 'column_type_partial' => 'Partial',
+ 'column_label_default' => 'Standaard',
+ 'column_label_searchable' => 'Zoeken',
+ 'column_label_sortable' => 'Sorteerbaar',
+ 'column_label_invisible' => 'Onzichtbaar',
+ 'column_label_select' => 'Select',
+ 'column_label_relation' => 'Relatie',
+ 'column_label_css_class' => 'CSS class',
+ 'column_label_width' => 'Breedte',
+ 'column_label_path' => 'Pad',
+ 'column_label_format' => 'Formaat',
+ 'column_label_value_from' => 'Waarde van',
+ 'error_duplicate_column' => "Kolom veldnaam bestaat reeds: ':column'.",
+ ],
+ 'controller' => [
+ 'menu_label' => 'Controllers',
+ 'no_records' => 'Geen controllers aanwezig',
+ 'controller' => 'Controller',
+ 'behaviors' => 'Behaviors',
+ 'new_controller' => 'Nieuwe controller',
+ 'error_controller_has_no_behaviors' => 'De controller heeft geen configureerbare behaviors.',
+ 'error_invalid_yaml_configuration' => 'Fout bij laden behavior configuratie bestand: :file',
+ 'behavior_form_controller' => 'Formulier controller behavior',
+ 'behavior_form_controller_description' => 'Voegt formulier functionaliteit toe aan een back-end pagina. Deze behavior bevat drie pagina\'s: Create (aanmaken), Update (wijzigen) en Preview (voorbeeldweergave).',
+ 'property_behavior_form_placeholder' => '-- Selecteer formulier --',
+ 'property_behavior_form_name' => 'Naam',
+ 'property_behavior_form_name_description' => 'De naam van het object wat beheerd wordt door dit formulier.',
+ 'property_behavior_form_name_required' => 'Geef de naam van het formulier op',
+ 'property_behavior_form_file' => 'Formulier configuratie',
+ 'property_behavior_form_file_description' => 'Referentie naar het formulieren veld definitie bestand.',
+ 'property_behavior_form_file_required' => 'Geef het pad op naar het configuratiebestand van het formulier',
+ 'property_behavior_form_model_class' => 'Model class',
+ 'property_behavior_form_model_class_description' => 'Klassenaam van een model, de data van het formulier wordt geladen en opgeslagen met dit model.',
+ 'property_behavior_form_model_class_required' => 'Selecteer een model class',
+ 'property_behavior_form_default_redirect' => 'Standaard redirect',
+ 'property_behavior_form_default_redirect_description' => 'De standaard pagina waarnaar verwezen wordt nadat het formulier is opgeslagen.',
+ 'property_behavior_form_create' => 'Maak record pagina',
+ 'property_behavior_form_redirect' => 'Redirect',
+ 'property_behavior_form_redirect_description' => 'Een pagina waarnaar verwezen wordt wanneer een record is aangemaakt.',
+ 'property_behavior_form_redirect_close' => 'Sluiten redirect',
+ 'property_behavior_form_redirect_close_description' => 'Een pagina waarnaar verwezen wordt wanneer er gekozen is voor \'Opslaan en sluiten\'.',
+ 'property_behavior_form_flash_save' => 'Bericht bij opslaan',
+ 'property_behavior_form_flash_save_description' => 'Bericht om weer te geven nadat een record is opgeslagen.',
+ 'property_behavior_form_page_title' => 'Paginatitel',
+ 'property_behavior_form_update' => 'Record bijwerken pagina',
+ 'property_behavior_form_update_redirect' => 'Redirect',
+ 'property_behavior_form_create_redirect_description' => 'Een pagina waarnaar verwezen wordt als een record wordt opgeslagen.',
+ 'property_behavior_form_flash_delete' => 'Delete flash message',
+ 'property_behavior_form_flash_delete_description' => 'Flash message to display when record is deleted.',
+ 'property_behavior_form_preview' => 'Voorbeeldweergave record pagina',
+ 'behavior_list_controller' => 'Lijst controller behavior',
+ 'behavior_list_controller_description' => 'Stelt een sorteerbare en doorzoekbare lijst beschikbaar. De \'behavior\' maakt de controller action "index" beschikbaar.',
+ 'property_behavior_list_title' => 'Titel lijst',
+ 'property_behavior_list_title_required' => 'Geeft de titel van de lijst op',
+ 'property_behavior_list_placeholder' => '-- Selecteer lijst --',
+ 'property_behavior_list_model_class' => 'Model class',
+ 'property_behavior_list_model_class_description' => 'Klassenaam van een model, de lijst wordt geladen m.b.v. dit model.',
+ 'property_behavior_form_model_class_placeholder' => '-- Selecteer model --',
+ 'property_behavior_list_model_class_required' => 'Selecteer een model class',
+ 'property_behavior_list_model_placeholder' => '-- Selecteer model --',
+ 'property_behavior_list_file' => 'Configuratiebestand lijst',
+ 'property_behavior_list_file_description' => 'Referentie naar een definitiebestand van een lijst.',
+ 'property_behavior_list_file_required' => 'Geeft het pad op naar het configuratiebestand van de lijst',
+ 'property_behavior_list_record_url' => 'Record URL',
+ 'property_behavior_list_record_url_description' => 'Koppel elk record van de lijst aan een andere pagina. Bijv. users/update:id. Het :id gedeelte wordt vervangen met het identificatie nummer van het record.',
+ 'property_behavior_list_no_records_message' => 'Bericht bij geen records',
+ 'property_behavior_list_no_records_message_description' => 'Het bericht wat moet worden weergegeven als er geen records gevonden zijn.',
+ 'property_behavior_list_recs_per_page' => 'Records per pagina',
+ 'property_behavior_list_recs_per_page_description' => 'Aantal records wat weergegeven moet worden per pagina. Geef 0 op om geen paginatie te gebruiken. Standaardwaarde: 0',
+ 'property_behavior_list_recs_per_page_regex' => 'Het aantal records per pagina moet een numerieke waarde zijn',
+ 'property_behavior_list_show_setup' => 'Toon setup knop',
+ 'property_behavior_list_show_sorting' => 'Toon sorteren',
+ 'property_behavior_list_default_sort' => 'Standaard sortering',
+ 'property_behavior_form_ds_column' => 'Kolom',
+ 'property_behavior_form_ds_direction' => 'Richting',
+ 'property_behavior_form_ds_asc' => 'Oplopend',
+ 'property_behavior_form_ds_desc' => 'Aflopend',
+ 'property_behavior_list_show_checkboxes' => 'Toon keuzevakjes',
+ 'property_behavior_list_onclick' => 'Klik handler',
+ 'property_behavior_list_onclick_description' => 'JavaScript code wat uitgevoerd moet worden als er op een record wordt geklikt.',
+ 'property_behavior_list_show_tree' => 'Toon hiërarchie',
+ 'property_behavior_list_show_tree_description' => 'Toont een hiërarchie boom voor ouder/kind-records.',
+ 'property_behavior_list_tree_expanded' => 'Uitgeklapte weergave',
+ 'property_behavior_list_tree_expanded_description' => 'Geeft aan of de hiërarchische boom standaard uitgeklapt moet worden weergegeven.',
+ 'property_behavior_list_toolbar' => 'Toolbar',
+ 'property_behavior_list_toolbar_buttons' => 'Knoppen partial bestand',
+ 'property_behavior_list_toolbar_buttons_description' => 'Referentie naar een partial bestand met de toolbar knoppen. Bijv. list_toolbar',
+ 'property_behavior_list_search' => 'Zoeken',
+ 'property_behavior_list_search_prompt' => 'Zoek prompt',
+ 'property_behavior_list_filter' => 'Filter configuratie',
+ 'behavior_reorder_controller' => 'Reorder controller behavior',
+ 'behavior_reorder_controller_description' => 'Stelt functies beschikbaar voor het sorteren en rangschikken van records. De behavior maakt automatisch de "reorder" controller actie aan.',
+ 'property_behavior_reorder_title' => 'Rangschik titel',
+ 'property_behavior_reorder_title_required' => 'De rangschik titel is verplicht.',
+ 'property_behavior_reorder_name_from' => 'Attribuut naam',
+ 'property_behavior_reorder_name_from_description' => 'Attribuut van het model wat als weergavenaam van het record moet worden gebruikt.',
+ 'property_behavior_reorder_name_from_required' => 'De attribuut naam is verplicht.',
+ 'property_behavior_reorder_model_class' => 'Model class',
+ 'property_behavior_reorder_model_class_description' => 'Model klassenaam, de rangschik data wordt geladen uit dit model.',
+ 'property_behavior_reorder_model_class_placeholder' => '-- Selecteer model --',
+ 'property_behavior_reorder_model_class_required' => 'Selecteer een model class',
+ 'property_behavior_reorder_model_placeholder' => '-- Selecteer model --',
+ 'property_behavior_reorder_toolbar' => 'Toolbar',
+ 'property_behavior_reorder_toolbar_buttons' => 'Knoppen partial bestand',
+ 'property_behavior_reorder_toolbar_buttons_description' => 'Referentie naar een partial bestand met de toolbar knoppen. Bijv. reorder_toolbar',
+ 'error_controller_not_found' => 'Het originele controller bestand kan niet gevonden worden.',
+ 'error_invalid_config_file_name' => 'De bestandsnaam van configuratiebestand :fil) (van behavior :class) bevat ongeldige karakters en kan daarom niet worden geladen.',
+ 'error_file_not_yaml' => 'Het configuratiebestad :file (van behavior :class) is geen YAML-bestand. Alleen YAML-bestanden worden ondersteund.',
+ 'saved' => 'De controller is succesvol opgeslagen.',
+ 'controller_name' => 'Naam controller',
+ 'controller_name_description' => 'De naam van de controller bepaald de uiteindelijk URL waarmee de controller beschikbaar is in de back-end. De standaard PHP conventies zijn van toepassing. Het eerste karakter moet een hoofdletter zijn. Voorbeelden van geldige namen: Categories, Posts of Products.',
+ 'base_model_class' => 'Basis model class',
+ 'base_model_class_description' => 'Selecteer een model class om te gebruiken als basis model in behaviors die models vereisen of ondersteunen. Je kan de behaviors later configureren.',
+ 'base_model_class_placeholder' => '-- Selecteer model --',
+ 'controller_behaviors' => 'Behaviors',
+ 'controller_behaviors_description' => 'Seleteer de behaviors die de controller moet implementeren. De view bestanden, die vereist zijn voor de behaviors, zullen automatisch worden aangemaakt.',
+ 'controller_permissions' => 'Toegangsrechten',
+ 'controller_permissions_description' => 'Selecteer de gebruikersrechten die toegang hebben tot de controller view. Toegangsrechten kunnen aangemaakt worden via het tabblad Toegangsrechten in het linkermenu. Je kunt deze optie ook later aanpassen in de PHP-code van de controller.',
+ 'controller_permissions_no_permissions' => 'De plugin heeft (nog) geen toegangsrechten gedefinieerd.',
+ 'menu_item' => 'Actief menu item',
+ 'menu_item_description' => 'Selecteer een menu item dat geactiveerd moet worden voor de pagina\'s van deze controller. Je kunt deze optie ook later aanpassen in de PHP-code van de controller.',
+ 'menu_item_placeholder' => '-- Selecteer menu item --',
+ 'error_unknown_behavior' => 'De behavior class :class is niet geregistreerd in de behavior bibliotheek.',
+ 'error_behavior_view_conflict' => 'De geselecteerde behaviors leveren conflicterende views (:view) en kunnen daarom niet samen worden gebruikt in een controller.',
+ 'error_behavior_config_conflict' => 'De geselecteerde behaviors leveren conflicterende configuratiebestanden op (:file) en kunnen daarom niet samen worden gebruikt in een controller.',
+ 'error_behavior_view_file_not_found' => 'De view template :view van behavior :class kan niet worden gevonden.',
+ 'error_behavior_config_file_not_found' => 'Het configuratiebestand template :file van behavior :class kan niet worden gevonden.',
+ 'error_controller_exists' => 'Het controller bestand :file bestaat reeds.',
+ 'error_controller_name_invalid' => 'Ongeldigde controllernaam. Voorbeelden van geldige namen: Posts, Categories of Products.',
+ 'error_behavior_view_file_exists' => 'De view :view bestaat reeds voor deze controller.',
+ 'error_behavior_config_file_exists' => 'Het behavior configuratiebestand: file bestaat reeds.',
+ 'error_save_file' => 'Fout bij opslaan van het controller bestand :file.',
+ 'error_behavior_requires_base_model' => 'Er moet een basis model class worden geselecteer voor behavior :behavior.',
+ 'error_model_doesnt_have_lists' => 'Het geselecteerde model heeft geen lijsten. Maak eerst een lijst.',
+ 'error_model_doesnt_have_forms' => 'Het geselecteerde model heeft geen formulieren. Maak eerst een formulier.',
+ ],
+ 'version' => [
+ 'menu_label' => 'Versies',
+ 'no_records' => 'Geen plugin versies aanwezig',
+ 'search' => 'Zoeken...',
+ 'tab' => 'Versies',
+ 'saved' => 'De versie is succesvol opgeslagen.',
+ 'confirm_delete' => 'Weet je zeker dat je deze versie wilt verwijderen?',
+ 'tab_new_version' => 'Nieuwe versie',
+ 'migration' => 'Migratie',
+ 'seeder' => 'Seeder',
+ 'custom' => 'Versienummer ophogen',
+ 'apply_version' => 'Versie toepassen',
+ 'applying' => 'Bezig met toepassen...',
+ 'rollback_version' => 'Versie terugzetten',
+ 'rolling_back' => 'Bezig met terugzerren...',
+ 'applied' => 'De versie is succesvol toegepast.',
+ 'rolled_back' => 'De versie is succesvol teruggezet.',
+ 'hint_save_unapplied' => 'Je hebt een nog niet geactiveerde versie opgeslagen. Niet geactiveerde versies kunnen automatisch worden geactiveerd als jij of een andere gebruiker inlogd op de back-end. Of als een database tabel wordt opgeslagen binnen de Database sectie van de Builder plugin.',
+ 'hint_rollback' => 'Het terugzetten van een versie zal ook alle versies nieuwer dan deze versie terugzetten. Wees je ervan bewust dat niet geactiveerde versies automatisch geactiveerd kunnen worden, als jij of een andere gebruiker inlogd op de back-end. Of als een database tabel wordt opgeslagen binnen de Database sectie van de Builder plugin.',
+ 'hint_apply' => 'Het activeren van een versie zal ook oudere niet geactiveerde versies activeren.',
+ 'dont_show_again' => 'Laat niet meer zien',
+ 'save_unapplied_version' => 'Niet geactiveerde versie opslaan',
+ ],
+ 'menu' => [
+ 'menu_label' => 'Backend menu',
+ 'tab' => 'Menu\'s',
+ 'items' => 'Menu items',
+ 'saved' => 'De menu\'s zijn succesvol opgeslagen.',
+ 'add_main_menu_item' => 'Hoofdmenu item toevoegen',
+ 'new_menu_item' => 'Menu item',
+ 'add_side_menu_item' => 'Sub-item toevoegen',
+ 'side_menu_item' => 'Linker menu item',
+ 'property_label' => 'Label',
+ 'property_label_required' => 'Voer label in van menu item.',
+ 'property_url_required' => 'Voer URL in van menu item.',
+ 'property_url' => 'URL',
+ 'property_icon' => 'Icoon',
+ 'property_icon_required' => 'Selecteer een icoon.',
+ 'property_permissions' => 'Toegangsrechten',
+ 'property_order' => 'Volgorde',
+ 'property_order_invalid' => 'Geef de volgorde aan met een getal.',
+ 'property_order_description' => 'De volgorde bepaalde de positie van het menu item. Als de volgorde niet is opgegeven zal het item aan het einde van het menu worden toegevoegd. De standaardwaarden van de volgordes worden elke keer opgehoogd met 100.',
+ 'property_attributes' => 'HTML attributen',
+ 'property_code' => 'Code',
+ 'property_code_invalid' => 'De code mag alleen bestaan uit letters en cijfers.',
+ 'property_code_required' => 'Geef menu item code op.',
+ 'error_duplicate_main_menu_code' => "Dupliceer hoofdmenu item code: ':code'.",
+ 'error_duplicate_side_menu_code' => "Dupliceer linker menu item code: ':code'.",
+ ],
+ 'localization' => [
+ 'menu_label' => 'Vertalen',
+ 'language' => 'Taal',
+ 'strings' => 'Taallabels',
+ 'confirm_delete' => 'Weet je zeker dat je deze taal wilt verwijderen?',
+ 'tab_new_language' => 'Nieuwe taal',
+ 'no_records' => 'Geen talen aanwezig',
+ 'saved' => 'Het taalbestand is succesvol opgeslagen.',
+ 'error_cant_load_file' => 'Kan het taalbestand niet laden, bestand is niet gevonden.',
+ 'error_bad_localization_file_contents' => 'Kan het taalbestand niet laden. Taalbestanden kunnen alleen array-definities en teksten bevatten.',
+ 'error_file_not_array' => 'Kan het taalbestand niet laden. Taalbestanden moeten een array teruggeven.',
+ 'save_error' => "Fout bij opslaan van bestand ':name'. Controleer schrijfrechten.",
+ 'error_delete_file' => 'Fout bij verwijderen van taalbestand.',
+ 'add_missing_strings' => 'Toevoegen van ontbrekende taallabels.',
+ 'copy' => 'Kopiëren',
+ 'add_missing_strings_label' => 'Selecteer een taal waarvan de taallabels gekopiëerd moeten worden.',
+ 'no_languages_to_copy_from' => 'Er zijn geen andere talen waar de taallabels van gekopiëerd kunnen worden.',
+ 'new_string_warning' => 'Nieuwe taallabel of sectie',
+ 'structure_mismatch' => 'De structuur van het bron taalbestand komt niet overeen met het bestand wat nu wordt gewijzigd. Een aantal taallabels in het gewijzigde bestand corresponderen met secties in het bronbestand (of vice versa) en kunnen daarom niet automatisch worden samengevoegd.',
+ 'create_string' => 'Nieuw taallabel toevoegen',
+ 'string_key_label' => 'Taallabel ID',
+ 'string_key_comment' => 'Geef het taallabel ID op gescheiden met een punt, bijvoorbeeld: plugin.search. De taallabel zal worden aangemaakt in het standaard taalbestand van de plugin.',
+ 'string_value' => 'Taallabel waarde',
+ 'string_key_is_empty' => 'Het taallabel ID mag niet leeg zijn.',
+ 'string_value_is_empty' => 'Taallabel waarde mag niet leeg zijn.',
+ 'string_key_exists' => 'Het taallabel ID bestaat reeds. Geef een ander ID op.',
+ ],
+ 'permission' => [
+ 'menu_label' => 'Toegangsrechten',
+ 'tab' => 'Toegangsrechten',
+ 'form_tab_permissions' => 'Toegangsrechten',
+ 'btn_add_permission' => 'Toegangsrechten toevoegen',
+ 'btn_delete_permission' => 'Toegangsrechten verwijderen',
+ 'column_permission_label' => 'Code',
+ 'column_permission_required' => 'Geef de code op.',
+ 'column_tab_label' => 'Tabblad titel',
+ 'column_tab_required' => 'Geef tabblad titel op.',
+ 'column_label_label' => 'Label',
+ 'column_label_required' => 'Geef een label op.',
+ 'saved' => 'Toegangsrechten zijn succesvol opgeslagen.',
+ 'error_duplicate_code' => "Dupliceer code: ':code'.",
+ ],
+ 'yaml' => [
+ 'save_error' => "Fout bij opslaan bestan ':name'. Controleer schrijfrechten.",
+ ],
+ 'common' => [
+ 'error_file_exists' => "Het bestand bestaat reeds: ':path'.",
+ 'field_icon_description' => 'OctoberCMS gebruikt Font Autumn iconen, zie: http://octobercms.com/docs/ui/icon',
+ 'destination_dir_not_exists' => "De doel directory bestaat niet: ':path'.",
+ 'error_make_dir' => "Fout bij aanmaken van directory: ':name'.",
+ 'error_dir_exists' => "Directory bestaat reeds: ':path'.",
+ 'template_not_found' => "Template-bestand kan niet worden gevonden: ':name'.",
+ 'error_generating_file' => "Fout bij genreren van bestand: ':path'.",
+ 'error_loading_template' => "Fout bij laden van template-bestand: ':name'.",
+ 'select_plugin_first' => 'Selecteer eerst een plugin. Om een lijst van plugins te tonen, klik op het > icoon in de linker zijbalk.',
+ 'plugin_not_selected' => 'Plugin is niet geselecteerd.',
+ 'add' => 'Toevoegen',
+ ],
+ 'migration' => [
+ 'entity_name' => 'Migratie',
+ 'error_version_invalid' => 'Het versienummer moet voldoen aan het formaat 1.0.1',
+ 'field_version' => 'Versie',
+ 'field_description' => 'Omschrijving',
+ 'field_code' => 'Code',
+ 'save_and_apply' => 'Opslaan & toepassen',
+ 'error_version_exists' => 'De migratie-versie bestaat reeds.',
+ 'error_script_filename_invalid' => 'De bestandsnaam van de migratie kan alleen letters, getallen en underscores bevatten. De naam moet beginnen met een letter en mag geen spaties bevatten.',
+ 'error_cannot_change_version_number' => 'Kan het versienummer niet aanpassen voor een reeds toegepaste versie.',
+ 'error_file_must_define_class' => 'De migratie code moet een migratie of een seeder class definieren. Laat het code veld leeg als je alleen het versienummer wilt bijwerken.',
+ 'error_file_must_define_namespace' => 'De migratie code moet een namespace definieren. Laat het code veld leeg als je alleen het versienummer wilt bijwerken.',
+ 'no_changes_to_save' => 'Er zijn geen wijzigingen om op te slaan.',
+ 'error_namespace_mismatch' => 'The migratie code moet de plugin namespace :namespace gebruiken.',
+ 'error_migration_file_exists' => 'Het migratie bestand :file bestaat reeds. Gebruik een andere klasse naam.',
+ 'error_cant_delete_applied' => 'Deze versie is reeds toegepast en kan daarom niet worden verwijderd. Ga eerst terug naar deze versie (rollback).',
+ ],
+ 'components' => [
+ 'list_title' => 'Record lijst',
+ 'list_description' => 'Toont een lijst van records voor geselecteerde model.',
+ 'list_page_number' => 'Paginanummer',
+ 'list_page_number_description' => 'De waarde hiervan wordt gebruikt om te bepalen op welke pagina de gebruiker zit.',
+ 'list_records_per_page' => 'Records per pagina',
+ 'list_records_per_page_description' => 'Het aantal records wat per pagina moet worden weergegeven. Laat leeg om paginatie uit te schakelen.',
+ 'list_records_per_page_validation' => 'Ongeldige waarde. Het aantal records per pagina moet worden aangegeven met een nummer.',
+ 'list_no_records' => 'Bericht bij geen records',
+ 'list_no_records_description' => 'Bericht wat moet worden weergegeven als er geen records zijn.',
+ 'list_no_records_default' => 'Geen records gevonden',
+ 'list_sort_column' => 'Sorteer op kolom',
+ 'list_sort_column_description' => 'Kolom van model waarop de records gesorteerd moeten worden.',
+ 'list_sort_direction' => 'Sorteerrichting',
+ 'list_display_column' => 'Weergave kolom',
+ 'list_display_column_description' => 'Kolom die moet worden weergegeven in de lijst.',
+ 'list_display_column_required' => 'Selecteer een weergave kolom.',
+ 'list_details_page' => 'Detailpagina',
+ 'list_details_page_description' => 'Pagina waarop record details worden weergegeven.',
+ 'list_details_page_no' => '-- Geen detailpagina --',
+ 'list_sorting' => 'Sortering',
+ 'list_pagination' => 'Paginatie',
+ 'list_order_direction_asc' => 'Oplopend',
+ 'list_order_direction_desc' => 'Aflopend',
+ 'list_model' => 'Model class',
+ 'list_scope' => 'Scope',
+ 'list_scope_description' => 'Model scope waarin de records moeten worden opgevraagd (optioneel).',
+ 'list_scope_default' => '-- Selecteer een scope (optioneel) --',
+ 'list_details_page_link' => 'Link naar de detailpagina',
+ 'list_details_key_column' => 'Detail sleutelkolom',
+ 'list_details_key_column_description' => 'Model kolom die moet worden gebruikt als record ID in de detailpagina links.',
+ 'list_details_url_parameter' => 'URL parameter naam',
+ 'list_details_url_parameter_description' => 'Naam van de detailpagina URL parameter. De parameter bevat het record ID.',
+ 'details_title' => 'Record details',
+ 'details_description' => 'Toont record details voor een geselecteerd model.',
+ 'details_model' => 'Model class',
+ 'details_identifier_value' => 'ID-waarde',
+ 'details_identifier_value_description' => 'ID-waarde waarmee het record wordt opgevraagd uit de database. Geef een vaste waarde op of een parameter naam voor in de URL.',
+ 'details_identifier_value_required' => 'De ID-waarde mag niet leeg zijn.',
+ 'details_key_column' => 'Sleutelkolom',
+ 'details_key_column_description' => 'De kolom die gebruikt moet worden om het record (met ID-waarde) uit de database te kunnen opvragen.',
+ 'details_key_column_required' => 'De sleutelkolom mag niet leeg zijn.',
+ 'details_display_column' => 'Weergave kolom',
+ 'details_display_column_description' => 'De kolom uit het model die moet worden weergegeven op de detailpagina.',
+ 'details_display_column_required' => 'Selecteer de weergave kolom.',
+ 'details_not_found_message' => 'Bericht voor niet gevonden',
+ 'details_not_found_message_description' => 'Bericht wat moet worden weergegeven als het record niet is gevonden.',
+ 'details_not_found_message_default' => 'Record niet gevonden',
+ ],
];
diff --git a/plugins/rainlab/builder/lang/pl.json b/plugins/rainlab/builder/lang/pl.json
deleted file mode 100644
index 3456ec1..0000000
--- a/plugins/rainlab/builder/lang/pl.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "Provides visual tools for building October plugins.": "Wizualne narzędzia do tworzenia wtyczek dla October CMS."
-}
\ No newline at end of file
diff --git a/plugins/rainlab/builder/lang/pl/lang.php b/plugins/rainlab/builder/lang/pl/lang.php
index 9931000..d12538c 100644
--- a/plugins/rainlab/builder/lang/pl/lang.php
+++ b/plugins/rainlab/builder/lang/pl/lang.php
@@ -1,688 +1,698 @@
- [
- 'add' => 'Utwórz wtyczkę',
- 'no_records' => 'Nie znaleziono wtyczek',
- 'no_name' => 'Brak nazwy',
- 'search' => 'Szukaj...',
- 'filter_description' => 'Wyświetl wszystkie wtyczki lub tylko twoje wtyczki.',
- 'settings' => 'Ustawienia',
- 'entity_name' => 'Wtyczka',
- 'field_name' => 'Nazwa',
- 'field_author' => 'Autor',
- 'field_description' => 'Opis',
- 'field_icon' => 'Ikona wtyczki',
- 'field_plugin_namespace' => 'Przestrzeń nazw wtyczki',
- 'field_author_namespace' => 'Przestrzeń nazw autora',
- 'field_namespace_description' => 'Przestrzeń nazw może zawierać tylko litery alfabetu łacińskiego oraz cyfry i powinna się zaczynać na literę z alfabetu łacińskiego. Przykładowa przestrzeń nazw: Blog',
- 'field_author_namespace_description' => 'Nie możesz zmienić przestrzeni nazw za pomocą Buildera po utworzeniu wtyczki. Przykładowa przestrzeń nazw autora: JohnSmith',
- 'tab_general' => 'Parametry ogólne',
- 'tab_description' => 'Opis',
- 'field_homepage' => 'Strona domowa wtyczki',
- 'no_description' => 'Brak opisu dla tej wtyczki',
- 'error_settings_not_editable' => 'Ustawienia tej wtyczki nie mogą być zmienione za pomocą Buildera.',
- 'update_hint' => 'Możesz zmienić zlokalizowaną nazwę oraz opis wtyczki w zakładce Lokalizacja.',
- 'manage_plugins' => 'Twórz i edytuj wtyczki',
- ],
- 'author_name' => [
- 'title' => 'Autor',
- 'description' => 'Domyślna nazwa autora używana przy tworzeniu nowych wtyczek. Nazwa autora nie jest stała - możesz ją zmienić podczas konfiguracji wtyczek w dowolnym momencie.',
- ],
- 'author_namespace' => [
- 'title' => 'Przestrzeń nazw autora',
- 'description' => 'Jeżeli tworzysz wtyczki dla Marketplace, przestrzeń nazw powinna być zgodna z kodem autora i nie można jej zmienić. Szczegółowe informacje na ten temat można znaleźć w dokumentacji.',
- ],
- 'database' => [
- 'menu_label' => 'Baza danych',
- 'no_records' => 'Nie znaleziono tabel',
- 'search' => 'Szukaj...',
- 'confirmation_delete_multiple' => 'Usunąć wybrane tabele?',
- 'field_name' => 'Nazwa tabeli',
- 'tab_columns' => 'Kolumny',
- 'column_name_name' => 'Kolumna',
- 'column_name_required' => 'Podaj nazwę kolumny',
- 'column_name_type' => 'Typ',
- 'column_type_required' => 'Please typ kolumny',
- 'column_name_length' => 'Długość',
- 'column_validation_length' => 'Długość powinna być liczbą całkowitą lub być określona poprzez dokładność i skalę (10,2) dla kolumn typu Decimal. Spacje nie są dozwolone w tej kolumnie.',
- 'column_validation_title' => 'Tylko cyfry, małe litery alfabetu łacińskiego oraz podkreślenia są dozwolone w nazwach kolumn',
- 'column_default' => 'Wartość domyślna',
- 'tab_new_table' => 'Nowa tabela',
- 'btn_add_column' => 'Dodaj kolumnę',
- 'btn_delete_column' => 'Usuń kolumnę',
- 'btn_add_timestamps' => 'Dodaj znaczniki czasu (Timestamps)',
- 'btn_add_soft_deleting' => 'Dodaj obsługę miękkiego usuwania (Soft deleting)',
- 'timestamps_exist' => 'Kolumny created_at oraz deleted_at istnieją już w tabeli.',
- 'soft_deleting_exist' => 'Kolumna deleted_at istnieje już w tabeli.',
- 'confirm_delete' => 'Usunąć tabelę?',
- 'error_enum_not_supported' => 'Tabela zawiera przynajmniej jedną kolumnę typu "enum", który nie jest aktualnie obsługiwany przez Buildera.',
- 'error_table_name_invalid_prefix' => 'Nazwa tabeli powinna się zaczynać od prefiksu wtyczki: \':prefix\'.',
- 'error_table_name_invalid_characters' => 'Nieprawidłowa nazwa tabeli. Nazwy tabel powinny zawierać tylko małe litery alfabetu łacińskiego, cyfry oraz podkreślenia. Nazwy powinny zaczynać się od litery alfabetu łacińskiego i nie powinny zawierać spacji.',
- 'error_table_duplicate_column' => 'Kolumna \':column\' już istnieje.',
- 'error_table_auto_increment_in_compound_pk' => 'Kolumna Auto-increment nie może być częścią złożonego klucza głównego.',
- 'error_table_mutliple_auto_increment' => 'Tabela nie może zawierać więcej niż jednej kolumny Auto-increment.',
- 'error_table_auto_increment_non_integer' => 'Kolumna Auto-increment powinna być typu integer.',
- 'error_table_decimal_length' => 'Długośc dla typu :type powinna być w formacie \'10,2\' i nie zawierać spacji.',
- 'error_table_length' => 'Długość dla typu :type powinna być podana jako liczba całkowita.',
- 'error_unsigned_type_not_int' => 'Błąd kolumny \':column\'. Flaga Unsigned może być ustawiona tylko dla kolumn typu integer.',
- 'error_integer_default_value' => 'Niepoprawna wartość domyślna dla kolumny \':column\'. Dozwolone formaty to \'10\', \'-10\'.',
- 'error_decimal_default_value' => 'Niepoprawna wartość domyślna dla kolumny \':column\'. Dozwolone formaty to \'1.00\', \'-1.00\'.',
- 'error_boolean_default_value' => 'Niepoprawna wartość domyślna dla kolumny \':column\'. Dozwolone wartości to \'0\' oraz \'1\'.',
- 'error_unsigned_negative_value' => 'Wartość domyślna dla kolumny \':column\' z flagą Unsigned nie może być ujemna.',
- 'error_table_already_exists' => 'Tabela o nazwie \':name\' już istnieje w bazie danych',
- 'error_table_name_too_long' => 'Nazwa tabeli nie powinna być dłuższa nić 64 znaki.',
- 'error_column_name_too_long' => 'Nazwa kolumny \':column\' jest za długa. Nazwy kolumn nie powinny być dłuższe niż 64 znaki.',
- ],
- 'model' => [
- 'menu_label' => 'Modele',
- 'entity_name' => 'Model',
- 'no_records' => 'Nie znaleziono modeli',
- 'search' => 'Szukaj...',
- 'add' => 'Dodaj...',
- 'forms' => 'Formularze',
- 'lists' => 'Listy',
- 'field_class_name' => 'Nazwa klasy',
- 'field_database_table' => 'Tabela bazy danych',
- 'field_add_timestamps' => 'Dodaj wsparcie dla znaczników czasu (Timestamps)',
- 'field_add_timestamps_description' => 'Tabela musi posiadać kolumny created_at oraz updated_at.',
- 'field_add_soft_deleting' => 'Dodaj wsparcie dla miękkiego usuwania (Soft deleting).',
- 'field_add_soft_deleting_description' => 'Tabela musi posiadać kolumnę deleted_at.',
- 'error_class_name_exists' => 'Istnieje już model o podanej nazwie klasy.: :path',
- 'error_timestamp_columns_must_exist' => 'Tabela musi posiadać kolumny created_at oraz updated_at.',
- 'error_deleted_at_column_must_exist' => 'Tabela musi posiadać kolumnę deleted_at.',
- 'add_form' => 'Dodaj formularz',
- 'add_list' => 'Dodaj listę',
- ],
- 'form' => [
- 'saved' => 'Zapisano formularz',
- 'confirm_delete' => 'Usunąć formularz?',
- 'tab_new_form' => 'Nowy formularz',
- 'property_label_title' => 'Etykieta',
- 'property_label_required' => 'Podaj tekst etykiety elementu.',
- 'property_span_title' => 'Rozpiętość',
- 'property_comment_title' => 'Komentarz',
- 'property_comment_above_title' => 'Komentarz górny',
- 'property_default_title' => 'Wartość domyślna',
- 'property_checked_default_title' => 'Domyślnie zaznaczone',
- 'property_css_class_title' => 'Klasa CSS',
- 'property_css_class_description' => 'Opcjonalna klasa CSS dla kontenera.',
- 'property_disabled_title' => 'Wyłączone',
- 'property_read_only_title' => 'Tylko do odczytu',
- 'property_hidden_title' => 'Ukryte',
- 'property_required_title' => 'Wymagane',
- 'property_field_name_title' => 'Nazwa pola',
- 'property_placeholder_title' => 'Symbol zastępczy',
- 'property_default_from_title' => 'Wartość domyślna z',
- 'property_stretch_title' => 'Stretch',
- 'property_stretch_description' => 'Specifies if this field stretches to fit the parent height.',
- 'property_context_title' => 'Kontekst',
- 'property_context_description' => 'Określa w jakim kontekście pole formularza będzie widoczne.',
- 'property_context_create' => 'Stwórz',
- 'property_context_update' => 'Edytuj',
- 'property_context_preview' => 'Podgląd',
- 'property_dependson_title' => 'Zależy od',
- 'property_trigger_action' => 'Akcja',
- 'property_trigger_show' => 'Pokaż',
- 'property_trigger_hide' => 'Ukryj',
- 'property_trigger_enable' => 'Włącz',
- 'property_trigger_disable' => 'Wyłącz',
- 'property_trigger_empty' => 'Puste',
- 'property_trigger_field' => 'Pole',
- 'property_trigger_field_description' => 'Określa nazwę drugiego pola które wyzwoli akcję.',
- 'property_trigger_condition' => 'Warunek',
- 'property_trigger_condition_description' => 'Określa warunek, który pole powinno spełniać, aby warunek był uznany za prawdziwy (true). Obsługiwane wartości to: checked, unchedked, value[wartość].',
- 'property_trigger_condition_checked' => 'Zaznaczony',
- 'property_trigger_condition_unchecked' => 'Odznaczony',
- 'property_trigger_condition_somevalue' => 'value[wprowadź-wartość-tutaj]',
- 'property_preset_title' => 'Preset',
- 'property_preset_description' => 'Umożliwia ustawienie początkowej wartości pola na podstawie wartości innego pola przy użyciu wybranego konwertera.',
- 'property_preset_field' => 'Pole',
- 'property_preset_field_description' => 'Określa nazwę pola, z którego będzie pobierana wartość.',
- 'property_preset_type' => 'Typ',
- 'property_preset_type_description' => 'Określa typ konwertera',
- 'property_attributes_title' => 'Atrybuty',
- 'property_attributes_description' => 'Niestandardowe atrybuty HTML, które będą dodane do elementu formularza.',
- 'property_container_attributes_title' => 'Atrybuty kontenera',
- 'property_container_attributes_description' => 'Niestandardowe atrybuty HTML, które będą dodane do kontenera elementu.',
- 'property_group_advanced' => 'Zaawansowane',
- 'property_dependson_description' => 'Lista nazw pól, od których zależy to pole. Po ich zmianie to pole zostanie zaktualizowane. Jedno pole na linię.',
- 'property_trigger_title' => 'Wyzwalacz',
- 'property_trigger_description' => 'Pozwala zmieniać atrybuty elementów, takie jak widocznośc lub wartość, w zależności od stanu innych elementów.',
- 'property_default_from_description' => 'Pobiera wartość domyślną z wartości innego pola.',
- 'property_field_name_required' => 'Nazwa pola jest wymagana',
- 'property_field_name_regex' => 'Nazwa pola może zawierać tylko litery alfabetu łacińskiego, cyfry, podkreślenia, myślniki oraz nawiasy prostokątne.',
- 'property_attributes_size' => 'Rozmiar',
- 'property_attributes_size_tiny' => 'Malutki',
- 'property_attributes_size_small' => 'Mały',
- 'property_attributes_size_large' => 'Duży',
- 'property_attributes_size_huge' => 'Ogromny',
- 'property_attributes_size_giant' => 'Gigantyczny',
- 'property_comment_position' => 'Pozycja komentarza',
- 'property_comment_position_above' => 'Powyżej',
- 'property_comment_position_below' => 'Poniżej',
- 'property_hint_path' => 'Ścieżka fragmentu podpowiedzi',
- 'property_hint_path_description' => 'Ścieżka do pliku fragmentu zawierającego tekst podpowiedzi. Użyj symbolu $ aby odnieść się do katalogu głównego wtyczek, np.: $/acme/blog/parts/_partial.htm',
- 'property_hint_path_required' => 'Podaj ścieżkę do pliku fragmentu z podpowiedzią',
- 'property_partial_path' => 'Ścieżka fragmentu',
- 'property_partial_path_description' => 'Ścieżka do pliku fragmentu. Użyj symbolu $ aby odnieść się do katalogu głównego wtyczek, np.: $/acme/blog/parts/_partial.htm',
- 'property_partial_path_required' => 'Podaj ścieżkę do pliku fragmentu',
- 'property_code_language' => 'Język',
- 'property_code_theme' => 'Motyw',
- 'property_theme_use_default' => 'Użyj domyślnego motywu',
- 'property_group_code_editor' => 'Edytor kodu',
- 'property_gutter' => 'Odstęp',
- 'property_gutter_show' => 'Widoczny',
- 'property_gutter_hide' => 'Ukryty',
- 'property_wordwrap' => 'Zawijanie tekstu',
- 'property_wordwrap_wrap' => 'Zawijaj',
- 'property_wordwrap_nowrap' => 'Nie zawijaj',
- 'property_fontsize' => 'Rozmiar czcionki',
- 'property_codefolding' => 'Zwijanie kodu',
- 'property_codefolding_manual' => 'Ręczne',
- 'property_codefolding_markbegin' => 'Zaznacz początek',
- 'property_codefolding_markbeginend' => 'Zaznacz początek i koniec',
- 'property_autoclosing' => 'Auto zamykanie',
- 'property_enabled' => 'Włączone',
- 'property_disabled' => 'Wyłączone',
- 'property_soft_tabs' => '"Miękkie" karty',
- 'property_tab_size' => 'Rozmiar karty',
- 'property_readonly' => 'Tylko do odczytu',
- 'property_use_default' => 'Użyj domyślnych ustawień',
- 'property_options' => 'Opcje',
- 'property_prompt' => 'Zachęta',
- 'property_prompt_description' => 'Tekst do wyświetlenia na przycisku utwórz.',
- 'property_prompt_default' => 'Dodaj nowy element',
- 'property_available_colors' => 'Dostępne kolory',
- 'property_available_colors_description' => 'Lista dostępnych kolorów w formacie heksadecymalnym (#FF0000). Pozostaw puste dla domyślnego zestawu kolorów. Jedna wartość na wiersz.',
- 'property_datepicker_mode' => 'Tryb',
- 'property_datepicker_mode_date' => 'Data',
- 'property_datepicker_mode_datetime' => 'Data i czas',
- 'property_datepicker_mode_time' => 'Czas',
- 'property_datepicker_min_date' => 'Najwcześniejsza data',
- 'property_datepicker_max_date' => 'Najpóźniejsza data',
- 'property_datepicker_year_range' => 'Zakres lat',
- 'property_datepicker_year_range_description' => 'Liczba lat z obu stron zakresu (np. "10") lub dolny i górny zakres w tablicy (np. "[1900,2015]"). Pozostaw puste dla wartości domyślnej (10).',
- 'property_datepicker_year_range_invalid_format' => 'Nieprawidłowy format zakresu lat. Użyj liczby (np. "10") lub dolnego i górnego zakresu w tablicy (np. "[1900,2015]")',
- 'property_datepicker_format' => 'Format',
- 'property_datepicker_year_format_description' => 'Zdefiniuj niestandardowy format daty. Domyślny format to "Y-m-d"',
- 'property_fileupload_mode' => 'Tryb',
- 'property_fileupload_mode_file' => 'Plik',
- 'property_fileupload_mode_image' => 'Obraz',
- 'property_group_fileupload' => 'Przesyłanie pliku',
- 'property_fileupload_image_width' => 'Szerokość obrazu',
- 'property_fileupload_image_width_description' => 'Opcjonalne. Obrazy będą przeskalowane do tej szerokości. Dotyczy tylko trybu Obraz.',
- 'property_fileupload_invalid_dimension' => 'Niepoprawny rozmiar - wprowadź liczbę.',
- 'property_fileupload_image_height' => 'Wysokość obrazu',
- 'property_fileupload_image_height_description' => 'Opcjonalne. obrazy będą przeskalowane do tej wysokości. Dotyczy tylko trybu Obraz.',
- 'property_fileupload_file_types' => 'Rozszerzenia plików',
- 'property_fileupload_file_types_description' => 'Opcjonalne. Lista akceptowanych rozszerzeń plików rozdzielona przecinkami. Przykład: zip,txt',
- 'property_fileupload_mime_types' => 'Typy MIME',
- 'property_fileupload_mime_types_description' => 'Opcjonalne. Lista akceptowanych typów MIME rozdzielona przecinkami, podane jako rozszerzenia plików lub pełne nazwy. Przykład: bin,txt',
- 'property_fileupload_use_caption' => 'Użyj podpisu',
- 'property_fileupload_use_caption_description' => 'Umożliwia ustawienie tytułu i opisu pliku.',
- 'property_fileupload_thumb_options' => 'Opcje miniatur',
- 'property_fileupload_thumb_options_description' => 'Zarządza opcjami automatycznie generowanych miniatur. Dotyczy tylko trybu Obraz.',
- 'property_fileupload_thumb_mode' => 'Tryb',
- 'property_fileupload_thumb_auto' => 'Automatyczny',
- 'property_fileupload_thumb_exact' => 'Dokładny',
- 'property_fileupload_thumb_portrait' => 'Pionowy',
- 'property_fileupload_thumb_landscape' => 'Poziomy',
- 'property_fileupload_thumb_crop' => 'Przytnij',
- 'property_fileupload_thumb_extension' => 'Rozszerzenie pliku',
- 'property_name_from' => 'Kolumna nazwy',
- 'property_name_from_description' => 'Nazwa kolumny w relacji używana do wyświetlania nazwy',
- 'property_relation_select' => 'Wybierz',
- 'property_relation_select_description' => 'Połącz (CONCAT) wiele kolumn do wyświetlania nazwy',
- 'property_description_from' => 'Kolumna opisu',
- 'property_description_from_description' => 'Nazwa kolumny w relacji używana do wyświetlania opisu',
- 'property_recordfinder_prompt' => 'Zachęta',
- 'property_recordfinder_prompt_description' => 'Tekst, który zostanie wyświetlony, gdy nie wybrano żadnego rekordu. Znak %s reprezentuje ikonę wyszukiwania. Pozostaw puste dla domyślnej zachęty.',
- 'property_recordfinder_list' => 'Konfiguracja listy',
- 'property_recordfinder_list_description' => 'Ścieżka do pliku konfiguracyjnego kolumny listy. Użyj symbolu $ aby odnieść się do katalogu głównego wtyczek, np.: $/acme/blog/parts/_partial.htm',
- 'property_recordfinder_list_required' => 'Podaj ścieżkę do pliku YAML listy',
- 'property_group_recordfinder' => 'Wyszukiwarka rekordów',
- 'property_mediafinder_mode' => 'Tryb',
- 'property_mediafinder_mode_file' => 'Plik',
- 'property_mediafinder_mode_image' => 'Obraz',
- 'property_mediafinder_image_width_description' => 'Opcjonalne. Jeżeli używasz trybu "Obraz", pogląd zostanie wyświetlony do tej szerokości.',
- 'property_mediafinder_image_height_description' => 'Opcjonalne. Jeżeli używasz trybu "Obraz", pogląd zostanie wyświetlony do tej wysokości.',
- 'property_group_taglist' => 'Lista tagów',
- 'property_taglist_mode' => 'Tryb',
- 'property_taglist_mode_description' => 'Określa format w jakim zwracana jest wartość pola',
- 'property_taglist_mode_string' => 'Ciąg znaków',
- 'property_taglist_mode_array' => 'Tablica',
- 'property_taglist_mode_relation' => 'Relacja',
- 'property_taglist_separator' => 'Separator',
- 'property_taglist_separator_comma' => 'Przecinki',
- 'property_taglist_separator_space' => 'Spacje',
- 'property_taglist_options' => 'Predefiniowane tagi',
- 'property_taglist_custom_tags' => 'Niestandardowe tagi',
- 'property_taglist_custom_tags_description' => 'Zezwala na ręczne wprowadzanie niestandardowych tagów przez użytkownika.',
- 'property_taglist_name_from' => 'Nazwa z',
- 'property_taglist_name_from_description' => 'Określa atrybut modelu relacji wyświetlany w znaczniku. Używany tylko w trybie "Relacja".',
- 'property_taglist_use_key' => 'Użyj klucza',
- 'property_taglist_use_key_description' => 'Jeśli zaznaczone, lista tagów użyje klucza zamiast wartości do zapisu i odczytu danych. Używany tylko w trybie "Relacja".',
- 'property_group_relation' => 'Relacja',
- 'property_relation_prompt' => 'Zachęta',
- 'property_relation_prompt_description' => 'Tekst wyświetlany, gdy nie ma dostępnych opcji.',
- 'property_empty_option' => 'Pusta opcja',
- 'property_empty_option_description' => 'Pusta opcja odpowiada pustemu wyborowi, jednakże w przeciwieństwie do niego może być ponownie wybrana.',
- 'property_show_search' => 'Włącz wyszukiwanie',
- 'property_show_search_description' => 'Włącza funkcję wyszukiwania dla tej listy.',
- 'property_max_items' => 'Maksymalna liczba elementów',
- 'property_max_items_description' => 'Maksymalna liczba elementów dozwolona w repeaterze.',
- 'control_group_standard' => 'Standardowe kontrolki',
- 'control_group_widgets' => 'Widżety',
- 'click_to_add_control' => 'Dodaj kontrolkę',
- 'loading' => 'Ładowanie...',
- 'control_text' => 'Tekst',
- 'control_text_description' => 'Jednowierszowe pole tekstowe',
- 'control_password' => 'Hasło',
- 'control_password_description' => 'Jednowierszowe pole hasła',
- 'control_checkbox' => 'Pole wyboru',
- 'control_checkbox_description' => 'Pojedyncze pole wyboru',
- 'control_switch' => 'Przełącznik',
- 'control_switch_description' => 'Pojedynczy przełącznik. Alternatywa dla pola wyboru',
- 'control_textarea' => 'Pole tekstowe',
- 'control_textarea_description' => 'Wielowierszowe pole tekstowe o kontrolowanej wysokości',
- 'control_dropdown' => 'Lista rozwijana',
- 'control_dropdown_description' => 'Lista rozwijana ze statycznymi lub dynamicznie ładowanymi opcjami',
- 'control_balloon-selector' => 'Selektor typu Balloon',
- 'control_balloon-selector_description' => 'Lista ze statycznymi lub dynamicznie ładowanymi opcjami, w której jednocześnie może być wybrany tylko jeden element',
- 'control_unknown' => 'Nieznany rodzaj elementu: :type',
- 'control_repeater' => 'Repeater',
- 'control_repeater_description' => 'Wyświetla zestaw powtarzających się elementów formularza',
- 'control_number' => 'Numer',
- 'control_number_description' => 'Jednowierszowe pole tekstowe, przyjmujące jedynie liczby',
- 'control_hint' => 'Podpowiedź',
- 'control_hint_description' => 'Wyświetla zawartość fragmentu w elemencie, który może być ukryty przez użytkownika',
- 'control_partial' => 'Fragment',
- 'control_partial_description' => 'Wyświetla zawartość fragmentu',
- 'control_section' => 'Sekcja',
- 'control_section_description' => 'Wyświetla sekcję z tytułem i podtytułem',
- 'control_radio' => 'Lista pól opcji',
- 'control_radio_description' => 'Lista pól opcji, w której jednocześnie może być wybrany tylko jeden element',
- 'control_radio_option_1' => 'Opcja 1',
- 'control_radio_option_2' => 'Opcja 2',
- 'control_checkboxlist' => 'Lista pól wyboru',
- 'control_checkboxlist_description' => 'Lista pól wyboru, w której jednocześnie może być wybrane kilka elementów',
- 'control_codeeditor' => 'Edytor kodu',
- 'control_codeeditor_description' => 'Edytor tekstowy sformatowanego kodu lub znaczników',
- 'control_colorpicker' => 'Próbnik koloru',
- 'control_colorpicker_description' => 'Pole wyboru koloru w wartości heksadecymalnej',
- 'control_datepicker' => 'Wybór daty',
- 'control_datepicker_description' => 'Pole tekstowe używane do wyboru daty i godziny',
- 'control_richeditor' => 'Edytor WYSYWIG',
- 'control_richeditor_description' => 'Edytor wizualny tekstu sformatowanego',
- 'control_markdown' => 'Edytor Markdown',
- 'control_markdown_description' => 'Edytor tekstu sformatowanego za pomocą Markdown',
- 'control_taglist' => 'Lista tagów',
- 'control_taglist_description' => 'Pole do wprowadzania listy tagów',
- 'control_fileupload' => 'Prześlij plik',
- 'control_fileupload_description' => 'Pole do przesyłania obrazów lub zwykłych plików',
- 'control_recordfinder' => 'Wyszukiwarka rekordów',
- 'control_recordfinder_description' => 'Pole ze szcegółami powiązanego rekordu z funkcją wyszukiwania rekordów',
- 'control_mediafinder' => 'Wyszukiwarka mediów',
- 'control_mediafinder_description' => 'Pole wyboru elementu z biblioteki mediów',
- 'control_relation' => 'Relacja',
- 'control_relation_description' => 'Wyświetla listę rozwijaną lub listę pól wyboru w celu wybrania powiązanego rekordu',
- 'error_file_name_required' => 'Wprowadź nazwę pliku formularza.',
- 'error_file_name_invalid' => 'Nazwa pliku może zawierać jedynie litery alfabetu łacińskiego, cyfry, podkreślenia, kropki i krzyżyki.',
- 'span_left' => 'Lewo',
- 'span_right' => 'Prawo',
- 'span_full' => 'Cała szerokość',
- 'span_auto' => 'Auto',
- 'empty_tab' => 'Pusta karta',
- 'confirm_close_tab' => 'Zakładka zawiera elementy, które zostaną usunięte. Czy kontynuować?',
- 'tab' => 'Karta formularza',
- 'tab_title' => 'Tytuł',
- 'controls' => 'Kontrolki',
- 'property_tab_title_required' => 'Tytuł karty jest wymagany.',
- 'tabs_primary' => 'Zakładki główne',
- 'tabs_secondary' => 'Zakładki dodatkowe',
- 'tab_stretch' => 'Rozciągnięcie',
- 'tab_stretch_description' => 'Określa czy kontener kart rozciąga się, aby pasować do wysokości rodzica.',
- 'tab_css_class' => 'Klasa CSS',
- 'tab_css_class_description' => 'Przypisuje klasę CSS do kontenera kart.',
- 'tab_name_template' => 'Karta %s',
- 'tab_already_exists' => 'Tab with the specified title already exists.',
- ],
- 'list' => [
- 'tab_new_list' => 'Nowa lista',
- 'saved' => 'Zapisano listę',
- 'confirm_delete' => 'Usunąć listę?',
- 'tab_columns' => 'Kolumny',
- 'btn_add_column' => 'Dodaj kolumnę',
- 'btn_delete_column' => 'Usuń kolumnę',
- 'column_dbfield_label' => 'Pola',
- 'column_dbfield_required' => 'Podaj pole modelu',
- 'column_name_label' => 'Etykieta',
- 'column_label_required' => 'Podaj etykietę kolumny',
- 'column_type_label' => 'Type',
- 'column_type_required' => 'Podaj typ kolumny',
- 'column_type_text' => 'Tekst',
- 'column_type_number' => 'Numer',
- 'column_type_switch' => 'Przełącznik',
- 'column_type_datetime' => 'Data/Czas',
- 'column_type_date' => 'Data',
- 'column_type_time' => 'Czas',
- 'column_type_timesince' => 'Czas od',
- 'column_type_timetense' => 'Określenie czasu',
- 'column_type_select' => 'Lista elementów',
- 'column_type_partial' => 'Fragment',
- 'column_label_default' => 'Domyślny',
- 'column_label_searchable' => 'Szukaj',
- 'column_label_sortable' => 'Sortuj',
- 'column_label_invisible' => 'Niewidoczny',
- 'column_label_select' => 'Wybierz',
- 'column_label_relation' => 'Relacja',
- 'column_label_css_class' => 'Klasa CSS',
- 'column_label_width' => 'Szerokość',
- 'column_label_path' => 'Ścieżka',
- 'column_label_format' => 'Format',
- 'column_label_value_from' => 'Wartość z',
- 'error_duplicate_column' => 'Kolumna \':column\' już istnieje.',
- 'btn_add_database_columns' => 'Dodaj kolumny z bazy danych',
- 'all_database_columns_exist' => 'Wszystkie kolumny są już zdefiniowane na liście',
- ],
- 'controller' => [
- 'menu_label' => 'Kontrolery',
- 'no_records' => 'Nie znaleziono kontrolerów',
- 'controller' => 'Kontroler',
- 'behaviors' => 'Zachowania',
- 'new_controller' => 'Nowy kontroler',
- 'error_controller_has_no_behaviors' => 'Kontroler nie posiada konfigurowalnych zachowań.',
- 'error_invalid_yaml_configuration' => 'Wystąpił błąd podczas ładowania pliku konfiguracji zachowania :file',
- 'behavior_form_controller' => 'Zachowanie - Form Controller',
- 'behavior_form_controller_description' => 'Dodaje funkcjonalność do strony backendu. Zapewnia strony Utwórz, Edytuj, Podgląd.',
- 'property_behavior_form_placeholder' => '--wybierz formularz--',
- 'property_behavior_form_name' => 'Nazwa',
- 'property_behavior_form_name_description' => 'Nazwa obiektu zarządzanego przez ten formularz',
- 'property_behavior_form_name_required' => 'Wprowadź nazwę formularza',
- 'property_behavior_form_file' => 'Konfiguracja formularza',
- 'property_behavior_form_file_description' => 'Odwołanie do pliku konfiguracyjnego formularza',
- 'property_behavior_form_file_required' => 'Wprowadź ścieżkę do pliku konfiguracyjnego formularza',
- 'property_behavior_form_model_class' => 'Klasa modelu',
- 'property_behavior_form_model_class_description' => 'Nazwa klasy modelu. Dane formularza są ładowane i zapisywane używając tego modelu.',
- 'property_behavior_form_model_class_required' => 'Wybierz klasę modelu',
- 'property_behavior_form_default_redirect' => 'Domyślne przekierowanie',
- 'property_behavior_form_default_redirect_description' => 'Strona, na którą zostanie przekierowany użytkownik po zapisaniu lub anulowaniu formularza.',
- 'property_behavior_form_create' => 'Stwórz stronę rekordu',
- 'property_behavior_form_redirect' => 'Przekierowanie',
- 'property_behavior_form_redirect_description' => 'Strona, na którą zostanie przekierowany użytkownik po utworzeniu rekordu.',
- 'property_behavior_form_redirect_close' => 'Przekierowanie po zamknięciu',
- 'property_behavior_form_redirect_close_description' => 'Strona na którą zostanie przekierowany użytkownik po utworzeniu rekordu, gdy zmienna "close" w tablicy POST jest obecna.',
- 'property_behavior_form_flash_save' => 'Komunikat Flash - Zapisano',
- 'property_behavior_form_flash_save_description' => 'Komunikat do wyświetlenia po zapisaniu rekordu.',
- 'property_behavior_form_page_title' => 'Tytuł strony',
- 'property_behavior_form_update' => 'Aktualizuj stronę rekordu',
- 'property_behavior_form_update_redirect' => 'Przekierowanie',
- 'property_behavior_form_create_redirect_description' => 'Strona, na którą zostanie przekierowany użytkownik po zapisaniu rekordu.',
- 'property_behavior_form_flash_delete' => 'Komunikat Flash - Usunięto',
- 'property_behavior_form_flash_delete_description' => 'Komunikat do wyświetlenia po usunięciu rekordu.',
- 'property_behavior_form_preview' => 'Strona podglądu rekordu',
- 'behavior_list_controller' => 'Zachowanie - List Controller',
- 'behavior_list_controller_description' => 'Dodaje funkcjonalność do strony backendu. Zapewnia listę z możliwością sortowania i przeszukiwania i opcjonalnymi linkami do rekordów. Automatycznie tworzy akcję kontrolera "index".',
- 'property_behavior_list_title' => 'Tytuł listy',
- 'property_behavior_list_title_required' => 'Wprowadź tytuł listy',
- 'property_behavior_list_placeholder' => '--wybierz listę--',
- 'property_behavior_list_model_class' => 'Klasa modelu',
- 'property_behavior_list_model_class_description' => 'Nazwa klasy modelu, dane są ładowane z tego modelu.',
- 'property_behavior_form_model_class_placeholder' => '--wybierz model--',
- 'property_behavior_list_model_class_required' => 'Wybierz klasę modelu',
- 'property_behavior_list_model_placeholder' => '--wybierz model--',
- 'property_behavior_list_file' => 'Plik konfiguracyjny listy',
- 'property_behavior_list_file_description' => 'Odwołanie do pliku konfiguracyjnego listy',
- 'property_behavior_list_file_required' => 'Wprowadź ścieżkę do pliku konfiguracyjnego listy',
- 'property_behavior_list_record_url' => 'Adres URL rekordu',
- 'property_behavior_list_record_url_description' => 'Połącz każdy rekord z unikatową stroną. Np.: "users/update/:id". Parametr ":id" będzie zastąpiony identyfikatorem rekordu.',
- 'property_behavior_list_no_records_message' => 'Komunikat o braku rekordów',
- 'property_behavior_list_no_records_message_description' => 'Komunikat, który zostanie wyświetlony w przypadku braku rekordów.',
- 'property_behavior_list_recs_per_page' => 'Rekordy na stronę',
- 'property_behavior_list_recs_per_page_description' => 'Liczba rekordów do wyświetlenia na stronie. Wpisz 0 aby wyłączyć paginację. Wartość domyślna: 0',
- 'property_behavior_list_recs_per_page_regex' => 'Liczba rekordów na stronę powinna być liczbą całkowitą',
- 'property_behavior_list_show_setup' => 'Pokaż przycisk konfiguracji',
- 'property_behavior_list_show_sorting' => 'Pokaż sortowanie',
- 'property_behavior_list_default_sort' => 'Domyślne sortowanie',
- 'property_behavior_form_ds_column' => 'Kolumna',
- 'property_behavior_form_ds_direction' => 'Kierunek',
- 'property_behavior_form_ds_asc' => 'Rosnąco',
- 'property_behavior_form_ds_desc' => 'Malejąco',
- 'property_behavior_list_show_checkboxes' => 'Pokaż pola wyboru',
- 'property_behavior_list_onclick' => 'Kod JS po kliknięciu',
- 'property_behavior_list_onclick_description' => 'Dodatkowy kod JavaScript do wykonania po kliknięciu rekordu.',
- 'property_behavior_list_show_tree' => 'Pokaż drzewo',
- 'property_behavior_list_show_tree_description' => 'Wyświetla hierarchię dla rekordów nadrzędnych / podrzędnych.',
- 'property_behavior_list_tree_expanded' => 'Rozwinięte drzewo',
- 'property_behavior_list_tree_expanded_description' => 'Określa czy gałęzie drzewa powinny być domyślnie rozwinięte.',
- 'property_behavior_list_toolbar' => 'Pasek narzędzi',
- 'property_behavior_list_toolbar_buttons' => 'Fragment z przyciskami',
- 'property_behavior_list_toolbar_buttons_description' => 'Odwołanie do pliku fragmentu z przyciskami paska narzędzi. Np.: list_toolbar',
- 'property_behavior_list_search' => 'Szukaj',
- 'property_behavior_list_search_prompt' => 'Zachęta wyszukiwarki',
- 'property_behavior_list_filter' => 'Konfiguracja filtrów',
- 'behavior_reorder_controller' => 'Zachowanie - Reorder Controller',
- 'behavior_reorder_controller_description' => 'Dodaje funkcjonalność do strony backendu. Zapewnia możliwość sortowania i zmiany kolejności rekordów. Automatycznie tworzy akcję kontrolera "reorder".',
- 'property_behavior_reorder_title' => 'Tekst zmiany kolejności',
- 'property_behavior_reorder_title_required' => 'Wprowadź tekst zmiany kolejności',
- 'property_behavior_reorder_name_from' => 'Nazwa atrybutu',
- 'property_behavior_reorder_name_from_description' => 'Atrybut modelu, który zostanie użyty jako etykieta rekordu.',
- 'property_behavior_reorder_name_from_required' => 'Wprowadź nazwę atrybutu',
- 'property_behavior_reorder_model_class' => 'Klasa modelu',
- 'property_behavior_reorder_model_class_description' => 'Nazwa klasy modelu. Dane są ładowane z tego modelu.',
- 'property_behavior_reorder_model_class_placeholder' => '--wybierz model--',
- 'property_behavior_reorder_model_class_required' => 'Wybierz klasę modelu',
- 'property_behavior_reorder_model_placeholder' => '--wybierz klasę modelu--',
- 'property_behavior_reorder_toolbar' => 'Pasek narzędzi',
- 'property_behavior_reorder_toolbar_buttons' => 'Fragment z przyciskami',
- 'property_behavior_reorder_toolbar_buttons_description' => 'Odwołanie do pliku fragmentu z przyciskami paska narzędzi. Np.: reorder_toolbar',
- 'error_controller_not_found' => 'Plik kontrolera nie został znaleziony.',
- 'error_invalid_config_file_name' => 'Plik konfiguracyjny zachowania :class (:file) zawiera nieprawidłowe znaki i nie może zostać załadowany.',
- 'error_file_not_yaml' => 'Plik konfiguracyjny zachowania :class (:file) nie jest plikiem YAML. Obsługiwane są tylko pliki konfiguracyjne YAML.',
- 'saved' => 'Zapisano kontroler',
- 'controller_name' => 'Nazwa kontrolera',
- 'controller_name_description' => 'Nazwa kontrolera określa nazwę klasy i adres URL stron w backendzie. Obowiązują standardowe konwencje nazewnictwa zmiennych w PHP. Pierwszym znakiem powinna być duża litera alfabetu łacińskiego. Przykłady: Categories, Posts, Products.',
- 'base_model_class' => 'Bazowa klasa modelu',
- 'base_model_class_description' => 'Wybierz klasę modelu, która ma być używana jako model bazowy w zachowaniach które go wymagają lub wspierają. Zachowania możesz skonfigurować później.',
- 'base_model_class_placeholder' => '--wybierz model--',
- 'controller_behaviors' => 'Zachowania',
- 'controller_behaviors_description' => 'Wybierz zachowania, które chcesz zaimplementować w kontrolerze. Builder automatycznie utworzy pliki widoków wymaganych przez zachowania.',
- 'controller_permissions' => 'Uprawnienia',
- 'controller_permissions_description' => 'Wybierz uprawnienia, które pozwolą na dostęp do widoków kontrolera. Uprawnienia można zdefiniować w zakładce "Uprawnienia". Możesz zmienić tę opcję później edytując skrypt PHP kontrolera.',
- 'controller_permissions_no_permissions' => 'Wtyczka nie definiuje żadnych uprawnień.',
- 'menu_item' => 'Aktywny element menu',
- 'menu_item_description' => 'Wybierz element menu dla stron tego kontrolera. Możesz zmienić tę opcję później edytując skrypt PHP kontrolera.',
- 'menu_item_placeholder' => '--wybierz element menu--',
- 'error_unknown_behavior' => 'Klasa zachowania :class nie jest zarejestrowana w bibliotece zachowań.',
- 'error_behavior_view_conflict' => 'Wybrane zachowania implementują sprzeczne ze sobą widoki (:view) i nie mogą być używane razem w jednym kontrolerze.',
- 'error_behavior_config_conflict' => 'Wybrane zachowania implementują sprzeczne pliki konfiguracyjne (:file) i nie mogą być używane razem w jednym kontrolerze.',
- 'error_behavior_view_file_not_found' => 'Nie można znaleźć szablonu widoku zachowania :class w lokalizacji :file.',
- 'error_behavior_config_file_not_found' => 'Nie można znaleźć szablonu konfiguracji zachowania :class w lokalizacji :file.',
- 'error_controller_exists' => 'Plik kontrolera :file już istnieje.',
- 'error_controller_name_invalid' => 'Nieprawidłowy format nazwy kontrolera. Nazwa powinna zawierać tylko cyfry i litery alfabetu łacińskiego. Pierwszym symbolem powinna być duża litera alfabetu łacińskiego.',
- 'error_behavior_view_file_exists' => 'Widok kontrolera :view już istnieje.',
- 'error_behavior_config_file_exists' => 'Plik konfiguracyjny zachowania :file już istnieje.',
- 'error_save_file' => 'Błąd podczas zapisu pliku kontrolera: :file',
- 'error_behavior_requires_base_model' => 'Zachowanie :behavior wymaga wybranej bazowej klasy modelu.',
- 'error_model_doesnt_have_lists' => 'Wybrany model nie posiada żadnych list. Najpierw utwórz listę.',
- 'error_model_doesnt_have_forms' => 'Wybrany model nie posiada żadnych formularzy. Najpierw utwórz formularz.',
- ],
- 'version' => [
- 'menu_label' => 'Wersje',
- 'no_records' => 'Nie znaleziono żadnej wersji wtyczki',
- 'search' => 'Szukaj...',
- 'tab' => 'Wersje',
- 'saved' => 'Zapisano wersję',
- 'confirm_delete' => 'Usunąć wersję?',
- 'tab_new_version' => 'Nowa wersja',
- 'migration' => 'Migracja',
- 'seeder' => 'Seeder',
- 'custom' => 'Zwiększ numer wersji',
- 'apply_version' => 'Zastosuj wersję',
- 'applying' => 'Zastosowywanie...',
- 'rollback_version' => 'Wycofaj wersję',
- 'rolling_back' => 'Wycofywanie...',
- 'applied' => 'Zastosowano wersję',
- 'rolled_back' => 'Wycofano wersję',
- 'hint_save_unapplied' => 'Zapisałeś niezastosowaną wersję. Należy pamiętać, że niezastosowane wersje mogą być automatycznie zastosowane przez system, gdy Ty lub inny użytkownik loguje się do backendu lub gdy tabela bazy danych jest zapisywana w sekcji Baza danych Buildera.',
- 'hint_rollback' => 'Wycofanie wersji spowoduje wycofanie wszystkich nowszych wersji niż ta. Należy pamiętać, że niezastosowane wersje mogą być automatycznie zastosowane przez system, gdy Ty lub inny użytkownik loguje się do backendu lub gdy tabela bazy danych jest zapisywana w sekcji Baza danych Buildera.',
- 'hint_apply' => 'Zastosowanie wersji spowoduje zastosowanie wszystkich poprzednich niezastosowanych wersji',
- 'dont_show_again' => 'Nie pokazuj ponownie',
- 'save_unapplied_version' => 'Zapisz niezastosowaną wersję',
- ],
- 'menu' => [
- 'menu_label' => 'Menu Back-End',
- 'tab' => 'Menu',
- 'items' => 'Elementy menu',
- 'saved' => 'Zapisano menu',
- 'add_main_menu_item' => 'Dodaj element menu głównego',
- 'new_menu_item' => 'Element menu',
- 'add_side_menu_item' => 'Dodaj element podrzędny',
- 'side_menu_item' => 'Element menu bocznego',
- 'property_label' => 'Etykieta',
- 'property_label_required' => 'Podaj etykietę elementu menu.',
- 'property_url_required' => 'Podaj adres URL elementu menu',
- 'property_url' => 'URL',
- 'property_icon' => 'Ikona',
- 'property_icon_required' => 'Wybierz ikonę',
- 'property_permissions' => 'Uprawnienia',
- 'property_order' => 'Kolejność',
- 'property_order_invalid' => 'Podaj kolejność elementu menu jako liczbę całkowitą.',
- 'property_order_description' => 'Kolejność elementu menu ustala jego pozycje w menu. Jeśli kolejność nie jest podana, element zostanie ustawiony na końcu menu. Domyślne wartości kolejności są wielokrotnością liczby 100.',
- 'property_attributes' => 'Atrybuty HTML',
- 'property_code' => 'Kod',
- 'property_code_invalid' => 'Kod powinien zawierać tylko litery alfabetu łacińskiego i cyfry.',
- 'property_code_required' => 'Podaj kod elementu menu.',
- 'error_duplicate_main_menu_code' => 'Kod \':code\' istnieje już w menu głównym.',
- 'error_duplicate_side_menu_code' => 'Kod \':code\' istnieje już w menu bocznym.',
- ],
- 'localization' => [
- 'menu_label' => 'Lokalizacja',
- 'language' => 'Język',
- 'strings' => 'Ciągi znaków',
- 'confirm_delete' => 'Usunąć język?',
- 'tab_new_language' => 'Nowy język',
- 'no_records' => 'Nie znaleziono języków',
- 'saved' => 'Zapisano plik języka',
- 'error_cant_load_file' => 'Nie można załadować pliku tekstowego - nie znaleziono pliku.',
- 'error_bad_localization_file_contents' => 'Nie można załadować pliku tekstowego. Pliki językowe powinny zawierać jedynie definicje tablicy i ciągi znaków.',
- 'error_file_not_array' => 'Nie można załadować pliku tekstowego. Pliki językowe powinny zwracać tablicę.',
- 'save_error' => 'Błąd podczas zapisywania pliku \':name\'. Sprawdź uprawnienia do zapisu.',
- 'error_delete_file' => 'Nie można usunąć pliku językowego.',
- 'add_missing_strings' => 'Dodaj brakujące ciągi znaków',
- 'copy' => 'Kopiuj',
- 'add_missing_strings_label' => 'Wybierz język, z którego chcesz skopiować brakujące ciągi znaków',
- 'no_languages_to_copy_from' => 'Nie ma języków, z których można skopiować ciągi znaków.',
- 'new_string_warning' => 'Nowy ciąg znaków lub sekcja',
- 'structure_mismatch' => 'Struktura pliku języka źródłowego nie zgadza się ze strukturą edytowanego pliku. Niektóre pojedyncze ciągi znaków w edytowanym pliku odpowiadają sekcjom w pliku źródłowym (lub odwrotnie) ie nie można ich scalić automatycznie.',
- 'create_string' => 'Utwórz nowy ciąg znaków',
- 'string_key_label' => 'Klucz',
- 'string_key_comment' => 'Wprowadź klucz używając kropki jako separatora sekcji. Na przykład plugin.search. Ciąg znaków zostanie utworzony w domyślnym pliku językowym wtyczki.',
- 'string_value' => 'Wartość',
- 'string_key_is_empty' => 'Klucz nie powinien być pusty',
- 'string_key_is_a_string' => ':key jest ciągiem znaków i nie może zawierać innych ciągów znaków.',
- 'string_value_is_empty' => 'Wartość nie powinna być pusta',
- 'string_key_exists' => 'Klucz już istnieje',
- ],
- 'permission' => [
- 'menu_label' => 'Uprawnienia',
- 'tab' => 'Uprawnienia',
- 'form_tab_permissions' => 'Uprawnienia',
- 'btn_add_permission' => 'Dodaj uprawnienie',
- 'btn_delete_permission' => 'Usuń uprawnienie',
- 'column_permission_label' => 'Kod uprawnienia',
- 'column_permission_required' => 'Podaj kod uprawnienia',
- 'column_tab_label' => 'Tytuł karty',
- 'column_tab_required' => 'Podaj nazwę karty uprawnienia',
- 'column_label_label' => 'Etykieta',
- 'column_label_required' => 'Podaj etykietę uprawnienia',
- 'saved' => 'Zapisano uprawnienie',
- 'error_duplicate_code' => 'Kod uprawnienia \':code\' już istnieje.',
- ],
- 'yaml' => [
- 'save_error' => 'Błąd podczas zapisywania pliku \':name\'. Sprawdź uprawnienia do zapisu.',
- ],
- 'common' => [
- 'error_file_exists' => 'Plik już istnieje: \':path\'.',
- 'field_icon_description' => 'October używa ikon Font Autumn: http://octobercms.com/docs/ui/icon',
- 'destination_dir_not_exists' => 'Folder docelowy nie istnieje: \':path\'.',
- 'error_make_dir' => 'Błąd podczas tworzenia folderu: \':name\'.',
- 'error_dir_exists' => 'Folder już istnieje: \':path\'.',
- 'template_not_found' => 'Nie znaleziono pliku szablonu: \':name\'.',
- 'error_generating_file' => 'Błąd podczas tworzenia pliku: \':path\'.',
- 'error_loading_template' => 'Błąd podczas ładowania pliku szablonu: \':name\'.',
- 'select_plugin_first' => 'Najpierw wybierz wtyczkę. Aby zobaczyć listę wtyczek kliknij ikonę > w lewym pasku bocznym.',
- 'plugin_not_selected' => 'Nie wybrano wtyczki',
- 'add' => 'Dodaj',
- ],
- 'migration' => [
- 'entity_name' => 'Migracja',
- 'error_version_invalid' => 'Wersja powinna być w formacie 1.0.1',
- 'field_version' => 'Wersja',
- 'field_description' => 'Opis',
- 'field_code' => 'Kod',
- 'save_and_apply' => 'Zapisz & Zastosuj',
- 'error_version_exists' => 'Wersja już istnieje.',
- 'error_script_filename_invalid' => 'Nazwa pliku migracji może zawierać tylko litery z alfabetu łacińskiego, cyfry i podkreślenia. Nazwa powinna zaczynać się od litery z alfabetu łacińskiego i nie może zawierać spacji.',
- 'error_cannot_change_version_number' => 'Nie można zmienić numeru wersji dla zastosowanej wersji',
- 'error_file_must_define_class' => 'Kod migracji powinien definiować klasę migracji lub seedera. Pozostaw pole puste jeśli chcesz tylko zaktualizować numer wersji.',
- 'error_file_must_define_namespace' => 'Kod migracji powinien definiować przestrzeń nazw. Pozostaw pole puste, jeśli chcesz tylko zaktualizować numer wersji.',
- 'no_changes_to_save' => 'Brak zmian do zapisania.',
- 'error_namespace_mismatch' => 'Kod migracji powinien używać przestrzeni nazw wtyczki: :namespace',
- 'error_migration_file_exists' => 'Plik migracji :file już istnieje. Użyj innej nazwy klasy.',
- 'error_cant_delete_applied' => 'Ta wersja została już zastosowana i nie może być usunięta. Wycofaj ją w celu usunięcia.',
- ],
- 'components' => [
- 'list_title' => 'Lista rekordów',
- 'list_description' => 'Wyświetla listę rekordów dla wybranego modelu',
- 'list_page_number' => 'Numer strony',
- 'list_page_number_description' => 'Wartość jest używana aby określić, na której stronie znajduje się użytkownik.',
- 'list_records_per_page' => 'Rekordy na stronę',
- 'list_records_per_page_description' => 'Liczba rekordów do wyświetlenia na stronie. Zostaw puste aby wyłączyć paginację.',
- 'list_records_per_page_validation' => 'Nieprawidłowy format liczby rekordów na stronę. Wartość powinna być liczbą.',
- 'list_no_records' => 'Komunikat o braku rekordów',
- 'list_no_records_description' => 'Komunikat, który zostanie wyświetlony w przypadku braku rekordów. Używany w domyślnym fragmencie komponentu.',
- 'list_no_records_default' => 'Nie znaleziono rekordów',
- 'list_sort_column' => 'Sortuj wg kolumny',
- 'list_sort_column_description' => 'Kolumna modelu wg której będą sortowane rekordy',
- 'list_sort_direction' => 'Kierunek',
- 'list_display_column' => 'Kolumna do wyświetlenia',
- 'list_display_column_description' => 'Kolumna do wyświetlenia na liście. Używana w domyślnym fragmencie komponentu.',
- 'list_display_column_required' => 'Wybierz kolumnę do wyświetlenia.',
- 'list_details_page' => 'Strona szczegółów',
- 'list_details_page_description' => 'Strona do wyświetlania szczegółów rekordu.',
- 'list_details_page_no' => '--brak strony szczegółów--',
- 'list_sorting' => 'Sortowanie',
- 'list_pagination' => 'Paginacja',
- 'list_order_direction_asc' => 'Rosnąco',
- 'list_order_direction_desc' => 'Malejąco',
- 'list_model' => 'Klasa modelu',
- 'list_scope' => 'Zakres',
- 'list_scope_description' => 'Zakres modelu do pobierania rekordów. Opcjonalne',
- 'list_scope_default' => '--wybierz zakres, opcjonalne--',
- 'list_scope_value' => 'Wartość zakresu',
- 'list_scope_value_description' => 'Opcjonalna wartość do przekazania do zakresu modelu.',
- 'list_details_page_link' => 'Link do strony szczegółów',
- 'list_details_key_column' => 'Kolumna klucza szczegółów',
- 'list_details_key_column_description' => 'Kolumna modelu używana jako identyfikator rekordu w linkach na stronie szczegółów.',
- 'list_details_url_parameter' => 'Nazwa parametru URL',
- 'list_details_url_parameter_description' => 'Nazwa parametru adresu URL strony ze szczegółami, który służy jako identyfikator rekordu.',
- 'details_title' => 'Szczegóły rekordu',
- 'details_description' => 'Wyświetla szczegóły rekordu dla wybranego modelu',
- 'details_model' => 'Klasa modelu',
- 'details_identifier_value' => 'Identyfikator',
- 'details_identifier_value_description' => 'Wartość identyfikatora, na podstawie której będzie ładowany rekord z bazy danych. Podaj wartość lub nazwę parametru adresu URL.',
- 'details_identifier_value_required' => 'Identyfikator jest wymagany',
- 'details_key_column' => 'Kolumna klucza',
- 'details_key_column_description' => 'Kolumna używana jako identyfikator do pobierania rekordu z bazy danych.',
- 'details_key_column_required' => 'Nazwa kolumny klucza jest wymagana',
- 'details_display_column' => 'Kolumna do wyświetlenia',
- 'details_display_column_description' => 'Kolumna modelu do wyświetlenia na stronie szczegółów. Używana w domyślnym fragmencie komponentu.',
- 'details_display_column_required' => 'Wybierz kolumnę do wyświetlenia.',
- 'details_not_found_message' => 'Komunikat o braku rekordu',
- 'details_not_found_message_description' => 'Komunikat, który zostanie wyświetlony w przypadku nieznalezienia rekordu. Używany w domyślnym fragmencie komponentu.',
- 'details_not_found_message_default' => 'Nie znaleziono rekordu',
- ],
- 'validation' => [
- 'reserved' => ':attribute nie może być zarezerwowanym słowem kluczowym PHP',
- ],
+ [
+ 'description' => 'Wizualne narzędzia do tworzenia wtyczek dla October CMS.',
+ 'add' => 'Utwórz wtyczkę',
+ 'no_records' => 'Nie znaleziono wtyczek',
+ 'no_name' => 'Brak nazwy',
+ 'search' => 'Szukaj...',
+ 'filter_description' => 'Wyświetl wszystkie wtyczki lub tylko twoje wtyczki.',
+ 'settings' => 'Ustawienia',
+ 'entity_name' => 'Wtyczka',
+ 'field_name' => 'Nazwa',
+ 'field_author' => 'Autor',
+ 'field_description' => 'Opis',
+ 'field_icon' => 'Ikona wtyczki',
+ 'field_plugin_namespace' => 'Przestrzeń nazw wtyczki',
+ 'field_author_namespace' => 'Przestrzeń nazw autora',
+ 'field_namespace_description' => 'Przestrzeń nazw może zawierać tylko litery alfabetu łacińskiego oraz cyfry i powinna się zaczynać na literę z alfabetu łacińskiego. Przykładowa przestrzeń nazw: Blog',
+ 'field_author_namespace_description' => 'Nie możesz zmienić przestrzeni nazw za pomocą Buildera po utworzeniu wtyczki. Przykładowa przestrzeń nazw autora: JohnSmith',
+ 'tab_general' => 'Parametry ogólne',
+ 'tab_description' => 'Opis',
+ 'field_homepage' => 'Strona domowa wtyczki',
+ 'no_description' => 'Brak opisu dla tej wtyczki',
+ 'error_settings_not_editable' => 'Ustawienia tej wtyczki nie mogą być zmienione za pomocą Buildera.',
+ 'update_hint' => 'Możesz zmienić zlokalizowaną nazwę oraz opis wtyczki w zakładce Lokalizacja.',
+ 'manage_plugins' => 'Twórz i edytuj wtyczki'
+ ],
+ 'author_name' => [
+ 'title' => 'Autor',
+ 'description' => 'Domyślna nazwa autora używana przy tworzeniu nowych wtyczek. Nazwa autora nie jest stała - możesz ją zmienić podczas konfiguracji wtyczek w dowolnym momencie.'
+ ],
+ 'author_namespace' => [
+ 'title' => 'Przestrzeń nazw autora',
+ 'description' => 'Jeżeli tworzysz wtyczki dla Marketplace, przestrzeń nazw powinna być zgodna z kodem autora i nie można jej zmienić. Szczegółowe informacje na ten temat można znaleźć w dokumentacji.'
+ ],
+ 'database' => [
+ 'menu_label' => 'Baza danych',
+ 'no_records' => 'Nie znaleziono tabel',
+ 'search' => 'Szukaj...',
+ 'confirmation_delete_multiple' => 'Usunąć wybrane tabele?',
+ 'field_name' => 'Nazwa tabeli',
+ 'tab_columns' => 'Kolumny',
+ 'column_name_name' => 'Kolumna',
+ 'column_name_required' => 'Podaj nazwę kolumny',
+ 'column_name_type' => 'Typ',
+ 'column_type_required' => 'Please typ kolumny',
+ 'column_name_length' => 'Długość',
+ 'column_validation_length' => 'Długość powinna być liczbą całkowitą lub być określona poprzez dokładność i skalę (10,2) dla kolumn typu Decimal. Spacje nie są dozwolone w tej kolumnie.',
+ 'column_validation_title' => 'Tylko cyfry, małe litery alfabetu łacińskiego oraz podkreślenia są dozwolone w nazwach kolumn',
+ 'column_default' => 'Wartość domyślna',
+ 'tab_new_table' => 'Nowa tabela',
+ 'btn_add_column' => 'Dodaj kolumnę',
+ 'btn_delete_column' => 'Usuń kolumnę',
+ 'btn_add_timestamps' => 'Dodaj znaczniki czasu (Timestamps)',
+ 'btn_add_soft_deleting' => 'Dodaj obsługę miękkiego usuwania (Soft deleting)',
+ 'timestamps_exist' => 'Kolumny created_at oraz deleted_at istnieją już w tabeli.',
+ 'soft_deleting_exist' => 'Kolumna deleted_at istnieje już w tabeli.',
+ 'confirm_delete' => 'Usunąć tabelę?',
+ 'error_enum_not_supported' => 'Tabela zawiera przynajmniej jedną kolumnę typu "enum", który nie jest aktualnie obsługiwany przez Buildera.',
+ 'error_table_name_invalid_prefix' => "Nazwa tabeli powinna się zaczynać od prefiksu wtyczki: ':prefix'.",
+ 'error_table_name_invalid_characters' => 'Nieprawidłowa nazwa tabeli. Nazwy tabel powinny zawierać tylko małe litery alfabetu łacińskiego, cyfry oraz podkreślenia. Nazwy powinny zaczynać się od litery alfabetu łacińskiego i nie powinny zawierać spacji.',
+ 'error_table_duplicate_column' => "Kolumna ':column' już istnieje.",
+ 'error_table_auto_increment_in_compound_pk' => 'Kolumna Auto-increment nie może być częścią złożonego klucza głównego.',
+ 'error_table_mutliple_auto_increment' => 'Tabela nie może zawierać więcej niż jednej kolumny Auto-increment.',
+ 'error_table_auto_increment_non_integer' => 'Kolumna Auto-increment powinna być typu integer.',
+ 'error_table_decimal_length' => "Długośc dla typu :type powinna być w formacie '10,2' i nie zawierać spacji.",
+ 'error_table_length' => 'Długość dla typu :type powinna być podana jako liczba całkowita.',
+ 'error_unsigned_type_not_int' => "Błąd kolumny ':column'. Flaga Unsigned może być ustawiona tylko dla kolumn typu integer.",
+ 'error_integer_default_value' => "Niepoprawna wartość domyślna dla kolumny ':column'. Dozwolone formaty to '10', '-10'.",
+ 'error_decimal_default_value' => "Niepoprawna wartość domyślna dla kolumny ':column'. Dozwolone formaty to '1.00', '-1.00'.",
+ 'error_boolean_default_value' => "Niepoprawna wartość domyślna dla kolumny ':column'. Dozwolone wartości to '0' oraz '1'.",
+ 'error_unsigned_negative_value' => "Wartość domyślna dla kolumny ':column' z flagą Unsigned nie może być ujemna.",
+ 'error_table_already_exists' => "Tabela o nazwie ':name' już istnieje w bazie danych",
+ 'error_table_name_too_long' => 'Nazwa tabeli nie powinna być dłuższa nić 64 znaki.',
+ 'error_column_name_too_long' => "Nazwa kolumny ':column' jest za długa. Nazwy kolumn nie powinny być dłuższe niż 64 znaki."
+ ],
+ 'model' => [
+ 'menu_label' => 'Modele',
+ 'entity_name' => 'Model',
+ 'no_records' => 'Nie znaleziono modeli',
+ 'search' => 'Szukaj...',
+ 'add' => 'Dodaj...',
+ 'forms' => 'Formularze',
+ 'lists' => 'Listy',
+ 'field_class_name' => 'Nazwa klasy',
+ 'field_database_table' => 'Tabela bazy danych',
+ 'field_add_timestamps' => 'Dodaj wsparcie dla znaczników czasu (Timestamps)',
+ 'field_add_timestamps_description' => 'Tabela musi posiadać kolumny created_at oraz updated_at.',
+ 'field_add_soft_deleting' => 'Dodaj wsparcie dla miękkiego usuwania (Soft deleting).',
+ 'field_add_soft_deleting_description' => 'Tabela musi posiadać kolumnę deleted_at.',
+ 'error_class_name_exists' => 'Istnieje już model o podanej nazwie klasy.: :path',
+ 'error_timestamp_columns_must_exist' => 'Tabela musi posiadać kolumny created_at oraz updated_at.',
+ 'error_deleted_at_column_must_exist' => 'Tabela musi posiadać kolumnę deleted_at.',
+ 'add_form' => 'Dodaj formularz',
+ 'add_list' => 'Dodaj listę',
+ ],
+ 'form' => [
+ 'saved' => 'Zapisano formularz',
+ 'confirm_delete' => 'Usunąć formularz?',
+ 'tab_new_form' => 'Nowy formularz',
+ 'property_label_title' => 'Etykieta',
+ 'property_label_required' => 'Podaj tekst etykiety elementu.',
+ 'property_span_title' => 'Rozpiętość',
+ 'property_comment_title' => 'Komentarz',
+ 'property_comment_above_title' => 'Komentarz górny',
+ 'property_default_title' => 'Wartość domyślna',
+ 'property_checked_default_title' => 'Domyślnie zaznaczone',
+ 'property_css_class_title' => 'Klasa CSS',
+ 'property_css_class_description' => 'Opcjonalna klasa CSS dla kontenera.',
+ 'property_disabled_title' => 'Wyłączone',
+ 'property_read_only_title' => 'Tylko do odczytu',
+ 'property_hidden_title' => 'Ukryte',
+ 'property_required_title' => 'Wymagane',
+ 'property_field_name_title' => 'Nazwa pola',
+ 'property_placeholder_title' => 'Symbol zastępczy',
+ 'property_default_from_title' => 'Wartość domyślna z',
+ 'property_stretch_title' => 'Stretch',
+ 'property_stretch_description' => 'Specifies if this field stretches to fit the parent height.',
+ 'property_context_title' => 'Kontekst',
+ 'property_context_description' => 'Określa w jakim kontekście pole formularza będzie widoczne.',
+ 'property_context_create' => 'Stwórz',
+ 'property_context_update' => 'Edytuj',
+ 'property_context_preview' => 'Podgląd',
+ 'property_dependson_title' => 'Zależy od',
+ 'property_trigger_action' => 'Akcja',
+ 'property_trigger_show' => 'Pokaż',
+ 'property_trigger_hide' => 'Ukryj',
+ 'property_trigger_enable' => 'Włącz',
+ 'property_trigger_disable' => 'Wyłącz',
+ 'property_trigger_empty' => 'Puste',
+ 'property_trigger_field' => 'Pole',
+ 'property_trigger_field_description' => 'Określa nazwę drugiego pola które wyzwoli akcję.',
+ 'property_trigger_condition' => 'Warunek',
+ 'property_trigger_condition_description' => 'Określa warunek, który pole powinno spełniać, aby warunek był uznany za prawdziwy (true). Obsługiwane wartości to: checked, unchedked, value[wartość].',
+ 'property_trigger_condition_checked' => 'Zaznaczony',
+ 'property_trigger_condition_unchecked' => 'Odznaczony',
+ 'property_trigger_condition_somevalue' => 'value[wprowadź-wartość-tutaj]',
+ 'property_preset_title' => 'Preset',
+ 'property_preset_description' => 'Umożliwia ustawienie początkowej wartości pola na podstawie wartości innego pola przy użyciu wybranego konwertera.',
+ 'property_preset_field' => 'Pole',
+ 'property_preset_field_description' => 'Określa nazwę pola, z którego będzie pobierana wartość.',
+ 'property_preset_type' => 'Typ',
+ 'property_preset_type_description' => 'Określa typ konwertera',
+ 'property_attributes_title' => 'Atrybuty',
+ 'property_attributes_description' => 'Niestandardowe atrybuty HTML, które będą dodane do elementu formularza.',
+ 'property_container_attributes_title' => 'Atrybuty kontenera',
+ 'property_container_attributes_description' => 'Niestandardowe atrybuty HTML, które będą dodane do kontenera elementu.',
+ 'property_group_advanced' => 'Zaawansowane',
+ 'property_dependson_description' => 'Lista nazw pól, od których zależy to pole. Po ich zmianie to pole zostanie zaktualizowane. Jedno pole na linię.',
+ 'property_trigger_title' => 'Wyzwalacz',
+ 'property_trigger_description' => 'Pozwala zmieniać atrybuty elementów, takie jak widocznośc lub wartość, w zależności od stanu innych elementów.',
+ 'property_default_from_description' => 'Pobiera wartość domyślną z wartości innego pola.',
+ 'property_field_name_required' => 'Nazwa pola jest wymagana',
+ 'property_field_name_regex' => 'Nazwa pola może zawierać tylko litery alfabetu łacińskiego, cyfry, podkreślenia, myślniki oraz nawiasy prostokątne.',
+ 'property_attributes_size' => 'Rozmiar',
+ 'property_attributes_size_tiny' => 'Malutki',
+ 'property_attributes_size_small' => 'Mały',
+ 'property_attributes_size_large' => 'Duży',
+ 'property_attributes_size_huge' => 'Ogromny',
+ 'property_attributes_size_giant' => 'Gigantyczny',
+ 'property_comment_position' => 'Pozycja komentarza',
+ 'property_comment_position_above' => 'Powyżej',
+ 'property_comment_position_below' => 'Poniżej',
+ 'property_hint_path' => 'Ścieżka fragmentu podpowiedzi',
+ 'property_hint_path_description' => 'Ścieżka do pliku fragmentu zawierającego tekst podpowiedzi. Użyj symbolu $ aby odnieść się do katalogu głównego wtyczek, np.: $/acme/blog/parts/_partial.htm',
+ 'property_hint_path_required' => 'Podaj ścieżkę do pliku fragmentu z podpowiedzią',
+ 'property_partial_path' => 'Ścieżka fragmentu',
+ 'property_partial_path_description' => 'Ścieżka do pliku fragmentu. Użyj symbolu $ aby odnieść się do katalogu głównego wtyczek, np.: $/acme/blog/parts/_partial.htm',
+ 'property_partial_path_required' => 'Podaj ścieżkę do pliku fragmentu',
+ 'property_code_language' => 'Język',
+ 'property_code_theme' => 'Motyw',
+ 'property_theme_use_default' => 'Użyj domyślnego motywu',
+ 'property_group_code_editor' => 'Edytor kodu',
+ 'property_gutter' => 'Odstęp',
+ 'property_gutter_show' => 'Widoczny',
+ 'property_gutter_hide' => 'Ukryty',
+ 'property_wordwrap' => 'Zawijanie tekstu',
+ 'property_wordwrap_wrap' => 'Zawijaj',
+ 'property_wordwrap_nowrap' => 'Nie zawijaj',
+ 'property_fontsize' => 'Rozmiar czcionki',
+ 'property_codefolding' => 'Zwijanie kodu',
+ 'property_codefolding_manual' => 'Ręczne',
+ 'property_codefolding_markbegin' => 'Zaznacz początek',
+ 'property_codefolding_markbeginend' => 'Zaznacz początek i koniec',
+ 'property_autoclosing' => 'Auto zamykanie',
+ 'property_enabled' => 'Włączone',
+ 'property_disabled' => 'Wyłączone',
+ 'property_soft_tabs' => '"Miękkie" karty',
+ 'property_tab_size' => 'Rozmiar karty',
+ 'property_readonly' => 'Tylko do odczytu',
+ 'property_use_default' => 'Użyj domyślnych ustawień',
+ 'property_options' => 'Opcje',
+ 'property_prompt' => 'Zachęta',
+ 'property_prompt_description' => 'Tekst do wyświetlenia na przycisku utwórz.',
+ 'property_prompt_default' => 'Dodaj nowy element',
+ 'property_available_colors' => 'Dostępne kolory',
+ 'property_available_colors_description' => 'Lista dostępnych kolorów w formacie heksadecymalnym (#FF0000). Pozostaw puste dla domyślnego zestawu kolorów. Jedna wartość na wiersz.',
+ 'property_datepicker_mode' => 'Tryb',
+ 'property_datepicker_mode_date' => 'Data',
+ 'property_datepicker_mode_datetime' => 'Data i czas',
+ 'property_datepicker_mode_time' => 'Czas',
+ 'property_datepicker_min_date' => 'Najwcześniejsza data',
+ 'property_datepicker_max_date' => 'Najpóźniejsza data',
+ 'property_datepicker_year_range' => 'Zakres lat',
+ 'property_datepicker_year_range_description' => 'Liczba lat z obu stron zakresu (np. "10") lub dolny i górny zakres w tablicy (np. "[1900,2015]"). Pozostaw puste dla wartości domyślnej (10).',
+ 'property_datepicker_year_range_invalid_format' => 'Nieprawidłowy format zakresu lat. Użyj liczby (np. "10") lub dolnego i górnego zakresu w tablicy (np. "[1900,2015]")',
+ 'property_datepicker_format' => 'Format',
+ 'property_datepicker_year_format_description' => 'Zdefiniuj niestandardowy format daty. Domyślny format to "Y-m-d"',
+ 'property_markdown_mode' => 'Tryb',
+ 'property_markdown_mode_split' => 'Podzielone okno',
+ 'property_markdown_mode_tab' => 'Karty',
+ 'property_fileupload_mode' => 'Tryb',
+ 'property_fileupload_mode_file' => 'Plik',
+ 'property_fileupload_mode_image' => 'Obraz',
+ 'property_group_fileupload' => 'Przesyłanie pliku',
+ 'property_fileupload_prompt' => 'Zachęta',
+ 'property_fileupload_prompt_description' => 'Opcjonalne. Tekst do wyświetlenia na przycisku przesyłania. Dotyczy tylko trybu Plik.',
+ 'property_fileupload_image_width' => 'Szerokość obrazu',
+ 'property_fileupload_image_width_description' => 'Opcjonalne. Obrazy będą przeskalowane do tej szerokości. Dotyczy tylko trybu Obraz.',
+ 'property_fileupload_invalid_dimension' => 'Niepoprawny rozmiar - wprowadź liczbę.',
+ 'property_fileupload_image_height' => 'Wysokość obrazu',
+ 'property_fileupload_image_height_description' => 'Opcjonalne. obrazy będą przeskalowane do tej wysokości. Dotyczy tylko trybu Obraz.',
+ 'property_fileupload_file_types' => 'Rozszerzenia plików',
+ 'property_fileupload_file_types_description' => 'Opcjonalne. Lista akceptowanych rozszerzeń plików rozdzielona przecinkami. Przykład: zip,txt',
+ 'property_fileupload_mime_types' => 'Typy MIME',
+ 'property_fileupload_mime_types_description' => 'Opcjonalne. Lista akceptowanych typów MIME rozdzielona przecinkami, podane jako rozszerzenia plików lub pełne nazwy. Przykład: bin,txt',
+ 'property_fileupload_use_caption' => 'Użyj podpisu',
+ 'property_fileupload_use_caption_description' => 'Umożliwia ustawienie tytułu i opisu pliku.',
+ 'property_fileupload_thumb_options' => 'Opcje miniatur',
+ 'property_fileupload_thumb_options_description' => 'Zarządza opcjami automatycznie generowanych miniatur. Dotyczy tylko trybu Obraz.',
+ 'property_fileupload_thumb_mode' => 'Tryb',
+ 'property_fileupload_thumb_auto' => 'Automatyczny',
+ 'property_fileupload_thumb_exact' => 'Dokładny',
+ 'property_fileupload_thumb_portrait' => 'Pionowy',
+ 'property_fileupload_thumb_landscape' => 'Poziomy',
+ 'property_fileupload_thumb_crop' => 'Przytnij',
+ 'property_fileupload_thumb_extension' => 'Rozszerzenie pliku',
+ 'property_name_from' => 'Kolumna nazwy',
+ 'property_name_from_description' => 'Nazwa kolumny w relacji używana do wyświetlania nazwy',
+ 'property_relation_select' => 'Wybierz',
+ 'property_relation_select_description' => 'Połącz (CONCAT) wiele kolumn do wyświetlania nazwy',
+ 'property_description_from' => 'Kolumna opisu',
+ 'property_description_from_description' => 'Nazwa kolumny w relacji używana do wyświetlania opisu',
+ 'property_recordfinder_prompt' => 'Zachęta',
+ 'property_recordfinder_prompt_description' => 'Tekst, który zostanie wyświetlony, gdy nie wybrano żadnego rekordu. Znak %s reprezentuje ikonę wyszukiwania. Pozostaw puste dla domyślnej zachęty.',
+ 'property_recordfinder_list' => 'Konfiguracja listy',
+ 'property_recordfinder_list_description' => 'Ścieżka do pliku konfiguracyjnego kolumny listy. Użyj symbolu $ aby odnieść się do katalogu głównego wtyczek, np.: $/acme/blog/parts/_partial.htm',
+ 'property_recordfinder_list_required' => 'Podaj ścieżkę do pliku YAML listy',
+ 'property_group_recordfinder' => 'Wyszukiwarka rekordów',
+ 'property_mediafinder_mode' => 'Tryb',
+ 'property_mediafinder_mode_file' => 'Plik',
+ 'property_mediafinder_mode_image' => 'Obraz',
+ 'property_mediafinder_prompt' => 'Zachęta',
+ 'property_mediafinder_prompt_description' => 'Tekst, który zostanie wyświetlony, gdy nie wybrano żadnego elementu. Znak %s reprezentuje ikonę menedżera mediów. Pozostaw puste dla domyślnej zachęty.',
+ 'property_mediafinder_image_width_description' => 'Opcjonalne. Jeżeli używasz trybu "Obraz", pogląd zostanie wyświetlony do tej szerokości.',
+ 'property_mediafinder_image_height_description' => 'Opcjonalne. Jeżeli używasz trybu "Obraz", pogląd zostanie wyświetlony do tej wysokości.',
+ 'property_group_taglist' => 'Lista tagów',
+ 'property_taglist_mode' => 'Tryb',
+ 'property_taglist_mode_description' => 'Określa format w jakim zwracana jest wartość pola',
+ 'property_taglist_mode_string' => 'Ciąg znaków',
+ 'property_taglist_mode_array' => 'Tablica',
+ 'property_taglist_mode_relation' => 'Relacja',
+ 'property_taglist_separator' => 'Separator',
+ 'property_taglist_separator_comma' => 'Przecinki',
+ 'property_taglist_separator_space' => 'Spacje',
+ 'property_taglist_options' => 'Predefiniowane tagi',
+ 'property_taglist_custom_tags' => 'Niestandardowe tagi',
+ 'property_taglist_custom_tags_description' => 'Zezwala na ręczne wprowadzanie niestandardowych tagów przez użytkownika.',
+ 'property_taglist_name_from' => 'Nazwa z',
+ 'property_taglist_name_from_description' => 'Określa atrybut modelu relacji wyświetlany w znaczniku. Używany tylko w trybie "Relacja".',
+ 'property_taglist_use_key' => 'Użyj klucza',
+ 'property_taglist_use_key_description' => 'Jeśli zaznaczone, lista tagów użyje klucza zamiast wartości do zapisu i odczytu danych. Używany tylko w trybie "Relacja".',
+ 'property_group_relation' => 'Relacja',
+ 'property_relation_prompt' => 'Zachęta',
+ 'property_relation_prompt_description' => 'Tekst wyświetlany, gdy nie ma dostępnych opcji.',
+ 'property_empty_option' => 'Pusta opcja',
+ 'property_empty_option_description' => 'Pusta opcja odpowiada pustemu wyborowi, jednakże w przeciwieństwie do niego może być ponownie wybrana.',
+ 'property_show_search' => 'Włącz wyszukiwanie',
+ 'property_show_search_description' => 'Włącza funkcję wyszukiwania dla tej listy.',
+ 'property_max_items' => 'Maksymalna liczba elementów',
+ 'property_max_items_description' => 'Maksymalna liczba elementów dozwolona w repeaterze.',
+ 'control_group_standard' => 'Standardowe kontrolki',
+ 'control_group_widgets' => 'Widżety',
+ 'click_to_add_control' => 'Dodaj kontrolkę',
+ 'loading' => 'Ładowanie...',
+ 'control_text' => 'Tekst',
+ 'control_text_description' => 'Jednowierszowe pole tekstowe',
+ 'control_password' => 'Hasło',
+ 'control_password_description' => 'Jednowierszowe pole hasła',
+ 'control_checkbox' => 'Pole wyboru',
+ 'control_checkbox_description' => 'Pojedyncze pole wyboru',
+ 'control_switch' => 'Przełącznik',
+ 'control_switch_description' => 'Pojedynczy przełącznik. Alternatywa dla pola wyboru',
+ 'control_textarea' => 'Pole tekstowe',
+ 'control_textarea_description' => 'Wielowierszowe pole tekstowe o kontrolowanej wysokości',
+ 'control_dropdown' => 'Lista rozwijana',
+ 'control_dropdown_description' => 'Lista rozwijana ze statycznymi lub dynamicznie ładowanymi opcjami',
+ 'control_balloon-selector' => 'Selektor typu Balloon',
+ 'control_balloon-selector_description' => 'Lista ze statycznymi lub dynamicznie ładowanymi opcjami, w której jednocześnie może być wybrany tylko jeden element',
+ 'control_unknown' => 'Nieznany rodzaj elementu: :type',
+ 'control_repeater' => 'Repeater',
+ 'control_repeater_description' => 'Wyświetla zestaw powtarzających się elementów formularza',
+ 'control_number' => 'Numer',
+ 'control_number_description' => 'Jednowierszowe pole tekstowe, przyjmujące jedynie liczby',
+ 'control_hint' => 'Podpowiedź',
+ 'control_hint_description' => 'Wyświetla zawartość fragmentu w elemencie, który może być ukryty przez użytkownika',
+ 'control_partial' => 'Fragment',
+ 'control_partial_description' => 'Wyświetla zawartość fragmentu',
+ 'control_section' => 'Sekcja',
+ 'control_section_description' => 'Wyświetla sekcję z tytułem i podtytułem',
+ 'control_radio' => 'Lista pól opcji',
+ 'control_radio_description' => 'Lista pól opcji, w której jednocześnie może być wybrany tylko jeden element',
+ 'control_radio_option_1' => 'Opcja 1',
+ 'control_radio_option_2' => 'Opcja 2',
+ 'control_checkboxlist' => 'Lista pól wyboru',
+ 'control_checkboxlist_description' => 'Lista pól wyboru, w której jednocześnie może być wybrane kilka elementów',
+ 'control_codeeditor' => 'Edytor kodu',
+ 'control_codeeditor_description' => 'Edytor tekstowy sformatowanego kodu lub znaczników',
+ 'control_colorpicker' => 'Próbnik koloru',
+ 'control_colorpicker_description' => 'Pole wyboru koloru w wartości heksadecymalnej',
+ 'control_datepicker' => 'Wybór daty',
+ 'control_datepicker_description' => 'Pole tekstowe używane do wyboru daty i godziny',
+ 'control_richeditor' => 'Edytor WYSYWIG',
+ 'control_richeditor_description' => 'Edytor wizualny tekstu sformatowanego',
+ 'control_markdown' => 'Edytor Markdown',
+ 'control_markdown_description' => 'Edytor tekstu sformatowanego za pomocą Markdown',
+ 'control_taglist' => 'Lista tagów',
+ 'control_taglist_description' => 'Pole do wprowadzania listy tagów',
+ 'control_fileupload' => 'Prześlij plik',
+ 'control_fileupload_description' => 'Pole do przesyłania obrazów lub zwykłych plików',
+ 'control_recordfinder' => 'Wyszukiwarka rekordów',
+ 'control_recordfinder_description' => 'Pole ze szcegółami powiązanego rekordu z funkcją wyszukiwania rekordów',
+ 'control_mediafinder' => 'Wyszukiwarka mediów',
+ 'control_mediafinder_description' => 'Pole wyboru elementu z biblioteki mediów',
+ 'control_relation' => 'Relacja',
+ 'control_relation_description' => 'Wyświetla listę rozwijaną lub listę pól wyboru w celu wybrania powiązanego rekordu',
+ 'error_file_name_required' => 'Wprowadź nazwę pliku formularza.',
+ 'error_file_name_invalid' => 'Nazwa pliku może zawierać jedynie litery alfabetu łacińskiego, cyfry, podkreślenia, kropki i krzyżyki.',
+ 'span_left' => 'Lewo',
+ 'span_right' => 'Prawo',
+ 'span_full' => 'Cała szerokość',
+ 'span_auto' => 'Auto',
+ 'empty_tab' => 'Pusta karta',
+ 'confirm_close_tab' => 'Zakładka zawiera elementy, które zostaną usunięte. Czy kontynuować?',
+ 'tab' => 'Karta formularza',
+ 'tab_title' => 'Tytuł',
+ 'controls' => 'Kontrolki',
+ 'property_tab_title_required' => 'Tytuł karty jest wymagany.',
+ 'tabs_primary' => 'Zakładki główne',
+ 'tabs_secondary' => 'Zakładki dodatkowe',
+ 'tab_stretch' => 'Rozciągnięcie',
+ 'tab_stretch_description' => 'Określa czy kontener kart rozciąga się, aby pasować do wysokości rodzica.',
+ 'tab_css_class' => 'Klasa CSS',
+ 'tab_css_class_description' => 'Przypisuje klasę CSS do kontenera kart.',
+ 'tab_name_template' => 'Karta %s',
+ 'tab_already_exists' => 'Tab with the specified title already exists.',
+ ],
+ 'list' => [
+ 'tab_new_list' => 'Nowa lista',
+ 'saved' => 'Zapisano listę',
+ 'confirm_delete' => 'Usunąć listę?',
+ 'tab_columns' => 'Kolumny',
+ 'btn_add_column' => 'Dodaj kolumnę',
+ 'btn_delete_column' => 'Usuń kolumnę',
+ 'column_dbfield_label' => 'Pola',
+ 'column_dbfield_required' => 'Podaj pole modelu',
+ 'column_name_label' => 'Etykieta',
+ 'column_label_required' => 'Podaj etykietę kolumny',
+ 'column_type_label' => 'Type',
+ 'column_type_required' => 'Podaj typ kolumny',
+ 'column_type_text' => 'Tekst',
+ 'column_type_number' => 'Numer',
+ 'column_type_switch' => 'Przełącznik',
+ 'column_type_datetime' => 'Data/Czas',
+ 'column_type_date' => 'Data',
+ 'column_type_time' => 'Czas',
+ 'column_type_timesince' => 'Czas od',
+ 'column_type_timetense' => 'Określenie czasu',
+ 'column_type_select' => 'Lista elementów',
+ 'column_type_partial' => 'Fragment',
+ 'column_label_default' => 'Domyślny',
+ 'column_label_searchable' => 'Szukaj',
+ 'column_label_sortable' => 'Sortuj',
+ 'column_label_invisible' => 'Niewidoczny',
+ 'column_label_select' => 'Wybierz',
+ 'column_label_relation' => 'Relacja',
+ 'column_label_css_class' => 'Klasa CSS',
+ 'column_label_width' => 'Szerokość',
+ 'column_label_path' => 'Ścieżka',
+ 'column_label_format' => 'Format',
+ 'column_label_value_from' => 'Wartość z',
+ 'error_duplicate_column' => "Kolumna ':column' już istnieje.",
+ 'btn_add_database_columns' => 'Dodaj kolumny z bazy danych',
+ 'all_database_columns_exist' => 'Wszystkie kolumny są już zdefiniowane na liście'
+ ],
+ 'controller' => [
+ 'menu_label' => 'Kontrolery',
+ 'no_records' => 'Nie znaleziono kontrolerów',
+ 'controller' => 'Kontroler',
+ 'behaviors' => 'Zachowania',
+ 'new_controller' => 'Nowy kontroler',
+ 'error_controller_has_no_behaviors' => 'Kontroler nie posiada konfigurowalnych zachowań.',
+ 'error_invalid_yaml_configuration' => 'Wystąpił błąd podczas ładowania pliku konfiguracji zachowania :file',
+ 'behavior_form_controller' => 'Zachowanie - Form Controller',
+ 'behavior_form_controller_description' => 'Dodaje funkcjonalność do strony backendu. Zapewnia strony Utwórz, Edytuj, Podgląd.',
+ 'property_behavior_form_placeholder' => '--wybierz formularz--',
+ 'property_behavior_form_name' => 'Nazwa',
+ 'property_behavior_form_name_description' => 'Nazwa obiektu zarządzanego przez ten formularz',
+ 'property_behavior_form_name_required' => 'Wprowadź nazwę formularza',
+ 'property_behavior_form_file' => 'Konfiguracja formularza',
+ 'property_behavior_form_file_description' => 'Odwołanie do pliku konfiguracyjnego formularza',
+ 'property_behavior_form_file_required' => 'Wprowadź ścieżkę do pliku konfiguracyjnego formularza',
+ 'property_behavior_form_model_class' => 'Klasa modelu',
+ 'property_behavior_form_model_class_description' => 'Nazwa klasy modelu. Dane formularza są ładowane i zapisywane używając tego modelu.',
+ 'property_behavior_form_model_class_required' => 'Wybierz klasę modelu',
+ 'property_behavior_form_default_redirect' => 'Domyślne przekierowanie',
+ 'property_behavior_form_default_redirect_description' => 'Strona, na którą zostanie przekierowany użytkownik po zapisaniu lub anulowaniu formularza.',
+ 'property_behavior_form_create' => 'Stwórz stronę rekordu',
+ 'property_behavior_form_redirect' => 'Przekierowanie',
+ 'property_behavior_form_redirect_description' => 'Strona, na którą zostanie przekierowany użytkownik po utworzeniu rekordu.',
+ 'property_behavior_form_redirect_close' => 'Przekierowanie po zamknięciu',
+ 'property_behavior_form_redirect_close_description' => 'Strona na którą zostanie przekierowany użytkownik po utworzeniu rekordu, gdy zmienna "close" w tablicy POST jest obecna.',
+ 'property_behavior_form_flash_save' => 'Komunikat Flash - Zapisano',
+ 'property_behavior_form_flash_save_description' => 'Komunikat do wyświetlenia po zapisaniu rekordu.',
+ 'property_behavior_form_page_title' => 'Tytuł strony',
+ 'property_behavior_form_update' => 'Aktualizuj stronę rekordu',
+ 'property_behavior_form_update_redirect' => 'Przekierowanie',
+ 'property_behavior_form_create_redirect_description' => 'Strona, na którą zostanie przekierowany użytkownik po zapisaniu rekordu.',
+ 'property_behavior_form_flash_delete' => 'Komunikat Flash - Usunięto',
+ 'property_behavior_form_flash_delete_description' => 'Komunikat do wyświetlenia po usunięciu rekordu.',
+ 'property_behavior_form_preview' => 'Strona podglądu rekordu',
+ 'behavior_list_controller' => 'Zachowanie - List Controller',
+ 'behavior_list_controller_description' => 'Dodaje funkcjonalność do strony backendu. Zapewnia listę z możliwością sortowania i przeszukiwania i opcjonalnymi linkami do rekordów. Automatycznie tworzy akcję kontrolera "index".',
+ 'property_behavior_list_title' => 'Tytuł listy',
+ 'property_behavior_list_title_required' => 'Wprowadź tytuł listy',
+ 'property_behavior_list_placeholder' => '--wybierz listę--',
+ 'property_behavior_list_model_class' => 'Klasa modelu',
+ 'property_behavior_list_model_class_description' => 'Nazwa klasy modelu, dane są ładowane z tego modelu.',
+ 'property_behavior_form_model_class_placeholder' => '--wybierz model--',
+ 'property_behavior_list_model_class_required' => 'Wybierz klasę modelu',
+ 'property_behavior_list_model_placeholder' => '--wybierz model--',
+ 'property_behavior_list_file' => 'Plik konfiguracyjny listy',
+ 'property_behavior_list_file_description' => 'Odwołanie do pliku konfiguracyjnego listy',
+ 'property_behavior_list_file_required' => 'Wprowadź ścieżkę do pliku konfiguracyjnego listy',
+ 'property_behavior_list_record_url' => 'Adres URL rekordu',
+ 'property_behavior_list_record_url_description' => 'Połącz każdy rekord z unikatową stroną. Np.: "users/update/:id". Parametr ":id" będzie zastąpiony identyfikatorem rekordu.',
+ 'property_behavior_list_no_records_message' => 'Komunikat o braku rekordów',
+ 'property_behavior_list_no_records_message_description' => 'Komunikat, który zostanie wyświetlony w przypadku braku rekordów.',
+ 'property_behavior_list_recs_per_page' => 'Rekordy na stronę',
+ 'property_behavior_list_recs_per_page_description' => 'Liczba rekordów do wyświetlenia na stronie. Wpisz 0 aby wyłączyć paginację. Wartość domyślna: 0',
+ 'property_behavior_list_recs_per_page_regex' => 'Liczba rekordów na stronę powinna być liczbą całkowitą',
+ 'property_behavior_list_show_setup' => 'Pokaż przycisk konfiguracji',
+ 'property_behavior_list_show_sorting' => 'Pokaż sortowanie',
+ 'property_behavior_list_default_sort' => 'Domyślne sortowanie',
+ 'property_behavior_form_ds_column' => 'Kolumna',
+ 'property_behavior_form_ds_direction' => 'Kierunek',
+ 'property_behavior_form_ds_asc' => 'Rosnąco',
+ 'property_behavior_form_ds_desc' => 'Malejąco',
+ 'property_behavior_list_show_checkboxes' => 'Pokaż pola wyboru',
+ 'property_behavior_list_onclick' => 'Kod JS po kliknięciu',
+ 'property_behavior_list_onclick_description' => 'Dodatkowy kod JavaScript do wykonania po kliknięciu rekordu.',
+ 'property_behavior_list_show_tree' => 'Pokaż drzewo',
+ 'property_behavior_list_show_tree_description' => 'Wyświetla hierarchię dla rekordów nadrzędnych / podrzędnych.',
+ 'property_behavior_list_tree_expanded' => 'Rozwinięte drzewo',
+ 'property_behavior_list_tree_expanded_description' => 'Określa czy gałęzie drzewa powinny być domyślnie rozwinięte.',
+ 'property_behavior_list_toolbar' => 'Pasek narzędzi',
+ 'property_behavior_list_toolbar_buttons' => 'Fragment z przyciskami',
+ 'property_behavior_list_toolbar_buttons_description' => 'Odwołanie do pliku fragmentu z przyciskami paska narzędzi. Np.: list_toolbar',
+ 'property_behavior_list_search' => 'Szukaj',
+ 'property_behavior_list_search_prompt' => 'Zachęta wyszukiwarki',
+ 'property_behavior_list_filter' => 'Konfiguracja filtrów',
+ 'behavior_reorder_controller' => 'Zachowanie - Reorder Controller',
+ 'behavior_reorder_controller_description' => 'Dodaje funkcjonalność do strony backendu. Zapewnia możliwość sortowania i zmiany kolejności rekordów. Automatycznie tworzy akcję kontrolera "reorder".',
+ 'property_behavior_reorder_title' => 'Tekst zmiany kolejności',
+ 'property_behavior_reorder_title_required' => 'Wprowadź tekst zmiany kolejności',
+ 'property_behavior_reorder_name_from' => 'Nazwa atrybutu',
+ 'property_behavior_reorder_name_from_description' => 'Atrybut modelu, który zostanie użyty jako etykieta rekordu.',
+ 'property_behavior_reorder_name_from_required' => 'Wprowadź nazwę atrybutu',
+ 'property_behavior_reorder_model_class' => 'Klasa modelu',
+ 'property_behavior_reorder_model_class_description' => 'Nazwa klasy modelu. Dane są ładowane z tego modelu.',
+ 'property_behavior_reorder_model_class_placeholder' => '--wybierz model--',
+ 'property_behavior_reorder_model_class_required' => 'Wybierz klasę modelu',
+ 'property_behavior_reorder_model_placeholder' => '--wybierz klasę modelu--',
+ 'property_behavior_reorder_toolbar' => 'Pasek narzędzi',
+ 'property_behavior_reorder_toolbar_buttons' => 'Fragment z przyciskami',
+ 'property_behavior_reorder_toolbar_buttons_description' => 'Odwołanie do pliku fragmentu z przyciskami paska narzędzi. Np.: reorder_toolbar',
+ 'error_controller_not_found' => 'Plik kontrolera nie został znaleziony.',
+ 'error_invalid_config_file_name' => 'Plik konfiguracyjny zachowania :class (:file) zawiera nieprawidłowe znaki i nie może zostać załadowany.',
+ 'error_file_not_yaml' => 'Plik konfiguracyjny zachowania :class (:file) nie jest plikiem YAML. Obsługiwane są tylko pliki konfiguracyjne YAML.',
+ 'saved' => 'Zapisano kontroler',
+ 'controller_name' => 'Nazwa kontrolera',
+ 'controller_name_description' => 'Nazwa kontrolera określa nazwę klasy i adres URL stron w backendzie. Obowiązują standardowe konwencje nazewnictwa zmiennych w PHP. Pierwszym znakiem powinna być duża litera alfabetu łacińskiego. Przykłady: Categories, Posts, Products.',
+ 'base_model_class' => 'Bazowa klasa modelu',
+ 'base_model_class_description' => 'Wybierz klasę modelu, która ma być używana jako model bazowy w zachowaniach które go wymagają lub wspierają. Zachowania możesz skonfigurować później.',
+ 'base_model_class_placeholder' => '--wybierz model--',
+ 'controller_behaviors' => 'Zachowania',
+ 'controller_behaviors_description' => 'Wybierz zachowania, które chcesz zaimplementować w kontrolerze. Builder automatycznie utworzy pliki widoków wymaganych przez zachowania.',
+ 'controller_permissions' => 'Uprawnienia',
+ 'controller_permissions_description' => 'Wybierz uprawnienia, które pozwolą na dostęp do widoków kontrolera. Uprawnienia można zdefiniować w zakładce "Uprawnienia". Możesz zmienić tę opcję później edytując skrypt PHP kontrolera.',
+ 'controller_permissions_no_permissions' => 'Wtyczka nie definiuje żadnych uprawnień.',
+ 'menu_item' => 'Aktywny element menu',
+ 'menu_item_description' => 'Wybierz element menu dla stron tego kontrolera. Możesz zmienić tę opcję później edytując skrypt PHP kontrolera.',
+ 'menu_item_placeholder' => '--wybierz element menu--',
+ 'error_unknown_behavior' => 'Klasa zachowania :class nie jest zarejestrowana w bibliotece zachowań.',
+ 'error_behavior_view_conflict' => 'Wybrane zachowania implementują sprzeczne ze sobą widoki (:view) i nie mogą być używane razem w jednym kontrolerze.',
+ 'error_behavior_config_conflict' => 'Wybrane zachowania implementują sprzeczne pliki konfiguracyjne (:file) i nie mogą być używane razem w jednym kontrolerze.',
+ 'error_behavior_view_file_not_found' => 'Nie można znaleźć szablonu widoku zachowania :class w lokalizacji :file.',
+ 'error_behavior_config_file_not_found' => 'Nie można znaleźć szablonu konfiguracji zachowania :class w lokalizacji :file.',
+ 'error_controller_exists' => 'Plik kontrolera :file już istnieje.',
+ 'error_controller_name_invalid' => 'Nieprawidłowy format nazwy kontrolera. Nazwa powinna zawierać tylko cyfry i litery alfabetu łacińskiego. Pierwszym symbolem powinna być duża litera alfabetu łacińskiego.',
+ 'error_behavior_view_file_exists' => 'Widok kontrolera :view już istnieje.',
+ 'error_behavior_config_file_exists' => 'Plik konfiguracyjny zachowania :file już istnieje.',
+ 'error_save_file' => 'Błąd podczas zapisu pliku kontrolera: :file',
+ 'error_behavior_requires_base_model' => 'Zachowanie :behavior wymaga wybranej bazowej klasy modelu.',
+ 'error_model_doesnt_have_lists' => 'Wybrany model nie posiada żadnych list. Najpierw utwórz listę.',
+ 'error_model_doesnt_have_forms' => 'Wybrany model nie posiada żadnych formularzy. Najpierw utwórz formularz.',
+ ],
+ 'version' => [
+ 'menu_label' => 'Wersje',
+ 'no_records' => 'Nie znaleziono żadnej wersji wtyczki',
+ 'search' => 'Szukaj...',
+ 'tab' => 'Wersje',
+ 'saved' => 'Zapisano wersję',
+ 'confirm_delete' => 'Usunąć wersję?',
+ 'tab_new_version' => 'Nowa wersja',
+ 'migration' => 'Migracja',
+ 'seeder' => 'Seeder',
+ 'custom' => 'Zwiększ numer wersji',
+ 'apply_version' => 'Zastosuj wersję',
+ 'applying' => 'Zastosowywanie...',
+ 'rollback_version' => 'Wycofaj wersję',
+ 'rolling_back' => 'Wycofywanie...',
+ 'applied' => 'Zastosowano wersję',
+ 'rolled_back' => 'Wycofano wersję',
+ 'hint_save_unapplied' => 'Zapisałeś niezastosowaną wersję. Należy pamiętać, że niezastosowane wersje mogą być automatycznie zastosowane przez system, gdy Ty lub inny użytkownik loguje się do backendu lub gdy tabela bazy danych jest zapisywana w sekcji Baza danych Buildera.',
+ 'hint_rollback' => 'Wycofanie wersji spowoduje wycofanie wszystkich nowszych wersji niż ta. Należy pamiętać, że niezastosowane wersje mogą być automatycznie zastosowane przez system, gdy Ty lub inny użytkownik loguje się do backendu lub gdy tabela bazy danych jest zapisywana w sekcji Baza danych Buildera.',
+ 'hint_apply' => 'Zastosowanie wersji spowoduje zastosowanie wszystkich poprzednich niezastosowanych wersji',
+ 'dont_show_again' => 'Nie pokazuj ponownie',
+ 'save_unapplied_version' => 'Zapisz niezastosowaną wersję',
+ ],
+ 'menu' => [
+ 'menu_label' => 'Menu Back-End',
+ 'tab' => 'Menu',
+ 'items' => 'Elementy menu',
+ 'saved' => 'Zapisano menu',
+ 'add_main_menu_item' => 'Dodaj element menu głównego',
+ 'new_menu_item' => 'Element menu',
+ 'add_side_menu_item' => 'Dodaj element podrzędny',
+ 'side_menu_item' => 'Element menu bocznego',
+ 'property_label' => 'Etykieta',
+ 'property_label_required' => 'Podaj etykietę elementu menu.',
+ 'property_url_required' => 'Podaj adres URL elementu menu',
+ 'property_url' => 'URL',
+ 'property_icon' => 'Ikona',
+ 'property_icon_required' => 'Wybierz ikonę',
+ 'property_permissions' => 'Uprawnienia',
+ 'property_order' => 'Kolejność',
+ 'property_order_invalid' => 'Podaj kolejność elementu menu jako liczbę całkowitą.',
+ 'property_order_description' => 'Kolejność elementu menu ustala jego pozycje w menu. Jeśli kolejność nie jest podana, element zostanie ustawiony na końcu menu. Domyślne wartości kolejności są wielokrotnością liczby 100.',
+ 'property_attributes' => 'Atrybuty HTML',
+ 'property_code' => 'Kod',
+ 'property_code_invalid' => 'Kod powinien zawierać tylko litery alfabetu łacińskiego i cyfry.',
+ 'property_code_required' => 'Podaj kod elementu menu.',
+ 'error_duplicate_main_menu_code' => "Kod ':code' istnieje już w menu głównym.",
+ 'error_duplicate_side_menu_code' => "Kod ':code' istnieje już w menu bocznym.",
+ ],
+ 'localization' => [
+ 'menu_label' => 'Lokalizacja',
+ 'language' => 'Język',
+ 'strings' => 'Ciągi znaków',
+ 'confirm_delete' => 'Usunąć język?',
+ 'tab_new_language' => 'Nowy język',
+ 'no_records' => 'Nie znaleziono języków',
+ 'saved' => 'Zapisano plik języka',
+ 'error_cant_load_file' => 'Nie można załadować pliku tekstowego - nie znaleziono pliku.',
+ 'error_bad_localization_file_contents' => 'Nie można załadować pliku tekstowego. Pliki językowe powinny zawierać jedynie definicje tablicy i ciągi znaków.',
+ 'error_file_not_array' => 'Nie można załadować pliku tekstowego. Pliki językowe powinny zwracać tablicę.',
+ 'save_error' => "Błąd podczas zapisywania pliku ':name'. Sprawdź uprawnienia do zapisu.",
+ 'error_delete_file' => 'Nie można usunąć pliku językowego.',
+ 'add_missing_strings' => 'Dodaj brakujące ciągi znaków',
+ 'copy' => 'Kopiuj',
+ 'add_missing_strings_label' => 'Wybierz język, z którego chcesz skopiować brakujące ciągi znaków',
+ 'no_languages_to_copy_from' => 'Nie ma języków, z których można skopiować ciągi znaków.',
+ 'new_string_warning' => 'Nowy ciąg znaków lub sekcja',
+ 'structure_mismatch' => 'Struktura pliku języka źródłowego nie zgadza się ze strukturą edytowanego pliku. Niektóre pojedyncze ciągi znaków w edytowanym pliku odpowiadają sekcjom w pliku źródłowym (lub odwrotnie) ie nie można ich scalić automatycznie.',
+ 'create_string' => 'Utwórz nowy ciąg znaków',
+ 'string_key_label' => 'Klucz',
+ 'string_key_comment' => 'Wprowadź klucz używając kropki jako separatora sekcji. Na przykład plugin.search. Ciąg znaków zostanie utworzony w domyślnym pliku językowym wtyczki.',
+ 'string_value' => 'Wartość',
+ 'string_key_is_empty' => 'Klucz nie powinien być pusty',
+ 'string_key_is_a_string' => ':key jest ciągiem znaków i nie może zawierać innych ciągów znaków.',
+ 'string_value_is_empty' => 'Wartość nie powinna być pusta',
+ 'string_key_exists' => 'Klucz już istnieje',
+ ],
+ 'permission' => [
+ 'menu_label' => 'Uprawnienia',
+ 'tab' => 'Uprawnienia',
+ 'form_tab_permissions' => 'Uprawnienia',
+ 'btn_add_permission' => 'Dodaj uprawnienie',
+ 'btn_delete_permission' => 'Usuń uprawnienie',
+ 'column_permission_label' => 'Kod uprawnienia',
+ 'column_permission_required' => 'Podaj kod uprawnienia',
+ 'column_tab_label' => 'Tytuł karty',
+ 'column_tab_required' => 'Podaj nazwę karty uprawnienia',
+ 'column_label_label' => 'Etykieta',
+ 'column_label_required' => 'Podaj etykietę uprawnienia',
+ 'saved' => 'Zapisano uprawnienie',
+ 'error_duplicate_code' => "Kod uprawnienia ':code' już istnieje.",
+ ],
+ 'yaml' => [
+ 'save_error' => "Błąd podczas zapisywania pliku ':name'. Sprawdź uprawnienia do zapisu.",
+ ],
+ 'common' => [
+ 'error_file_exists' => "Plik już istnieje: ':path'.",
+ 'field_icon_description' => 'October używa ikon Font Autumn: http://octobercms.com/docs/ui/icon',
+ 'destination_dir_not_exists' => "Folder docelowy nie istnieje: ':path'.",
+ 'error_make_dir' => "Błąd podczas tworzenia folderu: ':name'.",
+ 'error_dir_exists' => "Folder już istnieje: ':path'.",
+ 'template_not_found' => "Nie znaleziono pliku szablonu: ':name'.",
+ 'error_generating_file' => "Błąd podczas tworzenia pliku: ':path'.",
+ 'error_loading_template' => "Błąd podczas ładowania pliku szablonu: ':name'.",
+ 'select_plugin_first' => 'Najpierw wybierz wtyczkę. Aby zobaczyć listę wtyczek kliknij ikonę > w lewym pasku bocznym.',
+ 'plugin_not_selected' => 'Nie wybrano wtyczki',
+ 'add' => 'Dodaj',
+ ],
+ 'migration' => [
+ 'entity_name' => 'Migracja',
+ 'error_version_invalid' => 'Wersja powinna być w formacie 1.0.1',
+ 'field_version' => 'Wersja',
+ 'field_description' => 'Opis',
+ 'field_code' => 'Kod',
+ 'save_and_apply' => 'Zapisz & Zastosuj',
+ 'error_version_exists' => 'Wersja już istnieje.',
+ 'error_script_filename_invalid' => 'Nazwa pliku migracji może zawierać tylko litery z alfabetu łacińskiego, cyfry i podkreślenia. Nazwa powinna zaczynać się od litery z alfabetu łacińskiego i nie może zawierać spacji.',
+ 'error_cannot_change_version_number' => 'Nie można zmienić numeru wersji dla zastosowanej wersji',
+ 'error_file_must_define_class' => 'Kod migracji powinien definiować klasę migracji lub seedera. Pozostaw pole puste jeśli chcesz tylko zaktualizować numer wersji.',
+ 'error_file_must_define_namespace' => 'Kod migracji powinien definiować przestrzeń nazw. Pozostaw pole puste, jeśli chcesz tylko zaktualizować numer wersji.',
+ 'no_changes_to_save' => 'Brak zmian do zapisania.',
+ 'error_namespace_mismatch' => "Kod migracji powinien używać przestrzeni nazw wtyczki: :namespace",
+ 'error_migration_file_exists' => "Plik migracji :file już istnieje. Użyj innej nazwy klasy.",
+ 'error_cant_delete_applied' => 'Ta wersja została już zastosowana i nie może być usunięta. Wycofaj ją w celu usunięcia.',
+ ],
+ 'components' => [
+ 'list_title' => 'Lista rekordów',
+ 'list_description' => 'Wyświetla listę rekordów dla wybranego modelu',
+ 'list_page_number' => 'Numer strony',
+ 'list_page_number_description' => 'Wartość jest używana aby określić, na której stronie znajduje się użytkownik.',
+ 'list_records_per_page' => 'Rekordy na stronę',
+ 'list_records_per_page_description' => 'Liczba rekordów do wyświetlenia na stronie. Zostaw puste aby wyłączyć paginację.',
+ 'list_records_per_page_validation' => 'Nieprawidłowy format liczby rekordów na stronę. Wartość powinna być liczbą.',
+ 'list_no_records' => 'Komunikat o braku rekordów',
+ 'list_no_records_description' => 'Komunikat, który zostanie wyświetlony w przypadku braku rekordów. Używany w domyślnym fragmencie komponentu.',
+ 'list_no_records_default' => 'Nie znaleziono rekordów',
+ 'list_sort_column' => 'Sortuj wg kolumny',
+ 'list_sort_column_description' => 'Kolumna modelu wg której będą sortowane rekordy',
+ 'list_sort_direction' => 'Kierunek',
+ 'list_display_column' => 'Kolumna do wyświetlenia',
+ 'list_display_column_description' => 'Kolumna do wyświetlenia na liście. Używana w domyślnym fragmencie komponentu.',
+ 'list_display_column_required' => 'Wybierz kolumnę do wyświetlenia.',
+ 'list_details_page' => 'Strona szczegółów',
+ 'list_details_page_description' => 'Strona do wyświetlania szczegółów rekordu.',
+ 'list_details_page_no' => '--brak strony szczegółów--',
+ 'list_sorting' => 'Sortowanie',
+ 'list_pagination' => 'Paginacja',
+ 'list_order_direction_asc' => 'Rosnąco',
+ 'list_order_direction_desc' => 'Malejąco',
+ 'list_model' => 'Klasa modelu',
+ 'list_scope' => 'Zakres',
+ 'list_scope_description' => 'Zakres modelu do pobierania rekordów. Opcjonalne',
+ 'list_scope_default' => '--wybierz zakres, opcjonalne--',
+ 'list_scope_value' => 'Wartość zakresu',
+ 'list_scope_value_description' => 'Opcjonalna wartość do przekazania do zakresu modelu.',
+ 'list_details_page_link' => 'Link do strony szczegółów',
+ 'list_details_key_column' => 'Kolumna klucza szczegółów',
+ 'list_details_key_column_description' => 'Kolumna modelu używana jako identyfikator rekordu w linkach na stronie szczegółów.',
+ 'list_details_url_parameter' => 'Nazwa parametru URL',
+ 'list_details_url_parameter_description' => 'Nazwa parametru adresu URL strony ze szczegółami, który służy jako identyfikator rekordu.',
+ 'details_title' => 'Szczegóły rekordu',
+ 'details_description' => 'Wyświetla szczegóły rekordu dla wybranego modelu',
+ 'details_model' => 'Klasa modelu',
+ 'details_identifier_value' => 'Identyfikator',
+ 'details_identifier_value_description' => 'Wartość identyfikatora, na podstawie której będzie ładowany rekord z bazy danych. Podaj wartość lub nazwę parametru adresu URL.',
+ 'details_identifier_value_required' => 'Identyfikator jest wymagany',
+ 'details_key_column' => 'Kolumna klucza',
+ 'details_key_column_description' => 'Kolumna używana jako identyfikator do pobierania rekordu z bazy danych.',
+ 'details_key_column_required' => 'Nazwa kolumny klucza jest wymagana',
+ 'details_display_column' => 'Kolumna do wyświetlenia',
+ 'details_display_column_description' => 'Kolumna modelu do wyświetlenia na stronie szczegółów. Używana w domyślnym fragmencie komponentu.',
+ 'details_display_column_required' => 'Wybierz kolumnę do wyświetlenia.',
+ 'details_not_found_message' => 'Komunikat o braku rekordu',
+ 'details_not_found_message_description' => 'Komunikat, który zostanie wyświetlony w przypadku nieznalezienia rekordu. Używany w domyślnym fragmencie komponentu.',
+ 'details_not_found_message_default' => 'Nie znaleziono rekordu',
+ ],
+ 'validation' => [
+ 'reserved' => ':attribute nie może być zarezerwowanym słowem kluczowym PHP'
+ ]
];
diff --git a/plugins/rainlab/builder/lang/pt-br.json b/plugins/rainlab/builder/lang/pt-br.json
deleted file mode 100644
index cd304ef..0000000
--- a/plugins/rainlab/builder/lang/pt-br.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "Builder": "Builder",
- "Provides visual tools for building October plugins.": "Provê ferramentas visuais para construir plugins para October CMS."
-}
\ No newline at end of file
diff --git a/plugins/rainlab/builder/lang/pt-br/lang.php b/plugins/rainlab/builder/lang/pt-br/lang.php
index 4e248b8..22a0f3f 100644
--- a/plugins/rainlab/builder/lang/pt-br/lang.php
+++ b/plugins/rainlab/builder/lang/pt-br/lang.php
@@ -1,669 +1,680 @@
- [
- 'add' => 'Criar plugin',
- 'no_records' => 'Nenhum plugins encontrado',
- 'no_name' => 'Sem nome',
- 'search' => 'Buscar...',
- 'filter_description' => 'Exibe todos os plugins ou apenas os seus plugins.',
- 'settings' => 'Configurações',
- 'entity_name' => 'Plugin',
- 'field_name' => 'Nome',
- 'field_author' => 'Autor',
- 'field_description' => 'Descrição',
- 'field_icon' => 'Ícone do Plugin',
- 'field_plugin_namespace' => 'Namespace Plugin',
- 'field_author_namespace' => 'Namespace Autor',
- 'field_namespace_description' => 'Namespace pode conter apenas letras latinas, numeros e deve começar com uma letra latina. Exemplo de namespace plugin: Blog',
- 'field_author_namespace_description' => 'Você não pode alterar o namespace com Builder depois que você criar o plugin. Exemplo de namespace autor: JohnSmith',
- 'tab_general' => 'Parâmetros gerais',
- 'tab_description' => 'Descrição',
- 'field_homepage' => 'URL da homepage do Plugin',
- 'no_description' => 'Nenhuma descrição informada para este plugin',
- 'error_settings_not_editable' => 'Configurações deste plugin não podem ser editadas com Builder.',
- 'update_hint' => 'Você pode editar nome e descrição dos plugins localizados na aba localização.',
- 'manage_plugins' => 'Criar e editar plugins',
- ],
- 'author_name' => [
- 'title' => 'Nome do autor',
- 'description' => 'Nome padrão de autor para usar para seus novos plugins. O nome do autor não é fixo - você pode alterá-lo nas configurações do plugin a qualquer hora.',
- ],
- 'author_namespace' => [
- 'title' => 'Namespace Autor',
- 'description' => 'Se você desenvolve para a Marketplace, o namespace deve combinar com o código de autor e não pode ser mudado. Veja a documentação para mais detalhes.',
- ],
- 'database' => [
- 'menu_label' => 'Banco de Dados',
- 'no_records' => 'Nenhuma tabela encontrada',
- 'search' => 'Buscar...',
- 'confirmation_delete_multiple' => 'Deletar as tabelas selecionadas?',
- 'field_name' => 'Nome da tabela',
- 'tab_columns' => 'Colunas',
- 'column_name_name' => 'Coluna',
- 'column_name_required' => 'Por favor, informe um nome da tabela',
- 'column_name_type' => 'Tipo',
- 'column_type_required' => 'Por favor, selecione o tipo da coluna',
- 'column_name_length' => 'Tamanho',
- 'column_validation_length' => 'O valor do tamanho deve ser integer ou especificado como precisão e escala (10,2) para colunas decimais. Espaços não são permitidos na coluna tamanho.',
- 'column_validation_title' => 'Apenas números, letras latinas minúsculas e underlines são permitidos nos nomes das colunas',
- 'column_name_unsigned' => 'Somente positivos',
- 'column_name_nullable' => 'Nulo',
- 'column_auto_increment' => 'AUTOINCR',
- 'column_default' => 'Padrão',
- 'column_auto_primary_key' => 'Primary Key',
- 'tab_new_table' => 'Nova Tabela',
- 'btn_add_column' => 'Acrescentar coluna',
- 'btn_delete_column' => 'Deletar coluna',
- 'btn_add_timestamps' => 'Acrescentar timestamps',
- 'btn_add_soft_deleting' => 'Acrescentar suporte a soft deleting',
- 'timestamps_exist' => 'Colunas created_at e deleted_at já existem na tabela.',
- 'soft_deleting_exist' => 'Coluna deleted_at já existe na tabela.',
- 'confirm_delete' => 'Deletar a tabela?',
- 'error_enum_not_supported' => 'A tabela contém coluna(s) com tipo "enum" que não é atualmente suportado pelo Builder.',
- 'error_table_name_invalid_prefix' => 'Nome da tabela deve começar com o prefixo do plugin: \':prefix\'.',
- 'error_table_name_invalid_characters' => 'Nome de tabela inválido. Nomes de tabelas devem conter apenas letras latinas, números e underlines. Nomes devem começar com uma letra latina e não podem conter espaços.',
- 'error_table_duplicate_column' => 'Nome de coluna duplicado: \':column\'.',
- 'error_table_auto_increment_in_compound_pk' => 'Uma coluna auto-increment não pode ser parte de uma chave primária composta.',
- 'error_table_mutliple_auto_increment' => 'A tabela não pode conter multiplas colunas auto-increment.',
- 'error_table_auto_increment_non_integer' => 'Colunas auto-increment devem ser do tipo integer.',
- 'error_table_decimal_length' => 'O parâmetro de tamanho para o tipo :type deve ser no formato \'10,2\', sem espaços.',
- 'error_table_length' => 'O parâmetro de tamanho para o tipo :type deve ser especificado como integer.',
- 'error_unsigned_type_not_int' => 'Erro na coluna \':column\'. A opção Somente Positivos só pode ser aplicada a colunas do tipo integer.',
- 'error_integer_default_value' => 'Valor padrão inválido para a coluna integer \':column\'. Os formatos permitidos são \'10\', \'-10\'.',
- 'error_decimal_default_value' => 'Valor padrão inválido para a coluna decimal ou double \':column\'. Os formatos permitodos são \'1.00\', \'-1.00\'.',
- 'error_boolean_default_value' => 'Valor padrão inválido para a coluna booleana \':column\'. Os valores permitidos são \'0\' e \'1\'.',
- 'error_unsigned_negative_value' => 'O valor padrão para a coluna somente positivos \':column\' não pode ser negativo.',
- 'error_table_already_exists' => 'A tabela \':name\' já existe no banco de dados.',
- 'error_table_name_too_long' => 'O nome da tabela não deve ser maior que 64 caracteres.',
- 'error_column_name_too_long' => 'O nome da coluna \':column\' é muito longo. Nomes de colunas não podem ser maiores que 64 caracteres.',
- ],
- 'model' => [
- 'menu_label' => 'Models',
- 'entity_name' => 'Model',
- 'no_records' => 'Nenhum model encontrado',
- 'search' => 'Buscar...',
- 'add' => 'Acrescentar...',
- 'forms' => 'Formulários',
- 'lists' => 'Listas',
- 'field_class_name' => 'Nome da classe',
- 'field_database_table' => 'Nome do Banco de dados',
- 'field_add_timestamps' => 'Acrescentar suporte a timestamp',
- 'field_add_timestamps_description' => 'A tabela do banco de dados precisa conter as colunas created_at e updated_at.',
- 'field_add_soft_deleting' => 'Acrescentar suporte a soft deleting',
- 'field_add_soft_deleting_description' => 'A tabela do banco de dados precisa conter a coluna deleted_at.',
- 'error_class_name_exists' => 'Arquivo Model já existe para o nome da classe especificada: :path',
- 'error_timestamp_columns_must_exist' => 'A tabela do banco de dados precisa conter as colunas created_at e updated_at.',
- 'error_deleted_at_column_must_exist' => 'A tabela do banco de dados precisa conter a coluna deleted_at.',
- 'add_form' => 'Acrescentar formulário',
- 'add_list' => 'Acrescentar lista',
- ],
- 'form' => [
- 'saved' => 'Formulário Salvo',
- 'confirm_delete' => 'Deletar o formulário?',
- 'tab_new_form' => 'Novo formulário',
- 'property_label_title' => 'Título',
- 'property_label_required' => 'Por favor, especifique o título do control.',
- 'property_span_title' => 'Span',
- 'property_comment_title' => 'Comentário',
- 'property_comment_above_title' => 'Comentário a cima',
- 'property_default_title' => 'Padrão',
- 'property_checked_default_title' => 'Marcado por padrão',
- 'property_css_class_title' => 'Classe CSS',
- 'property_css_class_description' => 'Classe CSS opcional para assinar o campo container.',
- 'property_disabled_title' => 'Desabilitado',
- 'property_hidden_title' => 'Oculto',
- 'property_required_title' => 'Obrigatório',
- 'property_field_name_title' => 'Nome do campo',
- 'property_placeholder_title' => 'Placeholder',
- 'property_default_from_title' => 'Padrão de',
- 'property_stretch_title' => 'Estender',
- 'property_stretch_description' => 'Especifica se este campo se estende para se ajustar à altura dos pais.',
- 'property_context_title' => 'Contexto',
- 'property_context_description' => 'Especifica que conceito de formulário deve ser usado quando exibir o campo.',
- 'property_context_create' => 'Criar',
- 'property_context_update' => 'Atualizar',
- 'property_context_preview' => 'Preview',
- 'property_dependson_title' => 'Depende de',
- 'property_trigger_action' => 'Ação',
- 'property_trigger_show' => 'Exibir',
- 'property_trigger_hide' => 'Ocultar',
- 'property_trigger_enable' => 'Habilitar',
- 'property_trigger_disable' => 'Desabilitar',
- 'property_trigger_empty' => 'Vazio',
- 'property_trigger_field' => 'Campo',
- 'property_trigger_field_description' => 'Define o outro nome de campo que dispara a ação.',
- 'property_trigger_condition' => 'Condição',
- 'property_trigger_condition_description' => 'Determina a condição que especifica o campo deve satisfazer a condição a ser considerada "true". Valores suportados: marcado, não marcado, valor[algumvalor].',
- 'property_trigger_condition_checked' => 'Marcado',
- 'property_trigger_condition_unchecked' => 'Não marcado',
- 'property_trigger_condition_somevalue' => 'valor[digite-o-valor-aqui]',
- 'property_preset_title' => 'Pré-configurado',
- 'property_preset_description' => 'Permite o valor do campo a ser inicalmente configurado pelo valor de outro campo, convertido usando a entrada de conversor pré-configurada.',
- 'property_preset_field' => 'Campo',
- 'property_preset_field_description' => 'Define o nome do campo pelo valor de fonte de outro campo.',
- 'property_preset_type' => 'Tipo',
- 'property_preset_type_description' => 'Especifica o tipo de conversão',
- 'property_attributes_title' => 'Atributos',
- 'property_attributes_description' => 'Atributos HTML customizados para acrescentar ao elemento do campo do formulário.',
- 'property_container_attributes_title' => 'Atributos do container',
- 'property_container_attributes_description' => 'Atributos HTML customizados para adicionar ao elemento container do campo do formulário.',
- 'property_group_advanced' => 'Avançado',
- 'property_dependson_description' => 'Uma lista de outros nomes de campos dos quais este campo depende, quando os outros campos são modificados, este campo será atualizado. Um campo por linha.',
- 'property_trigger_title' => 'Gatilho (Trigger)',
- 'property_trigger_description' => 'Permite mudar os atributos do elemento assim como visibilidade ou valor, baseado no estado de outros elementos.',
- 'property_default_from_description' => 'Pega o valor padrão do valor de outro campo.',
- 'property_field_name_required' => 'O nome do campo é obrigatório',
- 'property_field_name_regex' => 'O nome do campo apenas pode conter letras latinas, números, underlines, traços e colchetes.',
- 'property_attributes_size' => 'Tamanho',
- 'property_attributes_size_tiny' => 'Minúsculo',
- 'property_attributes_size_small' => 'Pequeno',
- 'property_attributes_size_large' => 'Largo',
- 'property_attributes_size_huge' => 'Grande',
- 'property_attributes_size_giant' => 'Gigante',
- 'property_comment_position' => 'Posição do Comentário',
- 'property_comment_position_above' => 'A cima',
- 'property_comment_position_below' => 'A baixo',
- 'property_hint_path' => 'Caminho sugerido do partial',
- 'property_hint_path_description' => 'Caminho para um arquivo partial que contenha o texto sugerido. Use o simbolo $ para referenciar à raiz do diretório, por exemplo: $/acme/blog/partials/_sugestao.htm',
- 'property_hint_path_required' => 'Por favor, digite a sugestão de caminho para o partial',
- 'property_partial_path' => 'Caminho para o partial',
- 'property_partial_path_description' => 'Caminho para um arquivo partial. Use o simbolo $ para referenciar ao diretório raiz dos plugins, por exemplo: $/acme/blog/partials/_partial.htm',
- 'property_partial_path_required' => 'Por favor, digite o caminho do partial',
- 'property_code_language' => 'Linguagem',
- 'property_code_theme' => 'Tema',
- 'property_theme_use_default' => 'Use o tema padrão',
- 'property_group_code_editor' => 'Editor de código',
- 'property_gutter' => 'Gutter',
- 'property_gutter_show' => 'Visível',
- 'property_gutter_hide' => 'Oculto',
- 'property_wordwrap' => 'Abreviar palavra',
- 'property_wordwrap_wrap' => 'Abreviar',
- 'property_wordwrap_nowrap' => 'Não abreviar',
- 'property_fontsize' => 'Tamanho da fonte',
- 'property_codefolding' => 'Duplicar código',
- 'property_codefolding_manual' => 'Manual',
- 'property_codefolding_markbegin' => 'Marcar início',
- 'property_codefolding_markbeginend' => 'Marcar início e fim',
- 'property_autoclosing' => 'Auto encerrar',
- 'property_enabled' => 'Habilitado',
- 'property_disabled' => 'Desabilitado',
- 'property_soft_tabs' => 'Tabelas suaves',
- 'property_tab_size' => 'Tamanho da tabela',
- 'property_readonly' => 'Somente leitura',
- 'property_use_default' => 'Usar configurações padrão',
- 'property_options' => 'Opções',
- 'property_prompt' => 'Pronto',
- 'property_prompt_description' => 'Texto a exibir para o botão criar.',
- 'property_prompt_default' => 'Acrescentar novo item',
- 'property_available_colors' => 'Cores disponíveis',
- 'property_available_colors_description' => 'Lista de cores disponíveis no frmato hexadecimal (#FF0000). Deixe em branco para a configuração padrão de cores. Digite um valor por linha.',
- 'property_datepicker_mode' => 'Modo',
- 'property_datepicker_mode_date' => 'Data',
- 'property_datepicker_mode_datetime' => 'Data e hora',
- 'property_datepicker_mode_time' => 'Hora',
- 'property_datepicker_min_date' => 'Data mínima',
- 'property_datepicker_max_date' => 'Data máxima',
- 'property_datepicker_year_range' => 'Alcançe de Anos',
- 'property_datepicker_year_range_description' => 'Número de anos que cada lado (ex. 10) ou array de alcançe superior/inferior (ex. [1900,2015]). Deixe em branco para o valor padrão (10).',
- 'property_datepicker_year_range_invalid_format' => 'Formato de alcançe de anos inválido. Use Números (ex. "10") ou array de alcançe superior/inferior (ex. "[1900,2015]")',
- 'property_fileupload_mode' => 'Modo',
- 'property_fileupload_mode_file' => 'Arquivo',
- 'property_fileupload_mode_image' => 'Imagem',
- 'property_group_fileupload' => 'Upload de arquivo',
- 'property_fileupload_image_width' => 'Largura da imagem',
- 'property_fileupload_image_width_description' => 'Parâmetro opcional - imagens serão redimensionadas para esta largura. Aplica-se apenas ao modo Imagem.',
- 'property_fileupload_invalid_dimension' => 'Valor de dimensão inválido - por favor, digite um número.',
- 'property_fileupload_image_height' => 'Altura da imagem',
- 'property_fileupload_image_height_description' => 'Parâmetro opcional - imagens serão redimensionadas para esta altura. Aplica-se apenas ao modo Imagem.',
- 'property_fileupload_file_types' => 'Tipos de arquivos',
- 'property_fileupload_file_types_description' => 'Lista opcional separada por vírgula das extensões de arquivos que são aceitas pelo uploaded. Ex: zip, txt',
- 'property_fileupload_mime_types' => 'Tipos MIME',
- 'property_fileupload_mime_types_description' => 'Lista opcional separada por vírgula dos tipos MIME que são aceitas pelo uploader, assim como extensões ou nomes totalmente qualificados. Ex: bin, txt',
- 'property_fileupload_use_caption' => 'Usar legenda',
- 'property_fileupload_use_caption_description' => 'Permite um título e descrição a serem configurados para o arquivo.',
- 'property_fileupload_thumb_options' => 'Opções de miniatua',
- 'property_fileupload_thumb_options_description' => 'Gerencia opções para as miniaturas geradas automaticamente. Aplica-se apenas ao modo imagem.',
- 'property_fileupload_thumb_mode' => 'Modo',
- 'property_fileupload_thumb_auto' => 'Automático',
- 'property_fileupload_thumb_exact' => 'Exato',
- 'property_fileupload_thumb_portrait' => 'Retrato',
- 'property_fileupload_thumb_landscape' => 'Paisagem',
- 'property_fileupload_thumb_crop' => 'Cropar',
- 'property_fileupload_thumb_extension' => 'Extensão de arquivo',
- 'property_name_from' => 'Nome da coluna',
- 'property_name_from_description' => 'Relação de nome de coluna a usar para exibir um nome.',
- 'property_relation_select' => 'Selecionar',
- 'property_relation_select_description' => 'CONCATENA multiplas colunas para exibir um nome',
- 'property_description_from' => 'Coluna Descrição',
- 'property_description_from_description' => 'Relação de nome de coluna a usar para exibir uma descrição.',
- 'property_recordfinder_prompt' => 'Pronto',
- 'property_recordfinder_prompt_description' => 'Texto para exibir quando não há gravação selecionada. O caractere %s representa o ícone buscar. Deixe em branco para o padrão pronto.',
- 'property_recordfinder_list' => 'Configuração de lista',
- 'property_recordfinder_list_description' => 'Uma referencia a um arquivo de definições de listas de colunas. Use o simbolo $ para referenciar a raiz de diretório do plugin, por exemplo: $/acme/blog/lists/_lista.yaml',
- 'property_recordfinder_list_required' => 'Por favor, forneça um caminho para a lista de arquivos YAML',
- 'property_group_recordfinder' => 'Gravar buscador',
- 'property_mediafinder_mode' => 'Modo',
- 'property_mediafinder_mode_file' => 'Arquivo',
- 'property_mediafinder_mode_image' => 'Imagem',
- 'property_mediafinder_image_width_description' => 'Se estiver usando o tipo imagem, o preview de imagem será exibido nesta largura, opcional.',
- 'property_mediafinder_image_height_description' => 'Se estiver usando o modo imagem, o preview de imagem será exibido nesta altura, opcional.',
- 'property_group_relation' => 'Relação',
- 'property_relation_prompt' => 'Pronto',
- 'property_relation_prompt_description' => 'Texto a exibir quando não há seleções disponíveis.',
- 'property_empty_option' => 'Opção Vazia',
- 'property_empty_option_description' => 'A opção Vazia corresponde a seleção vazia, mas ao contrário do marcador, ele pode ser selecionado novamente.',
- 'property_max_items' => 'Máximo de itens',
- 'property_max_items_description' => 'Número máximo de itens a permitir com o repetidor.',
- 'control_group_standard' => 'Comum',
- 'control_group_widgets' => 'Widgets',
- 'click_to_add_control' => 'Acrescentar control',
- 'loading' => 'Carregando...',
- 'control_text' => 'Texto',
- 'control_text_description' => 'Caixa de texto único',
- 'control_password' => 'Senha',
- 'control_password_description' => 'Campo de texto para senha de linha única',
- 'control_checkbox' => 'Checkbox',
- 'control_checkbox_description' => 'Único checkbox',
- 'control_switch' => 'Switch',
- 'control_switch_description' => 'Switchbox único, uma alternativa ao checkbox',
- 'control_textarea' => 'Text area',
- 'control_textarea_description' => 'Multiplas caixas de texto com altura controlável',
- 'control_dropdown' => 'Dropdown',
- 'control_dropdown_description' => 'Lista dropdown com opções estáticas ou dinâmicas',
- 'control_balloon-selector' => 'Balloon Selector',
- 'control_balloon-selector_description' => 'Lista onde somente um item pode ser selecionado por vez, com opções estáticas ou dinâmicas',
- 'control_unknown' => 'Tipo de control desconhecido: :type',
- 'control_repeater' => 'Repetidor',
- 'control_repeater_description' => 'Exibe um conjunto de repetições de form controls',
- 'control_number' => 'Número',
- 'control_number_description' => 'Text box de linha única que aceita apenas números',
- 'control_hint' => 'Aviso',
- 'control_hint_description' => 'Exibe o conteúdo de uma partial em uma caixa que pode ser ocultada pelo usuário',
- 'control_partial' => 'Partial',
- 'control_partial_description' => 'Exibe o conteúdo de um partial',
- 'control_section' => 'Seção',
- 'control_section_description' => 'Exibe uma seção de formulário com cabeçalho e sub-cabeçalho',
- 'control_radio' => 'Lista Radio',
- 'control_radio_description' => 'Uma lista de opções radio, onde apenas um item pode ser selecionado por vez',
- 'control_radio_option_1' => 'Opção 1',
- 'control_radio_option_2' => 'Opção 2',
- 'control_checkboxlist' => 'Lista Checkbox',
- 'control_checkboxlist_description' => 'Uma lista de checkboxes, onde múltiplos itens podem ser selecionados',
- 'control_codeeditor' => 'Editor de códigos',
- 'control_codeeditor_description' => 'Editor modo texto para código formatado ou de marcação',
- 'control_colorpicker' => 'Seletor de cor',
- 'control_colorpicker_description' => 'Um campo para selecionar um valor haxadecimal de cor',
- 'control_datepicker' => 'Seletor Data',
- 'control_datepicker_description' => 'Campo texto usado para selecionar data e hora',
- 'control_richeditor' => 'Editor Rico',
- 'control_richeditor_description' => 'Editor visual para formatação rica de texto, também conhecido como um editor WYSIWYG',
- 'control_markdown' => 'Editor Markdown',
- 'control_markdown_description' => 'Editor básico para formatação de texto Markdown',
- 'control_fileupload' => 'Upload de arquivo',
- 'control_fileupload_description' => 'Uploader de arquivos para imagens ou arquivos comuns',
- 'control_recordfinder' => 'Buscador de registro',
- 'control_recordfinder_description' => 'Campo com detalhes de um registro relacionado com o recurso de pesquisa de registro',
- 'control_mediafinder' => 'Buscador de mídia',
- 'control_mediafinder_description' => 'Campo para selecionar um item de uma biblioteca do gerenciador de mídia',
- 'control_relation' => 'Relação',
- 'control_relation_description' => 'Exibe tanto um dropdown ou uma lista checkbox para selecionar um registro relacionado',
- 'error_file_name_required' => 'Por favor, digite o nome de arquivo do formulário.',
- 'error_file_name_invalid' => 'O nome de arquivo pode conter apenas letras latinas, números, underlines, pontos e barras.',
- 'span_left' => 'Esquerda',
- 'span_right' => 'Direita',
- 'span_full' => 'Completo',
- 'span_auto' => 'Automático',
- 'empty_tab' => 'Aba vazia',
- 'confirm_close_tab' => 'A aba contém controles que serão deletados. Continuar?',
- 'tab' => 'Aba formulário',
- 'tab_title' => 'Título',
- 'controls' => 'Controles',
- 'property_tab_title_required' => 'A aba título é obrigatória.',
- 'tabs_primary' => 'Abas primárias',
- 'tabs_secondary' => 'Abas secundárias',
- 'tab_stretch' => 'Extender',
- 'tab_stretch_description' => 'Especifica se este contêiner de guias se estende para se ajustar à altura pai.',
- 'tab_css_class' => 'Classe CSS',
- 'tab_css_class_description' => 'Assinala uma classe CSS ao contêiner de abas.',
- 'tab_name_template' => 'Aba %s',
- 'tab_already_exists' => 'Aba com o título especificado já existe.',
- ],
- 'list' => [
- 'tab_new_list' => 'Nova lista',
- 'saved' => 'Lista salva',
- 'confirm_delete' => 'Deletar a lista?',
- 'tab_columns' => 'Colunas',
- 'btn_add_column' => 'Acrescentar coluna',
- 'btn_delete_column' => 'Deletar coluna',
- 'column_dbfield_label' => 'Campo',
- 'column_dbfield_required' => 'Por favor, digite um campo model',
- 'column_name_label' => 'Rótulo',
- 'column_label_required' => 'Por favor, informe o rótulo da coluna',
- 'column_type_label' => 'Tipo',
- 'column_type_required' => 'Por favor, informe o tipo da coluna',
- 'column_type_text' => 'Texto',
- 'column_type_number' => 'Número',
- 'column_type_switch' => 'Switch',
- 'column_type_datetime' => 'Data e Hora',
- 'column_type_date' => 'Data',
- 'column_type_time' => 'Hora',
- 'column_type_timesince' => 'Tempo Passado',
- 'column_type_timetense' => 'Tempo por Extenso',
- 'column_type_select' => 'Seleção',
- 'column_type_partial' => 'Partial',
- 'column_label_default' => 'Padrão',
- 'column_label_searchable' => 'Buscar',
- 'column_label_sortable' => 'Classificável',
- 'column_label_invisible' => 'Invisível',
- 'column_label_select' => 'Seleção',
- 'column_label_relation' => 'Relação',
- 'column_label_css_class' => 'Classe CSS',
- 'column_label_width' => 'Largura',
- 'column_label_path' => 'Caminho',
- 'column_label_format' => 'Formato',
- 'column_label_value_from' => 'Valor de',
- 'error_duplicate_column' => 'Campo nome de coluna duplicado: \':column\'.',
- 'btn_add_database_columns' => 'Acrescentar colunas ao banco de dados',
- 'all_database_columns_exist' => 'Todas as colunas do banco de dados já estão definidas na lista',
- ],
- 'controller' => [
- 'menu_label' => 'Controllers',
- 'no_records' => 'Nenhum controller de plugin encontrado',
- 'controller' => 'Controller',
- 'behaviors' => 'Comportamentos',
- 'new_controller' => 'Novo controller',
- 'error_controller_has_no_behaviors' => 'O controller não possui nenhum comportamento configurável.',
- 'error_invalid_yaml_configuration' => 'Erro ao carregar arquivo de configuração de comportamento: :file',
- 'behavior_form_controller' => 'Comportamento de controller de formulários',
- 'behavior_form_controller_description' => 'Acrescentar funcionalidade de formulários a uma página back-end. O comportamento provê três páginas chamadas Create, Update e Preview.',
- 'property_behavior_form_placeholder' => '--selecionar formulário--',
- 'property_behavior_form_name' => 'Nome',
- 'property_behavior_form_name_description' => 'O nome do objeto gerenciado por este formulário',
- 'property_behavior_form_name_required' => 'Por favor, digite o nome do formulário',
- 'property_behavior_form_file' => 'Configuração de formulário',
- 'property_behavior_form_file_description' => 'Refere-se a um arquivo de definição de campos de formulário',
- 'property_behavior_form_file_required' => 'Por favor, digite um caminho para o arquivo de configuração do formulário',
- 'property_behavior_form_model_class' => 'Classe Model',
- 'property_behavior_form_model_class_description' => 'Um nome de classe model, os dados do formulário são carregados e salvos neste model.',
- 'property_behavior_form_model_class_required' => 'Por favor, selecione uma classe de model',
- 'property_behavior_form_default_redirect' => 'Redirecionamento padrão',
- 'property_behavior_form_default_redirect_description' => 'Uma página para redirecionar por padrão quando o formulário for salvo ou cancelado.',
- 'property_behavior_form_create' => 'Criar registrar página',
- 'property_behavior_form_redirect' => 'Redirecionar',
- 'property_behavior_form_redirect_description' => 'Uma página para redirecionar quando um registro é criado.',
- 'property_behavior_form_redirect_close' => 'Encerrar redirecionamento',
- 'property_behavior_form_redirect_close_description' => 'Uma página para redirecionar quando um registro é criado e a variável encerrar é enviada com o requerimento.',
- 'property_behavior_form_flash_save' => 'Salvar menságem rápida',
- 'property_behavior_form_flash_save_description' => 'Menságem rápida para exibir quando o registro é salvo.',
- 'property_behavior_form_page_title' => 'Título da página',
- 'property_behavior_form_update' => 'Atualizar registro da página',
- 'property_behavior_form_update_redirect' => 'Redirecionar',
- 'property_behavior_form_create_redirect_description' => 'Uma página para redirecionar quando um registro é salvo.',
- 'property_behavior_form_flash_delete' => 'Deletar mensagem rápida',
- 'property_behavior_form_flash_delete_description' => 'Mensagem rápida para exibir quando o registro é deletado.',
- 'property_behavior_form_preview' => 'Preview registro da página',
- 'behavior_list_controller' => 'Controller de Lista Comportamento',
- 'behavior_list_controller_description' => 'Provê a lista classificável e buscável com links opcionais em seus registros. O comportamento cria automaticamente a ação controller "index".',
- 'property_behavior_list_title' => 'Título da lista',
- 'property_behavior_list_title_required' => 'Por favor, digite o título da lista',
- 'property_behavior_list_placeholder' => '--Selecione a lista--',
- 'property_behavior_list_model_class' => 'Classe Model',
- 'property_behavior_list_model_class_description' => 'Um nome de classe model, os dados da lista são carregados deste model.',
- 'property_behavior_form_model_class_placeholder' => '--selecione o model--',
- 'property_behavior_list_model_class_required' => 'Por favor, selecione uma classe model',
- 'property_behavior_list_model_placeholder' => '--selecione o model--',
- 'property_behavior_list_file' => 'Arquivo de configuração de lista',
- 'property_behavior_list_file_description' => 'Refere-se a um arquivo de definição de lista',
- 'property_behavior_list_file_required' => 'Por favor, digite um caminho para o arquivo de configuração de lista',
- 'property_behavior_list_record_url' => 'Gravar URL',
- 'property_behavior_list_record_url_description' => 'Link cada lista de registro para outra página. Ex: users/update:id. A :id parte é substituída com o identificador de registro.',
- 'property_behavior_list_no_records_message' => 'Nenhum registro de mensagem',
- 'property_behavior_list_no_records_message_description' => 'Uma mensagem a exibir quando nenhum registro for encontrado',
- 'property_behavior_list_recs_per_page' => 'Registros por página',
- 'property_behavior_list_recs_per_page_description' => 'Registros a exibir por página, use 0 para nenhuma página. O padrão é: 0',
- 'property_behavior_list_recs_per_page_regex' => 'Registros por página devem ser um valor integer',
- 'property_behavior_list_show_setup' => 'Exibe botão configurações',
- 'property_behavior_list_show_sorting' => 'Exibir classificação',
- 'property_behavior_list_default_sort' => 'Classificação padrão',
- 'property_behavior_form_ds_column' => 'Coluna',
- 'property_behavior_form_ds_direction' => 'Direção',
- 'property_behavior_form_ds_asc' => 'Ascendente',
- 'property_behavior_form_ds_desc' => 'Descendente',
- 'property_behavior_list_show_checkboxes' => 'Exibir checkboxes',
- 'property_behavior_list_onclick' => 'Manusear On click',
- 'property_behavior_list_onclick_description' => 'Customiza código JavaScript para executar quando clicar em um registro.',
- 'property_behavior_list_show_tree' => 'Exibir árvore',
- 'property_behavior_list_show_tree_description' => 'Exibe uma árvore de hierarquia para registros pai/filho.',
- 'property_behavior_list_tree_expanded' => 'Expandir árvore',
- 'property_behavior_list_tree_expanded_description' => 'Determina se os nós da árvore devem ser expandidos por padrão.',
- 'property_behavior_list_toolbar' => 'Barra de ferramentas',
- 'property_behavior_list_toolbar_buttons' => 'Partial Botões',
- 'property_behavior_list_toolbar_buttons_description' => 'Refere-se a um arquivo controller partial com os botões da barra de ferramentas. Ex: lista_BarradeFerramentas',
- 'property_behavior_list_search' => 'Buscar',
- 'property_behavior_list_search_prompt' => 'Buscar pronto',
- 'property_behavior_list_filter' => 'Configurar filtros',
- 'behavior_reorder_controller' => 'Reordenar comportamento do controller',
- 'behavior_reorder_controller_description' => 'Fornece recursos para classificar e reordenar seus registros. O comportamento cria automaticamente a ação "reorder" do controller.',
- 'property_behavior_reorder_title' => 'Título do reordenador',
- 'property_behavior_reorder_title_required' => 'Por favor, digite o título do reordenador',
- 'property_behavior_reorder_name_from' => 'Nome do atributo',
- 'property_behavior_reorder_name_from_description' => 'Atributo do model que pode ser usado como um rótulo para cada registro.',
- 'property_behavior_reorder_name_from_required' => 'Por favor, digite o nome do atributo',
- 'property_behavior_reorder_model_class' => 'Classe Model',
- 'property_behavior_reorder_model_class_description' => 'Um nome de classe model, o dado registrado é carregado deste model.',
- 'property_behavior_reorder_model_class_placeholder' => '--selecionar model--',
- 'property_behavior_reorder_model_class_required' => 'Por favor, selecione uma classe model',
- 'property_behavior_reorder_model_placeholder' => '--selecione o model--',
- 'property_behavior_reorder_toolbar' => 'Bara de ferramentas',
- 'property_behavior_reorder_toolbar_buttons' => 'Botões da Partial',
- 'property_behavior_reorder_toolbar_buttons_description' => 'Refere-se ao arquivo partial controller com os botões da barra de ferramentas. Ex: reordenar_BarradeFerramentas',
- 'error_controller_not_found' => 'Arquivo original do controller não foi encontrado.',
- 'error_invalid_config_file_name' => 'O nome do arquivo (:file) de configuração do comportamento :class contém caracteres inválidos e não pode ser carregado.',
- 'error_file_not_yaml' => 'O nome do arquivo (:file) de configuração do comportamento :class não é um arquivo YAML. Somente arquivos de configuração YAML são suportados.',
- 'saved' => 'Controller salvo',
- 'controller_name' => 'Nome do Controller',
- 'controller_name_description' => 'O nome do controller define o nome da classe e URL das páginas back-end do controller. Convenções de nomenclatura de variáveis PHP padrão se aplicam. O primeiro símbolo deve ser uma letra latina maiúscula. Exemplos: Categorias, Postagens, Produtos.',
- 'base_model_class' => 'Classe model base',
- 'base_model_class_description' => 'Selecione uma classe model para usar como um model base no comportamento que necessita ou suporta models. Você pode configurar o comportamento depois.',
- 'base_model_class_placeholder' => '--Selecione o model--',
- 'controller_behaviors' => 'Comportamentos',
- 'controller_behaviors_description' => 'Selecione os comportamentos que o controller deve implementar. O Builder criará arquivos de view necessários para os comportamentos automaticamente.',
- 'controller_permissions' => 'Permissões',
- 'controller_permissions_description' => 'Selecione permissões de usuário que podem acessar as views dos controllers. As permissões podem ser definidas na guia Permissões do Builder. Você pode alterar essa opção no script PHP do controller mais tarde.',
- 'controller_permissions_no_permissions' => 'O plugin não definiu nenhuma permissão.',
- 'menu_item' => 'Item de menu ativo',
- 'menu_item_description' => 'Selecione um item de menu para tornar ativo para as páginas do controller. Você pode alterar essa opção no script PHP do controlador mais tarde.',
- 'menu_item_placeholder' => '--selecione o item de menu--',
- 'error_unknown_behavior' => 'A classe de comportamento :class não está registrada na biblioteca de comportamento.',
- 'error_behavior_view_conflict' => 'Os comportamentos selecionados fornecem visualizações conflitantes (:view) e não podem ser usadas junto a um controller.',
- 'error_behavior_config_conflict' => 'Os comportamentos selecionados fornecem arquivos de configuração conflitantes (:file) e não podem ser usadas junto a um controller.',
- 'error_behavior_view_file_not_found' => 'A view do template :view do comportamento :class não pode ser localizado.',
- 'error_behavior_config_file_not_found' => 'O template de configuração :file do comportamento :class não pode ser localizado.',
- 'error_controller_exists' => 'O arquivo do controlador :file já existe.',
- 'error_controller_name_invalid' => 'Formato de nome de controller inválido. O nome deve conter apenas letras latinas e números. O primeiro simbolo deve ser uma letra latina maiúscula.',
- 'error_behavior_view_file_exists' => 'O arquivo de configuração do controller :view já existe.',
- 'error_behavior_config_file_exists' => 'O arquivo de configuração do comportamento :file já existe.',
- 'error_save_file' => 'Erro ao salvar o arquivo de controller :file',
- 'error_behavior_requires_base_model' => 'O comportamento :behavior necessita que seja selecionado uma classe model base.',
- 'error_model_doesnt_have_lists' => 'O model selecionado não possui nenhuma lista. Por favor, crie primeiro uma lista.',
- 'error_model_doesnt_have_forms' => 'O model selecionado não possui nenhum formulário. Por favor, crie primeiro um formulário.',
- ],
- 'version' => [
- 'menu_label' => 'Versões',
- 'no_records' => 'Nenhuma versão de plugin encontrada',
- 'search' => 'Buscar...',
- 'tab' => 'Versões',
- 'saved' => 'Versão salva',
- 'confirm_delete' => 'Deletar a versão?',
- 'tab_new_version' => 'Nova versão',
- 'migration' => 'Migração',
- 'seeder' => 'Semeador',
- 'custom' => 'Aumente o número da versão',
- 'apply_version' => 'Aplicar versão',
- 'applying' => 'Aplicando...',
- 'rollback_version' => 'Reverter versão',
- 'rolling_back' => 'Revertendo...',
- 'applied' => 'Versão aplicada',
- 'rolled_back' => 'Versão revertida',
- 'hint_save_unapplied' => 'Você salvou uma versão não aplicada. As versões não aplicadas podem ser aplicadas automaticamente quando você ou outro usuário faz o login no back-end ou quando uma tabela de banco de dados é salva na seção Banco de Dados do Builder.',
- 'hint_rollback' => 'Reverter uma versão também reverterá todas as versões mais recentes que esta. Observe que versões não aplicadas podem ser aplicadas automaticamente pelo sistema quando você ou outro usuário faz o login no back-end ou quando uma tabela do banco de dados é salva na seção Banco de Dados do Builder.',
- 'hint_apply' => 'A aplicação de uma versão também aplicará todas as versões antigas não aplicadas do plug-in.',
- 'dont_show_again' => 'Não mostrar novamente',
- 'save_unapplied_version' => 'Salvar versão não aplicada',
- ],
- 'menu' => [
- 'menu_label' => 'Menu Backend',
- 'tab' => 'Menus',
- 'items' => 'Itens de Menu',
- 'saved' => 'Menus salvos',
- 'add_main_menu_item' => 'Acrescentar item de menu principal',
- 'new_menu_item' => 'Item de menu',
- 'add_side_menu_item' => 'Acrescentar sub-item',
- 'side_menu_item' => 'Item de menu lateral',
- 'property_label' => 'Rótulo',
- 'property_label_required' => 'Por favor, digite os rótulos dos itens de menu.',
- 'property_url_required' => 'Por favor, digite a URL do item de menu',
- 'property_url' => 'URL',
- 'property_icon' => 'Ícone',
- 'property_icon_required' => 'Por favor, selecione um ícone',
- 'property_permissions' => 'Permissões',
- 'property_order' => 'Ordenar',
- 'property_order_invalid' => 'Por favor, insira a ordem do item de menu como valor integer.',
- 'property_order_description' => 'A ordem do item de menu gerencia sua posição no menu. Se a ordem não for fornecida, o item será colocado no final do menu. Os valores de ordem padrão têm o incremento de 100.',
- 'property_attributes' => 'Atributos HTML',
- 'property_code' => 'Código',
- 'property_code_invalid' => 'O código deve conter apenas letra latina e números',
- 'property_code_required' => 'Por favor, insira o código do item de menu.',
- 'error_duplicate_main_menu_code' => 'Código de item de menu \':code\' duplicado.',
- 'error_duplicate_side_menu_code' => 'Código de item de menu lateral \':code\' duplicado.',
- ],
- 'localization' => [
- 'menu_label' => 'Idiomas',
- 'language' => 'Idioma',
- 'strings' => 'Strings',
- 'confirm_delete' => 'Deletar o idioma?',
- 'tab_new_language' => 'Novo idioma',
- 'no_records' => 'Nenhum idioma encontrado',
- 'saved' => 'Arquivo de idioma salvo',
- 'error_cant_load_file' => 'Não é possível carregar o arquivo de idioma solicitado - arquivo não encontrado.',
- 'error_bad_localization_file_contents' => 'Não é possível carregar o arquivo de idioma solicitado. Os arquivos de idiomas podem conter apenas definições e strings de array.',
- 'error_file_not_array' => 'Não é possível carregar o arquivo de idioma solicitado. Arquivos de idioma devem retornar um array.',
- 'save_error' => 'Erro ao salvar o arquivo \':name\'. Por favor, verifique as permissões de escrita.',
- 'error_delete_file' => 'Erro ao deletar arquivo de idioma.',
- 'add_missing_strings' => 'Acrescentar strings faltantes',
- 'copy' => 'Copiar',
- 'add_missing_strings_label' => 'Selecione o idioma para copiar as strings faltantes',
- 'no_languages_to_copy_from' => 'Não há outro idioma para copiar strings.',
- 'new_string_warning' => 'Nova string ou seção',
- 'structure_mismatch' => 'A estrutura do arquivo fonte do idioma não combina com a estrutura do arquivo que está sendo editado. Algumas strings individuais do arquivo editado correspondente a seções no arquivo fonte (ou vice versa) e não pode ser mesclado automaticamente.',
- 'create_string' => 'Criar nova string',
- 'string_key_label' => 'Chave de String',
- 'string_key_comment' => 'Insira a chave de string usando o ponto como um separador de seção. For example: plugin.buscar. A string será criada no arquivo de localização do idioma padrão do plugin.',
- 'string_value' => 'Valor da string',
- 'string_key_is_empty' => 'Chave de string não pode ser vazio',
- 'string_key_is_a_string' => ':key é uma string e não pode conter outras strings.',
- 'string_value_is_empty' => 'Valor da string não pode ser vazio',
- 'string_key_exists' => 'A chave de string já existe',
- ],
- 'permission' => [
- 'menu_label' => 'Permissões',
- 'tab' => 'Permissões',
- 'form_tab_permissions' => 'Permissões',
- 'btn_add_permission' => 'Acrescentar permissão',
- 'btn_delete_permission' => 'Deletar permissão',
- 'column_permission_label' => 'Código de permissão',
- 'column_permission_required' => 'Por favor, digite o código de permissão',
- 'column_tab_label' => 'Título da aba',
- 'column_tab_required' => 'Por favor, digite o título da aba permissão',
- 'column_label_label' => 'Rótulo',
- 'column_label_required' => 'Por favor, digite o rótulo da permissão',
- 'saved' => 'Permissões salvas',
- 'error_duplicate_code' => 'Código de permissão \':code\' duplicado.',
- ],
- 'yaml' => [
- 'save_error' => 'Erro ao salvar o arquivo \':name\'. Por favor, verifique permissões de escrita.',
- ],
- 'common' => [
- 'error_file_exists' => 'Arquivo \':path\' já existe.',
- 'field_icon_description' => 'October usa ícones Font Autumn: http://octobercms.com/docs/ui/icon',
- 'destination_dir_not_exists' => 'O diretório de destino \':path\' não existe.',
- 'error_make_dir' => 'Erro ao criar diretório: \':name\'.',
- 'error_dir_exists' => 'Diretório \':path\' já existe.',
- 'template_not_found' => 'Arquivo de template \':name\' não encontrado.',
- 'error_generating_file' => 'Erro ao gerar arquivo: \':path\'.',
- 'error_loading_template' => 'Erro ao carregar arquivo de template: \':name\'.',
- 'select_plugin_first' => 'Por favor, selecione um plugin primeiro. Para ver a lista de plugins, clique no ícone > na barra lateral esquerda.',
- 'plugin_not_selected' => 'Plugin não selecionado',
- 'add' => 'Acrescentar',
- ],
- 'migration' => [
- 'entity_name' => 'Migration',
- 'error_version_invalid' => 'A versão deve ser especificada no formato 1.0.1',
- 'field_version' => 'Versão',
- 'field_description' => 'Descrição',
- 'field_code' => 'Código',
- 'save_and_apply' => 'Salvar e aplicar',
- 'error_version_exists' => 'A versão da migration já existe.',
- 'error_script_filename_invalid' => 'O nome do arquivo de script do migration pode conter apenas letras latinas, números e underlines. O nome deve começar com uma letra latina e não pode conter espaços.',
- 'error_cannot_change_version_number' => 'Não é possível alterar o número da versão para uma versão aplicada.',
- 'error_file_must_define_class' => 'O código de migração deve definir uma migration ou classe de semeador. Deixe o campo de código em branco se você quiser apenas atualizar o número da versão.',
- 'error_file_must_define_namespace' => 'O código do migration deve definir um namespace. Deixe o campo de código em branco se você quiser apenas atualizar o número da versão.',
- 'no_changes_to_save' => 'Não há mudanças para salvar.',
- 'error_namespace_mismatch' => 'O código do migration deve usar o namespace :namespace do plugin',
- 'error_migration_file_exists' => 'O arquivo migration :file já existe. Por favor, use outro nome de classe.',
- 'error_cant_delete_applied' => 'Esta versão já foi aplicada e não pode ser excluída. Por favor, reverter a versão primeiro.',
- ],
- 'components' => [
- 'list_title' => 'Lista de registros',
- 'list_description' => 'Exibe uma lista de registros para um model selecionado',
- 'list_page_number' => 'Número da página',
- 'list_page_number_description' => 'Este valor é usado para determinar em qual página o usuário está.',
- 'list_records_per_page' => 'Registros por página',
- 'list_records_per_page_description' => 'Número de registros para exibir em uma única página. Deixe em branco para desabilitar a ação.',
- 'list_records_per_page_validation' => 'Formato inválido dos registros por valor de página. O valor deve ser um número.',
- 'list_no_records' => 'Nenhuma mensagem de registro',
- 'list_no_records_description' => 'Mensagem a exibir na lista, em caso de não haver registros. Usado na partial padrão do componente.',
- 'list_no_records_default' => 'Nenhum registro encontrado',
- 'list_sort_column' => 'Classificar por coluna',
- 'list_sort_column_description' => 'A coluna modela como os registros devem ser classificados',
- 'list_sort_direction' => 'Direção',
- 'list_display_column' => 'Exibir coluna',
- 'list_display_column_description' => 'Coluna para exibir na lista. Usado no partial padrão do componente.',
- 'list_display_column_required' => 'Por favor, selecione uma coluna exibida.',
- 'list_details_page' => 'Página detalhes',
- 'list_details_page_description' => 'Página para exibir detalhes dos registros.',
- 'list_details_page_no' => '--nenhuma página de detalhes--',
- 'list_sorting' => 'Classificação',
- 'list_pagination' => 'Paginação',
- 'list_order_direction_asc' => 'Ascendente',
- 'list_order_direction_desc' => 'Descendente',
- 'list_model' => 'Classe Model',
- 'list_scope' => 'Escopo',
- 'list_scope_description' => 'Escopo do modelo opcional para buscar os registros',
- 'list_scope_default' => '--selecione um escopo, opcional--',
- 'list_scope_value' => 'Valor do escopo',
- 'list_scope_value_description' => 'Valor opcional para passar para o escopo do modelo',
- 'list_details_page_link' => 'Link para a página de detalhes',
- 'list_details_key_column' => 'Coluna chave de detalhes',
- 'list_details_key_column_description' => 'Coluna Modelo para usar como um identificador de registro nos links da página de detalhes.',
- 'list_details_url_parameter' => 'Nome do parâmetro de URL ',
- 'list_details_url_parameter_description' => 'Nome do parâmetro de URL da página de detalhes que leva o identificador de registro.',
- 'details_title' => 'Detalhes de registros',
- 'details_description' => 'Exibe detalhes de registros para um modelo selecionado',
- 'details_model' => 'Classe Model',
- 'details_identifier_value' => 'Valor do identificador',
- 'details_identifier_value_description' => 'Valor identificador para carregar os registros do banco de dados. Especifique um valor fixo ou nome de parâmetro URL.',
- 'details_identifier_value_required' => 'O valor do identificador é obrigatório',
- 'details_key_column' => 'Coluna chave',
- 'details_key_column_description' => 'Coluna model para usar como um identificador de registro para buscar os registros do banco de dados.',
- 'details_key_column_required' => 'O nome de coluna chave é obrigatório',
- 'details_display_column' => 'Exibir coluna',
- 'details_display_column_description' => 'Coluna model para exibir na página de detalhes. Usado no partial padrão do componente.',
- 'details_display_column_required' => 'Por favor, selecione uma coluna de exibição.',
- 'details_not_found_message' => 'Mensagem não encontrada',
- 'details_not_found_message_description' => 'Mensagem para exibir se o registro não for encontrado. Usado no partial padrão do componente.',
- 'details_not_found_message_default' => 'Registro não encontrado',
- ],
- 'validation' => [
- 'reserved' => ':attribute não pode ser uma palavra reservada do PHP',
- ],
+ [
+ 'name' => 'Builder',
+ 'description' => 'Provê ferramentas visuais para construir plugins para October CMS.',
+ 'add' => 'Criar plugin',
+ 'no_records' => 'Nenhum plugins encontrado',
+ 'no_name' => 'Sem nome',
+ 'search' => 'Buscar...',
+ 'filter_description' => 'Exibe todos os plugins ou apenas os seus plugins.',
+ 'settings' => 'Configurações',
+ 'entity_name' => 'Plugin',
+ 'field_name' => 'Nome',
+ 'field_author' => 'Autor',
+ 'field_description' => 'Descrição',
+ 'field_icon' => 'Ícone do Plugin',
+ 'field_plugin_namespace' => 'Namespace Plugin',
+ 'field_author_namespace' => 'Namespace Autor',
+ 'field_namespace_description' => 'Namespace pode conter apenas letras latinas, numeros e deve começar com uma letra latina. Exemplo de namespace plugin: Blog',
+ 'field_author_namespace_description' => 'Você não pode alterar o namespace com Builder depois que você criar o plugin. Exemplo de namespace autor: JohnSmith',
+ 'tab_general' => 'Parâmetros gerais',
+ 'tab_description' => 'Descrição',
+ 'field_homepage' => 'URL da homepage do Plugin',
+ 'no_description' => 'Nenhuma descrição informada para este plugin',
+ 'error_settings_not_editable' => 'Configurações deste plugin não podem ser editadas com Builder.',
+ 'update_hint' => 'Você pode editar nome e descrição dos plugins localizados na aba localização.',
+ 'manage_plugins' => 'Criar e editar plugins',
+ ],
+ 'author_name' => [
+ 'title' => 'Nome do autor',
+ 'description' => 'Nome padrão de autor para usar para seus novos plugins. O nome do autor não é fixo - você pode alterá-lo nas configurações do plugin a qualquer hora.',
+ ],
+ 'author_namespace' => [
+ 'title' => 'Namespace Autor',
+ 'description' => 'Se você desenvolve para a Marketplace, o namespace deve combinar com o código de autor e não pode ser mudado. Veja a documentação para mais detalhes.',
+ ],
+ 'database' => [
+ 'menu_label' => 'Banco de Dados',
+ 'no_records' => 'Nenhuma tabela encontrada',
+ 'search' => 'Buscar...',
+ 'confirmation_delete_multiple' => 'Deletar as tabelas selecionadas?',
+ 'field_name' => 'Nome da tabela',
+ 'tab_columns' => 'Colunas',
+ 'column_name_name' => 'Coluna',
+ 'column_name_required' => 'Por favor, informe um nome da tabela',
+ 'column_name_type' => 'Tipo',
+ 'column_type_required' => 'Por favor, selecione o tipo da coluna',
+ 'column_name_length' => 'Tamanho',
+ 'column_validation_length' => 'O valor do tamanho deve ser integer ou especificado como precisão e escala (10,2) para colunas decimais. Espaços não são permitidos na coluna tamanho.',
+ 'column_validation_title' => 'Apenas números, letras latinas minúsculas e underlines são permitidos nos nomes das colunas',
+ 'column_name_unsigned' => 'Somente positivos',
+ 'column_name_nullable' => 'Nulo',
+ 'column_auto_increment' => 'AUTOINCR',
+ 'column_default' => 'Padrão',
+ 'column_auto_primary_key' => 'Primary Key',
+ 'tab_new_table' => 'Nova Tabela',
+ 'btn_add_column' => 'Acrescentar coluna',
+ 'btn_delete_column' => 'Deletar coluna',
+ 'btn_add_timestamps' => 'Acrescentar timestamps',
+ 'btn_add_soft_deleting' => 'Acrescentar suporte a soft deleting',
+ 'timestamps_exist' => 'Colunas created_at e deleted_at já existem na tabela.',
+ 'soft_deleting_exist' => 'Coluna deleted_at já existe na tabela.',
+ 'confirm_delete' => 'Deletar a tabela?',
+ 'error_enum_not_supported' => 'A tabela contém coluna(s) com tipo "enum" que não é atualmente suportado pelo Builder.',
+ 'error_table_name_invalid_prefix' => "Nome da tabela deve começar com o prefixo do plugin: ':prefix'.",
+ 'error_table_name_invalid_characters' => 'Nome de tabela inválido. Nomes de tabelas devem conter apenas letras latinas, números e underlines. Nomes devem começar com uma letra latina e não podem conter espaços.',
+ 'error_table_duplicate_column' => "Nome de coluna duplicado: ':column'.",
+ 'error_table_auto_increment_in_compound_pk' => 'Uma coluna auto-increment não pode ser parte de uma chave primária composta.',
+ 'error_table_mutliple_auto_increment' => 'A tabela não pode conter multiplas colunas auto-increment.',
+ 'error_table_auto_increment_non_integer' => 'Colunas auto-increment devem ser do tipo integer.',
+ 'error_table_decimal_length' => "O parâmetro de tamanho para o tipo :type deve ser no formato '10,2', sem espaços.",
+ 'error_table_length' => 'O parâmetro de tamanho para o tipo :type deve ser especificado como integer.',
+ 'error_unsigned_type_not_int' => "Erro na coluna ':column'. A opção Somente Positivos só pode ser aplicada a colunas do tipo integer.",
+ 'error_integer_default_value' => "Valor padrão inválido para a coluna integer ':column'. Os formatos permitidos são '10', '-10'.",
+ 'error_decimal_default_value' => "Valor padrão inválido para a coluna decimal ou double ':column'. Os formatos permitodos são '1.00', '-1.00'.",
+ 'error_boolean_default_value' => "Valor padrão inválido para a coluna booleana ':column'. Os valores permitidos são '0' e '1'.",
+ 'error_unsigned_negative_value' => "O valor padrão para a coluna somente positivos ':column' não pode ser negativo.",
+ 'error_table_already_exists' => "A tabela ':name' já existe no banco de dados.",
+ 'error_table_name_too_long' => "O nome da tabela não deve ser maior que 64 caracteres.",
+ 'error_column_name_too_long' => "O nome da coluna ':column' é muito longo. Nomes de colunas não podem ser maiores que 64 caracteres."
+ ],
+ 'model' => [
+ 'menu_label' => 'Models',
+ 'entity_name' => 'Model',
+ 'no_records' => 'Nenhum model encontrado',
+ 'search' => 'Buscar...',
+ 'add' => 'Acrescentar...',
+ 'forms' => 'Formulários',
+ 'lists' => 'Listas',
+ 'field_class_name' => 'Nome da classe',
+ 'field_database_table' => 'Nome do Banco de dados',
+ 'field_add_timestamps' => 'Acrescentar suporte a timestamp',
+ 'field_add_timestamps_description' => 'A tabela do banco de dados precisa conter as colunas created_at e updated_at.',
+ 'field_add_soft_deleting' => 'Acrescentar suporte a soft deleting',
+ 'field_add_soft_deleting_description' => 'A tabela do banco de dados precisa conter a coluna deleted_at.',
+ 'error_class_name_exists' => 'Arquivo Model já existe para o nome da classe especificada: :path',
+ 'error_timestamp_columns_must_exist' => 'A tabela do banco de dados precisa conter as colunas created_at e updated_at.',
+ 'error_deleted_at_column_must_exist' => 'A tabela do banco de dados precisa conter a coluna deleted_at.',
+ 'add_form' => 'Acrescentar formulário',
+ 'add_list' => 'Acrescentar lista',
+ ],
+ 'form' => [
+ 'saved' => 'Formulário Salvo',
+ 'confirm_delete' => 'Deletar o formulário?',
+ 'tab_new_form' => 'Novo formulário',
+ 'property_label_title' => 'Título',
+ 'property_label_required' => 'Por favor, especifique o título do control.',
+ 'property_span_title' => 'Span',
+ 'property_comment_title' => 'Comentário',
+ 'property_comment_above_title' => 'Comentário a cima',
+ 'property_default_title' => 'Padrão',
+ 'property_checked_default_title' => 'Marcado por padrão',
+ 'property_css_class_title' => 'Classe CSS',
+ 'property_css_class_description' => 'Classe CSS opcional para assinar o campo container.',
+ 'property_disabled_title' => 'Desabilitado',
+ 'property_hidden_title' => 'Oculto',
+ 'property_required_title' => 'Obrigatório',
+ 'property_field_name_title' => 'Nome do campo',
+ 'property_placeholder_title' => 'Placeholder',
+ 'property_default_from_title' => 'Padrão de',
+ 'property_stretch_title' => 'Estender',
+ 'property_stretch_description' => 'Especifica se este campo se estende para se ajustar à altura dos pais.',
+ 'property_context_title' => 'Contexto',
+ 'property_context_description' => 'Especifica que conceito de formulário deve ser usado quando exibir o campo.',
+ 'property_context_create' => 'Criar',
+ 'property_context_update' => 'Atualizar',
+ 'property_context_preview' => 'Preview',
+ 'property_dependson_title' => 'Depende de',
+ 'property_trigger_action' => 'Ação',
+ 'property_trigger_show' => 'Exibir',
+ 'property_trigger_hide' => 'Ocultar',
+ 'property_trigger_enable' => 'Habilitar',
+ 'property_trigger_disable' => 'Desabilitar',
+ 'property_trigger_empty' => 'Vazio',
+ 'property_trigger_field' => 'Campo',
+ 'property_trigger_field_description' => 'Define o outro nome de campo que dispara a ação.',
+ 'property_trigger_condition' => 'Condição',
+ 'property_trigger_condition_description' => 'Determina a condição que especifica o campo deve satisfazer a condição a ser considerada "true". Valores suportados: marcado, não marcado, valor[algumvalor].',
+ 'property_trigger_condition_checked' => 'Marcado',
+ 'property_trigger_condition_unchecked' => 'Não marcado',
+ 'property_trigger_condition_somevalue' => 'valor[digite-o-valor-aqui]',
+ 'property_preset_title' => 'Pré-configurado',
+ 'property_preset_description' => 'Permite o valor do campo a ser inicalmente configurado pelo valor de outro campo, convertido usando a entrada de conversor pré-configurada.',
+ 'property_preset_field' => 'Campo',
+ 'property_preset_field_description' => 'Define o nome do campo pelo valor de fonte de outro campo.',
+ 'property_preset_type' => 'Tipo',
+ 'property_preset_type_description' => 'Especifica o tipo de conversão',
+ 'property_attributes_title' => 'Atributos',
+ 'property_attributes_description' => 'Atributos HTML customizados para acrescentar ao elemento do campo do formulário.',
+ 'property_container_attributes_title' => 'Atributos do container',
+ 'property_container_attributes_description' => 'Atributos HTML customizados para adicionar ao elemento container do campo do formulário.',
+ 'property_group_advanced' => 'Avançado',
+ 'property_dependson_description' => 'Uma lista de outros nomes de campos dos quais este campo depende, quando os outros campos são modificados, este campo será atualizado. Um campo por linha.',
+ 'property_trigger_title' => 'Gatilho (Trigger)',
+ 'property_trigger_description' => 'Permite mudar os atributos do elemento assim como visibilidade ou valor, baseado no estado de outros elementos.',
+ 'property_default_from_description' => 'Pega o valor padrão do valor de outro campo.',
+ 'property_field_name_required' => 'O nome do campo é obrigatório',
+ 'property_field_name_regex' => 'O nome do campo apenas pode conter letras latinas, números, underlines, traços e colchetes.',
+ 'property_attributes_size' => 'Tamanho',
+ 'property_attributes_size_tiny' => 'Minúsculo',
+ 'property_attributes_size_small' => 'Pequeno',
+ 'property_attributes_size_large' => 'Largo',
+ 'property_attributes_size_huge' => 'Grande',
+ 'property_attributes_size_giant' => 'Gigante',
+ 'property_comment_position' => 'Posição do Comentário',
+ 'property_comment_position_above' => 'A cima',
+ 'property_comment_position_below' => 'A baixo',
+ 'property_hint_path' => 'Caminho sugerido do partial',
+ 'property_hint_path_description' => 'Caminho para um arquivo partial que contenha o texto sugerido. Use o simbolo $ para referenciar à raiz do diretório, por exemplo: $/acme/blog/partials/_sugestao.htm',
+ 'property_hint_path_required' => 'Por favor, digite a sugestão de caminho para o partial',
+ 'property_partial_path' => 'Caminho para o partial',
+ 'property_partial_path_description' => 'Caminho para um arquivo partial. Use o simbolo $ para referenciar ao diretório raiz dos plugins, por exemplo: $/acme/blog/partials/_partial.htm',
+ 'property_partial_path_required' => 'Por favor, digite o caminho do partial',
+ 'property_code_language' => 'Linguagem',
+ 'property_code_theme' => 'Tema',
+ 'property_theme_use_default' => 'Use o tema padrão',
+ 'property_group_code_editor' => 'Editor de código',
+ 'property_gutter' => 'Gutter',
+ 'property_gutter_show' => 'Visível',
+ 'property_gutter_hide' => 'Oculto',
+ 'property_wordwrap' => 'Abreviar palavra',
+ 'property_wordwrap_wrap' => 'Abreviar',
+ 'property_wordwrap_nowrap' => 'Não abreviar',
+ 'property_fontsize' => 'Tamanho da fonte',
+ 'property_codefolding' => 'Duplicar código',
+ 'property_codefolding_manual' => 'Manual',
+ 'property_codefolding_markbegin' => 'Marcar início',
+ 'property_codefolding_markbeginend' => 'Marcar início e fim',
+ 'property_autoclosing' => 'Auto encerrar',
+ 'property_enabled' => 'Habilitado',
+ 'property_disabled' => 'Desabilitado',
+ 'property_soft_tabs' => 'Tabelas suaves',
+ 'property_tab_size' => 'Tamanho da tabela',
+ 'property_readonly' => 'Somente leitura',
+ 'property_use_default' => 'Usar configurações padrão',
+ 'property_options' => 'Opções',
+ 'property_prompt' => 'Pronto',
+ 'property_prompt_description' => 'Texto a exibir para o botão criar.',
+ 'property_prompt_default' => 'Acrescentar novo item',
+ 'property_available_colors' => 'Cores disponíveis',
+ 'property_available_colors_description' => 'Lista de cores disponíveis no frmato hexadecimal (#FF0000). Deixe em branco para a configuração padrão de cores. Digite um valor por linha.',
+ 'property_datepicker_mode' => 'Modo',
+ 'property_datepicker_mode_date' => 'Data',
+ 'property_datepicker_mode_datetime' => 'Data e hora',
+ 'property_datepicker_mode_time' => 'Hora',
+ 'property_datepicker_min_date' => 'Data mínima',
+ 'property_datepicker_max_date' => 'Data máxima',
+ 'property_datepicker_year_range' => 'Alcançe de Anos',
+ 'property_datepicker_year_range_description' => 'Número de anos que cada lado (ex. 10) ou array de alcançe superior/inferior (ex. [1900,2015]). Deixe em branco para o valor padrão (10).',
+ 'property_datepicker_year_range_invalid_format' => 'Formato de alcançe de anos inválido. Use Números (ex. "10") ou array de alcançe superior/inferior (ex. "[1900,2015]")',
+ 'property_markdown_mode' => 'Modo',
+ 'property_markdown_mode_split' => 'Dividir',
+ 'property_markdown_mode_tab' => 'Tabela',
+ 'property_fileupload_mode' => 'Modo',
+ 'property_fileupload_mode_file' => 'Arquivo',
+ 'property_fileupload_mode_image' => 'Imagem',
+ 'property_group_fileupload' => 'Upload de arquivo',
+ 'property_fileupload_prompt' => 'Pronto',
+ 'property_fileupload_prompt_description' => 'Testo para exibir para o botão upload, aplica-se apenas ao modo Arquivos, opcional.',
+ 'property_fileupload_image_width' => 'Largura da imagem',
+ 'property_fileupload_image_width_description' => 'Parâmetro opcional - imagens serão redimensionadas para esta largura. Aplica-se apenas ao modo Imagem.',
+ 'property_fileupload_invalid_dimension' => 'Valor de dimensão inválido - por favor, digite um número.',
+ 'property_fileupload_image_height' => 'Altura da imagem',
+ 'property_fileupload_image_height_description' => 'Parâmetro opcional - imagens serão redimensionadas para esta altura. Aplica-se apenas ao modo Imagem.',
+ 'property_fileupload_file_types' => 'Tipos de arquivos',
+ 'property_fileupload_file_types_description' => 'Lista opcional separada por vírgula das extensões de arquivos que são aceitas pelo uploaded. Ex: zip, txt',
+ 'property_fileupload_mime_types' => 'Tipos MIME',
+ 'property_fileupload_mime_types_description' => 'Lista opcional separada por vírgula dos tipos MIME que são aceitas pelo uploader, assim como extensões ou nomes totalmente qualificados. Ex: bin, txt',
+ 'property_fileupload_use_caption' => 'Usar legenda',
+ 'property_fileupload_use_caption_description' => 'Permite um título e descrição a serem configurados para o arquivo.',
+ 'property_fileupload_thumb_options' => 'Opções de miniatua',
+ 'property_fileupload_thumb_options_description' => 'Gerencia opções para as miniaturas geradas automaticamente. Aplica-se apenas ao modo imagem.',
+ 'property_fileupload_thumb_mode' => 'Modo',
+ 'property_fileupload_thumb_auto' => 'Automático',
+ 'property_fileupload_thumb_exact' => 'Exato',
+ 'property_fileupload_thumb_portrait' => 'Retrato',
+ 'property_fileupload_thumb_landscape' => 'Paisagem',
+ 'property_fileupload_thumb_crop' => 'Cropar',
+ 'property_fileupload_thumb_extension' => 'Extensão de arquivo',
+ 'property_name_from' => 'Nome da coluna',
+ 'property_name_from_description' => 'Relação de nome de coluna a usar para exibir um nome.',
+ 'property_relation_select' => 'Selecionar',
+ 'property_relation_select_description' => 'CONCATENA multiplas colunas para exibir um nome',
+ 'property_description_from' => 'Coluna Descrição',
+ 'property_description_from_description' => 'Relação de nome de coluna a usar para exibir uma descrição.',
+ 'property_recordfinder_prompt' => 'Pronto',
+ 'property_recordfinder_prompt_description' => 'Texto para exibir quando não há gravação selecionada. O caractere %s representa o ícone buscar. Deixe em branco para o padrão pronto.',
+ 'property_recordfinder_list' => 'Configuração de lista',
+ 'property_recordfinder_list_description' => 'Uma referencia a um arquivo de definições de listas de colunas. Use o simbolo $ para referenciar a raiz de diretório do plugin, por exemplo: $/acme/blog/lists/_lista.yaml',
+ 'property_recordfinder_list_required' => 'Por favor, forneça um caminho para a lista de arquivos YAML',
+ 'property_group_recordfinder' => 'Gravar buscador',
+ 'property_mediafinder_mode' => 'Modo',
+ 'property_mediafinder_mode_file' => 'Arquivo',
+ 'property_mediafinder_mode_image' => 'Imagem',
+ 'property_mediafinder_prompt' => 'Pronto',
+ 'property_mediafinder_prompt_description' => 'Texto a exibir quando não há itens selecionados. O caractere %s representa o ícone gerenciador de mídias. Deixe em branco para o padrão pronto.',
+ 'property_mediafinder_image_width_description' => 'Se estiver usando o tipo imagem, o preview de imagem será exibido nesta largura, opcional.',
+ 'property_mediafinder_image_height_description' => 'Se estiver usando o modo imagem, o preview de imagem será exibido nesta altura, opcional.',
+ 'property_group_relation' => 'Relação',
+ 'property_relation_prompt' => 'Pronto',
+ 'property_relation_prompt_description' => 'Texto a exibir quando não há seleções disponíveis.',
+ 'property_empty_option' => 'Opção Vazia',
+ 'property_empty_option_description' => 'A opção Vazia corresponde a seleção vazia, mas ao contrário do marcador, ele pode ser selecionado novamente.',
+ 'property_max_items' => 'Máximo de itens',
+ 'property_max_items_description' => 'Número máximo de itens a permitir com o repetidor.',
+ 'control_group_standard' => 'Comum',
+ 'control_group_widgets' => 'Widgets',
+ 'click_to_add_control' => 'Acrescentar control',
+ 'loading' => 'Carregando...',
+ 'control_text' => 'Texto',
+ 'control_text_description' => 'Caixa de texto único',
+ 'control_password' => 'Senha',
+ 'control_password_description' => 'Campo de texto para senha de linha única',
+ 'control_checkbox' => 'Checkbox',
+ 'control_checkbox_description' => 'Único checkbox',
+ 'control_switch' => 'Switch',
+ 'control_switch_description' => 'Switchbox único, uma alternativa ao checkbox',
+ 'control_textarea' => 'Text area',
+ 'control_textarea_description' => 'Multiplas caixas de texto com altura controlável',
+ 'control_dropdown' => 'Dropdown',
+ 'control_dropdown_description' => 'Lista dropdown com opções estáticas ou dinâmicas',
+ 'control_balloon-selector' => 'Balloon Selector',
+ 'control_balloon-selector_description' => 'Lista onde somente um item pode ser selecionado por vez, com opções estáticas ou dinâmicas',
+ 'control_unknown' => 'Tipo de control desconhecido: :type',
+ 'control_repeater' => 'Repetidor',
+ 'control_repeater_description' => 'Exibe um conjunto de repetições de form controls',
+ 'control_number' => 'Número',
+ 'control_number_description' => 'Text box de linha única que aceita apenas números',
+ 'control_hint' => 'Aviso',
+ 'control_hint_description' => 'Exibe o conteúdo de uma partial em uma caixa que pode ser ocultada pelo usuário',
+ 'control_partial' => 'Partial',
+ 'control_partial_description' => 'Exibe o conteúdo de um partial',
+ 'control_section' => 'Seção',
+ 'control_section_description' => 'Exibe uma seção de formulário com cabeçalho e sub-cabeçalho',
+ 'control_radio' => 'Lista Radio',
+ 'control_radio_description' => 'Uma lista de opções radio, onde apenas um item pode ser selecionado por vez',
+ 'control_radio_option_1' => 'Opção 1',
+ 'control_radio_option_2' => 'Opção 2',
+ 'control_checkboxlist' => 'Lista Checkbox',
+ 'control_checkboxlist_description' => 'Uma lista de checkboxes, onde múltiplos itens podem ser selecionados',
+ 'control_codeeditor' => 'Editor de códigos',
+ 'control_codeeditor_description' => 'Editor modo texto para código formatado ou de marcação',
+ 'control_colorpicker' => 'Seletor de cor',
+ 'control_colorpicker_description' => 'Um campo para selecionar um valor haxadecimal de cor',
+ 'control_datepicker' => 'Seletor Data',
+ 'control_datepicker_description' => 'Campo texto usado para selecionar data e hora',
+ 'control_richeditor' => 'Editor Rico',
+ 'control_richeditor_description' => 'Editor visual para formatação rica de texto, também conhecido como um editor WYSIWYG',
+ 'control_markdown' => 'Editor Markdown',
+ 'control_markdown_description' => 'Editor básico para formatação de texto Markdown',
+ 'control_fileupload' => 'Upload de arquivo',
+ 'control_fileupload_description' => 'Uploader de arquivos para imagens ou arquivos comuns',
+ 'control_recordfinder' => 'Buscador de registro',
+ 'control_recordfinder_description' => 'Campo com detalhes de um registro relacionado com o recurso de pesquisa de registro',
+ 'control_mediafinder' => 'Buscador de mídia',
+ 'control_mediafinder_description' => 'Campo para selecionar um item de uma biblioteca do gerenciador de mídia',
+ 'control_relation' => 'Relação',
+ 'control_relation_description' => 'Exibe tanto um dropdown ou uma lista checkbox para selecionar um registro relacionado',
+ 'error_file_name_required' => 'Por favor, digite o nome de arquivo do formulário.',
+ 'error_file_name_invalid' => 'O nome de arquivo pode conter apenas letras latinas, números, underlines, pontos e barras.',
+ 'span_left' => 'Esquerda',
+ 'span_right' => 'Direita',
+ 'span_full' => 'Completo',
+ 'span_auto' => 'Automático',
+ 'empty_tab' => 'Aba vazia',
+ 'confirm_close_tab' => 'A aba contém controles que serão deletados. Continuar?',
+ 'tab' => 'Aba formulário',
+ 'tab_title' => 'Título',
+ 'controls' => 'Controles',
+ 'property_tab_title_required' => 'A aba título é obrigatória.',
+ 'tabs_primary' => 'Abas primárias',
+ 'tabs_secondary' => 'Abas secundárias',
+ 'tab_stretch' => 'Extender',
+ 'tab_stretch_description' => 'Especifica se este contêiner de guias se estende para se ajustar à altura pai.',
+ 'tab_css_class' => 'Classe CSS',
+ 'tab_css_class_description' => 'Assinala uma classe CSS ao contêiner de abas.',
+ 'tab_name_template' => 'Aba %s',
+ 'tab_already_exists' => 'Aba com o título especificado já existe.',
+ ],
+ 'list' => [
+ 'tab_new_list' => 'Nova lista',
+ 'saved' => 'Lista salva',
+ 'confirm_delete' => 'Deletar a lista?',
+ 'tab_columns' => 'Colunas',
+ 'btn_add_column' => 'Acrescentar coluna',
+ 'btn_delete_column' => 'Deletar coluna',
+ 'column_dbfield_label' => 'Campo',
+ 'column_dbfield_required' => 'Por favor, digite um campo model',
+ 'column_name_label' => 'Rótulo',
+ 'column_label_required' => 'Por favor, informe o rótulo da coluna',
+ 'column_type_label' => 'Tipo',
+ 'column_type_required' => 'Por favor, informe o tipo da coluna',
+ 'column_type_text' => 'Texto',
+ 'column_type_number' => 'Número',
+ 'column_type_switch' => 'Switch',
+ 'column_type_datetime' => 'Data e Hora',
+ 'column_type_date' => 'Data',
+ 'column_type_time' => 'Hora',
+ 'column_type_timesince' => 'Tempo Passado',
+ 'column_type_timetense' => 'Tempo por Extenso',
+ 'column_type_select' => 'Seleção',
+ 'column_type_partial' => 'Partial',
+ 'column_label_default' => 'Padrão',
+ 'column_label_searchable' => 'Buscar',
+ 'column_label_sortable' => 'Classificável',
+ 'column_label_invisible' => 'Invisível',
+ 'column_label_select' => 'Seleção',
+ 'column_label_relation' => 'Relação',
+ 'column_label_css_class' => 'Classe CSS',
+ 'column_label_width' => 'Largura',
+ 'column_label_path' => 'Caminho',
+ 'column_label_format' => 'Formato',
+ 'column_label_value_from' => 'Valor de',
+ 'error_duplicate_column' => "Campo nome de coluna duplicado: ':column'.",
+ 'btn_add_database_columns' => 'Acrescentar colunas ao banco de dados',
+ 'all_database_columns_exist' => 'Todas as colunas do banco de dados já estão definidas na lista'
+ ],
+ 'controller' => [
+ 'menu_label' => 'Controllers',
+ 'no_records' => 'Nenhum controller de plugin encontrado',
+ 'controller' => 'Controller',
+ 'behaviors' => 'Comportamentos',
+ 'new_controller' => 'Novo controller',
+ 'error_controller_has_no_behaviors' => 'O controller não possui nenhum comportamento configurável.',
+ 'error_invalid_yaml_configuration' => 'Erro ao carregar arquivo de configuração de comportamento: :file',
+ 'behavior_form_controller' => 'Comportamento de controller de formulários',
+ 'behavior_form_controller_description' => 'Acrescentar funcionalidade de formulários a uma página back-end. O comportamento provê três páginas chamadas Create, Update e Preview.',
+ 'property_behavior_form_placeholder' => '--selecionar formulário--',
+ 'property_behavior_form_name' => 'Nome',
+ 'property_behavior_form_name_description' => 'O nome do objeto gerenciado por este formulário',
+ 'property_behavior_form_name_required' => 'Por favor, digite o nome do formulário',
+ 'property_behavior_form_file' => 'Configuração de formulário',
+ 'property_behavior_form_file_description' => 'Refere-se a um arquivo de definição de campos de formulário',
+ 'property_behavior_form_file_required' => 'Por favor, digite um caminho para o arquivo de configuração do formulário',
+ 'property_behavior_form_model_class' => 'Classe Model',
+ 'property_behavior_form_model_class_description' => 'Um nome de classe model, os dados do formulário são carregados e salvos neste model.',
+ 'property_behavior_form_model_class_required' => 'Por favor, selecione uma classe de model',
+ 'property_behavior_form_default_redirect' => 'Redirecionamento padrão',
+ 'property_behavior_form_default_redirect_description' => 'Uma página para redirecionar por padrão quando o formulário for salvo ou cancelado.',
+ 'property_behavior_form_create' => 'Criar registrar página',
+ 'property_behavior_form_redirect' => 'Redirecionar',
+ 'property_behavior_form_redirect_description' => 'Uma página para redirecionar quando um registro é criado.',
+ 'property_behavior_form_redirect_close' => 'Encerrar redirecionamento',
+ 'property_behavior_form_redirect_close_description' => 'Uma página para redirecionar quando um registro é criado e a variável encerrar é enviada com o requerimento.',
+ 'property_behavior_form_flash_save' => 'Salvar menságem rápida',
+ 'property_behavior_form_flash_save_description' => 'Menságem rápida para exibir quando o registro é salvo.',
+ 'property_behavior_form_page_title' => 'Título da página',
+ 'property_behavior_form_update' => 'Atualizar registro da página',
+ 'property_behavior_form_update_redirect' => 'Redirecionar',
+ 'property_behavior_form_create_redirect_description' => 'Uma página para redirecionar quando um registro é salvo.',
+ 'property_behavior_form_flash_delete' => 'Deletar mensagem rápida',
+ 'property_behavior_form_flash_delete_description' => 'Mensagem rápida para exibir quando o registro é deletado.',
+ 'property_behavior_form_preview' => 'Preview registro da página',
+ 'behavior_list_controller' => 'Controller de Lista Comportamento',
+ 'behavior_list_controller_description' => 'Provê a lista classificável e buscável com links opcionais em seus registros. O comportamento cria automaticamente a ação controller "index".',
+ 'property_behavior_list_title' => 'Título da lista',
+ 'property_behavior_list_title_required' => 'Por favor, digite o título da lista',
+ 'property_behavior_list_placeholder' => '--Selecione a lista--',
+ 'property_behavior_list_model_class' => 'Classe Model',
+ 'property_behavior_list_model_class_description' => 'Um nome de classe model, os dados da lista são carregados deste model.',
+ 'property_behavior_form_model_class_placeholder' => '--selecione o model--',
+ 'property_behavior_list_model_class_required' => 'Por favor, selecione uma classe model',
+ 'property_behavior_list_model_placeholder' => '--selecione o model--',
+ 'property_behavior_list_file' => 'Arquivo de configuração de lista',
+ 'property_behavior_list_file_description' => 'Refere-se a um arquivo de definição de lista',
+ 'property_behavior_list_file_required' => 'Por favor, digite um caminho para o arquivo de configuração de lista',
+ 'property_behavior_list_record_url' => 'Gravar URL',
+ 'property_behavior_list_record_url_description' => 'Link cada lista de registro para outra página. Ex: users/update:id. A :id parte é substituída com o identificador de registro.',
+ 'property_behavior_list_no_records_message' => 'Nenhum registro de mensagem',
+ 'property_behavior_list_no_records_message_description' => 'Uma mensagem a exibir quando nenhum registro for encontrado',
+ 'property_behavior_list_recs_per_page' => 'Registros por página',
+ 'property_behavior_list_recs_per_page_description' => 'Registros a exibir por página, use 0 para nenhuma página. O padrão é: 0',
+ 'property_behavior_list_recs_per_page_regex' => 'Registros por página devem ser um valor integer',
+ 'property_behavior_list_show_setup' => 'Exibe botão configurações',
+ 'property_behavior_list_show_sorting' => 'Exibir classificação',
+ 'property_behavior_list_default_sort' => 'Classificação padrão',
+ 'property_behavior_form_ds_column' => 'Coluna',
+ 'property_behavior_form_ds_direction' => 'Direção',
+ 'property_behavior_form_ds_asc' => 'Ascendente',
+ 'property_behavior_form_ds_desc' => 'Descendente',
+ 'property_behavior_list_show_checkboxes' => 'Exibir checkboxes',
+ 'property_behavior_list_onclick' => 'Manusear On click',
+ 'property_behavior_list_onclick_description' => 'Customiza código JavaScript para executar quando clicar em um registro.',
+ 'property_behavior_list_show_tree' => 'Exibir árvore',
+ 'property_behavior_list_show_tree_description' => 'Exibe uma árvore de hierarquia para registros pai/filho.',
+ 'property_behavior_list_tree_expanded' => 'Expandir árvore',
+ 'property_behavior_list_tree_expanded_description' => 'Determina se os nós da árvore devem ser expandidos por padrão.',
+ 'property_behavior_list_toolbar' => 'Barra de ferramentas',
+ 'property_behavior_list_toolbar_buttons' => 'Partial Botões',
+ 'property_behavior_list_toolbar_buttons_description' => 'Refere-se a um arquivo controller partial com os botões da barra de ferramentas. Ex: lista_BarradeFerramentas',
+ 'property_behavior_list_search' => 'Buscar',
+ 'property_behavior_list_search_prompt' => 'Buscar pronto',
+ 'property_behavior_list_filter' => 'Configurar filtros',
+ 'behavior_reorder_controller' => 'Reordenar comportamento do controller',
+ 'behavior_reorder_controller_description' => 'Fornece recursos para classificar e reordenar seus registros. O comportamento cria automaticamente a ação "reorder" do controller.',
+ 'property_behavior_reorder_title' => 'Título do reordenador',
+ 'property_behavior_reorder_title_required' => 'Por favor, digite o título do reordenador',
+ 'property_behavior_reorder_name_from' => 'Nome do atributo',
+ 'property_behavior_reorder_name_from_description' => 'Atributo do model que pode ser usado como um rótulo para cada registro.',
+ 'property_behavior_reorder_name_from_required' => 'Por favor, digite o nome do atributo',
+ 'property_behavior_reorder_model_class' => 'Classe Model',
+ 'property_behavior_reorder_model_class_description' => 'Um nome de classe model, o dado registrado é carregado deste model.',
+ 'property_behavior_reorder_model_class_placeholder' => '--selecionar model--',
+ 'property_behavior_reorder_model_class_required' => 'Por favor, selecione uma classe model',
+ 'property_behavior_reorder_model_placeholder' => '--selecione o model--',
+ 'property_behavior_reorder_toolbar' => 'Bara de ferramentas',
+ 'property_behavior_reorder_toolbar_buttons' => 'Botões da Partial',
+ 'property_behavior_reorder_toolbar_buttons_description' => 'Refere-se ao arquivo partial controller com os botões da barra de ferramentas. Ex: reordenar_BarradeFerramentas',
+ 'error_controller_not_found' => 'Arquivo original do controller não foi encontrado.',
+ 'error_invalid_config_file_name' => 'O nome do arquivo (:file) de configuração do comportamento :class contém caracteres inválidos e não pode ser carregado.',
+ 'error_file_not_yaml' => 'O nome do arquivo (:file) de configuração do comportamento :class não é um arquivo YAML. Somente arquivos de configuração YAML são suportados.',
+ 'saved' => 'Controller salvo',
+ 'controller_name' => 'Nome do Controller',
+ 'controller_name_description' => 'O nome do controller define o nome da classe e URL das páginas back-end do controller. Convenções de nomenclatura de variáveis PHP padrão se aplicam. O primeiro símbolo deve ser uma letra latina maiúscula. Exemplos: Categorias, Postagens, Produtos.',
+ 'base_model_class' => 'Classe model base',
+ 'base_model_class_description' => 'Selecione uma classe model para usar como um model base no comportamento que necessita ou suporta models. Você pode configurar o comportamento depois.',
+ 'base_model_class_placeholder' => '--Selecione o model--',
+ 'controller_behaviors' => 'Comportamentos',
+ 'controller_behaviors_description' => 'Selecione os comportamentos que o controller deve implementar. O Builder criará arquivos de view necessários para os comportamentos automaticamente.',
+ 'controller_permissions' => 'Permissões',
+ 'controller_permissions_description' => 'Selecione permissões de usuário que podem acessar as views dos controllers. As permissões podem ser definidas na guia Permissões do Builder. Você pode alterar essa opção no script PHP do controller mais tarde.',
+ 'controller_permissions_no_permissions' => 'O plugin não definiu nenhuma permissão.',
+ 'menu_item' => 'Item de menu ativo',
+ 'menu_item_description' => 'Selecione um item de menu para tornar ativo para as páginas do controller. Você pode alterar essa opção no script PHP do controlador mais tarde.',
+ 'menu_item_placeholder' => '--selecione o item de menu--',
+ 'error_unknown_behavior' => 'A classe de comportamento :class não está registrada na biblioteca de comportamento.',
+ 'error_behavior_view_conflict' => 'Os comportamentos selecionados fornecem visualizações conflitantes (:view) e não podem ser usadas junto a um controller.',
+ 'error_behavior_config_conflict' => 'Os comportamentos selecionados fornecem arquivos de configuração conflitantes (:file) e não podem ser usadas junto a um controller.',
+ 'error_behavior_view_file_not_found' => 'A view do template :view do comportamento :class não pode ser localizado.',
+ 'error_behavior_config_file_not_found' => 'O template de configuração :file do comportamento :class não pode ser localizado.',
+ 'error_controller_exists' => 'O arquivo do controlador :file já existe.',
+ 'error_controller_name_invalid' => 'Formato de nome de controller inválido. O nome deve conter apenas letras latinas e números. O primeiro simbolo deve ser uma letra latina maiúscula.',
+ 'error_behavior_view_file_exists' => 'O arquivo de configuração do controller :view já existe.',
+ 'error_behavior_config_file_exists' => 'O arquivo de configuração do comportamento :file já existe.',
+ 'error_save_file' => 'Erro ao salvar o arquivo de controller :file',
+ 'error_behavior_requires_base_model' => 'O comportamento :behavior necessita que seja selecionado uma classe model base.',
+ 'error_model_doesnt_have_lists' => 'O model selecionado não possui nenhuma lista. Por favor, crie primeiro uma lista.',
+ 'error_model_doesnt_have_forms' => 'O model selecionado não possui nenhum formulário. Por favor, crie primeiro um formulário.',
+ ],
+ 'version' => [
+ 'menu_label' => 'Versões',
+ 'no_records' => 'Nenhuma versão de plugin encontrada',
+ 'search' => 'Buscar...',
+ 'tab' => 'Versões',
+ 'saved' => 'Versão salva',
+ 'confirm_delete' => 'Deletar a versão?',
+ 'tab_new_version' => 'Nova versão',
+ 'migration' => 'Migração',
+ 'seeder' => 'Semeador',
+ 'custom' => 'Aumente o número da versão',
+ 'apply_version' => 'Aplicar versão',
+ 'applying' => 'Aplicando...',
+ 'rollback_version' => 'Reverter versão',
+ 'rolling_back' => 'Revertendo...',
+ 'applied' => 'Versão aplicada',
+ 'rolled_back' => 'Versão revertida',
+ 'hint_save_unapplied' => 'Você salvou uma versão não aplicada. As versões não aplicadas podem ser aplicadas automaticamente quando você ou outro usuário faz o login no back-end ou quando uma tabela de banco de dados é salva na seção Banco de Dados do Builder.',
+ 'hint_rollback' => 'Reverter uma versão também reverterá todas as versões mais recentes que esta. Observe que versões não aplicadas podem ser aplicadas automaticamente pelo sistema quando você ou outro usuário faz o login no back-end ou quando uma tabela do banco de dados é salva na seção Banco de Dados do Builder.',
+ 'hint_apply' => 'A aplicação de uma versão também aplicará todas as versões antigas não aplicadas do plug-in.',
+ 'dont_show_again' => 'Não mostrar novamente',
+ 'save_unapplied_version' => 'Salvar versão não aplicada',
+ ],
+ 'menu' => [
+ 'menu_label' => 'Menu Backend',
+ 'tab' => 'Menus',
+ 'items' => 'Itens de Menu',
+ 'saved' => 'Menus salvos',
+ 'add_main_menu_item' => 'Acrescentar item de menu principal',
+ 'new_menu_item' => 'Item de menu',
+ 'add_side_menu_item' => 'Acrescentar sub-item',
+ 'side_menu_item' => 'Item de menu lateral',
+ 'property_label' => 'Rótulo',
+ 'property_label_required' => 'Por favor, digite os rótulos dos itens de menu.',
+ 'property_url_required' => 'Por favor, digite a URL do item de menu',
+ 'property_url' => 'URL',
+ 'property_icon' => 'Ícone',
+ 'property_icon_required' => 'Por favor, selecione um ícone',
+ 'property_permissions' => 'Permissões',
+ 'property_order' => 'Ordenar',
+ 'property_order_invalid' => 'Por favor, insira a ordem do item de menu como valor integer.',
+ 'property_order_description' => 'A ordem do item de menu gerencia sua posição no menu. Se a ordem não for fornecida, o item será colocado no final do menu. Os valores de ordem padrão têm o incremento de 100.',
+ 'property_attributes' => 'Atributos HTML',
+ 'property_code' => 'Código',
+ 'property_code_invalid' => 'O código deve conter apenas letra latina e números',
+ 'property_code_required' => 'Por favor, insira o código do item de menu.',
+ 'error_duplicate_main_menu_code' => "Código de item de menu ':code' duplicado.",
+ 'error_duplicate_side_menu_code' => "Código de item de menu lateral ':code' duplicado.",
+ ],
+ 'localization' => [
+ 'menu_label' => 'Idiomas',
+ 'language' => 'Idioma',
+ 'strings' => 'Strings',
+ 'confirm_delete' => 'Deletar o idioma?',
+ 'tab_new_language' => 'Novo idioma',
+ 'no_records' => 'Nenhum idioma encontrado',
+ 'saved' => 'Arquivo de idioma salvo',
+ 'error_cant_load_file' => 'Não é possível carregar o arquivo de idioma solicitado - arquivo não encontrado.',
+ 'error_bad_localization_file_contents' => 'Não é possível carregar o arquivo de idioma solicitado. Os arquivos de idiomas podem conter apenas definições e strings de array.',
+ 'error_file_not_array' => 'Não é possível carregar o arquivo de idioma solicitado. Arquivos de idioma devem retornar um array.',
+ 'save_error' => "Erro ao salvar o arquivo ':name'. Por favor, verifique as permissões de escrita.",
+ 'error_delete_file' => 'Erro ao deletar arquivo de idioma.',
+ 'add_missing_strings' => 'Acrescentar strings faltantes',
+ 'copy' => 'Copiar',
+ 'add_missing_strings_label' => 'Selecione o idioma para copiar as strings faltantes',
+ 'no_languages_to_copy_from' => 'Não há outro idioma para copiar strings.',
+ 'new_string_warning' => 'Nova string ou seção',
+ 'structure_mismatch' => 'A estrutura do arquivo fonte do idioma não combina com a estrutura do arquivo que está sendo editado. Algumas strings individuais do arquivo editado correspondente a seções no arquivo fonte (ou vice versa) e não pode ser mesclado automaticamente.',
+ 'create_string' => 'Criar nova string',
+ 'string_key_label' => 'Chave de String',
+ 'string_key_comment' => 'Insira a chave de string usando o ponto como um separador de seção. For example: plugin.buscar. A string será criada no arquivo de localização do idioma padrão do plugin.',
+ 'string_value' => 'Valor da string',
+ 'string_key_is_empty' => 'Chave de string não pode ser vazio',
+ 'string_key_is_a_string' => ':key é uma string e não pode conter outras strings.',
+ 'string_value_is_empty' => 'Valor da string não pode ser vazio',
+ 'string_key_exists' => 'A chave de string já existe',
+ ],
+ 'permission' => [
+ 'menu_label' => 'Permissões',
+ 'tab' => 'Permissões',
+ 'form_tab_permissions' => 'Permissões',
+ 'btn_add_permission' => 'Acrescentar permissão',
+ 'btn_delete_permission' => 'Deletar permissão',
+ 'column_permission_label' => 'Código de permissão',
+ 'column_permission_required' => 'Por favor, digite o código de permissão',
+ 'column_tab_label' => 'Título da aba',
+ 'column_tab_required' => 'Por favor, digite o título da aba permissão',
+ 'column_label_label' => 'Rótulo',
+ 'column_label_required' => 'Por favor, digite o rótulo da permissão',
+ 'saved' => 'Permissões salvas',
+ 'error_duplicate_code' => "Código de permissão ':code' duplicado.",
+ ],
+ 'yaml' => [
+ 'save_error' => "Erro ao salvar o arquivo ':name'. Por favor, verifique permissões de escrita.",
+ ],
+ 'common' => [
+ 'error_file_exists' => "Arquivo ':path' já existe.",
+ 'field_icon_description' => 'October usa ícones Font Autumn: http://octobercms.com/docs/ui/icon',
+ 'destination_dir_not_exists' => "O diretório de destino ':path' não existe.",
+ 'error_make_dir' => "Erro ao criar diretório: ':name'.",
+ 'error_dir_exists' => "Diretório ':path' já existe.",
+ 'template_not_found' => "Arquivo de template ':name' não encontrado.",
+ 'error_generating_file' => "Erro ao gerar arquivo: ':path'.",
+ 'error_loading_template' => "Erro ao carregar arquivo de template: ':name'.",
+ 'select_plugin_first' => 'Por favor, selecione um plugin primeiro. Para ver a lista de plugins, clique no ícone > na barra lateral esquerda.',
+ 'plugin_not_selected' => 'Plugin não selecionado',
+ 'add' => 'Acrescentar',
+ ],
+ 'migration' => [
+ 'entity_name' => 'Migration',
+ 'error_version_invalid' => 'A versão deve ser especificada no formato 1.0.1',
+ 'field_version' => 'Versão',
+ 'field_description' => 'Descrição',
+ 'field_code' => 'Código',
+ 'save_and_apply' => 'Salvar e aplicar',
+ 'error_version_exists' => 'A versão da migration já existe.',
+ 'error_script_filename_invalid' => 'O nome do arquivo de script do migration pode conter apenas letras latinas, números e underlines. O nome deve começar com uma letra latina e não pode conter espaços.',
+ 'error_cannot_change_version_number' => 'Não é possível alterar o número da versão para uma versão aplicada.',
+ 'error_file_must_define_class' => 'O código de migração deve definir uma migration ou classe de semeador. Deixe o campo de código em branco se você quiser apenas atualizar o número da versão.',
+ 'error_file_must_define_namespace' => 'O código do migration deve definir um namespace. Deixe o campo de código em branco se você quiser apenas atualizar o número da versão.',
+ 'no_changes_to_save' => 'Não há mudanças para salvar.',
+ 'error_namespace_mismatch' => "O código do migration deve usar o namespace :namespace do plugin",
+ 'error_migration_file_exists' => "O arquivo migration :file já existe. Por favor, use outro nome de classe.",
+ 'error_cant_delete_applied' => 'Esta versão já foi aplicada e não pode ser excluída. Por favor, reverter a versão primeiro.',
+ ],
+ 'components' => [
+ 'list_title' => 'Lista de registros',
+ 'list_description' => 'Exibe uma lista de registros para um model selecionado',
+ 'list_page_number' => 'Número da página',
+ 'list_page_number_description' => 'Este valor é usado para determinar em qual página o usuário está.',
+ 'list_records_per_page' => 'Registros por página',
+ 'list_records_per_page_description' => 'Número de registros para exibir em uma única página. Deixe em branco para desabilitar a ação.',
+ 'list_records_per_page_validation' => 'Formato inválido dos registros por valor de página. O valor deve ser um número.',
+ 'list_no_records' => 'Nenhuma mensagem de registro',
+ 'list_no_records_description' => 'Mensagem a exibir na lista, em caso de não haver registros. Usado na partial padrão do componente.',
+ 'list_no_records_default' => 'Nenhum registro encontrado',
+ 'list_sort_column' => 'Classificar por coluna',
+ 'list_sort_column_description' => 'A coluna modela como os registros devem ser classificados',
+ 'list_sort_direction' => 'Direção',
+ 'list_display_column' => 'Exibir coluna',
+ 'list_display_column_description' => 'Coluna para exibir na lista. Usado no partial padrão do componente.',
+ 'list_display_column_required' => 'Por favor, selecione uma coluna exibida.',
+ 'list_details_page' => 'Página detalhes',
+ 'list_details_page_description' => 'Página para exibir detalhes dos registros.',
+ 'list_details_page_no' => '--nenhuma página de detalhes--',
+ 'list_sorting' => 'Classificação',
+ 'list_pagination' => 'Paginação',
+ 'list_order_direction_asc' => 'Ascendente',
+ 'list_order_direction_desc' => 'Descendente',
+ 'list_model' => 'Classe Model',
+ 'list_scope' => 'Escopo',
+ 'list_scope_description' => 'Escopo do modelo opcional para buscar os registros',
+ 'list_scope_default' => '--selecione um escopo, opcional--',
+ 'list_scope_value' => 'Valor do escopo',
+ 'list_scope_value_description' => 'Valor opcional para passar para o escopo do modelo',
+ 'list_details_page_link' => 'Link para a página de detalhes',
+ 'list_details_key_column' => 'Coluna chave de detalhes',
+ 'list_details_key_column_description' => 'Coluna Modelo para usar como um identificador de registro nos links da página de detalhes.',
+ 'list_details_url_parameter' => 'Nome do parâmetro de URL ',
+ 'list_details_url_parameter_description' => 'Nome do parâmetro de URL da página de detalhes que leva o identificador de registro.',
+ 'details_title' => 'Detalhes de registros',
+ 'details_description' => 'Exibe detalhes de registros para um modelo selecionado',
+ 'details_model' => 'Classe Model',
+ 'details_identifier_value' => 'Valor do identificador',
+ 'details_identifier_value_description' => 'Valor identificador para carregar os registros do banco de dados. Especifique um valor fixo ou nome de parâmetro URL.',
+ 'details_identifier_value_required' => 'O valor do identificador é obrigatório',
+ 'details_key_column' => 'Coluna chave',
+ 'details_key_column_description' => 'Coluna model para usar como um identificador de registro para buscar os registros do banco de dados.',
+ 'details_key_column_required' => 'O nome de coluna chave é obrigatório',
+ 'details_display_column' => 'Exibir coluna',
+ 'details_display_column_description' => 'Coluna model para exibir na página de detalhes. Usado no partial padrão do componente.',
+ 'details_display_column_required' => 'Por favor, selecione uma coluna de exibição.',
+ 'details_not_found_message' => 'Mensagem não encontrada',
+ 'details_not_found_message_description' => 'Mensagem para exibir se o registro não for encontrado. Usado no partial padrão do componente.',
+ 'details_not_found_message_default' => 'Registro não encontrado',
+ ],
+ 'validation' => [
+ 'reserved' => ':attribute não pode ser uma palavra reservada do PHP'
+ ]
];
diff --git a/plugins/rainlab/builder/lang/zh-cn.json b/plugins/rainlab/builder/lang/zh-cn.json
deleted file mode 100644
index 3420ab0..0000000
--- a/plugins/rainlab/builder/lang/zh-cn.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "Builder": "构造器",
- "Provides visual tools for building October plugins.": "提供用于构建October插件的可视化工具."
-}
\ No newline at end of file
diff --git a/plugins/rainlab/builder/lang/zh-cn/lang.php b/plugins/rainlab/builder/lang/zh-cn/lang.php
index b0cd3f0..cdad28a 100644
--- a/plugins/rainlab/builder/lang/zh-cn/lang.php
+++ b/plugins/rainlab/builder/lang/zh-cn/lang.php
@@ -1,735 +1,746 @@
- [
- 'add' => '创建插件',
- 'no_records' => '找不到插件',
- 'no_name' => '没有名称',
- 'search' => '搜索...',
- 'filter_description' => '显示所有插件或只显示您的插件.',
- 'settings' => '设置',
- 'entity_name' => '插件',
- 'field_name' => '名称',
- 'field_author' => '作者',
- 'field_description' => '描述',
- 'field_icon' => '插件图标',
- 'field_plugin_namespace' => '插件命名空间',
- 'field_author_namespace' => '作者命名空间',
- 'field_namespace_description' => '命名空间只能包含拉丁字母和数字,并且应该以拉丁字母开头。示例插件命名空间:Blog',
- 'field_author_namespace_description' => '创建插件后,不能使用Builder更改命名空间。示例作者名称空间:JohnSmith',
- 'tab_general' => '常规参数',
- 'tab_description' => '描述',
- 'field_homepage' => '插件主页',
- 'no_description' => '常规参数没有为此插件提供说明',
- 'error_settings_not_editable' => '无法使用生成器编辑此插件的设置.',
- 'update_hint' => '您可以在“本地化”选项卡上编辑本地化插件的名称和说明.',
- 'manage_plugins' => '创建和编辑插件',
- ],
- 'author_name' => [
- 'title' => '作者名称',
- 'description' => '用于新插件的默认作者名称。作者名不是固定的-你可以在插件配置中随时更改它.',
- ],
- 'author_namespace' => [
- 'title' => '作者命名空间',
- 'description' => '如果您是为市场开发的,命名空间应该与作者代码匹配,并且不能更改。有关详细信息,请参阅文档.',
- ],
- 'database' => [
- 'menu_label' => '数据库',
- 'no_records' => '未找到数据库表',
- 'search' => '搜索...',
- 'confirmation_delete_multiple' => '删除选中的数据库表?',
- 'field_name' => '数据库表名',
- 'tab_columns' => '列',
- 'column_name_name' => '列',
- 'column_name_required' => '请提供列名',
- 'column_name_type' => '类型',
- 'column_type_required' => '请选择列类型',
- 'column_name_length' => '长度',
- 'column_validation_length' => '对于十进制列,长度值应为整数或指定为精度和小数位数(10,2)。长度列中不允许有空格.',
- 'column_validation_title' => '列名中只允许数字、小写拉丁字母和下划线',
- 'column_name_unsigned' => '符号',
- 'column_name_nullable' => '可为NULL',
- 'column_auto_increment' => '自增',
- 'column_default' => '默认',
- 'column_comment' => '注释',
- 'column_auto_primary_key' => '键',
- 'tab_new_table' => '新增表',
- 'btn_add_column' => '新增列',
- 'btn_delete_column' => '删除列',
- 'btn_add_id' => '添加ID',
- 'btn_add_timestamps' => '添加时间戳',
- 'btn_add_soft_deleting' => '添加软删除支持',
- 'id_exists' => '表中已存在ID列.',
- 'timestamps_exist' => '表中已存在created_at列和deleted_at列.',
- 'soft_deleting_exist' => '表中已存在deleted_at列.',
- 'confirm_delete' => '删除表?',
- 'error_enum_not_supported' => '表包含生成器当前不支持的类型为“enum”的列.',
- 'error_table_name_invalid_prefix' => '表名应以插件前缀开头: \':prefix\'.',
- 'error_table_name_invalid_characters' => '表名无效。表名只能包含拉丁字母、数字和下划线。名称应以拉丁字母开头,不能包含空格.',
- 'error_table_duplicate_column' => '重复列名: \':column\'.',
- 'error_table_auto_increment_in_compound_pk' => '自动递增列不能是复合主键的一部分.',
- 'error_table_mutliple_auto_increment' => '表不能包含多个自动递增列.',
- 'error_table_auto_increment_non_integer' => '自动递增列应具有整数类型.',
- 'error_table_decimal_length' => ':type 的Length参数的格式应为“10,2”,不带空格.',
- 'error_table_length' => ':type 长度参数应指定为整数.',
- 'error_unsigned_type_not_int' => '\':column\' 列出错。无符号标志只能应用于整数类型列.',
- 'error_integer_default_value' => '整数列 \':column\' 的默认值无效。允许的格式为“10”、“-10”.',
- 'error_decimal_default_value' => '十进制或双精度列的默认值无效 \':column\'. 允许的格式为\'1.00\',\'1.00\'.',
- 'error_boolean_default_value' => '布尔列的默认值无效 \':column\'. 允许的值为“0”和“1”,或“true”和“false”.',
- 'error_unsigned_negative_value' => '无符号列 \':column\' 的默认值不能为负.',
- 'error_table_already_exists' => '数据库中已存在表 \':name\'.',
- 'error_table_name_too_long' => '表名的长度不应超过64个字符.',
- 'error_column_name_too_long' => '列名 \':column\' 太长。列名的长度不应超过64个字符.',
- ],
- 'model' => [
- 'menu_label' => '模型',
- 'entity_name' => '模型',
- 'no_records' => '未找到模型',
- 'search' => '搜索...',
- 'add' => '添加...',
- 'forms' => '表单',
- 'lists' => '列表',
- 'field_class_name' => '类名',
- 'field_database_table' => '数据库表',
- 'field_add_timestamps' => '添加时间戳支持',
- 'field_add_timestamps_description' => '数据库表必须存在 created_at 和 updated_at 字段.',
- 'field_add_soft_deleting' => '添加软删除支持',
- 'field_add_soft_deleting_description' => '数据库表必须存在 deleted_at 字段.',
- 'error_class_name_exists' => '指定类名的模型文件已存在: :path',
- 'error_timestamp_columns_must_exist' => '数据库表必须存在 created_at 和 updated_at 字段.',
- 'error_deleted_at_column_must_exist' => '数据库表必须存在 deleted_at 字段.',
- 'add_form' => '添加表单',
- 'add_list' => '添加列表',
- ],
- 'form' => [
- 'saved' => '表单已保存',
- 'confirm_delete' => '删除表单?',
- 'tab_new_form' => '新表单',
- 'btn_add_database_fields' => '添加数据库字段',
- 'property_label_title' => '标签',
- 'property_label_required' => '请指定控制标签.',
- 'property_span_title' => '跨度',
- 'property_comment_title' => '注释',
- 'property_comment_above_title' => '在注释上',
- 'property_default_title' => '默认',
- 'property_checked_default_title' => '默认选中',
- 'property_css_class_title' => 'CSS 类名',
- 'property_css_class_description' => '分配给字段容器的可选CSS类.',
- 'property_disabled_title' => '禁止',
- 'property_read_only_title' => '仅读',
- 'property_hidden_title' => '隐藏',
- 'property_required_title' => '必填',
- 'property_field_name_title' => '字段名',
- 'property_placeholder_title' => '占位符',
- 'property_default_from_title' => '默认来源',
- 'property_stretch_title' => '伸展',
- 'property_stretch_description' => '指定此字段是否拉伸以适合父级高度.',
- 'property_context_title' => '上下文',
- 'property_context_description' => '指定显示字段时应使用的窗体上下文.',
- 'property_context_create' => '创建',
- 'property_context_update' => '更新',
- 'property_context_preview' => '预览',
- 'property_dependson_title' => '依赖',
- 'property_trigger_action' => '行为',
- 'property_trigger_show' => '显示',
- 'property_trigger_hide' => '隐藏',
- 'property_trigger_enable' => '开启',
- 'property_trigger_disable' => '禁止',
- 'property_trigger_empty' => '空',
- 'property_trigger_field' => '字段',
- 'property_trigger_field_description' => '定义将触发操作的其他字段名.',
- 'property_trigger_condition' => '条件',
- 'property_trigger_condition_description' => '确定指定字段应满足的条件,以便将条件视为“true”。支持的值:选中、未选中、值[somevalue].',
- 'property_trigger_condition_checked' => '已选中',
- 'property_trigger_condition_unchecked' => '未选中',
- 'property_trigger_condition_somevalue' => '值[在此处输入值]',
- 'property_preset_title' => '预设',
- 'property_preset_description' => '允许字段值最初由另一个字段的值设置,使用输入预置转换器进行转换.',
- 'property_preset_field' => '字段',
- 'property_preset_field_description' => '定义要从中获取值的其他字段名.',
- 'property_preset_type' => '类型',
- 'property_preset_type_description' => '指定转换类型',
- 'property_attributes_title' => '属性',
- 'property_attributes_description' => '要添加到表单字段元素的自定义HTML属性.',
- 'property_container_attributes_title' => '容器属性',
- 'property_container_attributes_description' => '要添加到表单域容器元素的自定义HTML属性.',
- 'property_group_advanced' => '高级',
- 'property_dependson_description' => '此字段所依赖的其他字段名的列表,当其他字段被修改时,此字段将更新。每行一个字段.',
- 'property_trigger_title' => '触发',
- 'property_trigger_description' => '允许根据其他元素的状态更改元素属性,如可见性或值.',
- 'property_default_from_description' => '从另一个字段的值中获取默认值.',
- 'property_field_name_required' => '字段名是必需的',
- 'property_field_name_regex' => '字段名只能包含拉丁字母、数字、下划线、短划线和方括号.',
- 'property_attributes_size' => '大小',
- 'property_attributes_size_tiny' => '微小的',
- 'property_attributes_size_small' => '小',
- 'property_attributes_size_large' => '大',
- 'property_attributes_size_huge' => '巨大的',
- 'property_attributes_size_giant' => '特大的',
- 'property_comment_position' => '注释位置',
- 'property_comment_position_above' => '在上面',
- 'property_comment_position_below' => '在下面',
- 'property_hint_path' => '提示部分路径',
- 'property_hint_path_description' => '包含提示文本的部分文件的路径。使用$符号来引用插件根目录,例如:$/acme/blog/partials/_hint.htm',
- 'property_hint_path_required' => '请输入提示部分路径',
- 'property_partial_path' => '部分路径',
- 'property_partial_path_description' => '部分文件的路径。使用$符号来引用插件根目录,例如:$/acme/blog/partials/_partial.htm',
- 'property_partial_path_required' => '请输入部分路径',
- 'property_code_language' => '语言',
- 'property_code_theme' => '主题',
- 'property_theme_use_default' => '使用默认主题',
- 'property_group_code_editor' => '代码编辑器',
- 'property_gutter' => 'Gutter',
- 'property_gutter_show' => '可见',
- 'property_gutter_hide' => '隐藏',
- 'property_wordwrap' => '自动换行',
- 'property_wordwrap_wrap' => '换行',
- 'property_wordwrap_nowrap' => '不换行',
- 'property_fontsize' => '字体大小',
- 'property_codefolding' => '代码目录',
- 'property_codefolding_manual' => '指南',
- 'property_codefolding_markbegin' => '标记开始',
- 'property_codefolding_markbeginend' => '标记开始和结束',
- 'property_autoclosing' => '自动关闭',
- 'property_enabled' => '开启',
- 'property_disabled' => '禁止',
- 'property_soft_tabs' => '软标签',
- 'property_tab_size' => '标签大小',
- 'property_readonly' => '仅读',
- 'property_use_default' => '使用默认设置',
- 'property_options' => '选项',
- 'property_prompt' => '提示',
- 'property_prompt_description' => '“创建”按钮显示的文本.',
- 'property_prompt_default' => '添加新项',
- 'property_available_colors' => '可用颜色',
- 'property_available_colors_description' => '十六进制格式的可用颜色列表(#FF0000)。将默认颜色集保留为空。每行输入一个值.',
- 'property_datepicker_mode' => '模式',
- 'property_datepicker_mode_date' => '日期',
- 'property_datepicker_mode_datetime' => '日期时间',
- 'property_datepicker_mode_time' => '时间',
- 'property_datepicker_min_date' => '最小日期',
- 'property_datepicker_min_date_description' => '可以选择的最小/最早日期。默认值为空(2000-01-01).',
- 'property_datepicker_max_date' => '最大日期',
- 'property_datepicker_max_date_description' => '可选择的最大/最晚日期。将默认值留空(2020-12-31).',
- 'property_datepicker_date_invalid_format' => '无效的日期格式。使用格式YYYY-MM-DD.',
- 'property_datepicker_year_range' => '年份范围',
- 'property_datepicker_year_range_description' => '两边的年数(如10)或上下范围的数组(如[19002015])。将默认值留空(10).',
- 'property_datepicker_year_range_invalid_format' => '年份范围格式无效。使用数字(如“10”)或上限/下限数组(如“[19002015]”)',
- 'property_datepicker_format' => '格式',
- 'property_datepicker_year_format_description' => '定义自定义日期格式。默认格式为“Y-m-d”',
- 'property_fileupload_mode' => '模式',
- 'property_fileupload_mode_file' => '文件',
- 'property_fileupload_mode_image' => '图片',
- 'property_group_fileupload' => '上传文件',
- 'property_fileupload_image_width' => '图片宽度',
- 'property_fileupload_image_width_description' => '可选参数-图像大小将调整为此宽度。仅适用于图像模式.',
- 'property_fileupload_invalid_dimension' => '维度值无效-请输入一个数字.',
- 'property_fileupload_image_height' => '图片高度',
- 'property_fileupload_image_height_description' => '可选参数-图像大小将调整到此高度。仅适用于图像模式.',
- 'property_fileupload_file_types' => '文件类型',
- 'property_fileupload_file_types_description' => '上传可接受的文件扩展名的可选逗号分隔列表。如: zip,txt',
- 'property_fileupload_mime_types' => 'MIME 类型',
- 'property_fileupload_maxfilesize' => '最大文件大小',
- 'property_fileupload_maxfilesize_description' => '上传者接受的文件大小(以 Mb 为单位),可选。',
- 'property_fileupload_invalid_maxfilesize' => '最大文件大小值无效',
- 'property_fileupload_maxfiles' => '最大文件数量',
- 'property_fileupload_invalid_maxfiles' => '最大文件数量值无效',
- 'property_fileupload_maxfiles_description' => '允许上传的最大文件数量',
- 'property_fileupload_mime_types_description' => '上传接受的可选逗号分隔的MIME类型列表,可以是文件扩展名,也可以是完全限定名. 如: bin,txt',
- 'property_fileupload_use_caption' => '使用说明',
- 'property_fileupload_use_caption_description' => '允许为文件设置标题和说明.',
- 'property_fileupload_thumb_options' => '缩略图选项',
- 'property_fileupload_thumb_options_description' => '管理自动生成的缩略图的选项。仅适用于图像模式.',
- 'property_fileupload_thumb_mode' => '模式',
- 'property_fileupload_thumb_auto' => '自动',
- 'property_fileupload_thumb_exact' => '扩展',
- 'property_fileupload_thumb_portrait' => '纵向',
- 'property_fileupload_thumb_landscape' => '横向',
- 'property_fileupload_thumb_crop' => '裁切',
- 'property_fileupload_thumb_extension' => '文件扩展名',
- 'property_name_from' => '列名',
- 'property_name_from_description' => '用于显示名称的关系列名.',
- 'property_relation_select' => '选择',
- 'property_relation_select_description' => '将多个列合并在一起以显示名称',
- 'property_relation_scope' => '范围',
- 'property_relation_scope_description' => '指定在相关表单模型中定义的查询范围方法,以始终应用于列表查询',
- 'property_description_from' => '列描述',
- 'property_description_from_description' => '用于显示说明的关系列名称.',
- 'property_recordfinder_prompt' => '提示',
- 'property_recordfinder_prompt_description' => '未选择记录时要显示的文本。%s字符表示搜索图标。为默认提示保留为空.',
- 'property_recordfinder_list' => '列表配置',
- 'property_recordfinder_list_description' => '对列表列定义文件的引用。使用$符号来引用插件根目录,例如:$/acme/blog/lists/_list.yaml',
- 'property_recordfinder_list_required' => '请提供列表YAML文件的路径',
- 'property_group_recordfinder' => '查找记录',
- 'property_mediafinder_mode' => '模式',
- 'property_mediafinder_mode_file' => '文件',
- 'property_mediafinder_mode_image' => '图片',
- 'property_mediafinder_image_width_description' => '如果使用图像类型,预览图像将按此宽度显示(可选).',
- 'property_mediafinder_image_height_description' => '如果使用图像类型,预览图像将显示到此高度(可选).',
- 'property_group_taglist' => '标签列表',
- 'property_taglist_mode' => '模式',
- 'property_taglist_mode_description' => '定义此字段的值作为返回格式',
- 'property_taglist_mode_string' => '字符串',
- 'property_taglist_mode_array' => '数组',
- 'property_taglist_mode_relation' => '关联',
- 'property_taglist_separator' => '分割符',
- 'property_taglist_separator_comma' => '分割符号',
- 'property_taglist_separator_space' => '空格',
- 'property_taglist_options' => '预定义的标记',
- 'property_taglist_custom_tags' => '自定义标签',
- 'property_taglist_custom_tags_description' => '允许用户手动输入自定义标记.',
- 'property_taglist_name_from' => '来源名称',
- 'property_taglist_name_from_description' => '定义标记中显示的关系模型属性。仅用于“关联”模式.',
- 'property_taglist_use_key' => '使用密钥',
- 'property_taglist_use_key_description' => '如果选中,标记列表将使用键而不是值来保存和读取数据。仅用于“关联”模式.',
- 'property_group_relation' => '关联',
- 'property_relation_prompt' => '提示',
- 'property_relation_prompt_description' => '没有可用选择时要显示的文本.',
- 'property_empty_option' => '空选项',
- 'property_empty_option_description' => 'empty选项对应于空选择,但与占位符不同,它可以重新选择.',
- 'property_show_search' => '显示搜索',
- 'property_show_search_description' => '启用此下拉列表的搜索功能.',
- 'property_title_from' => '标题来自',
- 'property_title_from_description' => '指定一个子字段名称以使用该字段的值作为每个转发器项目的标题。',
- 'property_min_items' => '最小项',
- 'property_min_items_description' => '转发器内允许的最小项目数。',
- 'property_min_items_integer' => '最小项目必须是正整数。',
- 'property_max_items' => '最大项',
- 'property_max_items_description' => '转发器中允许的最大项目数。',
- 'property_max_items_integer' => '最大项目必须是正整数。',
- 'property_display_mode' => '风格',
- 'property_display_mode_description' => '定义应用到这个转发器的行为。',
- 'property_switch_label_on' => 'ON标题',
- 'property_switch_label_on_description' => '为“ON”开关状态设置自定义标题',
- 'property_switch_label_off' => 'OFF标题',
- 'property_switch_label_off_description' => '为“OFF”开关状态设置自定义标题',
- 'control_group_standard' => '标准',
- 'control_group_widgets' => '控件',
- 'click_to_add_control' => '添加控件',
- 'loading' => '加载中...',
- 'control_text' => '文本',
- 'control_text_description' => '单行文本框',
- 'control_password' => '密码',
- 'control_password_description' => '单行密码文本字段',
- 'control_checkbox' => '复选框',
- 'control_checkbox_description' => '单选框',
- 'control_switch' => '开关',
- 'control_switch_description' => '单选开关盒,复选框的替代品',
- 'control_textarea' => '文本域',
- 'control_textarea_description' => '高度可控的多行文本框',
- 'control_dropdown' => '下拉框',
- 'control_dropdown_description' => '带有静态或动态选项的下拉列表',
- 'control_balloon-selector' => '气球选择器',
- 'control_balloon-selector_description' => '一次只能使用静态或动态选项选择一个项目的列表',
- 'control_unknown' => '未知控件类型: :type',
- 'control_repeater' => '循环组件',
- 'control_repeater_description' => '输出一组重复的窗体控件',
- 'control_number' => '数值',
- 'control_number_description' => '只接受数字的单行文本框',
- 'control_hint' => '提示',
- 'control_hint_description' => '输出可由用户隐藏的框中的部分内容',
- 'control_partial' => '部分',
- 'control_partial_description' => '输出部分内容',
- 'control_section' => '切片',
- 'control_section_description' => '显示带有标题和副标题的窗体节',
- 'control_radio' => '单选框列表',
- 'control_radio_description' => '单选选项列表,一次只能选择一个项目',
- 'control_radio_option_1' => '选项 1',
- 'control_radio_option_2' => '选项 2',
- 'control_checkboxlist' => '复选框列表',
- 'control_checkboxlist_description' => '复选框列表,可在其中选择多个项目',
- 'control_codeeditor' => '代码编辑器',
- 'control_codeeditor_description' => '用于格式化代码或标记的纯文本编辑器',
- 'control_colorpicker' => '颜色选择器',
- 'control_colorpicker_description' => '用于选择十六进制颜色值的字段',
- 'control_datepicker' => '日期选择器',
- 'control_datepicker_description' => '用于选择日期和时间的文本字段',
- 'control_richeditor' => '富文本编辑器',
- 'control_richeditor_description' => '富格式文本的可视化编辑器,也称为所见即所得编辑器',
- 'property_group_rich_editor' => '富文本编辑器',
- 'property_richeditor_toolbar_buttons' => '工具栏按钮',
- 'property_richeditor_toolbar_buttons_description' => '在编辑器工具栏上显示哪些按钮',
- 'control_markdown' => 'Markdown 编辑器',
- 'control_markdown_description' => '标记格式文本的基本编辑器',
- 'control_taglist' => '标签列表',
- 'control_taglist_description' => '用于输入标签列表的字段',
- 'control_fileupload' => '文件上传',
- 'control_fileupload_description' => '图像或常规文件的文件上传',
- 'control_recordfinder' => '记录查找',
- 'control_recordfinder_description' => '具有记录搜索功能的相关记录的详细信息的字段',
- 'control_mediafinder' => '媒体查找器',
- 'control_mediafinder_description' => '从媒体管理器库中选择项目的字段',
- 'control_relation' => '关联',
- 'control_relation_description' => '显示用于选择相关记录的下拉列表或复选框列表',
- 'control_widget_type' => '小部件类型',
- 'error_file_name_required' => '请输入表单文件名.',
- 'error_file_name_invalid' => '文件名只能包含拉丁字母、数字、下划线、点和哈希.',
- 'span_left' => '左边',
- 'span_right' => '右边',
- 'span_full' => '铺满',
- 'span_auto' => '自动',
- 'style_default' => '默认',
- 'style_collapsed' => '折叠',
- 'style_accordion' => '手风琴',
- 'empty_tab' => '空标签',
- 'confirm_close_tab' => '选项卡包含将被删除的控件。继续?',
- 'tab' => '表单选项卡',
- 'tab_title' => '标题',
- 'controls' => '控件',
- 'property_tab_title_required' => '选项卡标题不能为空.',
- 'tabs_primary' => '主选项卡',
- 'tabs_secondary' => '辅助选项卡',
- 'tab_stretch' => '标准',
- 'tab_stretch_description' => '指定此选项卡容器是否拉伸以适合父级高度.',
- 'tab_css_class' => 'CSS 类',
- 'tab_css_class_description' => '将CSS类分配给tabs容器.',
- 'tab_name_template' => '选项卡 %s',
- 'tab_already_exists' => '具有指定标题的选项卡已存在.',
- ],
- 'list' => [
- 'tab_new_list' => '新列表',
- 'saved' => '列表已保存',
- 'confirm_delete' => '删除列表?',
- 'tab_columns' => '列',
- 'btn_add_column' => '添加列',
- 'btn_delete_column' => '删除列',
- 'column_dbfield_label' => '字段',
- 'column_dbfield_required' => '请输入模型字段',
- 'column_name_label' => '标签',
- 'column_label_required' => '请输入列标签',
- 'column_type_label' => '类型',
- 'column_type_required' => '请输入列类型',
- 'column_type_text' => '文本',
- 'column_type_number' => '数值',
- 'column_type_switch' => '开关',
- 'column_type_datetime' => '日期时间',
- 'column_type_date' => '日期',
- 'column_type_time' => '时间',
- 'column_type_timesince' => '开始时间',
- 'column_type_timetense' => '结束时间',
- 'column_type_select' => '选择',
- 'column_type_partial' => '部分',
- 'column_label_default' => '默认',
- 'column_label_searchable' => '搜索',
- 'column_label_sortable' => '排序',
- 'column_label_invisible' => '隐形的',
- 'column_label_select' => '选择',
- 'column_label_relation' => '关系',
- 'column_label_css_class' => 'CSS 类',
- 'column_label_width' => '宽度',
- 'column_label_path' => '路径',
- 'column_label_format' => '格式',
- 'column_label_value_from' => '来源值',
- 'error_duplicate_column' => '重复的列字段名: \':column\'.',
- 'btn_add_database_columns' => '添加数据库列',
- 'all_database_columns_exist' => '列表中已定义所有数据库列',
- ],
- 'controller' => [
- 'menu_label' => '控制器',
- 'no_records' => '找不到插件控制器',
- 'controller' => '控制器',
- 'behaviors' => '行为',
- 'new_controller' => '新控制器',
- 'error_controller_has_no_behaviors' => '控制器没有可配置的行为.',
- 'error_invalid_yaml_configuration' => '加载行为配置文件时出错: :file',
- 'behavior_form_controller' => '窗体控制器行为',
- 'behavior_form_controller_description' => '向后端页面添加表单功能。该行为提供了三个页面,分别称为Create、Update和Preview.',
- 'property_behavior_form_placeholder' => '--选择表单--',
- 'property_behavior_form_name' => '名称',
- 'property_behavior_form_name_description' => '此窗体管理的对象的名称',
- 'property_behavior_form_name_required' => '请输入表单名称',
- 'property_behavior_form_file' => '表单配置',
- 'property_behavior_form_file_description' => '对表单域定义文件的引用',
- 'property_behavior_form_file_required' => '请输入表单配置文件的路径',
- 'property_behavior_form_model_class' => '模型类',
- 'property_behavior_form_model_class_description' => '一个模型类名,表单数据将根据此模型加载和保存.',
- 'property_behavior_form_model_class_required' => '请选择一个模型类',
- 'property_behavior_form_default_redirect' => '默认重定向',
- 'property_behavior_form_default_redirect_description' => '保存或取消表单时默认重定向到的页面.',
- 'property_behavior_form_create' => '创建记录页',
- 'property_behavior_form_redirect' => '重定向',
- 'property_behavior_form_redirect_description' => '创建记录时要重定向到的页.',
- 'property_behavior_form_redirect_close' => '关闭重定向',
- 'property_behavior_form_redirect_close_description' => '创建记录并随请求一起发送close post变量时要重定向到的页面.',
- 'property_behavior_form_flash_save' => '保存闪存消息',
- 'property_behavior_form_flash_save_description' => '保存记录时要显示的闪存消息.',
- 'property_behavior_form_page_title' => '页面标题',
- 'property_behavior_form_update' => '更新记录页',
- 'property_behavior_form_update_redirect' => '重定向',
- 'property_behavior_form_create_redirect_description' => '保存记录时要重定向到的页.',
- 'property_behavior_form_flash_delete' => '删除闪存消息',
- 'property_behavior_form_flash_delete_description' => '删除记录时显示的闪烁消息.',
- 'property_behavior_form_preview' => '预览记录页',
- 'behavior_list_controller' => '列表控制器行为',
- 'behavior_list_controller_description' => '提供可排序和可搜索的列表,其记录上有可选链接。行为自动创建控制器操作“index”.',
- 'property_behavior_list_title' => '列表标题',
- 'property_behavior_list_title_required' => '请输入列表标题',
- 'property_behavior_list_placeholder' => '--选择列表--',
- 'property_behavior_list_model_class' => '模型类',
- 'property_behavior_list_model_class_description' => '模型类名,列表数据从此模型加载.',
- 'property_behavior_form_model_class_placeholder' => '--选择模型--',
- 'property_behavior_list_model_class_required' => '请输入一个模型名称',
- 'property_behavior_list_model_placeholder' => '--选择模型--',
- 'property_behavior_list_file' => '列表配置文件',
- 'property_behavior_list_file_description' => '对列表定义文件的引用',
- 'property_behavior_list_file_required' => '请输入列表配置文件的路径',
- 'property_behavior_list_record_url' => '记录 URL',
- 'property_behavior_list_record_url_description' => '将每个列表记录链接到另一页。例:用户/更新:id:id部分替换为记录标识符.',
- 'property_behavior_list_no_records_message' => '无记录消息',
- 'property_behavior_list_no_records_message_description' => '找不到记录时要显示的消息',
- 'property_behavior_list_recs_per_page' => '每一页记录',
- 'property_behavior_list_recs_per_page_description' => '每页要显示的记录,使用0表示没有页。默认值:0',
- 'property_behavior_list_recs_per_page_regex' => '每页记录数应为整数值',
- 'property_behavior_list_show_setup' => '显示设置按钮',
- 'property_behavior_list_show_sorting' => '显示排序',
- 'property_behavior_list_default_sort' => '默认排序',
- 'property_behavior_form_ds_column' => '列',
- 'property_behavior_form_ds_direction' => '方向',
- 'property_behavior_form_ds_asc' => '升序',
- 'property_behavior_form_ds_desc' => '降序',
- 'property_behavior_list_show_checkboxes' => '显示复选框',
- 'property_behavior_list_onclick' => '点击处理程序',
- 'property_behavior_list_onclick_description' => '单击记录时要执行的自定义JavaScript代码.',
- 'property_behavior_list_show_tree' => '显示树',
- 'property_behavior_list_show_tree_description' => '显示父/子记录的树层次结构.',
- 'property_behavior_list_tree_expanded' => '树已展开',
- 'property_behavior_list_tree_expanded_description' => '确定默认情况下是否应展开树节点.',
- 'property_behavior_list_toolbar' => '工具栏',
- 'property_behavior_list_toolbar_buttons' => '按钮部分',
- 'property_behavior_list_toolbar_buttons_description' => '使用工具栏按钮引用控制器部分文件。例如:列表工具栏',
- 'property_behavior_list_search' => '搜索',
- 'property_behavior_list_search_prompt' => '搜索提示',
- 'property_behavior_list_filter' => '筛选配置',
- 'behavior_reorder_controller' => '重新排序控制器行为',
- 'behavior_reorder_controller_description' => '提供对其记录进行排序和重新排序的功能。该行为会自动创建控制器操作“重新排序”.',
- 'property_behavior_reorder_title' => '重新排序标题',
- 'property_behavior_reorder_title_required' => '请输入重新排序标题',
- 'property_behavior_reorder_name_from' => '属性名称',
- 'property_behavior_reorder_name_from_description' => '应用作每个记录的标签的模型属性.',
- 'property_behavior_reorder_name_from_required' => '请输入属性名称',
- 'property_behavior_reorder_model_class' => '模型类',
- 'property_behavior_reorder_model_class_description' => '模型类名,重新排序数据从此模型加载.',
- 'property_behavior_reorder_model_class_placeholder' => '--选择模型--',
- 'property_behavior_reorder_model_class_required' => '请选择模型类',
- 'property_behavior_reorder_model_placeholder' => '--选择模型--',
- 'property_behavior_reorder_toolbar' => '工具栏',
- 'property_behavior_reorder_toolbar_buttons' => '按钮部分',
- 'property_behavior_reorder_toolbar_buttons_description' => '使用工具栏按钮引用控制器部分文件。例如:重新排序工具栏',
- 'error_controller_not_found' => '找不到原始控制器文件.',
- 'error_invalid_config_file_name' => '行为 :class 配置文件名 (:file) 包含无效字符,造成不能假装.',
- 'error_file_not_yaml' => '行为 :class 配置文件 (:file) 不是一个YAML文件. 仅支持YAML配置文件.',
- 'saved' => '控制器已保存',
- 'controller_name' => '控制器名称',
- 'controller_name_description' => '控制器名称定义控制器后端页的类名和URL。应用标准的PHP变量命名约定。第一个符号应该是大写拉丁字母。示例:Build、News、Case.',
- 'base_model_class' => '基本模型类',
- 'base_model_class_description' => '选择要在需要或支持模型的行为中用作基础模型的模型类。您可以稍后配置这些行为.',
- 'base_model_class_placeholder' => '--选择模型--',
- 'controller_behaviors' => '行为',
- 'controller_behaviors_description' => '选择控制器应该实现的行为。生成器将自动创建行为所需的视图文件.',
- 'controller_permissions' => '权限',
- 'controller_permissions_description' => '选择可以访问控制器视图的用户权限。权限可以在生成器的“权限”选项卡上定义。稍后可以在控制器PHP脚本中更改此选项.',
- 'controller_permissions_no_permissions' => '插件没有定义任何权限.',
- 'menu_item' => '活动菜单项',
- 'menu_item_description' => '选择要激活控制器页面的菜单项。稍后可以在控制器PHP脚本中更改此选项.',
- 'menu_item_placeholder' => '--选择菜单项--',
- 'error_unknown_behavior' => '行为类 :class 没有在行为类库注册.',
- 'error_behavior_view_conflict' => '所选行为提供了冲突的视图 (:view) 不能在控制器中一起使用.',
- 'error_behavior_config_conflict' => '所选行为提供冲突的配置文件 (:file) 无法在控制器中一起使用.',
- 'error_behavior_view_file_not_found' => '行为 :class 的视图模板 :view 没有找到.',
- 'error_behavior_config_file_not_found' => '行为 :class 的配置文件 :file 没有找到.',
- 'error_controller_exists' => '控制器文件已存在: :file.',
- 'error_controller_name_invalid' => '无效格式的控制名称. 名称只能包含数字和拉丁字母。第一个符号应该是大写拉丁字母.',
- 'error_behavior_view_file_exists' => '控制器视图文件已存在: :view.',
- 'error_behavior_config_file_exists' => '行为配置文件已存在: :file.',
- 'error_save_file' => '保存控制器文件错误: :file',
- 'error_behavior_requires_base_model' => '行为 :behavior 必须选择一个基础模型类.',
- 'error_model_doesnt_have_lists' => '所选模型没有任何列表。请先创建列表.',
- 'error_model_doesnt_have_forms' => '所选模型没有任何窗体。请先创建表单.',
- ],
- 'version' => [
- 'menu_label' => '版本',
- 'no_records' => '找不到插件版本',
- 'search' => '搜索...',
- 'tab' => '版本',
- 'saved' => '已保存版本',
- 'confirm_delete' => '删除版本?',
- 'tab_new_version' => '新奔奔',
- 'migration' => '迁移',
- 'seeder' => '填充',
- 'custom' => '增加版本号',
- 'apply_version' => '应用版本',
- 'applying' => '应用中...',
- 'rollback_version' => '回滚版本',
- 'rolling_back' => '回滚中...',
- 'applied' => '应用的版本',
- 'rolled_back' => '版本已回滚',
- 'hint_save_unapplied' => '您保存了一个未应用的版本。当您或其他用户登录到后端或数据库表保存在生成器的数据库部分时,可以自动应用未应用的版本.',
- 'hint_rollback' => '回滚某个版本也将回滚比此版本更新的所有版本。请注意,当您或其他用户登录到后端或数据库表保存在生成器的数据库部分时,系统会自动应用未应用的版本.',
- 'hint_apply' => '应用一个版本也会应用插件的所有旧版本.',
- 'dont_show_again' => '不再显示',
- 'save_unapplied_version' => '保存未应用的版本',
- 'sort_ascending' => '升序排序',
- 'sort_descending' => '降序排序',
- ],
- 'menu' => [
- 'menu_label' => '后台菜单',
- 'tab' => '菜单',
- 'items' => '菜单选项',
- 'saved' => '已保存菜单',
- 'add_main_menu_item' => '添加主菜单项',
- 'new_menu_item' => '菜单选项',
- 'add_side_menu_item' => '添加子项',
- 'side_menu_item' => '侧边栏菜单项',
- 'property_label' => '标签',
- 'property_label_required' => '请输入菜单项标签.',
- 'property_url_required' => '请输入菜单项URL',
- 'property_url' => 'URL',
- 'property_icon' => '图标',
- 'property_icon_required' => '请选择一个图标',
- 'property_permissions' => '权限',
- 'property_order' => '顺序',
- 'property_order_invalid' => '请以整数值形式输入菜单项顺序。',
- 'property_order_description' => '菜单项顺序管理其在菜单中的位置。如果没有提供订单,该项目将被放在菜单的末尾。默认订单值的增量为100.',
- 'property_attributes' => 'HTML属性',
- 'property_code' => '代码',
- 'property_code_invalid' => '代码只能包含拉丁字母和数字',
- 'property_code_required' => '请输入菜单项代码.',
- 'error_duplicate_main_menu_code' => '主菜单项代码重复: \':code\'.',
- 'error_duplicate_side_menu_code' => '重复的侧边栏菜单项代码: \':code\'.',
- 'icon_svg' => 'SVG图标',
- 'icon_svg_description' => '用于代替标准图标的SVG图标,SVG图标应该是一个矩形并且可以支持颜色',
- 'counter' => '通知内容',
- 'counter_description' => '要在菜单图标附近输出的数值。 该值应该是一个数字或一个返回数字的可调用对象',
- 'counter_label' => '通知描述',
- 'counter_label_description' => '一个字符串值,用于描述计数器中的数字引用',
- 'counter_group' => '通知气泡',
- ],
- 'localization' => [
- 'menu_label' => '本地化',
- 'language' => '语言',
- 'strings' => '字符串',
- 'confirm_delete' => '删除语言?',
- 'tab_new_language' => '新语言',
- 'no_records' => '未找到语言',
- 'saved' => '语言文件已保存',
- 'error_cant_load_file' => '无法加载请求的语言文件-找不到文件.',
- 'error_bad_localization_file_contents' => '无法加载请求的语言文件。语言文件只能包含数组定义和字符串.',
- 'error_file_not_array' => '无法加载请求的语言文件。语言文件应该返回一个数组.',
- 'save_error' => '保存文件错误 \':name\'. 请检查写入权限.',
- 'error_delete_file' => '删除本地化文件时出错.',
- 'add_missing_strings' => '添加缺少的字符串',
- 'copy' => '复制',
- 'add_missing_strings_label' => '选择要从中复制缺少字符串的语言',
- 'no_languages_to_copy_from' => '没有其他语言可用于复制字符串.',
- 'new_string_warning' => '新字符串或节',
- 'structure_mismatch' => '源语言文件的结构与正在编辑的文件的结构不匹配。编辑文件中的某些单独字符串与源文件中的节相对应(反之亦然),因此无法自动合并.',
- 'create_string' => '创建新的字符串',
- 'string_key_label' => '字符串键',
- 'string_key_comment' => '使用句点作为节分隔符输入字符串键。例如:plugin.search. 字符串将在插件的默认语言本地化文件中创建.',
- 'string_value' => '字符串值',
- 'string_key_is_empty' => '字符串键不应为空',
- 'string_key_is_a_string' => ':key 是字符串,不能包含其他字符串.',
- 'string_value_is_empty' => '字符串值不应为空',
- 'string_key_exists' => '字符串键已存在',
- ],
- 'permission' => [
- 'menu_label' => '权限',
- 'tab' => '权限',
- 'form_tab_permissions' => '权限',
- 'btn_add_permission' => '添加权限',
- 'btn_delete_permission' => '删除权限',
- 'column_permission_label' => '权限代码',
- 'column_permission_required' => '请输入权限代码',
- 'column_tab_label' => '选项卡标题',
- 'column_tab_required' => '请输入权限选项卡标题',
- 'column_label_label' => '标签',
- 'column_label_required' => '请输入选项卡标签',
- 'saved' => '权限已保存',
- 'error_duplicate_code' => '权限代码重复: \':code\'.',
- ],
- 'yaml' => [
- 'save_error' => '保存文件错误 \':name\'. 请检查写入权限.',
- ],
- 'common' => [
- 'error_file_exists' => '文件已存在: \':path\'.',
- 'field_icon_description' => 'October 使用字体图标: http://octobercms.com/docs/ui/icon',
- 'destination_dir_not_exists' => '目标目录不存在: \':path\'.',
- 'error_make_dir' => '创建目录错误: \':name\'.',
- 'error_dir_exists' => '目录已存在: \':path\'.',
- 'template_not_found' => '模板文件未找到: \':name\'.',
- 'error_generating_file' => '生成文件错误: \':path\'.',
- 'error_loading_template' => '加载模板文件错误: \':name\'.',
- 'select_plugin_first' => '请先选择一个插件。要查看插件列表,请单击左侧边栏上的>图标。.',
- 'plugin_not_selected' => '未选择插件',
- 'add' => '添加',
- ],
- 'migration' => [
- 'entity_name' => '迁移',
- 'error_version_invalid' => '版本格式应参照:1.0.1',
- 'field_version' => '版本',
- 'field_description' => '描述',
- 'field_code' => '代码',
- 'save_and_apply' => '保存 & 应用',
- 'error_version_exists' => '迁移版本已存在.',
- 'error_script_filename_invalid' => '迁移脚本文件名只能包含拉丁字母、数字和下划线。名称应以拉丁字母开头,不能包含空格.',
- 'error_cannot_change_version_number' => '无法更改应用版本的版本号.',
- 'error_file_must_define_class' => '迁移代码应该定义迁移或种子类。如果只想更新版本号,请将“代码”字段留空.',
- 'error_file_must_define_namespace' => '应该定义一个代码迁移。如果只想更新版本号,请将“代码”字段留空.',
- 'no_changes_to_save' => '没有要保存的更改.',
- 'error_namespace_mismatch' => '迁移代码应该使用插件名称空间: :namespace',
- 'error_migration_file_exists' => '迁移文件 :file 已存在. 请使用其他的文件名称.',
- 'error_cant_delete_applied' => '此版本已应用,无法删除。请先回滚版本.',
- ],
- 'components' => [
- 'list_title' => '记录列表',
- 'list_description' => '显示选定模型的记录列表',
- 'list_page_number' => '页数',
- 'list_page_number_description' => '此值用于确定用户所在的页面.',
- 'list_records_per_page' => '每页记录',
- 'list_records_per_page_description' => '要在单个页面上显示的记录数。保留为空可禁用分页.',
- 'list_records_per_page_validation' => '每页记录值的格式无效。值应为数字.',
- 'list_no_records' => '无记录消息',
- 'list_no_records_description' => '如果没有记录,则在列表中显示的消息。在默认组件的.',
- 'list_no_records_default' => '找不到记录',
- 'list_sort_column' => '列排序',
- 'list_sort_column_description' => '记录排序依据的模型列',
- 'list_sort_direction' => '方向',
- 'list_display_column' => '显示列',
- 'list_display_column_description' => '要在列表中显示的列。在默认组件的.',
- 'list_display_column_required' => '请选择显示列.',
- 'list_details_page' => '详情页',
- 'list_details_page_description' => '显示记录详细信息的页面.',
- 'list_details_page_no' => '--无详细信息页--',
- 'list_sorting' => '排序',
- 'list_pagination' => '分页',
- 'list_order_direction_asc' => '升序',
- 'list_order_direction_desc' => '倒叙',
- 'list_model' => '模型类',
- 'list_scope' => '范围',
- 'list_scope_description' => '获取记录的可选模型范围',
- 'list_scope_default' => '--选择范围,可选--',
- 'list_scope_value' => '范围值',
- 'list_scope_value_description' => '传递给模型范围的可选值',
- 'list_details_page_link' => '链接到详细信息页',
- 'list_details_key_column' => '详细信息键列',
- 'list_details_key_column_description' => '要用作详细信息页链接中的记录标识符的模型列.',
- 'list_details_url_parameter' => 'URL 参数名称',
- 'list_details_url_parameter_description' => '采用记录标识符的详细信息页URL参数的名称.',
- 'details_title' => '记录详情',
- 'details_description' => '显示选定模型的记录详细信息',
- 'details_model' => '模型类',
- 'details_identifier_value' => '标识符值',
- 'details_identifier_value_description' => '从数据库加载记录的标识符值。指定固定值或URL参数名称.',
- 'details_identifier_value_required' => '标识符值是必需的',
- 'details_key_column' => '键列',
- 'details_key_column_description' => '要用作从数据库提取记录的记录标识符的模型列.',
- 'details_key_column_required' => '键列名是必需的',
- 'details_display_column' => '显示列',
- 'details_display_column_description' => '要在详细信息页面上显示的模型列。在默认组件的.',
- 'details_display_column_required' => '请选择显示列.',
- 'details_not_found_message' => '未找到消息',
- 'details_not_found_message_description' => '未找到记录时要显示的消息。在默认组件的.',
- 'details_not_found_message_default' => '记录未找到',
- ],
- 'validation' => [
- 'reserved' => ':attribute 不能是PHP保留关键字',
- ],
+ [
+ 'name' => '构造器',
+ 'description' => '提供用于构建October插件的可视化工具.',
+ 'add' => '创建插件',
+ 'no_records' => '找不到插件',
+ 'no_name' => '没有名称',
+ 'search' => '搜索...',
+ 'filter_description' => '显示所有插件或只显示您的插件.',
+ 'settings' => '设置',
+ 'entity_name' => '插件',
+ 'field_name' => '名称',
+ 'field_author' => '作者',
+ 'field_description' => '描述',
+ 'field_icon' => '插件图标',
+ 'field_plugin_namespace' => '插件命名空间',
+ 'field_author_namespace' => '作者命名空间',
+ 'field_namespace_description' => '命名空间只能包含拉丁字母和数字,并且应该以拉丁字母开头。示例插件命名空间:Blog',
+ 'field_author_namespace_description' => '创建插件后,不能使用Builder更改命名空间。示例作者名称空间:JohnSmith',
+ 'tab_general' => '常规参数',
+ 'tab_description' => '描述',
+ 'field_homepage' => '插件主页',
+ 'no_description' => '常规参数没有为此插件提供说明',
+ 'error_settings_not_editable' => '无法使用生成器编辑此插件的设置.',
+ 'update_hint' => '您可以在“本地化”选项卡上编辑本地化插件的名称和说明.',
+ 'manage_plugins' => '创建和编辑插件',
+ ],
+ 'author_name' => [
+ 'title' => '作者名称',
+ 'description' => '用于新插件的默认作者名称。作者名不是固定的-你可以在插件配置中随时更改它.',
+ ],
+ 'author_namespace' => [
+ 'title' => '作者命名空间',
+ 'description' => '如果您是为市场开发的,命名空间应该与作者代码匹配,并且不能更改。有关详细信息,请参阅文档.',
+ ],
+ 'database' => [
+ 'menu_label' => '数据库',
+ 'no_records' => '未找到数据库表',
+ 'search' => '搜索...',
+ 'confirmation_delete_multiple' => '删除选中的数据库表?',
+ 'field_name' => '数据库表名',
+ 'tab_columns' => '列',
+ 'column_name_name' => '列',
+ 'column_name_required' => '请提供列名',
+ 'column_name_type' => '类型',
+ 'column_type_required' => '请选择列类型',
+ 'column_name_length' => '长度',
+ 'column_validation_length' => '对于十进制列,长度值应为整数或指定为精度和小数位数(10,2)。长度列中不允许有空格.',
+ 'column_validation_title' => '列名中只允许数字、小写拉丁字母和下划线',
+ 'column_name_unsigned' => '符号',
+ 'column_name_nullable' => '可为NULL',
+ 'column_auto_increment' => '自增',
+ 'column_default' => '默认',
+ 'column_comment' => '注释',
+ 'column_auto_primary_key' => '键',
+ 'tab_new_table' => '新增表',
+ 'btn_add_column' => '新增列',
+ 'btn_delete_column' => '删除列',
+ 'btn_add_id' => '添加ID',
+ 'btn_add_timestamps' => '添加时间戳',
+ 'btn_add_soft_deleting' => '添加软删除支持',
+ 'id_exists' => '表中已存在ID列.',
+ 'timestamps_exist' => '表中已存在created_at列和deleted_at列.',
+ 'soft_deleting_exist' => '表中已存在deleted_at列.',
+ 'confirm_delete' => '删除表?',
+ 'error_enum_not_supported' => '表包含生成器当前不支持的类型为“enum”的列.',
+ 'error_table_name_invalid_prefix' => "表名应以插件前缀开头: ':prefix'.",
+ 'error_table_name_invalid_characters' => '表名无效。表名只能包含拉丁字母、数字和下划线。名称应以拉丁字母开头,不能包含空格.',
+ 'error_table_duplicate_column' => "重复列名: ':column'.",
+ 'error_table_auto_increment_in_compound_pk' => '自动递增列不能是复合主键的一部分.',
+ 'error_table_mutliple_auto_increment' => '表不能包含多个自动递增列.',
+ 'error_table_auto_increment_non_integer' => '自动递增列应具有整数类型.',
+ 'error_table_decimal_length' => ":type 的Length参数的格式应为“10,2”,不带空格.",
+ 'error_table_length' => ':type 长度参数应指定为整数.',
+ 'error_unsigned_type_not_int' => "':column' 列出错。无符号标志只能应用于整数类型列.",
+ 'error_integer_default_value' => "整数列 ':column' 的默认值无效。允许的格式为“10”、“-10”.",
+ 'error_decimal_default_value' => "十进制或双精度列的默认值无效 ':column'. 允许的格式为'1.00','1.00'.",
+ 'error_boolean_default_value' => "布尔列的默认值无效 ':column'. 允许的值为“0”和“1”,或“true”和“false”.",
+ 'error_unsigned_negative_value' => "无符号列 ':column' 的默认值不能为负.",
+ 'error_table_already_exists' => "数据库中已存在表 ':name'.",
+ 'error_table_name_too_long' => "表名的长度不应超过64个字符.",
+ 'error_column_name_too_long' => "列名 ':column' 太长。列名的长度不应超过64个字符."
+ ],
+ 'model' => [
+ 'menu_label' => '模型',
+ 'entity_name' => '模型',
+ 'no_records' => '未找到模型',
+ 'search' => '搜索...',
+ 'add' => '添加...',
+ 'forms' => '表单',
+ 'lists' => '列表',
+ 'field_class_name' => '类名',
+ 'field_database_table' => '数据库表',
+ 'field_add_timestamps' => '添加时间戳支持',
+ 'field_add_timestamps_description' => '数据库表必须存在 created_at 和 updated_at 字段.',
+ 'field_add_soft_deleting' => '添加软删除支持',
+ 'field_add_soft_deleting_description' => '数据库表必须存在 deleted_at 字段.',
+ 'error_class_name_exists' => '指定类名的模型文件已存在: :path',
+ 'error_timestamp_columns_must_exist' => '数据库表必须存在 created_at 和 updated_at 字段.',
+ 'error_deleted_at_column_must_exist' => '数据库表必须存在 deleted_at 字段.',
+ 'add_form' => '添加表单',
+ 'add_list' => '添加列表',
+ ],
+ 'form' => [
+ 'saved' => '表单已保存',
+ 'confirm_delete' => '删除表单?',
+ 'tab_new_form' => '新表单',
+ 'btn_add_database_fields' => '添加数据库字段',
+ 'property_label_title' => '标签',
+ 'property_label_required' => '请指定控制标签.',
+ 'property_span_title' => '跨度',
+ 'property_comment_title' => '注释',
+ 'property_comment_above_title' => '在注释上',
+ 'property_default_title' => '默认',
+ 'property_checked_default_title' => '默认选中',
+ 'property_css_class_title' => 'CSS 类名',
+ 'property_css_class_description' => '分配给字段容器的可选CSS类.',
+ 'property_disabled_title' => '禁止',
+ 'property_read_only_title' => '仅读',
+ 'property_hidden_title' => '隐藏',
+ 'property_required_title' => '必填',
+ 'property_field_name_title' => '字段名',
+ 'property_placeholder_title' => '占位符',
+ 'property_default_from_title' => '默认来源',
+ 'property_stretch_title' => '伸展',
+ 'property_stretch_description' => '指定此字段是否拉伸以适合父级高度.',
+ 'property_context_title' => '上下文',
+ 'property_context_description' => '指定显示字段时应使用的窗体上下文.',
+ 'property_context_create' => '创建',
+ 'property_context_update' => '更新',
+ 'property_context_preview' => '预览',
+ 'property_dependson_title' => '依赖',
+ 'property_trigger_action' => '行为',
+ 'property_trigger_show' => '显示',
+ 'property_trigger_hide' => '隐藏',
+ 'property_trigger_enable' => '开启',
+ 'property_trigger_disable' => '禁止',
+ 'property_trigger_empty' => '空',
+ 'property_trigger_field' => '字段',
+ 'property_trigger_field_description' => '定义将触发操作的其他字段名.',
+ 'property_trigger_condition' => '条件',
+ 'property_trigger_condition_description' => '确定指定字段应满足的条件,以便将条件视为“true”。支持的值:选中、未选中、值[somevalue].',
+ 'property_trigger_condition_checked' => '已选中',
+ 'property_trigger_condition_unchecked' => '未选中',
+ 'property_trigger_condition_somevalue' => '值[在此处输入值]',
+ 'property_preset_title' => '预设',
+ 'property_preset_description' => '允许字段值最初由另一个字段的值设置,使用输入预置转换器进行转换.',
+ 'property_preset_field' => '字段',
+ 'property_preset_field_description' => '定义要从中获取值的其他字段名.',
+ 'property_preset_type' => '类型',
+ 'property_preset_type_description' => '指定转换类型',
+ 'property_attributes_title' => '属性',
+ 'property_attributes_description' => '要添加到表单字段元素的自定义HTML属性.',
+ 'property_container_attributes_title' => '容器属性',
+ 'property_container_attributes_description' => '要添加到表单域容器元素的自定义HTML属性.',
+ 'property_group_advanced' => '高级',
+ 'property_dependson_description' => '此字段所依赖的其他字段名的列表,当其他字段被修改时,此字段将更新。每行一个字段.',
+ 'property_trigger_title' => '触发',
+ 'property_trigger_description' => '允许根据其他元素的状态更改元素属性,如可见性或值.',
+ 'property_default_from_description' => '从另一个字段的值中获取默认值.',
+ 'property_field_name_required' => '字段名是必需的',
+ 'property_field_name_regex' => '字段名只能包含拉丁字母、数字、下划线、短划线和方括号.',
+ 'property_attributes_size' => '大小',
+ 'property_attributes_size_tiny' => '微小的',
+ 'property_attributes_size_small' => '小',
+ 'property_attributes_size_large' => '大',
+ 'property_attributes_size_huge' => '巨大的',
+ 'property_attributes_size_giant' => '特大的',
+ 'property_comment_position' => '注释位置',
+ 'property_comment_position_above' => '在上面',
+ 'property_comment_position_below' => '在下面',
+ 'property_hint_path' => '提示部分路径',
+ 'property_hint_path_description' => '包含提示文本的部分文件的路径。使用$符号来引用插件根目录,例如:$/acme/blog/partials/_hint.htm',
+ 'property_hint_path_required' => '请输入提示部分路径',
+ 'property_partial_path' => '部分路径',
+ 'property_partial_path_description' => '部分文件的路径。使用$符号来引用插件根目录,例如:$/acme/blog/partials/_partial.htm',
+ 'property_partial_path_required' => '请输入部分路径',
+ 'property_code_language' => '语言',
+ 'property_code_theme' => '主题',
+ 'property_theme_use_default' => '使用默认主题',
+ 'property_group_code_editor' => '代码编辑器',
+ 'property_gutter' => 'Gutter',
+ 'property_gutter_show' => '可见',
+ 'property_gutter_hide' => '隐藏',
+ 'property_wordwrap' => '自动换行',
+ 'property_wordwrap_wrap' => '换行',
+ 'property_wordwrap_nowrap' => '不换行',
+ 'property_fontsize' => '字体大小',
+ 'property_codefolding' => '代码目录',
+ 'property_codefolding_manual' => '指南',
+ 'property_codefolding_markbegin' => '标记开始',
+ 'property_codefolding_markbeginend' => '标记开始和结束',
+ 'property_autoclosing' => '自动关闭',
+ 'property_enabled' => '开启',
+ 'property_disabled' => '禁止',
+ 'property_soft_tabs' => '软标签',
+ 'property_tab_size' => '标签大小',
+ 'property_readonly' => '仅读',
+ 'property_use_default' => '使用默认设置',
+ 'property_options' => '选项',
+ 'property_prompt' => '提示',
+ 'property_prompt_description' => '“创建”按钮显示的文本.',
+ 'property_prompt_default' => '添加新项',
+ 'property_available_colors' => '可用颜色',
+ 'property_available_colors_description' => '十六进制格式的可用颜色列表(#FF0000)。将默认颜色集保留为空。每行输入一个值.',
+ 'property_datepicker_mode' => '模式',
+ 'property_datepicker_mode_date' => '日期',
+ 'property_datepicker_mode_datetime' => '日期时间',
+ 'property_datepicker_mode_time' => '时间',
+ 'property_datepicker_min_date' => '最小日期',
+ 'property_datepicker_min_date_description' => '可以选择的最小/最早日期。默认值为空(2000-01-01).',
+ 'property_datepicker_max_date' => '最大日期',
+ 'property_datepicker_max_date_description' => '可选择的最大/最晚日期。将默认值留空(2020-12-31).',
+ 'property_datepicker_date_invalid_format' => '无效的日期格式。使用格式YYYY-MM-DD.',
+ 'property_datepicker_year_range' => '年份范围',
+ 'property_datepicker_year_range_description' => '两边的年数(如10)或上下范围的数组(如[19002015])。将默认值留空(10).',
+ 'property_datepicker_year_range_invalid_format' => '年份范围格式无效。使用数字(如“10”)或上限/下限数组(如“[19002015]”)',
+ 'property_datepicker_format' => '格式',
+ 'property_datepicker_year_format_description' => '定义自定义日期格式。默认格式为“Y-m-d”',
+ 'property_markdown_mode' => '模式',
+ 'property_markdown_mode_split' => '分割',
+ 'property_markdown_mode_tab' => '标签',
+ 'property_fileupload_mode' => '模式',
+ 'property_fileupload_mode_file' => '文件',
+ 'property_fileupload_mode_image' => '图片',
+ 'property_group_fileupload' => '上传文件',
+ 'property_fileupload_prompt' => '提示',
+ 'property_fileupload_prompt_description' => '上传按钮显示的文本,仅适用于文件模式,可选.',
+ 'property_fileupload_image_width' => '图片宽度',
+ 'property_fileupload_image_width_description' => '可选参数-图像大小将调整为此宽度。仅适用于图像模式.',
+ 'property_fileupload_invalid_dimension' => '维度值无效-请输入一个数字.',
+ 'property_fileupload_image_height' => '图片高度',
+ 'property_fileupload_image_height_description' => '可选参数-图像大小将调整到此高度。仅适用于图像模式.',
+ 'property_fileupload_file_types' => '文件类型',
+ 'property_fileupload_file_types_description' => '上传可接受的文件扩展名的可选逗号分隔列表。如: zip,txt',
+ 'property_fileupload_mime_types' => 'MIME 类型',
+ 'property_fileupload_maxfilesize' => '最大文件大小',
+ 'property_fileupload_maxfilesize_description' => '上传者接受的文件大小(以 Mb 为单位),可选。',
+ 'property_fileupload_invalid_maxfilesize' => '最大文件大小值无效',
+ 'property_fileupload_maxfiles' => '最大文件数量',
+ 'property_fileupload_invalid_maxfiles' => '最大文件数量值无效',
+ 'property_fileupload_maxfiles_description' => '允许上传的最大文件数量',
+ 'property_fileupload_mime_types_description' => '上传接受的可选逗号分隔的MIME类型列表,可以是文件扩展名,也可以是完全限定名. 如: bin,txt',
+ 'property_fileupload_use_caption' => '使用说明',
+ 'property_fileupload_use_caption_description' => '允许为文件设置标题和说明.',
+ 'property_fileupload_thumb_options' => '缩略图选项',
+ 'property_fileupload_thumb_options_description' => '管理自动生成的缩略图的选项。仅适用于图像模式.',
+ 'property_fileupload_thumb_mode' => '模式',
+ 'property_fileupload_thumb_auto' => '自动',
+ 'property_fileupload_thumb_exact' => '扩展',
+ 'property_fileupload_thumb_portrait' => '纵向',
+ 'property_fileupload_thumb_landscape' => '横向',
+ 'property_fileupload_thumb_crop' => '裁切',
+ 'property_fileupload_thumb_extension' => '文件扩展名',
+ 'property_name_from' => '列名',
+ 'property_name_from_description' => '用于显示名称的关系列名.',
+ 'property_relation_select' => '选择',
+ 'property_relation_select_description' => '将多个列合并在一起以显示名称',
+ 'property_relation_scope' => '范围',
+ 'property_relation_scope_description' => '指定在相关表单模型中定义的查询范围方法,以始终应用于列表查询',
+ 'property_description_from' => '列描述',
+ 'property_description_from_description' => '用于显示说明的关系列名称.',
+ 'property_recordfinder_prompt' => '提示',
+ 'property_recordfinder_prompt_description' => '未选择记录时要显示的文本。%s字符表示搜索图标。为默认提示保留为空.',
+ 'property_recordfinder_list' => '列表配置',
+ 'property_recordfinder_list_description' => '对列表列定义文件的引用。使用$符号来引用插件根目录,例如:$/acme/blog/lists/_list.yaml',
+ 'property_recordfinder_list_required' => '请提供列表YAML文件的路径',
+ 'property_group_recordfinder' => '查找记录',
+ 'property_mediafinder_mode' => '模式',
+ 'property_mediafinder_mode_file' => '文件',
+ 'property_mediafinder_mode_image' => '图片',
+ 'property_mediafinder_prompt' => '提示',
+ 'property_mediafinder_prompt_description' => '未选择项目时要显示的文本。%s字符表示媒体管理器图标。为默认提示保留为空.',
+ 'property_mediafinder_image_width_description' => '如果使用图像类型,预览图像将按此宽度显示(可选).',
+ 'property_mediafinder_image_height_description' => '如果使用图像类型,预览图像将显示到此高度(可选).',
+ 'property_group_taglist' => '标签列表',
+ 'property_taglist_mode' => '模式',
+ 'property_taglist_mode_description' => '定义此字段的值作为返回格式',
+ 'property_taglist_mode_string' => '字符串',
+ 'property_taglist_mode_array' => '数组',
+ 'property_taglist_mode_relation' => '关联',
+ 'property_taglist_separator' => '分割符',
+ 'property_taglist_separator_comma' => '分割符号',
+ 'property_taglist_separator_space' => '空格',
+ 'property_taglist_options' => '预定义的标记',
+ 'property_taglist_custom_tags' => '自定义标签',
+ 'property_taglist_custom_tags_description' => '允许用户手动输入自定义标记.',
+ 'property_taglist_name_from' => '来源名称',
+ 'property_taglist_name_from_description' => '定义标记中显示的关系模型属性。仅用于“关联”模式.',
+ 'property_taglist_use_key' => '使用密钥',
+ 'property_taglist_use_key_description' => '如果选中,标记列表将使用键而不是值来保存和读取数据。仅用于“关联”模式.',
+ 'property_group_relation' => '关联',
+ 'property_relation_prompt' => '提示',
+ 'property_relation_prompt_description' => '没有可用选择时要显示的文本.',
+ 'property_empty_option' => '空选项',
+ 'property_empty_option_description' => 'empty选项对应于空选择,但与占位符不同,它可以重新选择.',
+ 'property_show_search' => '显示搜索',
+ 'property_show_search_description' => '启用此下拉列表的搜索功能.',
+ 'property_title_from' => '标题来自',
+ 'property_title_from_description' => '指定一个子字段名称以使用该字段的值作为每个转发器项目的标题。',
+ 'property_min_items' => '最小项',
+ 'property_min_items_description' => '转发器内允许的最小项目数。',
+ 'property_min_items_integer' => '最小项目必须是正整数。',
+ 'property_max_items' => '最大项',
+ 'property_max_items_description' => '转发器中允许的最大项目数。',
+ 'property_max_items_integer' => '最大项目必须是正整数。',
+ 'property_style' => '风格',
+ 'property_style_description' => '定义应用到这个转发器的行为。',
+ 'property_switch_label_on' => 'ON标题',
+ 'property_switch_label_on_description' => '为“ON”开关状态设置自定义标题',
+ 'property_switch_label_off' => 'OFF标题',
+ 'property_switch_label_off_description' => '为“OFF”开关状态设置自定义标题',
+ 'control_group_standard' => '标准',
+ 'control_group_widgets' => '控件',
+ 'click_to_add_control' => '添加控件',
+ 'loading' => '加载中...',
+ 'control_text' => '文本',
+ 'control_text_description' => '单行文本框',
+ 'control_password' => '密码',
+ 'control_password_description' => '单行密码文本字段',
+ 'control_checkbox' => '复选框',
+ 'control_checkbox_description' => '单选框',
+ 'control_switch' => '开关',
+ 'control_switch_description' => '单选开关盒,复选框的替代品',
+ 'control_textarea' => '文本域',
+ 'control_textarea_description' => '高度可控的多行文本框',
+ 'control_dropdown' => '下拉框',
+ 'control_dropdown_description' => '带有静态或动态选项的下拉列表',
+ 'control_balloon-selector' => '气球选择器',
+ 'control_balloon-selector_description' => '一次只能使用静态或动态选项选择一个项目的列表',
+ 'control_unknown' => '未知控件类型: :type',
+ 'control_repeater' => '循环组件',
+ 'control_repeater_description' => '输出一组重复的窗体控件',
+ 'control_number' => '数值',
+ 'control_number_description' => '只接受数字的单行文本框',
+ 'control_hint' => '提示',
+ 'control_hint_description' => '输出可由用户隐藏的框中的部分内容',
+ 'control_partial' => '部分',
+ 'control_partial_description' => '输出部分内容',
+ 'control_section' => '切片',
+ 'control_section_description' => '显示带有标题和副标题的窗体节',
+ 'control_radio' => '单选框列表',
+ 'control_radio_description' => '单选选项列表,一次只能选择一个项目',
+ 'control_radio_option_1' => '选项 1',
+ 'control_radio_option_2' => '选项 2',
+ 'control_checkboxlist' => '复选框列表',
+ 'control_checkboxlist_description' => '复选框列表,可在其中选择多个项目',
+ 'control_codeeditor' => '代码编辑器',
+ 'control_codeeditor_description' => '用于格式化代码或标记的纯文本编辑器',
+ 'control_colorpicker' => '颜色选择器',
+ 'control_colorpicker_description' => '用于选择十六进制颜色值的字段',
+ 'control_datepicker' => '日期选择器',
+ 'control_datepicker_description' => '用于选择日期和时间的文本字段',
+ 'control_richeditor' => '富文本编辑器',
+ 'control_richeditor_description' => '富格式文本的可视化编辑器,也称为所见即所得编辑器',
+ 'property_group_rich_editor' => '富文本编辑器',
+ 'property_richeditor_toolbar_buttons' => '工具栏按钮',
+ 'property_richeditor_toolbar_buttons_description' => '在编辑器工具栏上显示哪些按钮',
+ 'control_markdown' => 'Markdown 编辑器',
+ 'control_markdown_description' => '标记格式文本的基本编辑器',
+ 'control_taglist' => '标签列表',
+ 'control_taglist_description' => '用于输入标签列表的字段',
+ 'control_fileupload' => '文件上传',
+ 'control_fileupload_description' => '图像或常规文件的文件上传',
+ 'control_recordfinder' => '记录查找',
+ 'control_recordfinder_description' => '具有记录搜索功能的相关记录的详细信息的字段',
+ 'control_mediafinder' => '媒体查找器',
+ 'control_mediafinder_description' => '从媒体管理器库中选择项目的字段',
+ 'control_relation' => '关联',
+ 'control_relation_description' => '显示用于选择相关记录的下拉列表或复选框列表',
+ 'control_widget_type' => '小部件类型',
+ 'error_file_name_required' => '请输入表单文件名.',
+ 'error_file_name_invalid' => '文件名只能包含拉丁字母、数字、下划线、点和哈希.',
+ 'span_left' => '左边',
+ 'span_right' => '右边',
+ 'span_full' => '铺满',
+ 'span_auto' => '自动',
+ 'style_default' => '默认',
+ 'style_collapsed' => '折叠',
+ 'style_accordion' => '手风琴',
+ 'empty_tab' => '空标签',
+ 'confirm_close_tab' => '选项卡包含将被删除的控件。继续?',
+ 'tab' => '表单选项卡',
+ 'tab_title' => '标题',
+ 'controls' => '控件',
+ 'property_tab_title_required' => '选项卡标题不能为空.',
+ 'tabs_primary' => '主选项卡',
+ 'tabs_secondary' => '辅助选项卡',
+ 'tab_stretch' => '标准',
+ 'tab_stretch_description' => '指定此选项卡容器是否拉伸以适合父级高度.',
+ 'tab_css_class' => 'CSS 类',
+ 'tab_css_class_description' => '将CSS类分配给tabs容器.',
+ 'tab_name_template' => '选项卡 %s',
+ 'tab_already_exists' => '具有指定标题的选项卡已存在.',
+ ],
+ 'list' => [
+ 'tab_new_list' => '新列表',
+ 'saved' => '列表已保存',
+ 'confirm_delete' => '删除列表?',
+ 'tab_columns' => '列',
+ 'btn_add_column' => '添加列',
+ 'btn_delete_column' => '删除列',
+ 'column_dbfield_label' => '字段',
+ 'column_dbfield_required' => '请输入模型字段',
+ 'column_name_label' => '标签',
+ 'column_label_required' => '请输入列标签',
+ 'column_type_label' => '类型',
+ 'column_type_required' => '请输入列类型',
+ 'column_type_text' => '文本',
+ 'column_type_number' => '数值',
+ 'column_type_switch' => '开关',
+ 'column_type_datetime' => '日期时间',
+ 'column_type_date' => '日期',
+ 'column_type_time' => '时间',
+ 'column_type_timesince' => '开始时间',
+ 'column_type_timetense' => '结束时间',
+ 'column_type_select' => '选择',
+ 'column_type_partial' => '部分',
+ 'column_label_default' => '默认',
+ 'column_label_searchable' => '搜索',
+ 'column_label_sortable' => '排序',
+ 'column_label_invisible' => '隐形的',
+ 'column_label_select' => '选择',
+ 'column_label_relation' => '关系',
+ 'column_label_css_class' => 'CSS 类',
+ 'column_label_width' => '宽度',
+ 'column_label_path' => '路径',
+ 'column_label_format' => '格式',
+ 'column_label_value_from' => '来源值',
+ 'error_duplicate_column' => "重复的列字段名: ':column'.",
+ 'btn_add_database_columns' => '添加数据库列',
+ 'all_database_columns_exist' => '列表中已定义所有数据库列'
+ ],
+ 'controller' => [
+ 'menu_label' => '控制器',
+ 'no_records' => '找不到插件控制器',
+ 'controller' => '控制器',
+ 'behaviors' => '行为',
+ 'new_controller' => '新控制器',
+ 'error_controller_has_no_behaviors' => '控制器没有可配置的行为.',
+ 'error_invalid_yaml_configuration' => '加载行为配置文件时出错: :file',
+ 'behavior_form_controller' => '窗体控制器行为',
+ 'behavior_form_controller_description' => '向后端页面添加表单功能。该行为提供了三个页面,分别称为Create、Update和Preview.',
+ 'property_behavior_form_placeholder' => '--选择表单--',
+ 'property_behavior_form_name' => '名称',
+ 'property_behavior_form_name_description' => '此窗体管理的对象的名称',
+ 'property_behavior_form_name_required' => '请输入表单名称',
+ 'property_behavior_form_file' => '表单配置',
+ 'property_behavior_form_file_description' => '对表单域定义文件的引用',
+ 'property_behavior_form_file_required' => '请输入表单配置文件的路径',
+ 'property_behavior_form_model_class' => '模型类',
+ 'property_behavior_form_model_class_description' => '一个模型类名,表单数据将根据此模型加载和保存.',
+ 'property_behavior_form_model_class_required' => '请选择一个模型类',
+ 'property_behavior_form_default_redirect' => '默认重定向',
+ 'property_behavior_form_default_redirect_description' => '保存或取消表单时默认重定向到的页面.',
+ 'property_behavior_form_create' => '创建记录页',
+ 'property_behavior_form_redirect' => '重定向',
+ 'property_behavior_form_redirect_description' => '创建记录时要重定向到的页.',
+ 'property_behavior_form_redirect_close' => '关闭重定向',
+ 'property_behavior_form_redirect_close_description' => '创建记录并随请求一起发送close post变量时要重定向到的页面.',
+ 'property_behavior_form_flash_save' => '保存闪存消息',
+ 'property_behavior_form_flash_save_description' => '保存记录时要显示的闪存消息.',
+ 'property_behavior_form_page_title' => '页面标题',
+ 'property_behavior_form_update' => '更新记录页',
+ 'property_behavior_form_update_redirect' => '重定向',
+ 'property_behavior_form_create_redirect_description' => '保存记录时要重定向到的页.',
+ 'property_behavior_form_flash_delete' => '删除闪存消息',
+ 'property_behavior_form_flash_delete_description' => '删除记录时显示的闪烁消息.',
+ 'property_behavior_form_preview' => '预览记录页',
+ 'behavior_list_controller' => '列表控制器行为',
+ 'behavior_list_controller_description' => '提供可排序和可搜索的列表,其记录上有可选链接。行为自动创建控制器操作“index”.',
+ 'property_behavior_list_title' => '列表标题',
+ 'property_behavior_list_title_required' => '请输入列表标题',
+ 'property_behavior_list_placeholder' => '--选择列表--',
+ 'property_behavior_list_model_class' => '模型类',
+ 'property_behavior_list_model_class_description' => '模型类名,列表数据从此模型加载.',
+ 'property_behavior_form_model_class_placeholder' => '--选择模型--',
+ 'property_behavior_list_model_class_required' => '请输入一个模型名称',
+ 'property_behavior_list_model_placeholder' => '--选择模型--',
+ 'property_behavior_list_file' => '列表配置文件',
+ 'property_behavior_list_file_description' => '对列表定义文件的引用',
+ 'property_behavior_list_file_required' => '请输入列表配置文件的路径',
+ 'property_behavior_list_record_url' => '记录 URL',
+ 'property_behavior_list_record_url_description' => '将每个列表记录链接到另一页。例:用户/更新:id:id部分替换为记录标识符.',
+ 'property_behavior_list_no_records_message' => '无记录消息',
+ 'property_behavior_list_no_records_message_description' => '找不到记录时要显示的消息',
+ 'property_behavior_list_recs_per_page' => '每一页记录',
+ 'property_behavior_list_recs_per_page_description' => '每页要显示的记录,使用0表示没有页。默认值:0',
+ 'property_behavior_list_recs_per_page_regex' => '每页记录数应为整数值',
+ 'property_behavior_list_show_setup' => '显示设置按钮',
+ 'property_behavior_list_show_sorting' => '显示排序',
+ 'property_behavior_list_default_sort' => '默认排序',
+ 'property_behavior_form_ds_column' => '列',
+ 'property_behavior_form_ds_direction' => '方向',
+ 'property_behavior_form_ds_asc' => '升序',
+ 'property_behavior_form_ds_desc' => '降序',
+ 'property_behavior_list_show_checkboxes' => '显示复选框',
+ 'property_behavior_list_onclick' => '点击处理程序',
+ 'property_behavior_list_onclick_description' => '单击记录时要执行的自定义JavaScript代码.',
+ 'property_behavior_list_show_tree' => '显示树',
+ 'property_behavior_list_show_tree_description' => '显示父/子记录的树层次结构.',
+ 'property_behavior_list_tree_expanded' => '树已展开',
+ 'property_behavior_list_tree_expanded_description' => '确定默认情况下是否应展开树节点.',
+ 'property_behavior_list_toolbar' => '工具栏',
+ 'property_behavior_list_toolbar_buttons' => '按钮部分',
+ 'property_behavior_list_toolbar_buttons_description' => '使用工具栏按钮引用控制器部分文件。例如:列表工具栏',
+ 'property_behavior_list_search' => '搜索',
+ 'property_behavior_list_search_prompt' => '搜索提示',
+ 'property_behavior_list_filter' => '筛选配置',
+ 'behavior_reorder_controller' => '重新排序控制器行为',
+ 'behavior_reorder_controller_description' => '提供对其记录进行排序和重新排序的功能。该行为会自动创建控制器操作“重新排序”.',
+ 'property_behavior_reorder_title' => '重新排序标题',
+ 'property_behavior_reorder_title_required' => '请输入重新排序标题',
+ 'property_behavior_reorder_name_from' => '属性名称',
+ 'property_behavior_reorder_name_from_description' => '应用作每个记录的标签的模型属性.',
+ 'property_behavior_reorder_name_from_required' => '请输入属性名称',
+ 'property_behavior_reorder_model_class' => '模型类',
+ 'property_behavior_reorder_model_class_description' => '模型类名,重新排序数据从此模型加载.',
+ 'property_behavior_reorder_model_class_placeholder' => '--选择模型--',
+ 'property_behavior_reorder_model_class_required' => '请选择模型类',
+ 'property_behavior_reorder_model_placeholder' => '--选择模型--',
+ 'property_behavior_reorder_toolbar' => '工具栏',
+ 'property_behavior_reorder_toolbar_buttons' => '按钮部分',
+ 'property_behavior_reorder_toolbar_buttons_description' => '使用工具栏按钮引用控制器部分文件。例如:重新排序工具栏',
+ 'error_controller_not_found' => '找不到原始控制器文件.',
+ 'error_invalid_config_file_name' => '行为 :class 配置文件名 (:file) 包含无效字符,造成不能假装.',
+ 'error_file_not_yaml' => '行为 :class 配置文件 (:file) 不是一个YAML文件. 仅支持YAML配置文件.',
+ 'saved' => '控制器已保存',
+ 'controller_name' => '控制器名称',
+ 'controller_name_description' => '控制器名称定义控制器后端页的类名和URL。应用标准的PHP变量命名约定。第一个符号应该是大写拉丁字母。示例:Build、News、Case.',
+ 'base_model_class' => '基本模型类',
+ 'base_model_class_description' => '选择要在需要或支持模型的行为中用作基础模型的模型类。您可以稍后配置这些行为.',
+ 'base_model_class_placeholder' => '--选择模型--',
+ 'controller_behaviors' => '行为',
+ 'controller_behaviors_description' => '选择控制器应该实现的行为。生成器将自动创建行为所需的视图文件.',
+ 'controller_permissions' => '权限',
+ 'controller_permissions_description' => '选择可以访问控制器视图的用户权限。权限可以在生成器的“权限”选项卡上定义。稍后可以在控制器PHP脚本中更改此选项.',
+ 'controller_permissions_no_permissions' => '插件没有定义任何权限.',
+ 'menu_item' => '活动菜单项',
+ 'menu_item_description' => '选择要激活控制器页面的菜单项。稍后可以在控制器PHP脚本中更改此选项.',
+ 'menu_item_placeholder' => '--选择菜单项--',
+ 'error_unknown_behavior' => '行为类 :class 没有在行为类库注册.',
+ 'error_behavior_view_conflict' => '所选行为提供了冲突的视图 (:view) 不能在控制器中一起使用.',
+ 'error_behavior_config_conflict' => '所选行为提供冲突的配置文件 (:file) 无法在控制器中一起使用.',
+ 'error_behavior_view_file_not_found' => '行为 :class 的视图模板 :view 没有找到.',
+ 'error_behavior_config_file_not_found' => '行为 :class 的配置文件 :file 没有找到.',
+ 'error_controller_exists' => '控制器文件已存在: :file.',
+ 'error_controller_name_invalid' => '无效格式的控制名称. 名称只能包含数字和拉丁字母。第一个符号应该是大写拉丁字母.',
+ 'error_behavior_view_file_exists' => '控制器视图文件已存在: :view.',
+ 'error_behavior_config_file_exists' => '行为配置文件已存在: :file.',
+ 'error_save_file' => '保存控制器文件错误: :file',
+ 'error_behavior_requires_base_model' => '行为 :behavior 必须选择一个基础模型类.',
+ 'error_model_doesnt_have_lists' => '所选模型没有任何列表。请先创建列表.',
+ 'error_model_doesnt_have_forms' => '所选模型没有任何窗体。请先创建表单.',
+ ],
+ 'version' => [
+ 'menu_label' => '版本',
+ 'no_records' => '找不到插件版本',
+ 'search' => '搜索...',
+ 'tab' => '版本',
+ 'saved' => '已保存版本',
+ 'confirm_delete' => '删除版本?',
+ 'tab_new_version' => '新奔奔',
+ 'migration' => '迁移',
+ 'seeder' => '填充',
+ 'custom' => '增加版本号',
+ 'apply_version' => '应用版本',
+ 'applying' => '应用中...',
+ 'rollback_version' => '回滚版本',
+ 'rolling_back' => '回滚中...',
+ 'applied' => '应用的版本',
+ 'rolled_back' => '版本已回滚',
+ 'hint_save_unapplied' => '您保存了一个未应用的版本。当您或其他用户登录到后端或数据库表保存在生成器的数据库部分时,可以自动应用未应用的版本.',
+ 'hint_rollback' => '回滚某个版本也将回滚比此版本更新的所有版本。请注意,当您或其他用户登录到后端或数据库表保存在生成器的数据库部分时,系统会自动应用未应用的版本.',
+ 'hint_apply' => '应用一个版本也会应用插件的所有旧版本.',
+ 'dont_show_again' => '不再显示',
+ 'save_unapplied_version' => '保存未应用的版本',
+ 'sort_ascending' => '升序排序',
+ 'sort_descending' => '降序排序',
+ ],
+ 'menu' => [
+ 'menu_label' => '后台菜单',
+ 'tab' => '菜单',
+ 'items' => '菜单选项',
+ 'saved' => '已保存菜单',
+ 'add_main_menu_item' => '添加主菜单项',
+ 'new_menu_item' => '菜单选项',
+ 'add_side_menu_item' => '添加子项',
+ 'side_menu_item' => '侧边栏菜单项',
+ 'property_label' => '标签',
+ 'property_label_required' => '请输入菜单项标签.',
+ 'property_url_required' => '请输入菜单项URL',
+ 'property_url' => 'URL',
+ 'property_icon' => '图标',
+ 'property_icon_required' => '请选择一个图标',
+ 'property_permissions' => '权限',
+ 'property_order' => '顺序',
+ 'property_order_invalid' => '请以整数值形式输入菜单项顺序。',
+ 'property_order_description' => '菜单项顺序管理其在菜单中的位置。如果没有提供订单,该项目将被放在菜单的末尾。默认订单值的增量为100.',
+ 'property_attributes' => 'HTML属性',
+ 'property_code' => '代码',
+ 'property_code_invalid' => '代码只能包含拉丁字母和数字',
+ 'property_code_required' => '请输入菜单项代码.',
+ 'error_duplicate_main_menu_code' => "主菜单项代码重复: ':code'.",
+ 'error_duplicate_side_menu_code' => "重复的侧边栏菜单项代码: ':code'.",
+ 'icon_svg' => 'SVG图标',
+ 'icon_svg_description' => '用于代替标准图标的SVG图标,SVG图标应该是一个矩形并且可以支持颜色',
+ 'counter' => '通知内容',
+ 'counter_description' => '要在菜单图标附近输出的数值。 该值应该是一个数字或一个返回数字的可调用对象',
+ 'counter_label' => '通知描述',
+ 'counter_label_description' => '一个字符串值,用于描述计数器中的数字引用',
+ 'counter_group' => '通知气泡'
+ ],
+ 'localization' => [
+ 'menu_label' => '本地化',
+ 'language' => '语言',
+ 'strings' => '字符串',
+ 'confirm_delete' => '删除语言?',
+ 'tab_new_language' => '新语言',
+ 'no_records' => '未找到语言',
+ 'saved' => '语言文件已保存',
+ 'error_cant_load_file' => '无法加载请求的语言文件-找不到文件.',
+ 'error_bad_localization_file_contents' => '无法加载请求的语言文件。语言文件只能包含数组定义和字符串.',
+ 'error_file_not_array' => '无法加载请求的语言文件。语言文件应该返回一个数组.',
+ 'save_error' => "保存文件错误 ':name'. 请检查写入权限.",
+ 'error_delete_file' => '删除本地化文件时出错.',
+ 'add_missing_strings' => '添加缺少的字符串',
+ 'copy' => '复制',
+ 'add_missing_strings_label' => '选择要从中复制缺少字符串的语言',
+ 'no_languages_to_copy_from' => '没有其他语言可用于复制字符串.',
+ 'new_string_warning' => '新字符串或节',
+ 'structure_mismatch' => '源语言文件的结构与正在编辑的文件的结构不匹配。编辑文件中的某些单独字符串与源文件中的节相对应(反之亦然),因此无法自动合并.',
+ 'create_string' => '创建新的字符串',
+ 'string_key_label' => '字符串键',
+ 'string_key_comment' => '使用句点作为节分隔符输入字符串键。例如:plugin.search. 字符串将在插件的默认语言本地化文件中创建.',
+ 'string_value' => '字符串值',
+ 'string_key_is_empty' => '字符串键不应为空',
+ 'string_key_is_a_string' => ':key 是字符串,不能包含其他字符串.',
+ 'string_value_is_empty' => '字符串值不应为空',
+ 'string_key_exists' => '字符串键已存在',
+ ],
+ 'permission' => [
+ 'menu_label' => '权限',
+ 'tab' => '权限',
+ 'form_tab_permissions' => '权限',
+ 'btn_add_permission' => '添加权限',
+ 'btn_delete_permission' => '删除权限',
+ 'column_permission_label' => '权限代码',
+ 'column_permission_required' => '请输入权限代码',
+ 'column_tab_label' => '选项卡标题',
+ 'column_tab_required' => '请输入权限选项卡标题',
+ 'column_label_label' => '标签',
+ 'column_label_required' => '请输入选项卡标签',
+ 'saved' => '权限已保存',
+ 'error_duplicate_code' => "权限代码重复: ':code'.",
+ ],
+ 'yaml' => [
+ 'save_error' => "保存文件错误 ':name'. 请检查写入权限.",
+ ],
+ 'common' => [
+ 'error_file_exists' => "文件已存在: ':path'.",
+ 'field_icon_description' => 'October 使用字体图标: http://octobercms.com/docs/ui/icon',
+ 'destination_dir_not_exists' => "目标目录不存在: ':path'.",
+ 'error_make_dir' => "创建目录错误: ':name'.",
+ 'error_dir_exists' => "目录已存在: ':path'.",
+ 'template_not_found' => "模板文件未找到: ':name'.",
+ 'error_generating_file' => "生成文件错误: ':path'.",
+ 'error_loading_template' => "加载模板文件错误: ':name'.",
+ 'select_plugin_first' => '请先选择一个插件。要查看插件列表,请单击左侧边栏上的>图标。.',
+ 'plugin_not_selected' => '未选择插件',
+ 'add' => '添加',
+ ],
+ 'migration' => [
+ 'entity_name' => '迁移',
+ 'error_version_invalid' => '版本格式应参照:1.0.1',
+ 'field_version' => '版本',
+ 'field_description' => '描述',
+ 'field_code' => '代码',
+ 'save_and_apply' => '保存 & 应用',
+ 'error_version_exists' => '迁移版本已存在.',
+ 'error_script_filename_invalid' => '迁移脚本文件名只能包含拉丁字母、数字和下划线。名称应以拉丁字母开头,不能包含空格.',
+ 'error_cannot_change_version_number' => '无法更改应用版本的版本号.',
+ 'error_file_must_define_class' => '迁移代码应该定义迁移或种子类。如果只想更新版本号,请将“代码”字段留空.',
+ 'error_file_must_define_namespace' => '应该定义一个代码迁移。如果只想更新版本号,请将“代码”字段留空.',
+ 'no_changes_to_save' => '没有要保存的更改.',
+ 'error_namespace_mismatch' => "迁移代码应该使用插件名称空间: :namespace",
+ 'error_migration_file_exists' => "迁移文件 :file 已存在. 请使用其他的文件名称.",
+ 'error_cant_delete_applied' => '此版本已应用,无法删除。请先回滚版本.',
+ ],
+ 'components' => [
+ 'list_title' => '记录列表',
+ 'list_description' => '显示选定模型的记录列表',
+ 'list_page_number' => '页数',
+ 'list_page_number_description' => '此值用于确定用户所在的页面.',
+ 'list_records_per_page' => '每页记录',
+ 'list_records_per_page_description' => '要在单个页面上显示的记录数。保留为空可禁用分页.',
+ 'list_records_per_page_validation' => '每页记录值的格式无效。值应为数字.',
+ 'list_no_records' => '无记录消息',
+ 'list_no_records_description' => '如果没有记录,则在列表中显示的消息。在默认组件的.',
+ 'list_no_records_default' => '找不到记录',
+ 'list_sort_column' => '列排序',
+ 'list_sort_column_description' => '记录排序依据的模型列',
+ 'list_sort_direction' => '方向',
+ 'list_display_column' => '显示列',
+ 'list_display_column_description' => '要在列表中显示的列。在默认组件的.',
+ 'list_display_column_required' => '请选择显示列.',
+ 'list_details_page' => '详情页',
+ 'list_details_page_description' => '显示记录详细信息的页面.',
+ 'list_details_page_no' => '--无详细信息页--',
+ 'list_sorting' => '排序',
+ 'list_pagination' => '分页',
+ 'list_order_direction_asc' => '升序',
+ 'list_order_direction_desc' => '倒叙',
+ 'list_model' => '模型类',
+ 'list_scope' => '范围',
+ 'list_scope_description' => '获取记录的可选模型范围',
+ 'list_scope_default' => '--选择范围,可选--',
+ 'list_scope_value' => '范围值',
+ 'list_scope_value_description' => '传递给模型范围的可选值',
+ 'list_details_page_link' => '链接到详细信息页',
+ 'list_details_key_column' => '详细信息键列',
+ 'list_details_key_column_description' => '要用作详细信息页链接中的记录标识符的模型列.',
+ 'list_details_url_parameter' => 'URL 参数名称',
+ 'list_details_url_parameter_description' => '采用记录标识符的详细信息页URL参数的名称.',
+ 'details_title' => '记录详情',
+ 'details_description' => '显示选定模型的记录详细信息',
+ 'details_model' => '模型类',
+ 'details_identifier_value' => '标识符值',
+ 'details_identifier_value_description' => '从数据库加载记录的标识符值。指定固定值或URL参数名称.',
+ 'details_identifier_value_required' => '标识符值是必需的',
+ 'details_key_column' => '键列',
+ 'details_key_column_description' => '要用作从数据库提取记录的记录标识符的模型列.',
+ 'details_key_column_required' => '键列名是必需的',
+ 'details_display_column' => '显示列',
+ 'details_display_column_description' => '要在详细信息页面上显示的模型列。在默认组件的.',
+ 'details_display_column_required' => '请选择显示列.',
+ 'details_not_found_message' => '未找到消息',
+ 'details_not_found_message_description' => '未找到记录时要显示的消息。在默认组件的.',
+ 'details_not_found_message_default' => '记录未找到',
+ ],
+ 'validation' => [
+ 'reserved' => ':attribute 不能是PHP保留关键字'
+ ]
];
diff --git a/plugins/rainlab/builder/models/CodeFileModel.php b/plugins/rainlab/builder/models/CodeFileModel.php
deleted file mode 100644
index c8ef7d9..0000000
--- a/plugins/rainlab/builder/models/CodeFileModel.php
+++ /dev/null
@@ -1,282 +0,0 @@
-allowedExtensions = self::getEditableExtensions();
- }
-
- /**
- * load a single template by its file name.
- *
- * @param string $fileName
- * @return mixed|static
- */
- public function load($fileName)
- {
- $filePath = $this->getFilePath($fileName);
-
- if (!File::isFile($filePath)) {
- return null;
- }
-
- if (($content = @File::get($filePath)) === false) {
- return null;
- }
-
- $this->fileName = $fileName;
- $this->originalFileName = $fileName;
- $this->mtime = File::lastModified($filePath);
- $this->content = $content;
- $this->exists = true;
-
- return $this;
- }
-
- /**
- * Sets the object attributes.
- * @param array $attributes A list of attributes to set.
- */
- public function fill(array $attributes)
- {
- foreach ($attributes as $key => $value) {
- if (!in_array($key, static::$fillable)) {
- throw new ApplicationException(Lang::get(
- 'cms::lang.cms_object.invalid_property',
- ['name' => $key]
- ));
- }
-
- $this->$key = $value;
- }
- }
-
- /**
- * Saves the object to the disk.
- */
- public function save()
- {
- $this->validateFileName();
-
- $fullPath = $this->getFilePath();
-
- if (File::isFile($fullPath) && $this->originalFileName !== $this->fileName) {
- throw new ApplicationException(Lang::get(
- 'cms::lang.cms_object.file_already_exists',
- ['name' => $this->fileName]
- ));
- }
-
- $dirPath = base_path($this->dirName);
- if (!file_exists($dirPath) || !is_dir($dirPath)) {
- if (!File::makeDirectory($dirPath, 0777, true, true)) {
- throw new ApplicationException(Lang::get(
- 'cms::lang.cms_object.error_creating_directory',
- ['name' => $dirPath]
- ));
- }
- }
-
- if (($pos = strpos($this->fileName, '/')) !== false) {
- $dirPath = dirname($fullPath);
-
- if (!is_dir($dirPath) && !File::makeDirectory($dirPath, 0777, true, true)) {
- throw new ApplicationException(Lang::get(
- 'cms::lang.cms_object.error_creating_directory',
- ['name' => $dirPath]
- ));
- }
- }
-
- $newFullPath = $fullPath;
- if (@File::put($fullPath, $this->content) === false) {
- throw new ApplicationException(Lang::get(
- 'cms::lang.cms_object.error_saving',
- ['name' => $this->fileName]
- ));
- }
-
- if (strlen($this->originalFileName) && $this->originalFileName !== $this->fileName) {
- $fullPath = $this->getFilePath($this->originalFileName);
-
- if (File::isFile($fullPath)) {
- @unlink($fullPath);
- }
- }
-
- clearstatcache();
-
- $this->mtime = @File::lastModified($newFullPath);
- $this->originalFileName = $this->fileName;
- $this->exists = true;
- }
-
- /**
- * delete
- */
- public function delete()
- {
- $fileName = Request::input('fileName');
- $fullPath = $this->getFilePath($fileName);
-
- $this->validateFileName($fileName);
-
- if (File::exists($fullPath)) {
- if (!@File::delete($fullPath)) {
- throw new ApplicationException(Lang::get(
- 'cms::lang.asset.error_deleting_file',
- ['name' => $fileName]
- ));
- }
- }
- }
-
- /**
- * validateFileName validates the supplied filename, extension and path.
- * @param string $fileName
- */
- protected function validateFileName($fileName = null)
- {
- if ($fileName === null) {
- $fileName = $this->fileName;
- }
-
- $fileName = trim($fileName);
-
- if (!strlen($fileName)) {
- throw new ValidationException(['fileName' =>
- Lang::get('cms::lang.cms_object.file_name_required', [
- 'allowed' => implode(', ', $this->allowedExtensions),
- 'invalid' => pathinfo($fileName, PATHINFO_EXTENSION)
- ])
- ]);
- }
-
- if (!FileHelper::validateExtension($fileName, $this->allowedExtensions, false)) {
- throw new ValidationException(['fileName' =>
- Lang::get('cms::lang.cms_object.invalid_file_extension', [
- 'allowed' => implode(', ', $this->allowedExtensions),
- 'invalid' => pathinfo($fileName, PATHINFO_EXTENSION)
- ])
- ]);
- }
-
- if (!FileHelper::validatePath($fileName, null)) {
- throw new ValidationException(['fileName' =>
- Lang::get('cms::lang.cms_object.invalid_file', [
- 'name' => $fileName
- ])
- ]);
- }
- }
-
- /**
- * getFileName returns the file name.
- * @return string
- */
- public function getFileName()
- {
- return $this->fileName;
- }
-
- /**
- * getFilePath returns the absolute file path.
- * @param string $fileName Specifies the file name to return the path to.
- * @return string
- */
- public function getFilePath($fileName = null)
- {
- if ($fileName === null) {
- $fileName = $this->fileName;
- }
-
- $pluginPath = $this->getPluginCodeObj()->toFilesystemPath();
-
- return base_path($this->dirName.'/'.$pluginPath.'/'.$fileName);
- }
-
- /**
- * getEditableExtensions returns a list of editable asset extensions.
- * The list can be overridden with the cms.editableAssetTypes configuration option.
- * @return array
- */
- public static function getEditableExtensions()
- {
- $defaultTypes = ['js', 'jsx', 'css', 'sass', 'scss', 'less', 'php', 'htm', 'html', 'yaml', 'md', 'txt'];
-
- $configTypes = Config::get('rainlab.builder::editable_code_types');
- if (!$configTypes) {
- return $defaultTypes;
- }
-
- return $configTypes;
- }
-}
diff --git a/plugins/rainlab/builder/models/ImportsModel.php b/plugins/rainlab/builder/models/ImportsModel.php
deleted file mode 100644
index 564488a..0000000
--- a/plugins/rainlab/builder/models/ImportsModel.php
+++ /dev/null
@@ -1,270 +0,0 @@
-blueprints)) {
- foreach ($this->blueprints as &$configuration) {
- if (is_scalar($configuration)) {
- $configuration = json_decode($configuration, true);
- }
- }
- }
- }
-
- /**
- * setBlueprintContext
- */
- public function setBlueprintContext($blueprint, $config)
- {
- $this->activeBlueprint = $blueprint;
- $this->activeConfig = $config;
- }
-
- /**
- * getBlueprintObject
- */
- public function getBlueprintObject()
- {
- return $this->activeBlueprint;
- }
-
- /**
- * getBlueprintConfig
- */
- public function getBlueprintConfig($name = null, $default = null)
- {
- if ($name === null) {
- return $this->activeConfig;
- }
-
- return array_key_exists($name, $this->activeConfig)
- ? $this->activeConfig[$name]
- : $default;
- }
-
- /**
- * loadPlugin
- */
- public function loadPlugin($pluginCode)
- {
- $this->pluginName = $pluginCode;
- }
-
- /**
- * getPluginName
- */
- public function getPluginName()
- {
- return Lang::get($this->pluginName);
- }
-
- /**
- * import runs the import
- */
- public function import()
- {
- if (!$this->blueprints || !is_array($this->blueprints)) {
- throw new ApplicationException(__("There are no blueprints to import, please select a blueprint and try again."));
- }
-
- $generator = new BlueprintGenerator($this);
- $generator->generate();
- }
-
- /**
- * inspect a blueprint before import
- */
- public function inspect($blueprint): array
- {
- if (!$this->blueprints || !is_array($this->blueprints)) {
- return [];
- }
-
- $generator = new BlueprintGenerator($this);
-
- return $generator->inspect($blueprint);
- }
-
- /**
- * getBlueprintUuidOptions
- */
- public function getBlueprintUuidOptions()
- {
- $result = [];
-
- foreach (EntryBlueprint::listInProject() as $blueprint) {
- if (!isset($this->blueprints[$blueprint->uuid])) {
- $result[$blueprint->uuid] = $blueprint->handle;
- }
- }
-
- foreach (GlobalBlueprint::listInProject() as $blueprint) {
- if (!isset($this->blueprints[$blueprint->uuid])) {
- $result[$blueprint->uuid] = $blueprint->handle;
- }
- }
-
- asort($result);
-
- return $result;
- }
-
- /**
- * getPluginFilePath
- */
- public function getPluginFilePath($path)
- {
- $pluginDir = $this->getPluginCodeObj()->toPluginDirectoryPath();
-
- return File::symbolizePath("{$pluginDir}/{$path}");
- }
-
- /**
- * getPluginVersionInformation
- */
- public function getPluginVersionInformation()
- {
- $versionObj = new PluginVersion;
-
- return $versionObj->getPluginVersionInformation($this->getPluginCodeObj());
- }
-
- /**
- * getBlueprintFieldset
- */
- public function getBlueprintFieldset($blueprint = null)
- {
- $blueprint = $blueprint ?: $this->getBlueprintObject();
-
- $uuid = $blueprint->uuid ?? '???';
-
- $fieldset = BlueprintIndexer::instance()->findContentFieldset($uuid);
- if (!$fieldset) {
- throw new ApplicationException("Unable to find content fieldset definition with UUID of '{$uuid}'.");
- }
-
- return $fieldset;
- }
-
- /**
- * useListController
- */
- public function useListController(): bool
- {
- if (
- $this->activeBlueprint instanceof SingleBlueprint ||
- $this->activeBlueprint instanceof GlobalBlueprint
- ) {
- return false;
- }
-
- return true;
- }
-
- /**
- * useSettingModel
- */
- public function useSettingModel(): bool
- {
- if ($this->activeBlueprint instanceof GlobalBlueprint) {
- return true;
- }
-
- return false;
- }
-
- /**
- * wantsDatabaseMigration
- */
- public function wantsDatabaseMigration(): bool
- {
- if ($this->useSettingModel()) {
- return false;
- }
-
- return true;
- }
-
- /**
- * useMultisite
- */
- public function useMultisite()
- {
- return $this->activeBlueprint->useMultisite();
- }
-
- /**
- * useStructure
- */
- public function useStructure()
- {
- if ($this->activeBlueprint instanceof StructureBlueprint) {
- return true;
- }
-
- return false;
- }
-}
diff --git a/plugins/rainlab/builder/models/ModelFilterModel.php b/plugins/rainlab/builder/models/ModelFilterModel.php
deleted file mode 100644
index a641d6c..0000000
--- a/plugins/rainlab/builder/models/ModelFilterModel.php
+++ /dev/null
@@ -1,213 +0,0 @@
- ['required', 'regex:/^[a-z0-9\.\-_]+$/i']
- ];
-
- /**
- * loadForm
- */
- public function loadForm($path)
- {
- $this->fileName = $path;
-
- return parent::load($this->getFilePath());
- }
-
- /**
- * fill
- */
- public function fill(array $attributes)
- {
- if (!is_array($attributes['scopes'])) {
- $attributes['scopes'] = json_decode($attributes['scopes'], true);
-
- if ($attributes['scopes'] === null) {
- throw new SystemException('Cannot decode scopes JSON string.');
- }
- }
-
- return parent::fill($attributes);
- }
-
- /**
- * validateFileIsModelType
- */
- public static function validateFileIsModelType($fileContentsArray)
- {
- $modelRootNodes = [
- 'scopes'
- ];
-
- foreach ($modelRootNodes as $node) {
- if (array_key_exists($node, $fileContentsArray)) {
- return true;
- }
- }
-
- return false;
- }
-
- /**
- * validate
- */
- public function validate()
- {
- parent::validate();
-
- $this->validateDuplicateScopes();
-
- if (!$this->scopes) {
- throw new ValidationException(['scopes' => 'Please create at least one scope.']);
- }
- }
-
- /**
- * initDefaults
- */
- public function initDefaults()
- {
- $this->fileName = 'scopes.yaml';
- }
-
- /**
- * validateDuplicateScopes
- */
- protected function validateDuplicateScopes()
- {
- foreach ($this->scopes as $outerIndex => $outerScope) {
- foreach ($this->scopes as $innerIndex => $innerScope) {
- if ($innerIndex != $outerIndex && $innerScope['field'] == $outerScope['field']) {
- throw new ValidationException([
- 'scopes' => Lang::get(
- 'rainlab.builder::lang.list.error_duplicate_scope',
- ['scope' => $outerScope['field']]
- )
- ]);
- }
- }
- }
- }
-
- /**
- * modelToYamlArray converts the model's data to an array before it's saved to a YAML file.
- * @return array
- */
- protected function modelToYamlArray()
- {
- $fileScopes = [];
-
- foreach ($this->scopes as $scope) {
- if (!isset($scope['field'])) {
- throw new ApplicationException('Cannot save the list - the scope field name should not be empty.');
- }
-
- $scopeName = $scope['field'];
- unset($scope['field']);
-
- if (array_key_exists('id', $scope)) {
- unset($scope['id']);
- }
-
- $scope = $this->preprocessScopeDataBeforeSave($scope);
-
- $fileScopes[$scopeName] = $scope;
- }
-
- return [
- 'scopes'=>$fileScopes
- ];
- }
-
- /**
- * yamlArrayToModel loads the model's data from an array.
- * @param array $array An array to load the model fields from.
- */
- protected function yamlArrayToModel($array)
- {
- $fileScopes = $array['scopes'];
- $scopes = [];
- $index = 0;
-
- foreach ($fileScopes as $scopeName => $scope) {
- if (!is_array($scope)) {
- // Handle the case when a scope is defined as
- // scope: Title
- $scope = [
- 'label' => $scope
- ];
- }
-
- $scope['id'] = $index;
- $scope['field'] = $scopeName;
-
- $scopes[] = $scope;
-
- $index++;
- }
-
- $this->scopes = $scopes;
- }
-
- /**
- * preprocessScopeDataBeforeSave
- */
- protected function preprocessScopeDataBeforeSave($scope)
- {
- // Filter empty values
- $scope = array_filter($scope, function ($value) {
- return !is_array($value) && strlen($value) > 0;
- });
-
- // Cast booleans
- $booleanFields = [];
-
- foreach ($booleanFields as $booleanField) {
- if (!array_key_exists($booleanField, $scope)) {
- continue;
- }
-
- $value = $scope[$booleanField];
- if ($value == '1' || $value == 'true') {
- $value = true;
- }
- else {
- $value = false;
- }
-
-
- $scope[$booleanField] = $value;
- }
-
- return $scope;
- }
-}
diff --git a/plugins/rainlab/builder/models/codefilemodel/fields.yaml b/plugins/rainlab/builder/models/codefilemodel/fields.yaml
deleted file mode 100644
index 614b9d1..0000000
--- a/plugins/rainlab/builder/models/codefilemodel/fields.yaml
+++ /dev/null
@@ -1,21 +0,0 @@
-# ===================================
-# Form Field Definitions
-# ===================================
-
-fields:
- fileName:
- label: cms::lang.editor.filename
- attributes:
- default-focus: 1
-
- toolbar:
- type: partial
- path: $/rainlab/builder/behaviors/indexcodeoperations/partials/_toolbar.php
- cssClass: collapse-visible
-
-secondaryTabs:
- stretch: true
- fields:
- content:
- stretch: true
- type: codeeditor
diff --git a/plugins/rainlab/builder/models/importsmodel/fields.yaml b/plugins/rainlab/builder/models/importsmodel/fields.yaml
deleted file mode 100644
index 26257ee..0000000
--- a/plugins/rainlab/builder/models/importsmodel/fields.yaml
+++ /dev/null
@@ -1,17 +0,0 @@
-# ===================================
-# Form Field Definitions
-# ===================================
-
-fields:
- toolbar:
- type: partial
- path: $/rainlab/builder/behaviors/indeximportsoperations/partials/_toolbar.php
- cssClass: collapse-visible
-
-secondaryTabs:
- stretch: true
- fields:
- blueprints:
- stretch: true
- tab: Blueprints
- type: RainLab\Builder\FormWidgets\BlueprintBuilder
diff --git a/plugins/rainlab/builder/models/importsmodel/fields_import.yaml b/plugins/rainlab/builder/models/importsmodel/fields_import.yaml
deleted file mode 100644
index 7f55c4f..0000000
--- a/plugins/rainlab/builder/models/importsmodel/fields_import.yaml
+++ /dev/null
@@ -1,36 +0,0 @@
-# ===================================
-# Field Definitions
-# ===================================
-
-fields:
- migrate_database:
- label: Migrate Database
- comment: Perform a database migration after the import is finished. This optional and you can migrate the database later.
- type: checkbox
-
- disable_blueprints:
- label: Disable Blueprints
- comment: When the process is complete, rename the blueprint files to use a backup extension (.bak) to disable them.
- type: checkbox
-
- delete_blueprint_data:
- label: Delete Blueprint Data
- comment: Check this field to delete the data and tables for the selected blueprints.
- commentHtml: true
- type: checkbox
-
- delete_blueprint_data_confirm:
- type: text
- comment: Type OK in the field to confirm you want to destroy the existing blueprint data.
- cssClass: field-indent
- trigger:
- action: show
- field: delete_blueprint_data
- condition: checked
- _ruler:
- type: ruler
-
- _hint:
- type: hint
- mode: warning
- label: Before clicking Import, please double check the selected blueprints. The import process creates multiple scaffold files for the selected plugin.
diff --git a/plugins/rainlab/builder/models/importsmodel/fields_select.yaml b/plugins/rainlab/builder/models/importsmodel/fields_select.yaml
deleted file mode 100644
index 03a7dea..0000000
--- a/plugins/rainlab/builder/models/importsmodel/fields_select.yaml
+++ /dev/null
@@ -1,14 +0,0 @@
-# ===================================
-# Form Field Definitions
-# ===================================
-
-fields:
- blueprint_uuid:
- label: Blueprint Handle
- type: checkboxlist
-
- include_related:
- type: checkbox
- label: Include Related Blueprints
- comment: Scan the selected blueprint for any related blueprints and include them in the selection.
- default: true
diff --git a/plugins/rainlab/builder/models/modelmodel/templates/model.php.tpl b/plugins/rainlab/builder/models/modelmodel/templates/model.php.tpl
deleted file mode 100644
index 3bb0571..0000000
--- a/plugins/rainlab/builder/models/modelmodel/templates/model.php.tpl
+++ /dev/null
@@ -1,18 +0,0 @@
- [
- \{{ relation.class }}::class,
-{% for prop, value in relation.props %}
- '{{ prop }}' => {{ value|raw }}{% if not loop.last %},
-{% endif %}
-{% endfor %}
-
- ]{% if not loop.last %},
-{% endif %}
-{% endfor %}
-
- ];
\ No newline at end of file
diff --git a/plugins/rainlab/builder/models/modelmodel/templates/settingmodel.php.tpl b/plugins/rainlab/builder/models/modelmodel/templates/settingmodel.php.tpl
deleted file mode 100644
index 81f97cf..0000000
--- a/plugins/rainlab/builder/models/modelmodel/templates/settingmodel.php.tpl
+++ /dev/null
@@ -1,23 +0,0 @@
- '{{ value }}'{% if not loop.last %},
-{% endif %}
-{% endfor %}
-
- ];
-{% endif %}{% if validation.attributeNames %}
-
- /**
- * @var array attributeNames for validation.
- */
- public $attributeNames = [
-{% for attr, value in validation.attributeNames %}
- '{{ attr }}' => '{{ value }}'{% if not loop.last %},
-{% endif %}
-{% endfor %}
-
- ];
-{% endif %}{% if validation.customMessages %}
-
- /**
- * @var array customMessages for validation.
- */
- public $customMessages = [
-{% for msg, value in validation.customMessages %}
- '{{ msg }}' => '{{ value }}'{% if not loop.last %},
-{% endif %}
-{% endfor %}
-
- ];
-{% endif %}{% else %}
-
- /**
- * @var array rules for validation.
- */
- public $rules = [
- ];
-{% endif %}
\ No newline at end of file
diff --git a/plugins/rainlab/builder/rainlab-builder.mix.js b/plugins/rainlab/builder/rainlab-builder.mix.js
deleted file mode 100644
index e58f4fa..0000000
--- a/plugins/rainlab/builder/rainlab-builder.mix.js
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- |--------------------------------------------------------------------------
- | Mix Asset Management
- |--------------------------------------------------------------------------
- |
- | Mix provides a clean, fluent API for defining some Webpack build steps
- | for your theme assets. By default, we are compiling the CSS
- | file for the application as well as bundling up all the JS files.
- |
- */
-
-module.exports = (mix) => {
- mix.less('plugins/rainlab/builder/assets/less/builder.less', 'plugins/rainlab/builder/assets/css/');
-
- mix.combine([
- 'plugins/rainlab/builder/assets/js/builder.dataregistry.js',
- 'plugins/rainlab/builder/assets/js/builder.index.entity.base.js',
- 'plugins/rainlab/builder/assets/js/builder.index.entity.plugin.js',
- 'plugins/rainlab/builder/assets/js/builder.index.entity.databasetable.js',
- 'plugins/rainlab/builder/assets/js/builder.index.entity.model.js',
- 'plugins/rainlab/builder/assets/js/builder.index.entity.modelform.js',
- 'plugins/rainlab/builder/assets/js/builder.index.entity.modellist.js',
- 'plugins/rainlab/builder/assets/js/builder.index.entity.permission.js',
- 'plugins/rainlab/builder/assets/js/builder.index.entity.menus.js',
- 'plugins/rainlab/builder/assets/js/builder.index.entity.imports.js',
- 'plugins/rainlab/builder/assets/js/builder.index.entity.code.js',
- 'plugins/rainlab/builder/assets/js/builder.index.entity.version.js',
- 'plugins/rainlab/builder/assets/js/builder.index.entity.localization.js',
- 'plugins/rainlab/builder/assets/js/builder.index.entity.controller.js',
- 'plugins/rainlab/builder/assets/js/builder.index.js',
- 'plugins/rainlab/builder/assets/js/builder.localizationinput.js',
- 'plugins/rainlab/builder/assets/js/builder.inspector.editor.localization.js',
- 'plugins/rainlab/builder/assets/js/builder.table.processor.localization.js',
- 'plugins/rainlab/builder/assets/js/builder.codelist.js'
- ], 'plugins/rainlab/builder/assets/js/build-min.js');
-}
diff --git a/plugins/rainlab/builder/tests/unit/classes/ModelModelTest.php b/plugins/rainlab/builder/tests/unit/classes/ModelModelTest.php
index 8556a2f..eb33247 100644
--- a/plugins/rainlab/builder/tests/unit/classes/ModelModelTest.php
+++ b/plugins/rainlab/builder/tests/unit/classes/ModelModelTest.php
@@ -1,6 +1,6 @@
alias = $alias;
- $this->selectionInputName = 'file';
- $this->assetExtensions = FileDefinitions::get('assetExtensions');
-
- parent::__construct($controller, []);
-
- if (!Request::ajax()) {
- $this->resetSelection();
- }
-
- $this->bindToController();
- }
-
- /**
- * Renders the widget.
- * @return string
- */
- public function render()
- {
- return $this->makePartial('body', [
- 'items' => $this->getData(),
- 'pluginCode' => $this->getPluginCode()
- ]);
- }
-
- /**
- * onOpenDirectory
- */
- public function onOpenDirectory()
- {
- $path = Input::get('path');
- if (!$this->validatePath($path)) {
- throw new ApplicationException(Lang::get('cms::lang.asset.invalid_path'));
- }
-
- $this->putSession('currentPath', $path);
-
- return [
- '#'.$this->getId('code-list') => $this->makePartial('items', ['items' => $this->getData()])
- ];
- }
-
- /**
- * refreshActivePlugin
- */
- public function refreshActivePlugin()
- {
- $this->plugin = null;
-
- return [
- '#'.$this->getId('body') => $this->makePartial('widget-contents', [
- 'items' => $this->getData(),
- 'pluginCode' => $this->getPluginCode()
- ])
- ];
- }
-
- /**
- * onRefresh
- */
- public function onRefresh()
- {
- return [
- '#'.$this->getId('code-list') => $this->makePartial('items', ['items' => $this->getData()])
- ];
- }
-
- /**
- * onUpdate
- */
- public function onUpdate()
- {
- $this->extendSelection();
-
- return $this->onRefresh();
- }
-
- /**
- * onDeleteFiles
- */
- public function onDeleteFiles()
- {
- $fileList = Request::input('file');
- $error = null;
- $deleted = [];
-
- try {
- $assetsPath = $this->getAssetsPath();
-
- foreach ($fileList as $path => $selected) {
- if ($selected) {
- if (!$this->validatePath($path)) {
- throw new ApplicationException(Lang::get('cms::lang.asset.invalid_path'));
- }
-
- $fullPath = $assetsPath.'/'.$path;
- if (File::exists($fullPath)) {
- if (!File::isDirectory($fullPath)) {
- if (!@File::delete($fullPath)) {
- throw new ApplicationException(Lang::get(
- 'cms::lang.asset.error_deleting_file',
- ['name' => $path]
- ));
- }
- }
- else {
- $empty = File::isDirectoryEmpty($fullPath);
- if ($empty === false) {
- throw new ApplicationException(Lang::get(
- 'cms::lang.asset.error_deleting_dir_not_empty',
- ['name' => $path]
- ));
- }
-
- if (!@rmdir($fullPath)) {
- throw new ApplicationException(Lang::get(
- 'cms::lang.asset.error_deleting_dir',
- ['name' => $path]
- ));
- }
- }
-
- $deleted[] = $path;
- $this->removeSelection($path);
- }
- }
- }
- }
- catch (Exception $ex) {
- $error = $ex->getMessage();
- }
-
- return [
- 'deleted' => $deleted,
- 'error' => $error,
- 'plugin_code' => Request::input('plugin_code')
- ];
- }
-
- /**
- * onLoadRenamePopup
- */
- public function onLoadRenamePopup()
- {
- $path = Input::get('renamePath');
- if (!$this->validatePath($path)) {
- throw new ApplicationException(Lang::get('cms::lang.asset.invalid_path'));
- }
-
- $this->vars['originalPath'] = $path;
- $this->vars['name'] = basename($path);
-
- return $this->makePartial('rename_form');
- }
-
- /**
- * onApplyName
- */
- public function onApplyName()
- {
- $newName = trim(Input::get('name'));
- if (!strlen($newName)) {
- throw new ApplicationException(Lang::get('cms::lang.asset.name_cant_be_empty'));
- }
-
- if (!$this->validatePath($newName)) {
- throw new ApplicationException(Lang::get('cms::lang.asset.invalid_path'));
- }
-
- if (!$this->validateName($newName)) {
- throw new ApplicationException(Lang::get('cms::lang.asset.invalid_name'));
- }
-
- $originalPath = Input::get('originalPath');
- if (!$this->validatePath($originalPath)) {
- throw new ApplicationException(Lang::get('cms::lang.asset.invalid_path'));
- }
-
- $originalFullPath = $this->getFullPath($originalPath);
- if (!file_exists($originalFullPath)) {
- throw new ApplicationException(Lang::get('cms::lang.asset.original_not_found'));
- }
-
- if (!is_dir($originalFullPath) && !$this->validateFileType($newName)) {
- throw new ApplicationException(Lang::get(
- 'cms::lang.asset.type_not_allowed',
- ['allowed_types' => implode(', ', $this->assetExtensions)]
- ));
- }
-
- $newFullPath = $this->getFullPath(dirname($originalPath).'/'.$newName);
- if (file_exists($newFullPath) && $newFullPath !== $originalFullPath) {
- throw new ApplicationException(Lang::get('cms::lang.asset.already_exists'));
- }
-
- if (!@rename($originalFullPath, $newFullPath)) {
- throw new ApplicationException(Lang::get('cms::lang.asset.error_renaming'));
- }
-
- return [
- '#'.$this->getId('code-list') => $this->makePartial('items', ['items' => $this->getData()])
- ];
- }
-
- /**
- * onLoadNewDirPopup
- */
- public function onLoadNewDirPopup()
- {
- return $this->makePartial('new_dir_form');
- }
-
- /**
- * onNewDirectory
- */
- public function onNewDirectory()
- {
- $newName = trim(Input::get('name'));
- if (!strlen($newName)) {
- throw new ApplicationException(Lang::get('cms::lang.asset.name_cant_be_empty'));
- }
-
- if (!$this->validatePath($newName)) {
- throw new ApplicationException(Lang::get('cms::lang.asset.invalid_path'));
- }
-
- if (!$this->validateName($newName)) {
- throw new ApplicationException(Lang::get('cms::lang.asset.invalid_name'));
- }
-
- $newFullPath = $this->getCurrentPath().'/'.$newName;
- if (file_exists($newFullPath)) {
- throw new ApplicationException(Lang::get('cms::lang.asset.already_exists'));
- }
-
- if (!File::makeDirectory($newFullPath)) {
- throw new ApplicationException(Lang::get(
- 'cms::lang.cms_object.error_creating_directory',
- ['name' => $newName]
- ));
- }
-
- return [
- '#'.$this->getId('code-list') => $this->makePartial('items', ['items' => $this->getData()])
- ];
- }
-
- /**
- * onLoadMovePopup
- */
- public function onLoadMovePopup()
- {
- $fileList = Request::input('file');
- $directories = [];
-
- $selectedList = array_filter($fileList, function ($value) {
- return $value == 1;
- });
-
- $this->listDestinationDirectories($directories, $selectedList);
-
- $this->vars['directories'] = $directories;
- $this->vars['selectedList'] = base64_encode(json_encode(array_keys($selectedList)));
-
- return $this->makePartial('move_form');
- }
-
- /**
- * onMove
- */
- public function onMove()
- {
- $selectedList = Input::get('selectedList');
- if (!strlen($selectedList)) {
- throw new ApplicationException(Lang::get('cms::lang.asset.selected_files_not_found'));
- }
-
- $destinationDir = Input::get('dest');
- if (!strlen($destinationDir)) {
- throw new ApplicationException(Lang::get('cms::lang.asset.select_destination_dir'));
- }
-
- $destinationFullPath = $this->getFullPath($destinationDir);
- if (!file_exists($destinationFullPath) || !is_dir($destinationFullPath)) {
- throw new ApplicationException(Lang::get('cms::lang.asset.destination_not_found'));
- }
-
- $list = @json_decode(@base64_decode($selectedList));
- if ($list === false) {
- throw new ApplicationException(Lang::get('cms::lang.asset.selected_files_not_found'));
- }
-
- foreach ($list as $path) {
- if (!$this->validatePath($path)) {
- throw new ApplicationException(Lang::get('cms::lang.asset.invalid_path'));
- }
-
- $basename = basename($path);
- $originalFullPath = $this->getFullPath($path);
- $newFullPath = realpath(rtrim($destinationFullPath, '/')) . '/' . $basename;
- $safeDir = $this->getAssetsPath();
-
- if ($originalFullPath == $newFullPath) {
- continue;
- }
-
- if (!starts_with($newFullPath, $safeDir)) {
- throw new ApplicationException(Lang::get(
- 'cms::lang.asset.error_moving_file',
- ['file' => $basename]
- ));
- }
-
- if (is_file($originalFullPath)) {
- if (!@File::move($originalFullPath, $newFullPath)) {
- throw new ApplicationException(Lang::get(
- 'cms::lang.asset.error_moving_file',
- ['file' => $basename]
- ));
- }
- }
- elseif (is_dir($originalFullPath)) {
- if (!@File::copyDirectory($originalFullPath, $newFullPath)) {
- throw new ApplicationException(Lang::get(
- 'cms::lang.asset.error_moving_directory',
- ['dir' => $basename]
- ));
- }
-
- if (strpos($originalFullPath, '../') !== false) {
- throw new ApplicationException(Lang::get(
- 'cms::lang.asset.error_deleting_directory',
- ['dir' => $basename]
- ));
- }
-
- if (strpos($originalFullPath, $safeDir) !== 0) {
- throw new ApplicationException(Lang::get(
- 'cms::lang.asset.error_deleting_directory',
- ['dir' => $basename]
- ));
- }
-
- if (!@File::deleteDirectory($originalFullPath)) {
- throw new ApplicationException(Lang::get(
- 'cms::lang.asset.error_deleting_directory',
- ['dir' => $basename]
- ));
- }
- }
- }
-
- return [
- '#'.$this->getId('code-list') => $this->makePartial('items', ['items' => $this->getData()])
- ];
- }
-
- /**
- * onSearch
- */
- public function onSearch()
- {
- $this->setSearchTerm(Input::get('search'));
-
- $this->extendSelection();
-
- return $this->onRefresh();
- }
-
- /**
- * getData
- */
- protected function getData()
- {
- $assetsPath = $this->getAssetsPath();
-
- if (!file_exists($assetsPath) || !is_dir($assetsPath)) {
- if (!File::makeDirectory($assetsPath)) {
- throw new ApplicationException(Lang::get(
- 'cms::lang.cms_object.error_creating_directory',
- ['name' => $assetsPath]
- ));
- }
- }
-
- $searchTerm = Str::lower($this->getSearchTerm());
-
- if (!strlen($searchTerm)) {
- $currentPath = $this->getCurrentPath();
- return $this->getDirectoryContents(
- new DirectoryIterator($currentPath)
- );
- }
-
- return $this->findFiles();
- }
-
- /**
- * getAssetsPath
- */
- protected function getAssetsPath()
- {
- return base_path('plugins/'.$this->getActivePluginObj()?->toFilesystemPath());
- }
-
- /**
- * getPluginFileUrl
- */
- protected function getPluginFileUrl($path)
- {
- return Url::to('plugins/'.$this->getActivePluginObj()?->toFilesystemPath().$path);
- }
-
- /**
- * getCurrentRelativePath
- */
- public function getCurrentRelativePath()
- {
- $path = $this->getSession('currentPath', '/');
-
- if (!$this->validatePath($path)) {
- return null;
- }
-
- if ($path == '.') {
- return null;
- }
-
- return ltrim($path, '/');
- }
-
- /**
- * getCurrentPath
- */
- protected function getCurrentPath()
- {
- $assetsPath = $this->getAssetsPath();
-
- $path = $assetsPath.'/'.$this->getCurrentRelativePath();
- if (!is_dir($path)) {
- return $assetsPath;
- }
-
- return $path;
- }
-
- /**
- * getRelativePath
- */
- protected function getRelativePath($path)
- {
- $prefix = $this->getAssetsPath();
-
- if (substr($path, 0, strlen($prefix)) == $prefix) {
- $path = substr($path, strlen($prefix));
- }
-
- return $path;
- }
-
- /**
- * getFullPath
- */
- protected function getFullPath($path)
- {
- return $this->getAssetsPath().'/'.ltrim($path, '/');
- }
-
- /**
- * validatePath
- */
- protected function validatePath($path)
- {
- if (!preg_match('/^[0-9a-z\.\s_\-\/]+$/i', $path)) {
- return false;
- }
-
- if (strpos($path, '..') !== false || strpos($path, './') !== false) {
- return false;
- }
-
- return true;
- }
-
- /**
- * validateName
- */
- protected function validateName($name)
- {
- if (!preg_match('/^[0-9a-z\.\s_\-]+$/i', $name)) {
- return false;
- }
-
- if (strpos($name, '..') !== false) {
- return false;
- }
-
- return true;
- }
-
- /**
- * getDirectoryContents
- */
- protected function getDirectoryContents($dir)
- {
- $editableAssetTypes = CodeFileModel::getEditableExtensions();
-
- $result = [];
- $files = [];
-
- foreach ($dir as $node) {
- if (substr($node->getFileName(), 0, 1) == '.') {
- continue;
- }
-
- if ($node->isDir() && !$node->isDot()) {
- $result[$node->getFilename()] = (object)[
- 'type' => 'directory',
- 'path' => File::normalizePath($this->getRelativePath($node->getPathname())),
- 'name' => $node->getFilename(),
- 'editable' => false
- ];
- }
- elseif ($node->isFile()) {
- $files[] = (object)[
- 'type' => 'file',
- 'path' => File::normalizePath($this->getRelativePath($node->getPathname())),
- 'name' => $node->getFilename(),
- 'editable' => in_array(strtolower($node->getExtension()), $editableAssetTypes)
- ];
- }
- }
-
- foreach ($files as $file) {
- $result[] = $file;
- }
-
- return $result;
- }
-
- /**
- * listDestinationDirectories
- */
- protected function listDestinationDirectories(&$result, $excludeList, $startDir = null, $level = 0)
- {
- if ($startDir === null) {
- $startDir = $this->getAssetsPath();
-
- $result['/'] = 'assets';
- $level = 1;
- }
-
- $dirs = new DirectoryIterator($startDir);
- foreach ($dirs as $node) {
- if (substr($node->getFileName(), 0, 1) == '.') {
- continue;
- }
-
- if ($node->isDir() && !$node->isDot()) {
- $fullPath = $node->getPathname();
- $relativePath = $this->getRelativePath($fullPath);
- if (array_key_exists($relativePath, $excludeList)) {
- continue;
- }
-
- $result[$relativePath] = str_repeat(' ', $level * 4).$node->getFilename();
-
- $this->listDestinationDirectories($result, $excludeList, $fullPath, $level+1);
- }
- }
- }
-
- /**
- * getSearchTerm
- */
- protected function getSearchTerm()
- {
- return $this->searchTerm !== false ? $this->searchTerm : $this->getSession('search');
- }
-
- /**
- * isSearchMode
- */
- protected function isSearchMode()
- {
- return strlen($this->getSearchTerm());
- }
-
- /**
- * getUpPath
- */
- protected function getUpPath()
- {
- $path = $this->getCurrentRelativePath();
- if (!strlen(rtrim(ltrim($path, '/'), '/'))) {
- return null;
- }
-
- return dirname($path);
- }
-
- /**
- * getPluginCode
- */
- protected function getPluginCode()
- {
- return $this->getActivePluginObj()?->toCode();
- }
-
- /**
- * getActivePluginObj
- */
- protected function getActivePluginObj()
- {
- if ($this->plugin !== null) {
- return $this->plugin;
- }
-
- $activePluginVector = $this->controller->getBuilderActivePluginVector();
- if (!$activePluginVector) {
- return null;
- }
-
- return $this->plugin = $activePluginVector->pluginCodeObj;
- }
-
- /**
- * validateFileType checks for valid asset file extension
- * @param string
- * @return bool
- */
- protected function validateFileType($name)
- {
- $extension = strtolower(File::extension($name));
-
- if (!in_array($extension, $this->assetExtensions)) {
- return false;
- }
-
- return true;
- }
-
- public function onUpload()
- {
- $fileName = null;
-
- try {
- $uploadedFile = Input::file('file_data');
-
- if (!is_object($uploadedFile)) {
- return;
- }
-
- $fileName = $uploadedFile->getClientOriginalName();
-
- // Check valid upload
- if (!$uploadedFile->isValid()) {
- throw new ApplicationException(Lang::get('cms::lang.asset.file_not_valid'));
- }
-
- // Check file size
- $maxSize = UploadedFile::getMaxFilesize();
- if ($uploadedFile->getSize() > $maxSize) {
- throw new ApplicationException(Lang::get(
- 'cms::lang.asset.too_large',
- ['max_size' => File::sizeToString($maxSize)]
- ));
- }
-
- // Check for valid file extensions
- if (!$this->validateFileType($fileName)) {
- throw new ApplicationException(Lang::get(
- 'cms::lang.asset.type_not_allowed',
- ['allowed_types' => implode(', ', $this->assetExtensions)]
- ));
- }
-
- // Accept the uploaded file
- $uploadedFile = $uploadedFile->move($this->getCurrentPath(), $uploadedFile->getClientOriginalName());
-
- File::chmod($uploadedFile->getRealPath());
-
- $response = Response::make('success');
- }
- catch (Exception $ex) {
- $message = $fileName !== null
- ? Lang::get('cms::lang.asset.error_uploading_file', ['name' => $fileName, 'error' => $ex->getMessage()])
- : $ex->getMessage();
-
- $response = Response::make($message);
- }
-
- // Override the controller response
- $this->controller->setResponse($response);
- }
-
- /**
- * setSearchTerm
- */
- protected function setSearchTerm($term)
- {
- $this->searchTerm = trim($term);
- $this->putSession('search', $this->searchTerm);
- }
-
- /**
- * findFiles
- */
- protected function findFiles()
- {
- $iterator = new RecursiveIteratorIterator(
- new RecursiveDirectoryIterator($this->getAssetsPath(), RecursiveDirectoryIterator::SKIP_DOTS),
- RecursiveIteratorIterator::SELF_FIRST,
- RecursiveIteratorIterator::CATCH_GET_CHILD
- );
-
- $editableAssetTypes = CodeFileModel::getEditableExtensions();
- $searchTerm = Str::lower($this->getSearchTerm());
- $words = explode(' ', $searchTerm);
-
- $result = [];
- foreach ($iterator as $item) {
- if (!$item->isDir()) {
- if (substr($item->getFileName(), 0, 1) == '.') {
- continue;
- }
-
- $path = $this->getRelativePath($item->getPathname());
-
- if ($this->pathMatchesSearch($words, $path)) {
- $result[] = (object)[
- 'type' => 'file',
- 'path' => File::normalizePath($path),
- 'name' => $item->getFilename(),
- 'editable' => in_array(strtolower($item->getExtension()), $editableAssetTypes)
- ];
- }
- }
- }
-
- return $result;
- }
-
- /**
- * pathMatchesSearch
- */
- protected function pathMatchesSearch(&$words, $path)
- {
- foreach ($words as $word) {
- $word = trim($word);
- if (!strlen($word)) {
- continue;
- }
-
- if (!Str::contains(Str::lower($path), $word)) {
- return false;
- }
- }
-
- return true;
- }
-}
diff --git a/plugins/rainlab/builder/widgets/ControllerList.php b/plugins/rainlab/builder/widgets/ControllerList.php
index 515303e..ce35760 100644
--- a/plugins/rainlab/builder/widgets/ControllerList.php
+++ b/plugins/rainlab/builder/widgets/ControllerList.php
@@ -3,10 +3,10 @@
use Str;
use Input;
use Backend\Classes\WidgetBase;
-use RainLab\Builder\Models\ControllerModel;
+use RainLab\Builder\Classes\ControllerModel;
/**
- * ControllerList widget.
+ * Plugin controller list widget.
*
* @package rainlab\builder
* @author Alexey Bobkov, Samuel Georges
@@ -15,14 +15,8 @@ class ControllerList extends WidgetBase
{
use \Backend\Traits\SearchableWidget;
- /**
- * @var string noRecordsMessage
- */
public $noRecordsMessage = 'rainlab.builder::lang.controller.no_records';
- /**
- * __construct
- */
public function __construct($controller, $alias)
{
$this->alias = $alias;
@@ -32,7 +26,7 @@ class ControllerList extends WidgetBase
}
/**
- * render the widget.
+ * Renders the widget.
* @return string
*/
public function render()
@@ -40,46 +34,35 @@ class ControllerList extends WidgetBase
return $this->makePartial('body', $this->getRenderData());
}
- /**
- * updateList
- */
public function updateList()
{
- return [
- '#'.$this->getId('plugin-controller-list') => $this->makePartial('items', $this->getRenderData())
- ];
+ return ['#'.$this->getId('plugin-controller-list') => $this->makePartial('items', $this->getRenderData())];
}
- /**
- * refreshActivePlugin
- */
public function refreshActivePlugin()
{
- return [
- '#'.$this->getId('body') => $this->makePartial('widget-contents', $this->getRenderData())
- ];
+ return ['#'.$this->getId('body') => $this->makePartial('widget-contents', $this->getRenderData())];
}
- /**
- * onUpdate
+ /*
+ * Event handlers
*/
+
public function onUpdate()
{
return $this->updateList();
}
- /**
- * onSearch
- */
public function onSearch()
{
$this->setSearchTerm(Input::get('search'));
return $this->updateList();
}
- /**
- * getControllerList
+ /*
+ * Methods for the internal use
*/
+
protected function getControllerList($pluginCode)
{
$result = ControllerModel::listPluginControllers($pluginCode);
@@ -87,15 +70,12 @@ class ControllerList extends WidgetBase
return $result;
}
- /**
- * getRenderData
- */
protected function getRenderData()
{
$activePluginVector = $this->controller->getBuilderActivePluginVector();
if (!$activePluginVector) {
return [
- 'pluginVector' => null,
+ 'pluginVector'=>null,
'items' => []
];
}
@@ -117,8 +97,8 @@ class ControllerList extends WidgetBase
}
return [
- 'pluginVector' => $activePluginVector,
- 'items' => $items
+ 'pluginVector'=>$activePluginVector,
+ 'items'=>$items
];
}
}
diff --git a/plugins/rainlab/builder/widgets/DatabaseTableList.php b/plugins/rainlab/builder/widgets/DatabaseTableList.php
index a0fa092..ed92d14 100644
--- a/plugins/rainlab/builder/widgets/DatabaseTableList.php
+++ b/plugins/rainlab/builder/widgets/DatabaseTableList.php
@@ -3,7 +3,7 @@
use Str;
use Input;
use Backend\Classes\WidgetBase;
-use RainLab\Builder\Models\DatabaseTableModel;
+use RainLab\Builder\Classes\DatabaseTableModel;
/**
* Database table list widget.
diff --git a/plugins/rainlab/builder/widgets/DefaultBehaviorDesignTimeProvider.php b/plugins/rainlab/builder/widgets/DefaultBehaviorDesignTimeProvider.php
index f8fe86f..8f48192 100644
--- a/plugins/rainlab/builder/widgets/DefaultBehaviorDesignTimeProvider.php
+++ b/plugins/rainlab/builder/widgets/DefaultBehaviorDesignTimeProvider.php
@@ -2,8 +2,8 @@
use Lang;
use RainLab\Builder\Classes\BehaviorDesignTimeProviderBase;
-use RainLab\Builder\Models\ModelListModel;
-use RainLab\Builder\Models\ModelFormModel;
+use RainLab\Builder\Classes\ModelListModel;
+use RainLab\Builder\Classes\ModelFormModel;
use SystemException;
use ApplicationException;
@@ -16,13 +16,13 @@ use ApplicationException;
class DefaultBehaviorDesignTimeProvider extends BehaviorDesignTimeProviderBase
{
protected $defaultBehaviorClasses = [
- \Backend\Behaviors\FormController::class => 'form-controller',
- \Backend\Behaviors\ListController::class => 'list-controller',
- \Backend\Behaviors\ImportExportController::class => 'import-export-controller'
+ 'Backend\Behaviors\FormController' => 'form-controller',
+ 'Backend\Behaviors\ListController' => 'list-controller',
+ 'Backend\Behaviors\ReorderController' => 'reorder-controller'
];
/**
- * Renders behavior body.
+ * Renders behaivor body.
* @param string $class Specifies the behavior class to render.
* @param array $properties Behavior property values.
* @param \RainLab\Builder\FormWidgets\ControllerBuilder $controllerBuilder ControllerBuilder widget instance.
@@ -56,18 +56,15 @@ class DefaultBehaviorDesignTimeProvider extends BehaviorDesignTimeProviderBase
}
switch ($class) {
- case \Backend\Behaviors\FormController::class:
+ case 'Backend\Behaviors\FormController':
return $this->getFormControllerDefaultConfiguration($controllerModel, $controllerGenerator);
- case \Backend\Behaviors\ListController::class:
+ case 'Backend\Behaviors\ListController':
return $this->getListControllerDefaultConfiguration($controllerModel, $controllerGenerator);
- case \Backend\Behaviors\ImportExportController::class:
- return $this->getImportExportControllerDefaultConfiguration($controllerModel, $controllerGenerator);
+ case 'Backend\Behaviors\ReorderController':
+ return $this->getReorderControllerDefaultConfiguration($controllerModel, $controllerGenerator);
}
}
- /**
- * renderUnknownControl
- */
protected function renderUnknownControl($class, $properties)
{
return $this->makePartial('behavior-unknown', [
@@ -76,9 +73,6 @@ class DefaultBehaviorDesignTimeProvider extends BehaviorDesignTimeProviderBase
]);
}
- /**
- * getFormControllerDefaultConfiguration
- */
protected function getFormControllerDefaultConfiguration($controllerModel, $controllerGenerator)
{
if (!$controllerModel->baseModelClassName) {
@@ -94,10 +88,10 @@ class DefaultBehaviorDesignTimeProvider extends BehaviorDesignTimeProviderBase
throw new ApplicationException(Lang::get('rainlab.builder::lang.controller.error_model_doesnt_have_forms'));
}
- $controllerUrl = $this->getControllerUrl($pluginCodeObj, $controllerModel->controller);
+ $controllerUrl = $this->getControllerlUrl($pluginCodeObj, $controllerModel->controller);
$result = [
- 'name' => $controllerModel->controllerName,
+ 'name' => $controllerModel->controller,
'form' => $this->getModelFilePath($pluginCodeObj, $controllerModel->baseModelClassName, $forms[0]),
'modelClass' => $this->getFullModelClass($pluginCodeObj, $controllerModel->baseModelClassName),
'defaultRedirect' => $controllerUrl,
@@ -114,9 +108,6 @@ class DefaultBehaviorDesignTimeProvider extends BehaviorDesignTimeProviderBase
return $result;
}
- /**
- * getListControllerDefaultConfiguration
- */
protected function getListControllerDefaultConfiguration($controllerModel, $controllerGenerator)
{
if (!$controllerModel->baseModelClassName) {
@@ -148,9 +139,9 @@ class DefaultBehaviorDesignTimeProvider extends BehaviorDesignTimeProviderBase
]
];
- if (array_key_exists(\Backend\Behaviors\FormController::class, $controllerModel->behaviors)) {
- $updateUrl = $this->getControllerUrl($pluginCodeObj, $controllerModel->controller).'/update/:id';
- $createUrl = $this->getControllerUrl($pluginCodeObj, $controllerModel->controller).'/create';
+ if (in_array('Backend\Behaviors\FormController', $controllerModel->behaviors)) {
+ $updateUrl = $this->getControllerlUrl($pluginCodeObj, $controllerModel->controller).'/update/:id';
+ $createUrl = $this->getControllerlUrl($pluginCodeObj, $controllerModel->controller).'/create';
$result['recordUrl'] = $updateUrl;
@@ -158,61 +149,48 @@ class DefaultBehaviorDesignTimeProvider extends BehaviorDesignTimeProviderBase
$controllerGenerator->setTemplateVariable('createUrl', $createUrl);
}
- if (in_array(\Backend\Behaviors\ImportExportController::class, $controllerModel->behaviors)) {
- $importUrl = $this->getControllerUrl($pluginCodeObj, $controllerModel->controller).'/import';
- $exportUrl = $this->getControllerUrl($pluginCodeObj, $controllerModel->controller).'/export';
- $controllerGenerator->setTemplateVariable('hasImportExportBehavior', true);
- $controllerGenerator->setTemplateVariable('importUrl', $importUrl);
- $controllerGenerator->setTemplateVariable('exportUrl', $exportUrl);
+ if (in_array('Backend\Behaviors\ReorderController', $controllerModel->behaviors)) {
+ $reorderUrl = $this->getControllerlUrl($pluginCodeObj, $controllerModel->controller).'/reorder';
+ $controllerGenerator->setTemplateVariable('hasReorderBehavior', true);
+ $controllerGenerator->setTemplateVariable('reorderUrl', $reorderUrl);
}
return $result;
}
- /**
- * getImportExportControllerDefaultConfiguration
- */
- protected function getImportExportControllerDefaultConfiguration($controllerModel, $controllerGenerator)
+ protected function getReorderControllerDefaultConfiguration($controllerModel, $controllerGenerator)
{
if (!$controllerModel->baseModelClassName) {
throw new ApplicationException(Lang::get('rainlab.builder::lang.controller.error_behavior_requires_base_model', [
- 'behavior' => 'Import Export Controller'
+ 'behavior' => 'Reorder Controller'
]));
}
$pluginCodeObj = $controllerModel->getPluginCodeObj();
$result = [
- 'import.title' => $controllerModel->controller,
- 'import.modelClass' => $this->getFullModelClass($pluginCodeObj, $controllerModel->baseModelClassName),
- 'export.title' => $controllerModel->controller,
- 'export.modelClass' => $this->getFullModelClass($pluginCodeObj, $controllerModel->baseModelClassName),
+ 'title' => $controllerModel->controller,
+ 'modelClass' => $this->getFullModelClass($pluginCodeObj, $controllerModel->baseModelClassName),
+ 'toolbar' => [
+ 'buttons' => 'reorder_toolbar',
+ ]
];
return $result;
}
- /**
- * getFullModelClass
- */
protected function getFullModelClass($pluginCodeObj, $modelClassName)
{
return $pluginCodeObj->toPluginNamespace().'\\Models\\'.$modelClassName;
}
- /**
- * getModelFilePath
- */
protected function getModelFilePath($pluginCodeObj, $modelClassName, $file)
{
return '$/' . $pluginCodeObj->toFilesystemPath() . '/models/' . strtolower($modelClassName) . '/' . $file;
}
- /**
- * getControllerUrl
- */
- protected function getControllerUrl($pluginCodeObj, $controller)
+ protected function getControllerlUrl($pluginCodeObj, $controller)
{
- return $pluginCodeObj->toUrl().'/'.strtolower($controller);
+ return $pluginCodeObj->toUrl().'/'.strtolower($controller);
}
}
diff --git a/plugins/rainlab/builder/widgets/DefaultBlueprintDesignTimeProvider.php b/plugins/rainlab/builder/widgets/DefaultBlueprintDesignTimeProvider.php
deleted file mode 100644
index af66833..0000000
--- a/plugins/rainlab/builder/widgets/DefaultBlueprintDesignTimeProvider.php
+++ /dev/null
@@ -1,123 +0,0 @@
- 'entry',
- \Tailor\Classes\Blueprint\StreamBlueprint::class => 'entry',
- \Tailor\Classes\Blueprint\SingleBlueprint::class => 'entry',
- \Tailor\Classes\Blueprint\StructureBlueprint::class => 'entry',
- \Tailor\Classes\Blueprint\GlobalBlueprint::class => 'global',
- ];
-
- /**
- * renderBlueprintBody
- * @param string $class Specifies the blueprint class to render.
- * @param array $properties Blueprint property values.
- * @param object $blueprintObj
- * @return string Returns HTML markup string.
- */
- public function renderBlueprintBody($class, $properties, $blueprintObj)
- {
- if (!array_key_exists($class, $this->defaultBlueprintClasses)) {
- return $this->renderUnknownBlueprint($class, $properties);
- }
-
- $partial = $this->defaultBlueprintClasses[$class];
-
- return $this->makePartial('blueprint-'.$partial, [
- 'properties' => $properties,
- 'blueprintObj' => $blueprintObj
- ]);
- }
-
- /**
- * getDefaultConfiguration returns default blueprint configuration as an array.
- * @param string $class Specifies the blueprint class name.
- * @param string $blueprintObj
- * @param mixed $importsModel
- * @return array
- */
- public function getDefaultConfiguration($class, $blueprintObj, $importsModel)
- {
- if (!array_key_exists($class, $this->defaultBlueprintClasses)) {
- throw new SystemException('Unknown blueprint class: '.$class);
- }
-
- switch ($class) {
- case \Tailor\Classes\Blueprint\EntryBlueprint::class:
- case \Tailor\Classes\Blueprint\StreamBlueprint::class:
- case \Tailor\Classes\Blueprint\SingleBlueprint::class:
- case \Tailor\Classes\Blueprint\StructureBlueprint::class:
- return $this->getEntryBlueprintDefaultConfiguration($blueprintObj, $importsModel);
- case \Tailor\Classes\Blueprint\GlobalBlueprint::class:
- return $this->getGlobalBlueprintDefaultConfiguration($blueprintObj, $importsModel);
- }
- }
-
- /**
- * renderUnknownBlueprint
- */
- protected function renderUnknownBlueprint($class, $properties)
- {
- return $this->makePartial('blueprint-unknown', [
- 'properties' => $properties,
- 'class' => $class
- ]);
- }
-
- /**
- * getEntryBlueprintDefaultConfiguration
- */
- protected function getEntryBlueprintDefaultConfiguration($blueprintObj, $importsModel)
- {
- $handleBase = class_basename($blueprintObj->handle);
- $dbPrefix = $importsModel->getPluginCodeObj()->toDatabasePrefix().'_';
- $permissionPrefix = $importsModel->getPluginCodeObj()->toPermissionPrefix().'.manage_';
-
- $result = [
- 'name' => $blueprintObj->name,
- 'controllerClass' => Str::plural($handleBase),
- 'modelClass' => Str::singular($handleBase),
- 'tableName' => $dbPrefix . Str::snake($handleBase),
- 'permissionCode' => $permissionPrefix . Str::snake($handleBase),
- 'menuCode' => Str::snake($handleBase),
- ];
-
- return $result;
- }
-
- /**
- * getGlobalBlueprintDefaultConfiguration
- */
- protected function getGlobalBlueprintDefaultConfiguration($blueprintObj, $importsModel)
- {
- $handleBase = class_basename($blueprintObj->handle);
- $dbPrefix = $importsModel->getPluginCodeObj()->toDatabasePrefix().'_';
- $permissionPrefix = $importsModel->getPluginCodeObj()->toPermissionPrefix().'.manage_';
-
- $result = [
- 'name' => $blueprintObj->name,
- 'controllerClass' => Str::plural($handleBase),
- 'modelClass' => Str::singular($handleBase),
- 'tableName' => $dbPrefix . Str::snake($handleBase),
- 'permissionCode' => $permissionPrefix . Str::snake($handleBase),
- 'menuCode' => Str::snake($handleBase),
- ];
-
- return $result;
- }
-}
diff --git a/plugins/rainlab/builder/widgets/DefaultControlDesignTimeProvider.php b/plugins/rainlab/builder/widgets/DefaultControlDesignTimeProvider.php
index 70cc7a8..54276a3 100644
--- a/plugins/rainlab/builder/widgets/DefaultControlDesignTimeProvider.php
+++ b/plugins/rainlab/builder/widgets/DefaultControlDesignTimeProvider.php
@@ -4,21 +4,17 @@ use File;
use RainLab\Builder\Classes\ControlDesignTimeProviderBase;
/**
- * DefaultControlDesignTimeProvider is a default control design-time provider.
+ * Default control design-time provider.
*
* @package rainlab\builder
* @author Alexey Bobkov, Samuel Georges
*/
class DefaultControlDesignTimeProvider extends ControlDesignTimeProviderBase
{
- /**
- * @var array defaultControlsTypes
- */
protected $defaultControlsTypes = [
'text',
'number',
'password',
- 'email',
'textarea',
'checkbox',
'dropdown',
@@ -27,29 +23,24 @@ class DefaultControlDesignTimeProvider extends ControlDesignTimeProviderBase
'checkboxlist',
'switch',
'section',
- 'ruler',
'partial',
'hint',
'widget',
+ 'repeater',
'codeeditor',
'colorpicker',
- 'datatable',
'datepicker',
- 'fileupload',
- 'markdown',
- 'mediafinder',
- 'nestedform',
- 'recordfinder',
- 'relation',
- 'repeater',
'richeditor',
- 'pagefinder',
- 'sensitive',
+ 'markdown',
'taglist',
+ 'fileupload',
+ 'recordfinder',
+ 'mediafinder',
+ 'relation'
];
/**
- * renderControlBody
+ * Renders control body.
* @param string $type Specifies the control type to render.
* @param array $properties Control property values.
* @param \RainLab\Builder\FormWidgets\FormBuilder $formBuilder FormBuilder widget instance.
@@ -62,13 +53,13 @@ class DefaultControlDesignTimeProvider extends ControlDesignTimeProviderBase
}
return $this->makePartial('control-'.$type, [
- 'properties' => $properties,
+ 'properties'=>$properties,
'formBuilder' => $formBuilder
]);
}
/**
- * renderControlStaticBody renders control static body.
+ * Renders control static body.
* The control static body is never updated with AJAX during the form editing.
* @param string $type Specifies the control type to render.
* @param array $properties Control property values preprocessed for the Inspector.
@@ -82,37 +73,34 @@ class DefaultControlDesignTimeProvider extends ControlDesignTimeProviderBase
return null;
}
- $partialName = 'control-'.$type.'-static';
- $partialPath = $this->getViewPath('_'.$partialName.'.php');
+ $partialName = 'control-static-'.$type;
+ $partialPath = $this->getViewPath('_'.$partialName.'.htm');
if (!File::exists($partialPath)) {
return null;
}
return $this->makePartial($partialName, [
- 'properties' => $properties,
+ 'properties'=>$properties,
'controlConfiguration' => $controlConfiguration,
'formBuilder' => $formBuilder
]);
}
/**
- * controlHasLabels determines whether a control supports default labels and comments.
+ * Determines whether a control supports default labels and comments.
* @param string $type Specifies the control type.
* @return boolean
*/
public function controlHasLabels($type)
{
- if (in_array($type, ['checkbox', 'switch', 'hint', 'partial', 'section', 'ruler'])) {
+ if (in_array($type, ['checkbox', 'switch', 'hint', 'partial', 'section'])) {
return false;
}
return true;
}
- /**
- * getPropertyValue
- */
protected function getPropertyValue($properties, $property)
{
if (array_key_exists($property, $properties)) {
@@ -122,9 +110,6 @@ class DefaultControlDesignTimeProvider extends ControlDesignTimeProviderBase
return null;
}
- /**
- * renderUnknownControl
- */
protected function renderUnknownControl($type, $properties)
{
return $this->makePartial('control-unknowncontrol', [
diff --git a/plugins/rainlab/builder/widgets/LanguageList.php b/plugins/rainlab/builder/widgets/LanguageList.php
index 539de94..749b76a 100644
--- a/plugins/rainlab/builder/widgets/LanguageList.php
+++ b/plugins/rainlab/builder/widgets/LanguageList.php
@@ -3,7 +3,7 @@
use Str;
use Input;
use Backend\Classes\WidgetBase;
-use RainLab\Builder\Models\LocalizationModel;
+use RainLab\Builder\Classes\LocalizationModel;
/**
* Plugin language list widget.
diff --git a/plugins/rainlab/builder/widgets/ModelList.php b/plugins/rainlab/builder/widgets/ModelList.php
index cf44707..77c285a 100644
--- a/plugins/rainlab/builder/widgets/ModelList.php
+++ b/plugins/rainlab/builder/widgets/ModelList.php
@@ -3,9 +3,9 @@
use Str;
use Input;
use Backend\Classes\WidgetBase;
-use RainLab\Builder\Models\ModelModel;
-use RainLab\Builder\Models\ModelFormModel;
-use RainLab\Builder\Models\ModelListModel;
+use RainLab\Builder\Classes\ModelModel;
+use RainLab\Builder\Classes\ModelFormModel;
+use RainLab\Builder\Classes\ModelListModel;
/**
* Model list widget.
diff --git a/plugins/rainlab/builder/widgets/PluginList.php b/plugins/rainlab/builder/widgets/PluginList.php
index 205c151..b4b88dc 100644
--- a/plugins/rainlab/builder/widgets/PluginList.php
+++ b/plugins/rainlab/builder/widgets/PluginList.php
@@ -1,8 +1,8 @@
alias = $alias;
@@ -37,7 +33,7 @@ class PluginList extends WidgetBase
}
/**
- * render the widget.
+ * Renders the widget.
* @return string
*/
public function render()
@@ -45,9 +41,6 @@ class PluginList extends WidgetBase
return $this->makePartial('body', $this->getRenderData());
}
- /**
- * setActivePlugin
- */
public function setActivePlugin($pluginCode)
{
$pluginCodeObj = new PluginCode($pluginCode);
@@ -55,9 +48,6 @@ class PluginList extends WidgetBase
$this->putSession('activePlugin', $pluginCodeObj->toCode());
}
- /**
- * getActivePluginVector
- */
public function getActivePluginVector()
{
$pluginCode = $this->getActivePluginCode();
@@ -85,34 +75,26 @@ class PluginList extends WidgetBase
return null;
}
- /**
- * updateList
- */
public function updateList()
{
return ['#'.$this->getId('plugin-list') => $this->makePartial('items', $this->getRenderData())];
}
- /**
- * onUpdate
+ /*
+ * Event handlers
*/
+
public function onUpdate()
{
return $this->updateList();
}
- /**
- * onSearch
- */
public function onSearch()
{
$this->setSearchTerm(Input::get('search'));
return $this->updateList();
}
- /**
- * onToggleFilter
- */
public function onToggleFilter()
{
$mode = $this->getFilterMode();
@@ -124,9 +106,10 @@ class PluginList extends WidgetBase
return $result;
}
- /**
- * getData
+ /*
+ * Methods for the internal use
*/
+
protected function getData()
{
$plugins = $this->getPluginList();
@@ -166,9 +149,6 @@ class PluginList extends WidgetBase
return $plugins;
}
- /**
- * getPluginList
- */
protected function getPluginList()
{
$plugins = PluginManager::instance()->getPlugins();
@@ -190,40 +170,28 @@ class PluginList extends WidgetBase
$result[$code] = $itemInfo;
}
- uasort($result, function($a, $b) {
+ uasort($result, function ($a, $b) {
return strcmp(trans($a['name']), trans($b['name']));
});
return $result;
}
- /**
- * setFilterMode
- */
protected function setFilterMode($mode)
{
$this->putSession('filter', $mode);
}
- /**
- * getFilterMode
- */
protected function getFilterMode()
{
return $this->getSession('filter', 'my');
}
- /**
- * getActivePluginCode
- */
protected function getActivePluginCode()
{
return $this->getSession('activePlugin');
}
- /**
- * getRenderData
- */
protected function getRenderData()
{
return [
diff --git a/plugins/rainlab/builder/widgets/VersionList.php b/plugins/rainlab/builder/widgets/VersionList.php
index 08eab99..a58be2c 100644
--- a/plugins/rainlab/builder/widgets/VersionList.php
+++ b/plugins/rainlab/builder/widgets/VersionList.php
@@ -18,9 +18,6 @@ class VersionList extends WidgetBase
public $noRecordsMessage = 'rainlab.builder::lang.version.no_records';
- /**
- * __construct
- */
public function __construct($controller, $alias)
{
$this->alias = $alias;
@@ -33,7 +30,7 @@ class VersionList extends WidgetBase
}
/**
- * render the widget.
+ * Renders the widget.
* @return string
*/
public function render()
@@ -41,42 +38,31 @@ class VersionList extends WidgetBase
return $this->makePartial('body', $this->getRenderData());
}
- /**
- * updateList
- */
public function updateList()
{
return ['#'.$this->getId('plugin-version-list') => $this->makePartial('items', $this->getRenderData())];
}
- /**
- * refreshActivePlugin
- */
public function refreshActivePlugin()
{
return ['#'.$this->getId('body') => $this->makePartial('widget-contents', $this->getRenderData())];
}
- /**
- * onUpdate
+ /*
+ * Event handlers
*/
+
public function onUpdate()
{
return $this->updateList();
}
- /**
- * onSearch
- */
public function onSearch()
{
$this->setSearchTerm(Input::get('search'));
return $this->updateList();
}
- /**
- * onSort
- */
public function onSort()
{
$this->config->sort = Input::input('sort');
@@ -86,9 +72,10 @@ class VersionList extends WidgetBase
return ['#' . $this->getId('body') => $this->makePartial('widget-contents', $this->getRenderData())];
}
- /**
- * getRenderData
+ /*
+ * Methods for the internal use
*/
+
protected function getRenderData()
{
$activePluginVector = $this->controller->getBuilderActivePluginVector();
@@ -135,9 +122,6 @@ class VersionList extends WidgetBase
];
}
- /**
- * getVersionDescription
- */
protected function getVersionDescription($versionInfo)
{
if (is_array($versionInfo)) {
diff --git a/plugins/rainlab/builder/widgets/codelist/partials/_body.php b/plugins/rainlab/builder/widgets/codelist/partials/_body.php
deleted file mode 100644
index 7a3f9c2..0000000
--- a/plugins/rainlab/builder/widgets/codelist/partials/_body.php
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
\ No newline at end of file
diff --git a/plugins/rainlab/builder/widgets/controllerlist/partials/_body.php b/plugins/rainlab/builder/widgets/controllerlist/partials/_body.htm
similarity index 100%
rename from plugins/rainlab/builder/widgets/controllerlist/partials/_body.php
rename to plugins/rainlab/builder/widgets/controllerlist/partials/_body.htm
diff --git a/plugins/rainlab/builder/widgets/controllerlist/partials/_controller-list.php b/plugins/rainlab/builder/widgets/controllerlist/partials/_controller-list.htm
similarity index 100%
rename from plugins/rainlab/builder/widgets/controllerlist/partials/_controller-list.php
rename to plugins/rainlab/builder/widgets/controllerlist/partials/_controller-list.htm
diff --git a/plugins/rainlab/builder/widgets/controllerlist/partials/_items.php b/plugins/rainlab/builder/widgets/controllerlist/partials/_items.htm
similarity index 86%
rename from plugins/rainlab/builder/widgets/controllerlist/partials/_items.php
rename to plugins/rainlab/builder/widgets/controllerlist/partials/_items.htm
index c7e04ff..34e2db3 100644
--- a/plugins/rainlab/builder/widgets/controllerlist/partials/_items.php
+++ b/plugins/rainlab/builder/widgets/controllerlist/partials/_items.htm
@@ -1,12 +1,12 @@
-
+
\ No newline at end of file
diff --git a/plugins/rainlab/builder/widgets/controllerlist/partials/_toolbar.php b/plugins/rainlab/builder/widgets/controllerlist/partials/_toolbar.htm
similarity index 100%
rename from plugins/rainlab/builder/widgets/controllerlist/partials/_toolbar.php
rename to plugins/rainlab/builder/widgets/controllerlist/partials/_toolbar.htm
diff --git a/plugins/rainlab/builder/widgets/controllerlist/partials/_widget-contents.php b/plugins/rainlab/builder/widgets/controllerlist/partials/_widget-contents.htm
similarity index 100%
rename from plugins/rainlab/builder/widgets/controllerlist/partials/_widget-contents.php
rename to plugins/rainlab/builder/widgets/controllerlist/partials/_widget-contents.htm
diff --git a/plugins/rainlab/builder/widgets/databasetablelist/partials/_body.php b/plugins/rainlab/builder/widgets/databasetablelist/partials/_body.htm
similarity index 100%
rename from plugins/rainlab/builder/widgets/databasetablelist/partials/_body.php
rename to plugins/rainlab/builder/widgets/databasetablelist/partials/_body.htm
diff --git a/plugins/rainlab/builder/widgets/databasetablelist/partials/_items.php b/plugins/rainlab/builder/widgets/databasetablelist/partials/_items.htm
similarity index 100%
rename from plugins/rainlab/builder/widgets/databasetablelist/partials/_items.php
rename to plugins/rainlab/builder/widgets/databasetablelist/partials/_items.htm
diff --git a/plugins/rainlab/builder/widgets/databasetablelist/partials/_table-list.php b/plugins/rainlab/builder/widgets/databasetablelist/partials/_table-list.htm
similarity index 100%
rename from plugins/rainlab/builder/widgets/databasetablelist/partials/_table-list.php
rename to plugins/rainlab/builder/widgets/databasetablelist/partials/_table-list.htm
diff --git a/plugins/rainlab/builder/widgets/databasetablelist/partials/_toolbar.php b/plugins/rainlab/builder/widgets/databasetablelist/partials/_toolbar.htm
similarity index 100%
rename from plugins/rainlab/builder/widgets/databasetablelist/partials/_toolbar.php
rename to plugins/rainlab/builder/widgets/databasetablelist/partials/_toolbar.htm
diff --git a/plugins/rainlab/builder/widgets/databasetablelist/partials/_widget-contents.php b/plugins/rainlab/builder/widgets/databasetablelist/partials/_widget-contents.htm
similarity index 100%
rename from plugins/rainlab/builder/widgets/databasetablelist/partials/_widget-contents.php
rename to plugins/rainlab/builder/widgets/databasetablelist/partials/_widget-contents.htm
diff --git a/plugins/rainlab/builder/widgets/defaultbehaviordesigntimeprovider/partials/_behavior-form-controller.php b/plugins/rainlab/builder/widgets/defaultbehaviordesigntimeprovider/partials/_behavior-form-controller.htm
similarity index 100%
rename from plugins/rainlab/builder/widgets/defaultbehaviordesigntimeprovider/partials/_behavior-form-controller.php
rename to plugins/rainlab/builder/widgets/defaultbehaviordesigntimeprovider/partials/_behavior-form-controller.htm
diff --git a/plugins/rainlab/builder/widgets/defaultbehaviordesigntimeprovider/partials/_behavior-import-export-controller.php b/plugins/rainlab/builder/widgets/defaultbehaviordesigntimeprovider/partials/_behavior-import-export-controller.php
deleted file mode 100644
index bee9d63..0000000
--- a/plugins/rainlab/builder/widgets/defaultbehaviordesigntimeprovider/partials/_behavior-import-export-controller.php
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/plugins/rainlab/builder/widgets/defaultbehaviordesigntimeprovider/partials/_behavior-list-controller.htm b/plugins/rainlab/builder/widgets/defaultbehaviordesigntimeprovider/partials/_behavior-list-controller.htm
new file mode 100644
index 0000000..803e47d
--- /dev/null
+++ b/plugins/rainlab/builder/widgets/defaultbehaviordesigntimeprovider/partials/_behavior-list-controller.htm
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/plugins/rainlab/builder/widgets/defaultbehaviordesigntimeprovider/partials/_behavior-list-controller.php b/plugins/rainlab/builder/widgets/defaultbehaviordesigntimeprovider/partials/_behavior-list-controller.php
deleted file mode 100644
index e2b1bd2..0000000
--- a/plugins/rainlab/builder/widgets/defaultbehaviordesigntimeprovider/partials/_behavior-list-controller.php
+++ /dev/null
@@ -1,41 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/plugins/rainlab/builder/widgets/defaultbehaviordesigntimeprovider/partials/_behavior-reorder-controller.htm b/plugins/rainlab/builder/widgets/defaultbehaviordesigntimeprovider/partials/_behavior-reorder-controller.htm
new file mode 100644
index 0000000..09c00eb
--- /dev/null
+++ b/plugins/rainlab/builder/widgets/defaultbehaviordesigntimeprovider/partials/_behavior-reorder-controller.htm
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/plugins/rainlab/builder/widgets/defaultbehaviordesigntimeprovider/partials/_behavior-unknown.php b/plugins/rainlab/builder/widgets/defaultbehaviordesigntimeprovider/partials/_behavior-unknown.htm
similarity index 100%
rename from plugins/rainlab/builder/widgets/defaultbehaviordesigntimeprovider/partials/_behavior-unknown.php
rename to plugins/rainlab/builder/widgets/defaultbehaviordesigntimeprovider/partials/_behavior-unknown.htm
diff --git a/plugins/rainlab/builder/widgets/defaultblueprintdesigntimeprovider/partials/_blueprint-entry.php b/plugins/rainlab/builder/widgets/defaultblueprintdesigntimeprovider/partials/_blueprint-entry.php
deleted file mode 100644
index f900cf3..0000000
--- a/plugins/rainlab/builder/widgets/defaultblueprintdesigntimeprovider/partials/_blueprint-entry.php
+++ /dev/null
@@ -1,51 +0,0 @@
-
-
\ No newline at end of file
diff --git a/plugins/rainlab/builder/widgets/defaultcontroldesigntimeprovider/partials/_control-datepicker.php b/plugins/rainlab/builder/widgets/defaultcontroldesigntimeprovider/partials/_control-datepicker.htm
similarity index 100%
rename from plugins/rainlab/builder/widgets/defaultcontroldesigntimeprovider/partials/_control-datepicker.php
rename to plugins/rainlab/builder/widgets/defaultcontroldesigntimeprovider/partials/_control-datepicker.htm
diff --git a/plugins/rainlab/builder/widgets/defaultcontroldesigntimeprovider/partials/_control-dropdown.php b/plugins/rainlab/builder/widgets/defaultcontroldesigntimeprovider/partials/_control-dropdown.htm
similarity index 100%
rename from plugins/rainlab/builder/widgets/defaultcontroldesigntimeprovider/partials/_control-dropdown.php
rename to plugins/rainlab/builder/widgets/defaultcontroldesigntimeprovider/partials/_control-dropdown.htm
diff --git a/plugins/rainlab/builder/widgets/defaultcontroldesigntimeprovider/partials/_control-email.php b/plugins/rainlab/builder/widgets/defaultcontroldesigntimeprovider/partials/_control-email.php
deleted file mode 100644
index 557f21c..0000000
--- a/plugins/rainlab/builder/widgets/defaultcontroldesigntimeprovider/partials/_control-email.php
+++ /dev/null
@@ -1,3 +0,0 @@
-
\ No newline at end of file
diff --git a/plugins/rainlab/builder/widgets/defaultcontroldesigntimeprovider/partials/_control-fileupload.php b/plugins/rainlab/builder/widgets/defaultcontroldesigntimeprovider/partials/_control-fileupload.htm
similarity index 100%
rename from plugins/rainlab/builder/widgets/defaultcontroldesigntimeprovider/partials/_control-fileupload.php
rename to plugins/rainlab/builder/widgets/defaultcontroldesigntimeprovider/partials/_control-fileupload.htm
diff --git a/plugins/rainlab/builder/widgets/defaultcontroldesigntimeprovider/partials/_control-hint.php b/plugins/rainlab/builder/widgets/defaultcontroldesigntimeprovider/partials/_control-hint.htm
similarity index 100%
rename from plugins/rainlab/builder/widgets/defaultcontroldesigntimeprovider/partials/_control-hint.php
rename to plugins/rainlab/builder/widgets/defaultcontroldesigntimeprovider/partials/_control-hint.htm
diff --git a/plugins/rainlab/builder/widgets/defaultcontroldesigntimeprovider/partials/_control-markdown.php b/plugins/rainlab/builder/widgets/defaultcontroldesigntimeprovider/partials/_control-markdown.htm
similarity index 100%
rename from plugins/rainlab/builder/widgets/defaultcontroldesigntimeprovider/partials/_control-markdown.php
rename to plugins/rainlab/builder/widgets/defaultcontroldesigntimeprovider/partials/_control-markdown.htm
diff --git a/plugins/rainlab/builder/widgets/defaultcontroldesigntimeprovider/partials/_control-mediafinder.php b/plugins/rainlab/builder/widgets/defaultcontroldesigntimeprovider/partials/_control-mediafinder.htm
similarity index 100%
rename from plugins/rainlab/builder/widgets/defaultcontroldesigntimeprovider/partials/_control-mediafinder.php
rename to plugins/rainlab/builder/widgets/defaultcontroldesigntimeprovider/partials/_control-mediafinder.htm
diff --git a/plugins/rainlab/builder/widgets/defaultcontroldesigntimeprovider/partials/_control-nestedform.php b/plugins/rainlab/builder/widgets/defaultcontroldesigntimeprovider/partials/_control-nestedform.php
deleted file mode 100644
index 2b947a8..0000000
--- a/plugins/rainlab/builder/widgets/defaultcontroldesigntimeprovider/partials/_control-nestedform.php
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/plugins/rainlab/builder/widgets/defaultcontroldesigntimeprovider/partials/_control-number.php b/plugins/rainlab/builder/widgets/defaultcontroldesigntimeprovider/partials/_control-number.htm
similarity index 100%
rename from plugins/rainlab/builder/widgets/defaultcontroldesigntimeprovider/partials/_control-number.php
rename to plugins/rainlab/builder/widgets/defaultcontroldesigntimeprovider/partials/_control-number.htm
diff --git a/plugins/rainlab/builder/widgets/defaultcontroldesigntimeprovider/partials/_control-pagefinder.php b/plugins/rainlab/builder/widgets/defaultcontroldesigntimeprovider/partials/_control-pagefinder.php
deleted file mode 100644
index d6930b6..0000000
--- a/plugins/rainlab/builder/widgets/defaultcontroldesigntimeprovider/partials/_control-pagefinder.php
+++ /dev/null
@@ -1,3 +0,0 @@
-
diff --git a/plugins/rainlab/builder/widgets/defaultcontroldesigntimeprovider/partials/_control-nestedform-static.php b/plugins/rainlab/builder/widgets/defaultcontroldesigntimeprovider/partials/_control-static-repeater.htm
similarity index 100%
rename from plugins/rainlab/builder/widgets/defaultcontroldesigntimeprovider/partials/_control-nestedform-static.php
rename to plugins/rainlab/builder/widgets/defaultcontroldesigntimeprovider/partials/_control-static-repeater.htm
diff --git a/plugins/rainlab/builder/widgets/defaultcontroldesigntimeprovider/partials/_control-switch.php b/plugins/rainlab/builder/widgets/defaultcontroldesigntimeprovider/partials/_control-switch.htm
similarity index 100%
rename from plugins/rainlab/builder/widgets/defaultcontroldesigntimeprovider/partials/_control-switch.php
rename to plugins/rainlab/builder/widgets/defaultcontroldesigntimeprovider/partials/_control-switch.htm
diff --git a/plugins/rainlab/builder/widgets/defaultcontroldesigntimeprovider/partials/_control-taglist.php b/plugins/rainlab/builder/widgets/defaultcontroldesigntimeprovider/partials/_control-taglist.htm
similarity index 100%
rename from plugins/rainlab/builder/widgets/defaultcontroldesigntimeprovider/partials/_control-taglist.php
rename to plugins/rainlab/builder/widgets/defaultcontroldesigntimeprovider/partials/_control-taglist.htm
diff --git a/plugins/rainlab/builder/widgets/defaultcontroldesigntimeprovider/partials/_control-text.php b/plugins/rainlab/builder/widgets/defaultcontroldesigntimeprovider/partials/_control-text.htm
similarity index 100%
rename from plugins/rainlab/builder/widgets/defaultcontroldesigntimeprovider/partials/_control-text.php
rename to plugins/rainlab/builder/widgets/defaultcontroldesigntimeprovider/partials/_control-text.htm
diff --git a/plugins/rainlab/builder/widgets/defaultcontroldesigntimeprovider/partials/_control-textarea.php b/plugins/rainlab/builder/widgets/defaultcontroldesigntimeprovider/partials/_control-textarea.htm
similarity index 100%
rename from plugins/rainlab/builder/widgets/defaultcontroldesigntimeprovider/partials/_control-textarea.php
rename to plugins/rainlab/builder/widgets/defaultcontroldesigntimeprovider/partials/_control-textarea.htm
diff --git a/plugins/rainlab/builder/widgets/defaultcontroldesigntimeprovider/partials/_control-unknowncontrol.php b/plugins/rainlab/builder/widgets/defaultcontroldesigntimeprovider/partials/_control-unknowncontrol.htm
similarity index 100%
rename from plugins/rainlab/builder/widgets/defaultcontroldesigntimeprovider/partials/_control-unknowncontrol.php
rename to plugins/rainlab/builder/widgets/defaultcontroldesigntimeprovider/partials/_control-unknowncontrol.htm
diff --git a/plugins/rainlab/builder/widgets/languagelist/partials/_body.php b/plugins/rainlab/builder/widgets/languagelist/partials/_body.htm
similarity index 100%
rename from plugins/rainlab/builder/widgets/languagelist/partials/_body.php
rename to plugins/rainlab/builder/widgets/languagelist/partials/_body.htm
diff --git a/plugins/rainlab/builder/widgets/languagelist/partials/_items.php b/plugins/rainlab/builder/widgets/languagelist/partials/_items.htm
similarity index 100%
rename from plugins/rainlab/builder/widgets/languagelist/partials/_items.php
rename to plugins/rainlab/builder/widgets/languagelist/partials/_items.htm
diff --git a/plugins/rainlab/builder/widgets/languagelist/partials/_language-list.php b/plugins/rainlab/builder/widgets/languagelist/partials/_language-list.htm
similarity index 100%
rename from plugins/rainlab/builder/widgets/languagelist/partials/_language-list.php
rename to plugins/rainlab/builder/widgets/languagelist/partials/_language-list.htm
diff --git a/plugins/rainlab/builder/widgets/languagelist/partials/_toolbar.php b/plugins/rainlab/builder/widgets/languagelist/partials/_toolbar.htm
similarity index 100%
rename from plugins/rainlab/builder/widgets/languagelist/partials/_toolbar.php
rename to plugins/rainlab/builder/widgets/languagelist/partials/_toolbar.htm
diff --git a/plugins/rainlab/builder/widgets/languagelist/partials/_widget-contents.php b/plugins/rainlab/builder/widgets/languagelist/partials/_widget-contents.htm
similarity index 100%
rename from plugins/rainlab/builder/widgets/languagelist/partials/_widget-contents.php
rename to plugins/rainlab/builder/widgets/languagelist/partials/_widget-contents.htm
diff --git a/plugins/rainlab/builder/widgets/modellist/partials/_body.php b/plugins/rainlab/builder/widgets/modellist/partials/_body.htm
similarity index 100%
rename from plugins/rainlab/builder/widgets/modellist/partials/_body.php
rename to plugins/rainlab/builder/widgets/modellist/partials/_body.htm
diff --git a/plugins/rainlab/builder/widgets/modellist/partials/_items.php b/plugins/rainlab/builder/widgets/modellist/partials/_items.htm
similarity index 100%
rename from plugins/rainlab/builder/widgets/modellist/partials/_items.php
rename to plugins/rainlab/builder/widgets/modellist/partials/_items.htm
diff --git a/plugins/rainlab/builder/widgets/modellist/partials/_model-list.php b/plugins/rainlab/builder/widgets/modellist/partials/_model-list.htm
similarity index 100%
rename from plugins/rainlab/builder/widgets/modellist/partials/_model-list.php
rename to plugins/rainlab/builder/widgets/modellist/partials/_model-list.htm
diff --git a/plugins/rainlab/builder/widgets/modellist/partials/_toolbar.php b/plugins/rainlab/builder/widgets/modellist/partials/_toolbar.htm
similarity index 100%
rename from plugins/rainlab/builder/widgets/modellist/partials/_toolbar.php
rename to plugins/rainlab/builder/widgets/modellist/partials/_toolbar.htm
diff --git a/plugins/rainlab/builder/widgets/modellist/partials/_widget-contents.php b/plugins/rainlab/builder/widgets/modellist/partials/_widget-contents.htm
similarity index 100%
rename from plugins/rainlab/builder/widgets/modellist/partials/_widget-contents.php
rename to plugins/rainlab/builder/widgets/modellist/partials/_widget-contents.htm
diff --git a/plugins/rainlab/builder/widgets/pluginlist/partials/_body.php b/plugins/rainlab/builder/widgets/pluginlist/partials/_body.htm
similarity index 100%
rename from plugins/rainlab/builder/widgets/pluginlist/partials/_body.php
rename to plugins/rainlab/builder/widgets/pluginlist/partials/_body.htm
diff --git a/plugins/rainlab/builder/widgets/pluginlist/partials/_items.php b/plugins/rainlab/builder/widgets/pluginlist/partials/_items.htm
similarity index 100%
rename from plugins/rainlab/builder/widgets/pluginlist/partials/_items.php
rename to plugins/rainlab/builder/widgets/pluginlist/partials/_items.htm
diff --git a/plugins/rainlab/builder/widgets/pluginlist/partials/_plugin-list.php b/plugins/rainlab/builder/widgets/pluginlist/partials/_plugin-list.htm
similarity index 100%
rename from plugins/rainlab/builder/widgets/pluginlist/partials/_plugin-list.php
rename to plugins/rainlab/builder/widgets/pluginlist/partials/_plugin-list.htm
diff --git a/plugins/rainlab/builder/widgets/pluginlist/partials/_toolbar-buttons.php b/plugins/rainlab/builder/widgets/pluginlist/partials/_toolbar-buttons.htm
similarity index 100%
rename from plugins/rainlab/builder/widgets/pluginlist/partials/_toolbar-buttons.php
rename to plugins/rainlab/builder/widgets/pluginlist/partials/_toolbar-buttons.htm
diff --git a/plugins/rainlab/builder/widgets/pluginlist/partials/_toolbar.php b/plugins/rainlab/builder/widgets/pluginlist/partials/_toolbar.htm
similarity index 100%
rename from plugins/rainlab/builder/widgets/pluginlist/partials/_toolbar.php
rename to plugins/rainlab/builder/widgets/pluginlist/partials/_toolbar.htm
diff --git a/plugins/rainlab/builder/widgets/versionlist/partials/_body.php b/plugins/rainlab/builder/widgets/versionlist/partials/_body.htm
similarity index 100%
rename from plugins/rainlab/builder/widgets/versionlist/partials/_body.php
rename to plugins/rainlab/builder/widgets/versionlist/partials/_body.htm
diff --git a/plugins/rainlab/builder/widgets/versionlist/partials/_items.php b/plugins/rainlab/builder/widgets/versionlist/partials/_items.htm
similarity index 100%
rename from plugins/rainlab/builder/widgets/versionlist/partials/_items.php
rename to plugins/rainlab/builder/widgets/versionlist/partials/_items.htm
diff --git a/plugins/rainlab/builder/widgets/versionlist/partials/_sort.php b/plugins/rainlab/builder/widgets/versionlist/partials/_sort.htm
similarity index 100%
rename from plugins/rainlab/builder/widgets/versionlist/partials/_sort.php
rename to plugins/rainlab/builder/widgets/versionlist/partials/_sort.htm
diff --git a/plugins/rainlab/builder/widgets/versionlist/partials/_toolbar.php b/plugins/rainlab/builder/widgets/versionlist/partials/_toolbar.htm
similarity index 100%
rename from plugins/rainlab/builder/widgets/versionlist/partials/_toolbar.php
rename to plugins/rainlab/builder/widgets/versionlist/partials/_toolbar.htm
diff --git a/plugins/rainlab/builder/widgets/versionlist/partials/_version-list.php b/plugins/rainlab/builder/widgets/versionlist/partials/_version-list.htm
similarity index 100%
rename from plugins/rainlab/builder/widgets/versionlist/partials/_version-list.php
rename to plugins/rainlab/builder/widgets/versionlist/partials/_version-list.htm
diff --git a/plugins/rainlab/builder/widgets/versionlist/partials/_widget-contents.php b/plugins/rainlab/builder/widgets/versionlist/partials/_widget-contents.htm
similarity index 100%
rename from plugins/rainlab/builder/widgets/versionlist/partials/_widget-contents.php
rename to plugins/rainlab/builder/widgets/versionlist/partials/_widget-contents.htm
diff --git a/plugins/rainlab/builder/models/pluginbasemodel/templates/plugin.php.tpl b/plugins/romanah/bagisto/Plugin.php
old mode 100644
new mode 100755
similarity index 91%
rename from plugins/rainlab/builder/models/pluginbasemodel/templates/plugin.php.tpl
rename to plugins/romanah/bagisto/Plugin.php
index 9f41fa4..4222c8f
--- a/plugins/rainlab/builder/models/pluginbasemodel/templates/plugin.php.tpl
+++ b/plugins/romanah/bagisto/Plugin.php
@@ -1,4 +1,4 @@
- [
+ 'name' => 'Bagisto',
+ 'description' => ''
+ ]
+];
\ No newline at end of file
diff --git a/plugins/romanah/bagisto/plugin.yaml b/plugins/romanah/bagisto/plugin.yaml
new file mode 100755
index 0000000..e2bf5b9
--- /dev/null
+++ b/plugins/romanah/bagisto/plugin.yaml
@@ -0,0 +1,6 @@
+plugin:
+ name: 'romanah.bagisto::lang.plugin.name'
+ description: 'romanah.bagisto::lang.plugin.description'
+ author: Romanah
+ icon: oc-icon-cart-plus
+ homepage: ''
diff --git a/plugins/rainlab/builder/models/pluginbasemodel/templates/version.yaml.tpl b/plugins/romanah/bagisto/updates/version.yaml
old mode 100644
new mode 100755
similarity index 100%
rename from plugins/rainlab/builder/models/pluginbasemodel/templates/version.yaml.tpl
rename to plugins/romanah/bagisto/updates/version.yaml