Merge remote-tracking branch 'origin/3.1'

This commit is contained in:
Ingo Schommer 2013-06-19 11:17:33 +02:00
commit 94b4237372
152 changed files with 5897 additions and 3392 deletions

40
admin/code/CMSForm.php Normal file
View File

@ -0,0 +1,40 @@
<?php
/**
* Deals with special form handling in CMS, mainly around {@link PjaxResponseNegotiator}
*/
class CMSForm extends Form {
/**
* Route validation error responses through response negotiator,
* so they return the correct markup as expected by the requesting client.
*/
protected function getValidationErrorResponse() {
$request = $this->getRequest();
$negotiator = $this->getResponseNegotiator();
if($request->isAjax() && $negotiator) {
$negotiator->setResponse(new SS_HTTPResponse($this));
return $negotiator->respond($request);
} else {
return parent::getValidationErrorResponse();
}
}
/**
* Sets the response negotiator
* @param ResponseNegotiator $negotiator The response negotiator to use
* @return Form The current form
*/
public function setResponseNegotiator($negotiator) {
$this->responseNegotiator = $negotiator;
return $this;
}
/**
* Gets the current response negotiator
* @return ResponseNegotiator|null
*/
public function getResponseNegotiator() {
return $this->responseNegotiator;
}
}

View File

@ -23,6 +23,7 @@ class CMSProfileController extends LeftAndMain {
$form = parent::getEditForm($id, $fields); $form = parent::getEditForm($id, $fields);
if($form instanceof SS_HTTPResponse) return $form; if($form instanceof SS_HTTPResponse) return $form;
$form->Fields()->removeByName('LastVisited');
$form->Fields()->push(new HiddenField('ID', null, Member::currentUserID())); $form->Fields()->push(new HiddenField('ID', null, Member::currentUserID()));
$form->Actions()->push( $form->Actions()->push(
FormAction::create('save',_t('CMSMain.SAVE', 'Save')) FormAction::create('save',_t('CMSMain.SAVE', 'Save'))

View File

@ -378,29 +378,58 @@ class LeftAndMain extends Controller implements PermissionProvider {
$ie = isset($_SERVER['HTTP_USER_AGENT']) ? strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') : false; $ie = isset($_SERVER['HTTP_USER_AGENT']) ? strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') : false;
if($ie) { if($ie) {
$version = substr($_SERVER['HTTP_USER_AGENT'], $ie + 5, 3); $version = substr($_SERVER['HTTP_USER_AGENT'], $ie + 5, 3);
if($version == 7) Requirements::css(FRAMEWORK_ADMIN_DIR . '/css/ie7.css');
else if($version == 8) Requirements::css(FRAMEWORK_ADMIN_DIR . '/css/ie8.css'); if($version == 7) {
Requirements::css(FRAMEWORK_ADMIN_DIR . '/css/ie7.css');
} else if($version == 8) {
Requirements::css(FRAMEWORK_ADMIN_DIR . '/css/ie8.css');
}
} }
// Custom requirements // Custom requirements
$extraJs = $this->stat('extra_requirements_javascript'); $extraJs = $this->stat('extra_requirements_javascript');
if($extraJs) foreach($extraJs as $file => $config) { if($extraJs) {
Requirements::javascript($file); foreach($extraJs as $file => $config) {
if(is_numeric($file)) {
$file = $config;
}
Requirements::javascript($file);
}
} }
$extraCss = $this->stat('extra_requirements_css'); $extraCss = $this->stat('extra_requirements_css');
if($extraCss) foreach($extraCss as $file => $config) {
Requirements::css($file, isset($config['media']) ? $config['media'] : null); if($extraCss) {
foreach($extraCss as $file => $config) {
if(is_numeric($file)) {
$file = $config;
$config = array();
}
Requirements::css($file, isset($config['media']) ? $config['media'] : null);
}
} }
$extraThemedCss = $this->stat('extra_requirements_themedCss'); $extraThemedCss = $this->stat('extra_requirements_themedCss');
if($extraThemedCss) foreach ($extraThemedCss as $file => $config) {
Requirements::themedCSS($file, isset($config['media']) ? $config['media'] : null); if($extraThemedCss) {
foreach ($extraThemedCss as $file => $config) {
if(is_numeric($file)) {
$file = $config;
$config = array();
}
Requirements::themedCSS($file, isset($config['media']) ? $config['media'] : null);
}
} }
$dummy = null; $dummy = null;
$this->extend('init', $dummy); $this->extend('init', $dummy);
// The user's theme shouldn't affect the CMS, if, for example, they have replaced TableListField.ss or Form.ss. // The user's theme shouldn't affect the CMS, if, for example, they have
// replaced TableListField.ss or Form.ss.
Config::inst()->update('SSViewer', 'theme_enabled', false); Config::inst()->update('SSViewer', 'theme_enabled', false);
} }
@ -1182,7 +1211,10 @@ class LeftAndMain extends Controller implements PermissionProvider {
$actionsFlattened = $actions->dataFields(); $actionsFlattened = $actions->dataFields();
if($actionsFlattened) foreach($actionsFlattened as $action) $action->setUseButtonTag(true); if($actionsFlattened) foreach($actionsFlattened as $action) $action->setUseButtonTag(true);
$form = new Form($this, "EditForm", $fields, $actions); $form = CMSForm::create(
$this, "EditForm", $fields, $actions
)->setHTMLID('Form_EditForm');
$form->setResponseNegotiator($this->getResponseNegotiator());
$form->addExtraClass('cms-edit-form'); $form->addExtraClass('cms-edit-form');
$form->loadDataFrom($record); $form->loadDataFrom($record);
$form->setTemplate($this->getTemplatesWithSuffix('_EditForm')); $form->setTemplate($this->getTemplatesWithSuffix('_EditForm'));
@ -1235,7 +1267,7 @@ class LeftAndMain extends Controller implements PermissionProvider {
* @return Form * @return Form
*/ */
public function EmptyForm() { public function EmptyForm() {
$form = new Form( $form = CMSForm::create(
$this, $this,
"EditForm", "EditForm",
new FieldList( new FieldList(
@ -1253,7 +1285,8 @@ class LeftAndMain extends Controller implements PermissionProvider {
// ) // )
), ),
new FieldList() new FieldList()
); )->setHTMLID('Form_EditForm');
$form->setResponseNegotiator($this->getResponseNegotiator());
$form->unsetValidator(); $form->unsetValidator();
$form->addExtraClass('cms-edit-form'); $form->addExtraClass('cms-edit-form');
$form->addExtraClass('root-form'); $form->addExtraClass('root-form');

View File

@ -138,12 +138,13 @@ abstract class ModelAdmin extends LeftAndMain {
$listField->getConfig()->getComponentByType('GridFieldDetailForm')->setValidator($detailValidator); $listField->getConfig()->getComponentByType('GridFieldDetailForm')->setValidator($detailValidator);
} }
$form = new Form( $form = CMSForm::create(
$this, $this,
'EditForm', 'EditForm',
new FieldList($listField), new FieldList($listField),
new FieldList() new FieldList()
); )->setHTMLID('Form_EditForm');
$form->setResponseNegotiator($this->getResponseNegotiator());
$form->addExtraClass('cms-edit-form cms-panel-padded center'); $form->addExtraClass('cms-edit-form cms-panel-padded center');
$form->setTemplate($this->getTemplatesWithSuffix('_EditForm')); $form->setTemplate($this->getTemplatesWithSuffix('_EditForm'));
$editFormAction = Controller::join_links($this->Link($this->sanitiseClassName($this->modelClass)), 'EditForm'); $editFormAction = Controller::join_links($this->Link($this->sanitiseClassName($this->modelClass)), 'EditForm');

View File

@ -154,12 +154,13 @@ class SecurityAdmin extends LeftAndMain implements PermissionProvider {
$actions = new FieldList(); $actions = new FieldList();
$form = new Form( $form = CMSForm::create(
$this, $this,
'EditForm', 'EditForm',
$fields, $fields,
$actions $actions
); )->setHTMLID('Form_EditForm');
$form->setResponseNegotiator($this->getResponseNegotiator());
$form->addExtraClass('cms-edit-form'); $form->addExtraClass('cms-edit-form');
$form->setTemplate($this->getTemplatesWithSuffix('_EditForm')); $form->setTemplate($this->getTemplatesWithSuffix('_EditForm'));
// Tab nav in CMS is rendered through separate template // Tab nav in CMS is rendered through separate template

View File

@ -149,8 +149,8 @@ form.nostyle label.left { float: none; display: inherit; width: auto; padding: 0
form.nostyle .middleColumn { margin-left: 0; } form.nostyle .middleColumn { margin-left: 0; }
form.nostyle input.text, form.nostyle textarea, form.nostyle select, form.nostyle .TreeDropdownField { width: auto; max-width: auto; } form.nostyle input.text, form.nostyle textarea, form.nostyle select, form.nostyle .TreeDropdownField { width: auto; max-width: auto; }
.field { display: block; border-bottom: 1px solid #d0d3d5; -webkit-box-shadow: 0 1px 0 rgba(245, 245, 245, 0.8); -moz-box-shadow: 0 1px 0 rgba(245, 245, 245, 0.8); box-shadow: 0 1px 0 rgba(245, 245, 245, 0.8); padding: 0 0 7px 0; margin: 0 0 8px 0; *zoom: 1; } .field { display: block; border-bottom: 1px solid #d0d3d5; -webkit-box-shadow: 0 1px 0 rgba(245, 245, 245, 0.8); -moz-box-shadow: 0 1px 0 rgba(245, 245, 245, 0.8); box-shadow: 0 1px 0 rgba(245, 245, 245, 0.8); padding: 0 0 7px 0; margin: 8px 0; *zoom: 1; }
.field:last-child { border-bottom: none; -webkit-box-shadow: none; -moz-box-shadow: none; box-shadow: none; } .field.noborder, .field:last-child { padding-bottom: 0; border-bottom: none; -webkit-box-shadow: none; -moz-box-shadow: none; box-shadow: none; }
.field:after { content: "\0020"; display: block; height: 0; clear: both; overflow: hidden; visibility: hidden; } .field:after { content: "\0020"; display: block; height: 0; clear: both; overflow: hidden; visibility: hidden; }
.field.nolabel .middleColumn { margin-left: 0; } .field.nolabel .middleColumn { margin-left: 0; }
.field.nolabel .description { margin-left: 0; } .field.nolabel .description { margin-left: 0; }
@ -160,7 +160,7 @@ form.nostyle input.text, form.nostyle textarea, form.nostyle select, form.nostyl
.field .middleColumn { margin-left: 184px; } .field .middleColumn { margin-left: 184px; }
.field span.readonly { padding-top: 8px; line-height: 16px; display: block; } .field span.readonly { padding-top: 8px; line-height: 16px; display: block; }
.field .fieldgroup .fieldgroup-field.last { /* This is used on page/settings/visibility */ padding-bottom: 8px; /* replicates li item spacing */ } .field .fieldgroup .fieldgroup-field.last { /* This is used on page/settings/visibility */ padding-bottom: 8px; /* replicates li item spacing */ }
.field .description { clear: both; color: #777777; display: block; font-style: italic; margin: 4px 0 0 184px; } .field .description { clear: both; color: #777777; display: block; font-style: italic; line-height: 16px; margin: 4px 0 0 184px; }
.field.checkbox .description, .field.ss-gridfield .description { margin-left: 0; } .field.checkbox .description, .field.ss-gridfield .description { margin-left: 0; }
.field input.text, .field textarea, .field select, .field .TreeDropdownField { margin-left: 10px; width: 100%; max-width: 512px; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; } .field input.text, .field textarea, .field select, .field .TreeDropdownField { margin-left: 10px; width: 100%; max-width: 512px; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; }
.field input.text.description, .field textarea.description, .field select.description, .field .TreeDropdownField.description { margin: 0; } .field input.text.description, .field textarea.description, .field select.description, .field .TreeDropdownField.description { margin: 0; }
@ -188,7 +188,7 @@ form.small .field input.text, form.small .field textarea, form.small .field sele
.field .chzn-container .chzn-results li { font-size: 11px; line-height: 16px; padding: 4px 4px; } .field .chzn-container .chzn-results li { font-size: 11px; line-height: 16px; padding: 4px 4px; }
.field .chzn-container-active .chzn-single { border: 1px solid #9a9a9a; } .field .chzn-container-active .chzn-single { border: 1px solid #9a9a9a; }
.field .chzn-container-single .chzn-single { height: 26px; line-height: 26px; /* not relative, as then we'd had to redo most of chzn */ font-size: 12px; background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjUwJSIgeTE9IjAlIiB4Mj0iNTAlIiB5Mj0iMTAwJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2VmZWZlZiIvPjxzdG9wIG9mZnNldD0iMTAlIiBzdG9wLWNvbG9yPSIjZmZmZmZmIi8+PHN0b3Agb2Zmc2V0PSI5MCUiIHN0b3AtY29sb3I9IiNmZmZmZmYiLz48c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiNlZmVmZWYiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBmaWxsPSJ1cmwoI2dyYWQpIiAvPjwvc3ZnPiA='); background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #efefef), color-stop(10%, #ffffff), color-stop(90%, #ffffff), color-stop(100%, #efefef)); background-image: -webkit-linear-gradient(#efefef, #ffffff 10%, #ffffff 90%, #efefef); background-image: -moz-linear-gradient(#efefef, #ffffff 10%, #ffffff 90%, #efefef); background-image: -o-linear-gradient(#efefef, #ffffff 10%, #ffffff 90%, #efefef); background-image: linear-gradient(#efefef, #ffffff 10%, #ffffff 90%, #efefef); } .field .chzn-container-single .chzn-single { height: 26px; line-height: 26px; /* not relative, as then we'd had to redo most of chzn */ font-size: 12px; background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjUwJSIgeTE9IjAlIiB4Mj0iNTAlIiB5Mj0iMTAwJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2VmZWZlZiIvPjxzdG9wIG9mZnNldD0iMTAlIiBzdG9wLWNvbG9yPSIjZmZmZmZmIi8+PHN0b3Agb2Zmc2V0PSI5MCUiIHN0b3AtY29sb3I9IiNmZmZmZmYiLz48c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiNlZmVmZWYiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBmaWxsPSJ1cmwoI2dyYWQpIiAvPjwvc3ZnPiA='); background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #efefef), color-stop(10%, #ffffff), color-stop(90%, #ffffff), color-stop(100%, #efefef)); background-image: -webkit-linear-gradient(#efefef, #ffffff 10%, #ffffff 90%, #efefef); background-image: -moz-linear-gradient(#efefef, #ffffff 10%, #ffffff 90%, #efefef); background-image: -o-linear-gradient(#efefef, #ffffff 10%, #ffffff 90%, #efefef); background-image: linear-gradient(#efefef, #ffffff 10%, #ffffff 90%, #efefef); }
.field .chzn-container-single .chzn-single:hover, .field .chzn-container-single .chzn-single:focus, .field .chzn-container-single .chzn-single:active { text-decoration: none; outline: none; } .field .chzn-container-single .chzn-single:hover, .field .chzn-container-single .chzn-single:focus, .field .chzn-container-single .chzn-single:active { text-decoration: none; }
.field .chzn-container-single .chzn-single div { width: 24px; } .field .chzn-container-single .chzn-single div { width: 24px; }
.field .chzn-container-single .chzn-single div b { background-position: 4px 0px; } .field .chzn-container-single .chzn-single div b { background-position: 4px 0px; }
.field .chzn-choices { -webkit-border-radius: 3px; -moz-border-radius: 3px; -ms-border-radius: 3px; -o-border-radius: 3px; border-radius: 3px; } .field .chzn-choices { -webkit-border-radius: 3px; -moz-border-radius: 3px; -ms-border-radius: 3px; -o-border-radius: 3px; border-radius: 3px; }
@ -361,12 +361,13 @@ body.cms { overflow: hidden; }
.cms-preview, .cms-menu, .cms-content, .cms-content-header, .cms-content-tools, .cms-content-fields, .cms-edit-form, .cms-preview, .cms-preview iframe, .cms-preview-controls { display: -moz-inline-stack; display: inline-block; vertical-align: middle; *vertical-align: auto; zoom: 1; *display: inline; } .cms-preview, .cms-menu, .cms-content, .cms-content-header, .cms-content-tools, .cms-content-fields, .cms-edit-form, .cms-preview, .cms-preview iframe, .cms-preview-controls { display: -moz-inline-stack; display: inline-block; vertical-align: middle; *vertical-align: auto; zoom: 1; *display: inline; }
.cms-content-header { padding-left: 16px; z-index: 60; min-height: 40px; background-image: url(../images/textures/cms_content_header.png); background-repeat: repeat; background-position: left bottom; } .cms-content-header { padding-left: 16px; z-index: 60; min-height: 40px; background-image: url(../images/textures/cms_content_header.png); background-repeat: repeat; background-position: left bottom; background-color: #d4d6d8; }
.cms-content-header .cms-content-header-info *, .cms-content-header .cms-content-header-tabs * { display: -moz-inline-stack; display: inline-block; vertical-align: middle; *vertical-align: auto; zoom: 1; *display: inline; }
.cms-content-header a { color: #0073c1; } .cms-content-header a { color: #0073c1; }
.cms-content-header .backlink span.btn-icon-back { height: 16px; } .cms-content-header .backlink span.btn-icon-back { height: 16px; }
.cms-content-header h2 { font-size: 14px; font-weight: bold; margin: 0; } .cms-content-header h2 { font-size: 14px; font-weight: bold; margin: 0; margin-bottom: 8px; }
.cms-content-header h2 * { vertical-align: middle; }
.cms-content-header .cms-content-header-info { float: left; padding-top: 6px; } .cms-content-header .cms-content-header-info { float: left; padding-top: 6px; }
.cms-content-header .cms-content-header-info > * { display: inline-block; }
.cms-content-header .ss-ui-button { line-height: 24px; } .cms-content-header .ss-ui-button { line-height: 24px; }
.cms-content-header .ss-ui-button .ui-button-text { line-height: 1.4; } .cms-content-header .ss-ui-button .ui-button-text { line-height: 1.4; }
@ -435,7 +436,7 @@ body.cms { overflow: hidden; }
.cms-content-actions, .cms-preview-controls { margin: 0; padding: 12px 12px; z-index: 0; border-top: 1px solid #cacacc; -webkit-box-shadow: 1px 0 0 #eceff1, rgba(248, 248, 248, 0.9) 0 1px 0px inset, rgba(201, 205, 206, 0.8) 0 0 1px; -moz-box-shadow: 1px 0 0 #eceff1, rgba(248, 248, 248, 0.9) 0 1px 0px inset, rgba(201, 205, 206, 0.8) 0 0 1px; box-shadow: 1px 0 0 #eceff1, rgba(248, 248, 248, 0.9) 0 1px 0px inset, rgba(201, 205, 206, 0.8) 0 0 1px; height: 28px; background-color: #eceff1; } .cms-content-actions, .cms-preview-controls { margin: 0; padding: 12px 12px; z-index: 0; border-top: 1px solid #cacacc; -webkit-box-shadow: 1px 0 0 #eceff1, rgba(248, 248, 248, 0.9) 0 1px 0px inset, rgba(201, 205, 206, 0.8) 0 0 1px; -moz-box-shadow: 1px 0 0 #eceff1, rgba(248, 248, 248, 0.9) 0 1px 0px inset, rgba(201, 205, 206, 0.8) 0 0 1px; box-shadow: 1px 0 0 #eceff1, rgba(248, 248, 248, 0.9) 0 1px 0px inset, rgba(201, 205, 206, 0.8) 0 0 1px; height: 28px; background-color: #eceff1; }
/** -------------------------------------------- Messages -------------------------------------------- */ /** -------------------------------------------- Messages -------------------------------------------- */
.message { display: block; clear: both; margin: 8px 0; padding: 10px 12px; font-weight: normal; border: 1px #ccc solid; background: #fff; background: rgba(255, 255, 255, 0.5); text-shadow: none; -webkit-border-radius: 3px 3px 3px 3px; -moz-border-radius: 3px 3px 3px 3px; -ms-border-radius: 3px 3px 3px 3px; -o-border-radius: 3px 3px 3px 3px; border-radius: 3px 3px 3px 3px; } .message { display: block; clear: both; margin: 0 0 8px; padding: 10px 12px; font-weight: normal; border: 1px #ccc solid; background: #fff; background: rgba(255, 255, 255, 0.5); text-shadow: none; -webkit-border-radius: 3px 3px 3px 3px; -moz-border-radius: 3px 3px 3px 3px; -ms-border-radius: 3px 3px 3px 3px; -o-border-radius: 3px 3px 3px 3px; border-radius: 3px 3px 3px 3px; }
.message.notice { background-color: #f0f8fc; border-color: #93cde8; } .message.notice { background-color: #f0f8fc; border-color: #93cde8; }
.message.warning { background-color: #fefbde; border-color: #e9d104; } .message.warning { background-color: #fefbde; border-color: #e9d104; }
.message.error, .message.bad, .message.required, .message.validation { background-color: #fae8e9; border-color: #e68288; } .message.error, .message.bad, .message.required, .message.validation { background-color: #fae8e9; border-color: #e68288; }
@ -476,7 +477,7 @@ body.cms { overflow: hidden; }
#Form_AddForm_PageType_Holder ul li .description { font-style: italic; display: inline; clear: none; margin: 0; } #Form_AddForm_PageType_Holder ul li .description { font-style: italic; display: inline; clear: none; margin: 0; }
/** -------------------------------------------- Content toolbar -------------------------------------------- */ /** -------------------------------------------- Content toolbar -------------------------------------------- */
.cms-content-toolbar { min-height: 29px; display: block; margin: 0 0 8px 0; border-bottom: 1px solid #d0d3d5; -webkit-box-shadow: 0 1px 0 rgba(248, 248, 248, 0.9); -moz-box-shadow: 0 1px 0 rgba(248, 248, 248, 0.9); -o-box-shadow: 0 1px 0 rgba(248, 248, 248, 0.9); box-shadow: 0 1px 0 rgba(248, 248, 248, 0.9); *zoom: 1; /* smaller treedropdown */ } .cms-content-toolbar { min-height: 29px; display: block; margin: 0 0 12px 0; padding-bottom: 0; border-bottom: 1px solid #d0d3d5; -webkit-box-shadow: 0 1px 0 rgba(248, 248, 248, 0.9); -moz-box-shadow: 0 1px 0 rgba(248, 248, 248, 0.9); -o-box-shadow: 0 1px 0 rgba(248, 248, 248, 0.9); box-shadow: 0 1px 0 rgba(248, 248, 248, 0.9); *zoom: 1; /* smaller treedropdown */ }
.cms-content-toolbar:after { content: "\0020"; display: block; height: 0; clear: both; overflow: hidden; visibility: hidden; } .cms-content-toolbar:after { content: "\0020"; display: block; height: 0; clear: both; overflow: hidden; visibility: hidden; }
.cms-content-toolbar .cms-tree-view-modes { float: right; padding-top: 5px; } .cms-content-toolbar .cms-tree-view-modes { float: right; padding-top: 5px; }
.cms-content-toolbar .cms-tree-view-modes * { display: inline-block; } .cms-content-toolbar .cms-tree-view-modes * { display: inline-block; }
@ -485,14 +486,14 @@ body.cms { overflow: hidden; }
.cms-content-toolbar .chzn-container-single .chzn-single:hover { -webkit-box-shadow: 0 0 5px #b3b3b3; -moz-box-shadow: 0 0 5px #b3b3b3; box-shadow: 0 0 5px #b3b3b3; background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjUwJSIgeTE9IjAlIiB4Mj0iNTAlIiB5Mj0iMTAwJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2ViZWJlYiIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iI2QyZDJkMiIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ebebeb), color-stop(100%, #d2d2d2)); background-image: -webkit-linear-gradient(#ebebeb, #d2d2d2); background-image: -moz-linear-gradient(#ebebeb, #d2d2d2); background-image: -o-linear-gradient(#ebebeb, #d2d2d2); background-image: linear-gradient(#ebebeb, #d2d2d2); } .cms-content-toolbar .chzn-container-single .chzn-single:hover { -webkit-box-shadow: 0 0 5px #b3b3b3; -moz-box-shadow: 0 0 5px #b3b3b3; box-shadow: 0 0 5px #b3b3b3; background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjUwJSIgeTE9IjAlIiB4Mj0iNTAlIiB5Mj0iMTAwJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2ViZWJlYiIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iI2QyZDJkMiIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ebebeb), color-stop(100%, #d2d2d2)); background-image: -webkit-linear-gradient(#ebebeb, #d2d2d2); background-image: -moz-linear-gradient(#ebebeb, #d2d2d2); background-image: -o-linear-gradient(#ebebeb, #d2d2d2); background-image: linear-gradient(#ebebeb, #d2d2d2); }
.cms-content-toolbar .chzn-container-single .chzn-single:active { -webkit-box-shadow: inset 0 1px 3px #4d4d4d; -moz-box-shadow: inset 0 1px 3px #4d4d4d; box-shadow: inset 0 1px 3px #4d4d4d; } .cms-content-toolbar .chzn-container-single .chzn-single:active { -webkit-box-shadow: inset 0 1px 3px #4d4d4d; -moz-box-shadow: inset 0 1px 3px #4d4d4d; box-shadow: inset 0 1px 3px #4d4d4d; }
.cms-content-toolbar .chzn-container-single .chzn-single span { padding-top: 1px; } .cms-content-toolbar .chzn-container-single .chzn-single span { padding-top: 1px; }
.cms-content-toolbar .chzn-container-single .chzn-single div { background: url(../images/btn-icon/settings.png) 5px 4px no-repeat; border-left: none; width: 100%; } .cms-content-toolbar .chzn-container-single .chzn-single div { border-left: none; width: 100%; }
.cms-content-toolbar .chzn-container-single .chzn-single div b { background: url(../images/sprites-32x32/menu-arrow-deselected-down.png) no-repeat 9px 11px; float: right; width: 24px; } .cms-content-toolbar .chzn-container-single .chzn-single div b { background: url(../images/sprites-32x32/menu-arrow-deselected-down.png) no-repeat 9px 11px; float: right; width: 24px; }
.cms-content-toolbar .ss-ui-button { margin-bottom: 8px; } .cms-content-toolbar .ss-ui-button { margin-bottom: 8px; }
/* -------------------------------------------------------- Content Tools is the sidebar on the left of the main content panel */ /* -------------------------------------------------------- Content Tools is the sidebar on the left of the main content panel */
.cms-content-tools { background: #eceff1; width: 200px; overflow-y: auto; overflow-x: hidden; z-index: 70; border-right: 1px solid #c0c0c2; -webkit-box-shadow: rgba(248, 248, 248, 0.9) -1px 0 0 inset, 0 0 1px rgba(201, 205, 206, 0.8); -moz-box-shadow: rgba(248, 248, 248, 0.9) -1px 0 0 inset, 0 0 1px rgba(201, 205, 206, 0.8); box-shadow: rgba(248, 248, 248, 0.9) -1px 0 0 inset, 0 0 1px rgba(201, 205, 206, 0.8); float: left; position: relative; } .cms-content-tools { background: #eceff1; width: 200px; overflow-y: auto; overflow-x: hidden; z-index: 70; border-right: 1px solid #c0c0c2; -webkit-box-shadow: rgba(248, 248, 248, 0.9) -1px 0 0 inset, 0 0 1px rgba(201, 205, 206, 0.8); -moz-box-shadow: rgba(248, 248, 248, 0.9) -1px 0 0 inset, 0 0 1px rgba(201, 205, 206, 0.8); box-shadow: rgba(248, 248, 248, 0.9) -1px 0 0 inset, 0 0 1px rgba(201, 205, 206, 0.8); float: left; position: relative; }
.cms-content-tools.filter { padding: 0 !important; } .cms-content-tools.filter { padding: 0 !important; }
.cms-content-tools .cms-panel-header { clear: both; margin: 0 0 7px; line-height: 24px; border-bottom: 1px solid #d0d3d5; -webkit-box-shadow: 0 1px 0 rgba(248, 248, 248, 0.9); -moz-box-shadow: 0 1px 0 rgba(248, 248, 248, 0.9); -o-box-shadow: 0 1px 0 rgba(248, 248, 248, 0.9); box-shadow: 0 1px 0 rgba(248, 248, 248, 0.9); } .cms-content-tools .cms-panel-header { clear: both; margin: 10px 0 7px; padding-bottom: 2px; line-height: 24px; border-bottom: 1px solid #d0d3d5; -webkit-box-shadow: 0 1px 0 rgba(248, 248, 248, 0.9); -moz-box-shadow: 0 1px 0 rgba(248, 248, 248, 0.9); -o-box-shadow: 0 1px 0 rgba(248, 248, 248, 0.9); box-shadow: 0 1px 0 rgba(248, 248, 248, 0.9); }
.cms-content-tools .cms-panel-content { width: 184px; padding: 8.8px 8px 0; overflow: auto; height: 100%; } .cms-content-tools .cms-panel-content { width: 184px; padding: 8.8px 8px 0; overflow: auto; height: 100%; }
.cms-content-tools .cms-panel-content .Actions .ss-ui-action-constructive { margin-right: 5px; } .cms-content-tools .cms-panel-content .Actions .ss-ui-action-constructive { margin-right: 5px; }
.cms-content-tools .cms-content-header { background-color: #748d9d; background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjUwJSIgeTE9IjAlIiB4Mj0iNTAlIiB5Mj0iMTAwJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2IwYmVjNyIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iIzc0OGQ5ZCIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #b0bec7), color-stop(100%, #748d9d)); background-image: -webkit-linear-gradient(#b0bec7, #748d9d); background-image: -moz-linear-gradient(#b0bec7, #748d9d); background-image: -o-linear-gradient(#b0bec7, #748d9d); background-image: linear-gradient(#b0bec7, #748d9d); } .cms-content-tools .cms-content-header { background-color: #748d9d; background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjUwJSIgeTE9IjAlIiB4Mj0iNTAlIiB5Mj0iMTAwJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2IwYmVjNyIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iIzc0OGQ5ZCIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #b0bec7), color-stop(100%, #748d9d)); background-image: -webkit-linear-gradient(#b0bec7, #748d9d); background-image: -moz-linear-gradient(#b0bec7, #748d9d); background-image: -o-linear-gradient(#b0bec7, #748d9d); background-image: linear-gradient(#b0bec7, #748d9d); }
@ -517,20 +518,28 @@ body.cms { overflow: hidden; }
.cms-content-tools table td { padding: 4px; line-height: 16px; vertical-align: top; } .cms-content-tools table td { padding: 4px; line-height: 16px; vertical-align: top; }
.cms-content-tools td { border-bottom: 1px solid #ced7dc; padding: 7px 2px; font-size: 11px; } .cms-content-tools td { border-bottom: 1px solid #ced7dc; padding: 7px 2px; font-size: 11px; }
/** ------------------------------------------------------------------
* CMS notice, used for filter messages, but generic enough to use elsewhere
* ----------------------------------------------------------------- */
.cms-notice { display: block; margin: 0 0 8px; padding: 10px 12px; font-weight: normal; border: 1px #d0d3d5 solid; background: #fff; background: rgba(255, 255, 255, 0.5); text-shadow: none; -webkit-border-radius: 3px; -moz-border-radius: 3px; -ms-border-radius: 3px; -o-border-radius: 3px; border-radius: 3px; }
/** CMS Batch actions */ /** CMS Batch actions */
.cms-content-batchactions { float: left; position: relative; display: block; } .cms-content-batchactions { float: left; position: relative; display: block; }
.cms-content-batchactions .view-mode-batchactions-wrapper { height: 18px; float: left; padding: 4px 6px; border: 1px solid #aaa; margin-bottom: 8px; background-color: #D9D9D9; background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjUwJSIgeTE9IjAlIiB4Mj0iNTAlIiB5Mj0iMTAwJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2ZmZmZmZiIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iI2Q5ZDlkOSIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(100%, #d9d9d9)); background-image: -webkit-linear-gradient(top, #ffffff, #d9d9d9); background-image: -moz-linear-gradient(top, #ffffff, #d9d9d9); background-image: -o-linear-gradient(top, #ffffff, #d9d9d9); background-image: linear-gradient(top, #ffffff, #d9d9d9); border-top-left-radius: 4px; border-bottom-left-radius: 4px; } .cms-content-batchactions .view-mode-batchactions-wrapper { height: 18px; float: left; padding: 4px 6px; border: 1px solid #aaa; margin-bottom: 8px; margin-right: -1px; background-color: #D9D9D9; background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjUwJSIgeTE9IjAlIiB4Mj0iNTAlIiB5Mj0iMTAwJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2ZmZmZmZiIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iI2Q5ZDlkOSIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(100%, #d9d9d9)); background-image: -webkit-linear-gradient(top, #ffffff, #d9d9d9); background-image: -moz-linear-gradient(top, #ffffff, #d9d9d9); background-image: -o-linear-gradient(top, #ffffff, #d9d9d9); background-image: linear-gradient(top, #ffffff, #d9d9d9); border-top-left-radius: 4px; border-bottom-left-radius: 4px; }
.cms-content-batchactions .view-mode-batchactions-wrapper input { vertical-align: middle; } .cms-content-batchactions .view-mode-batchactions-wrapper input { vertical-align: middle; }
.cms-content-batchactions .view-mode-batchactions-wrapper label { vertical-align: middle; display: none; } .cms-content-batchactions .view-mode-batchactions-wrapper label { vertical-align: middle; display: none; }
.cms-content-batchactions .view-mode-batchactions-wrapper fieldset, .cms-content-batchactions .view-mode-batchactions-wrapper .Actions { display: inline-block; } .cms-content-batchactions .view-mode-batchactions-wrapper fieldset, .cms-content-batchactions .view-mode-batchactions-wrapper .Actions { display: inline-block; }
.cms-content-batchactions .view-mode-batchactions-wrapper #view-mode-batchactions { margin-top: 2px; }
.cms-content-batchactions.inactive .view-mode-batchactions-wrapper { border-radius: 4px; } .cms-content-batchactions.inactive .view-mode-batchactions-wrapper { border-radius: 4px; }
.cms-content-batchactions.inactive .view-mode-batchactions-wrapper label { display: inline; } .cms-content-batchactions.inactive .view-mode-batchactions-wrapper label { display: inline; }
.cms-content-batchactions form > * { display: block; float: left; } .cms-content-batchactions form > * { display: block; float: left; }
.cms-content-batchactions form.cms-batch-actions { float: left; } .cms-content-batchactions form.cms-batch-actions { float: left; }
.cms-content-batchactions.inactive form { display: none; } .cms-content-batchactions.inactive form { display: none; }
.cms-content-batchactions .chzn-container-single { display: block; } .cms-content-batchactions .chzn-container-single { display: block; }
.cms-content-batchactions .chzn-container-single .chzn-single { margin-left: -1px; border-radius: 0; background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjUwJSIgeTE9IjAlIiB4Mj0iNTAlIiB5Mj0iMTAwJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2ZmZmZmZiIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iI2Q5ZDlkOSIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(100%, #d9d9d9)); background-image: -webkit-linear-gradient(top, #ffffff, #d9d9d9); background-image: -moz-linear-gradient(top, #ffffff, #d9d9d9); background-image: -o-linear-gradient(top, #ffffff, #d9d9d9); background-image: linear-gradient(top, #ffffff, #d9d9d9); } .cms-content-batchactions .chzn-container-single .chzn-single { border-radius: 0; background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjUwJSIgeTE9IjAlIiB4Mj0iNTAlIiB5Mj0iMTAwJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2ZmZmZmZiIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iI2Q5ZDlkOSIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(100%, #d9d9d9)); background-image: -webkit-linear-gradient(top, #ffffff, #d9d9d9); background-image: -moz-linear-gradient(top, #ffffff, #d9d9d9); background-image: -o-linear-gradient(top, #ffffff, #d9d9d9); background-image: linear-gradient(top, #ffffff, #d9d9d9); }
.cms-content-batchactions .chzn-container-single .chzn-single span { padding-top: 0; } .cms-content-batchactions .chzn-container-single .chzn-single span { padding-top: 0; }
.cms-content-batchactions .cms-batch-actions .dropdown { margin: 0; }
.cms-content-batchactions .cms-batch-actions .dropdown .chzn-single { padding-left: 8px; /* use default size without icon */ }
.cms-content-batchactions .cms-batch-actions .Actions .ss-ui-button { padding-top: 4px; padding-bottom: 4px; height: 28px; margin-left: -1px; border-top-left-radius: 0; border-bottom-left-radius: 0; } .cms-content-batchactions .cms-batch-actions .Actions .ss-ui-button { padding-top: 4px; padding-bottom: 4px; height: 28px; margin-left: -1px; border-top-left-radius: 0; border-bottom-left-radius: 0; }
.cms-content-batchactions .cms-batch-actions .Actions .ss-ui-button.ui-state-disabled { opacity: 1; color: #ccc; } .cms-content-batchactions .cms-batch-actions .Actions .ss-ui-button.ui-state-disabled { opacity: 1; color: #ccc; }
@ -608,13 +617,13 @@ form.member-profile-form #Permissions .optionset li { float: none; width: auto;
.cms .ui-widget-overlay { background-color: #000; background-image: none; } .cms .ui-widget-overlay { background-color: #000; background-image: none; }
.cms .ui-dialog { min-width: 570px; }
.cms .ui-dialog .htmleditorfield-dialog { min-width: 570px; }
.cms .ui-dialog .ss-ui-dialog.ui-dialog-content { padding-top: 0px; } .cms .ui-dialog .ss-ui-dialog.ui-dialog-content { padding-top: 0px; }
.ui-dialog { background: url("../images/textures/bg_cms_main_content.png") repeat left top #f0f3f4; border: 3px solid #000 !important; border-radius: 8px; overflow: visible; padding: 0; } .ui-dialog { background: url("../images/textures/bg_cms_main_content.png") repeat left top #f0f3f4; border: 3px solid #000 !important; border-radius: 8px; overflow: visible; padding: 0; }
.ui-dialog .ui-dialog-titlebar.ui-widget-header { font-size: 14px; padding: 0; border: none; background-color: transparent; background-image: url(../images/textures/cms_content_header.png); background-repeat: repeat; -webkit-box-shadow: rgba(107, 120, 123, 0.5) 0 0 4px inset; -moz-box-shadow: rgba(107, 120, 123, 0.5) 0 0 4px inset; box-shadow: rgba(107, 120, 123, 0.5) 0 0 4px inset; } .ui-dialog .ui-dialog-titlebar.ui-widget-header { font-size: 14px; padding: 0; border: none; background-color: transparent; background-image: url(../images/textures/cms_content_header.png); background-repeat: repeat; -webkit-box-shadow: rgba(107, 120, 123, 0.5) 0 0 4px inset; -moz-box-shadow: rgba(107, 120, 123, 0.5) 0 0 4px inset; box-shadow: rgba(107, 120, 123, 0.5) 0 0 4px inset; }
.ui-dialog .ui-dialog-titlebar.ui-widget-header .ui-dialog-title { position: absolute; } .ui-dialog .ui-dialog-titlebar.ui-widget-header .ui-dialog-title { position: absolute; }
.ui-dialog .ui-dialog-content { overflow: auto; }
.ui-dialog .ui-dialog-content.loading { background-image: url(../images/spinner.gif); background-position: 50% 50%; background-repeat: no-repeat; }
.ui-dialog .cms-dialog-content { background: url("../images/textures/bg_cms_main_content.png") repeat left top #f0f3f4; padding-bottom: 8px; padding-top: 0px; } .ui-dialog .cms-dialog-content { background: url("../images/textures/bg_cms_main_content.png") repeat left top #f0f3f4; padding-bottom: 8px; padding-top: 0px; }
.ui-dialog .cms-dialog-content .Actions { overflow: auto; margin: 8px 0; padding-bottom: 8px; float: right; } .ui-dialog .cms-dialog-content .Actions { overflow: auto; margin: 8px 0; padding-bottom: 8px; float: right; }
.ui-dialog .cms-dialog-content .ui-tabs { position: static; } .ui-dialog .cms-dialog-content .ui-tabs { position: static; }
@ -627,21 +636,22 @@ body.cms-dialog { overflow: auto; background: url("../images/textures/bg_cms_mai
/** -------------------------------------------- "Insert X" forms -------------------------------------------- */ /** -------------------------------------------- "Insert X" forms -------------------------------------------- */
.htmleditorfield-dialog.ui-dialog-content { padding: 0; position: relative; } .htmleditorfield-dialog.ui-dialog-content { padding: 0; position: relative; }
.htmleditorfield-dialog #MediaFormInsertMediaTabs_FromWeb .CompositeField { overflow: hidden; *zoom: 1; } .htmleditorfield-dialog .htmleditorfield-from-web .CompositeField { overflow: hidden; *zoom: 1; }
.htmleditorfield-dialog #MediaFormInsertMediaTabs_FromWeb #RemoteURL { border: none; -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none; width: 55%; max-width: 512px; float: left; position: relative; } .htmleditorfield-dialog .htmleditorfield-from-web #RemoteURL { border: none; -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none; width: 55%; max-width: 512px; float: left; position: relative; }
.htmleditorfield-dialog #MediaFormInsertMediaTabs_FromWeb #RemoteURL label { position: absolute; left: 8px; top: 13px; font-weight: normal; color: #888; } .htmleditorfield-dialog .htmleditorfield-from-web #RemoteURL label { position: absolute; left: 8px; top: 13px; font-weight: normal; color: #888; }
.htmleditorfield-dialog #MediaFormInsertMediaTabs_FromWeb #RemoteURL .middleColumn { margin-left: 0; } .htmleditorfield-dialog .htmleditorfield-from-web #RemoteURL .middleColumn { margin-left: 0; }
.htmleditorfield-dialog #MediaFormInsertMediaTabs_FromWeb #RemoteURL input.remoteurl { padding-left: 40px; } .htmleditorfield-dialog .htmleditorfield-from-web #RemoteURL input.remoteurl { padding-left: 40px; }
.htmleditorfield-dialog #MediaFormInsertMediaTabs_FromWeb button.add-url { margin-top: 5px; padding-top: 15px; overflow: hidden; *zoom: 1; border: none; background: none; opacity: 0.8; cursor: hand; } .htmleditorfield-dialog .htmleditorfield-from-web button.add-url { margin-top: 5px; padding-top: 15px; overflow: hidden; *zoom: 1; border: none; background: none; opacity: 0.8; cursor: hand; }
.htmleditorfield-dialog #MediaFormInsertMediaTabs_FromWeb button.add-url .btn-icon-addMedia { width: 20px; height: 20px; } .htmleditorfield-dialog .htmleditorfield-from-web button.add-url .btn-icon-addMedia { width: 20px; height: 20px; }
.htmleditorfield-dialog #MediaFormInsertMediaTabs_FromWeb button.add-url .ui-button-text { margin-left: 10px; margin-top: -5px; line-height: 20px; float: left; } .htmleditorfield-dialog .htmleditorfield-from-web button.add-url .ui-button-text { margin-left: 10px; margin-top: -5px; line-height: 20px; float: left; }
.htmleditorfield-dialog #MediaFormInsertMediaTabs_FromWeb button.add-url:hover, .htmleditorfield-dialog #MediaFormInsertMediaTabs_FromWeb button.add-url:active { border: none; -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none; opacity: 1; } .htmleditorfield-dialog .htmleditorfield-from-web button.add-url:hover, .htmleditorfield-dialog .htmleditorfield-from-web button.add-url:active { border: none; -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none; opacity: 1; }
.htmleditorfield-dialog #MediaFormInsertMediaTabs_FromWeb button.add-url.ui-state-disabled, .htmleditorfield-dialog #MediaFormInsertMediaTabs_FromWeb button.add-url.ui-state-disabled:hover, .htmleditorfield-dialog #MediaFormInsertMediaTabs_FromWeb button.add-url.ui-state-disabled:active { opacity: 0.35; filter: Alpha(Opacity=35); } .htmleditorfield-dialog .htmleditorfield-from-web button.add-url.ui-state-disabled, .htmleditorfield-dialog .htmleditorfield-from-web button.add-url.ui-state-disabled:hover, .htmleditorfield-dialog .htmleditorfield-from-web button.add-url.ui-state-disabled:active { opacity: 0.35; filter: Alpha(Opacity=35); }
.htmleditorfield-dialog #MediaFormInsertMediaTabs_FromWeb .loading button.add-url .ui-icon { background-image: url(../images/throbber.gif); background-position: 50% 50%; background-repeat: no-repeat; } .htmleditorfield-dialog .htmleditorfield-from-web .loading button.add-url .ui-icon { background-image: url(../images/throbber.gif); background-position: 50% 50%; background-repeat: no-repeat; }
.htmleditorfield-dialog .cms-content-header { padding: 0; width: 100%; height: 40px; } .htmleditorfield-dialog .cms-content-header { padding: 0; width: 100%; height: 40px; }
.htmleditorfield-dialog .cms-content-header h3 { padding: 0 8px; margin: 10px; } .htmleditorfield-dialog .cms-content-header h3 { padding: 0 8px; margin: 10px; }
.htmleditorfield-dialog .ss-insert-media, .htmleditorfield-dialog .Actions, .htmleditorfield-dialog .ss-insert-link { padding: 8px 16px; } .htmleditorfield-dialog .ss-insert-media, .htmleditorfield-dialog .Actions, .htmleditorfield-dialog .ss-insert-link { padding: 8px 16px; }
.htmleditorfield-dialog .details .file-url { display: block; width: 450px; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; -o-text-overflow: ellipsis; } .htmleditorfield-dialog .ss-insert-media .ui-tabs-panel, .htmleditorfield-dialog .Actions .ui-tabs-panel, .htmleditorfield-dialog .ss-insert-link .ui-tabs-panel { padding: 0; }
.htmleditorfield-dialog .details .file-url { display: block; width: 300px; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; -o-text-overflow: ellipsis; }
.htmleditorfield-dialog .details .cms-file-info .field { border: none; -webkit-box-shadow: 0 0 0 rgba(0, 0, 0, 0); -moz-box-shadow: 0 0 0 rgba(0, 0, 0, 0); box-shadow: 0 0 0 rgba(0, 0, 0, 0); } .htmleditorfield-dialog .details .cms-file-info .field { border: none; -webkit-box-shadow: 0 0 0 rgba(0, 0, 0, 0); -moz-box-shadow: 0 0 0 rgba(0, 0, 0, 0); box-shadow: 0 0 0 rgba(0, 0, 0, 0); }
.htmleditorfield-dialog .details .field { border-bottom: 1px solid rgba(201, 205, 206, 0.8); -webkit-box-shadow: 0 1px 0 rgba(255, 255, 255, 0.8); -moz-box-shadow: 0 1px 0 rgba(255, 255, 255, 0.8); box-shadow: 0 1px 0 rgba(255, 255, 255, 0.8); } .htmleditorfield-dialog .details .field { border-bottom: 1px solid rgba(201, 205, 206, 0.8); -webkit-box-shadow: 0 1px 0 rgba(255, 255, 255, 0.8); -moz-box-shadow: 0 1px 0 rgba(255, 255, 255, 0.8); box-shadow: 0 1px 0 rgba(255, 255, 255, 0.8); }
.htmleditorfield-dialog .details .field.last { border-bottom: none; -webkit-box-shadow: 0 0 0 rgba(0, 0, 0, 0); -moz-box-shadow: 0 0 0 rgba(0, 0, 0, 0); box-shadow: 0 0 0 rgba(0, 0, 0, 0); margin-bottom: 0; } .htmleditorfield-dialog .details .field.last { border-bottom: none; -webkit-box-shadow: 0 0 0 rgba(0, 0, 0, 0); -moz-box-shadow: 0 0 0 rgba(0, 0, 0, 0); box-shadow: 0 0 0 rgba(0, 0, 0, 0); margin-bottom: 0; }
@ -649,13 +659,14 @@ body.cms-dialog { overflow: auto; background: url("../images/textures/bg_cms_mai
.htmleditorfield-linkform .step2 { margin-bottom: 16px; } .htmleditorfield-linkform .step2 { margin-bottom: 16px; }
.htmleditorfield-mediaform .ss-gridfield tbody td:first-child img { max-height: 30px; } .htmleditorfield-mediaform .ss-gridfield .gridfield-button-delete { display: none; }
.htmleditorfield-mediaform .ss-uploadfield.from-web, .htmleditorfield-mediaform .ss-uploadfield.from-CMS { margin-bottom: 48px; } .htmleditorfield-mediaform .ss-gridfield table.ss-gridfield-table tbody td:first-child { padding: 0; text-align: center; }
.htmleditorfield-mediaform .ss-uploadfield.from-web .middleColumn, .htmleditorfield-mediaform .ss-uploadfield.from-CMS .middleColumn { width: auto; background: none; border: none; margin-top: 13px; } .htmleditorfield-mediaform .ss-gridfield table.ss-gridfield-table tbody td:first-child img { max-height: 30px; }
.htmleditorfield-mediaform .ss-uploadfield.from-CMS { margin-top: 33px; } .htmleditorfield-mediaform .ss-gridfield table.ss-gridfield-table tr td { padding: 4px; }
.htmleditorfield-mediaform .ss-uploadfield.from-CMS h4 { margin-top: 3px; } .htmleditorfield-mediaform .htmleditorfield-from-web .ss-uploadfield .middleColumn, .htmleditorfield-mediaform .htmleditorfield-from-cms .ss-uploadfield .middleColumn { width: auto; background: none; border: none; margin-top: 13px; }
.htmleditorfield-mediaform .ss-uploadfield.from-CMS .middleColumn { margin-top: 0; } .htmleditorfield-mediaform .htmleditorfield-from-cms .ss-uploadfield h4 { float: left; margin-top: 4px; margin-bottom: 0; }
.htmleditorfield-mediaform .ss-uploadfield.from-CMS .middleColumn .TreeDropdownField { margin-top: 23px; } .htmleditorfield-mediaform .htmleditorfield-from-cms .ss-uploadfield .middleColumn { margin-top: 16px; margin-left: 184px; }
.htmleditorfield-mediaform .htmleditorfield-from-cms .ss-uploadfield .field.treedropdown { border-bottom: 0; padding: 0; }
.htmleditorfield-mediaform .ss-uploadfield-editandorganize { display: none; } .htmleditorfield-mediaform .ss-uploadfield-editandorganize { display: none; }
/** -------------------------------------------- Search forms (used in AssetAdmin, ModelAdmin, etc) -------------------------------------------- */ /** -------------------------------------------- Search forms (used in AssetAdmin, ModelAdmin, etc) -------------------------------------------- */
@ -672,9 +683,11 @@ body.cms-dialog { overflow: auto; background: url("../images/textures/bg_cms_mai
/** -------------------------------------------- Item Edit Form -------------------------------------------- */ /** -------------------------------------------- Item Edit Form -------------------------------------------- */
.cms-file-info { overflow: auto; border-bottom: 1px solid rgba(201, 205, 206, 0.8); -webkit-box-shadow: 0 1px 0 rgba(255, 255, 255, 0.8); -moz-box-shadow: 0 1px 0 rgba(255, 255, 255, 0.8); box-shadow: 0 1px 0 rgba(255, 255, 255, 0.8); margin-bottom: 8px; } .cms-file-info { overflow: auto; border-bottom: 1px solid rgba(201, 205, 206, 0.8); -webkit-box-shadow: 0 1px 0 rgba(255, 255, 255, 0.8); -moz-box-shadow: 0 1px 0 rgba(255, 255, 255, 0.8); box-shadow: 0 1px 0 rgba(255, 255, 255, 0.8); margin-bottom: 8px; }
.cms-file-info .cms-file-info-preview { float: left; width: 176px; margin-right: 8px; } .cms-file-info .cms-file-info-preview { float: left; width: 176px; margin-right: 8px; }
.cms-file-info .cms-file-info-preview img { max-width: 176px; } .cms-file-info .cms-file-info-preview img { max-width: 176px; max-height: 128px; }
.cms-file-info .cms-file-info-data { float: left; } .cms-file-info .cms-file-info-data { float: left; }
.cms-file-info .cms-file-info-data .field { margin-bottom: 0; padding-bottom: 8px; border: none; box-shadow: none; } .cms-file-info .cms-file-info-data .field { margin: 0; padding-bottom: 8px; border: none; box-shadow: none; }
.cms-file-info .cms-file-info-data .field label.left { width: 96px; }
.cms-file-info .cms-file-info-data .field .middleColumn { margin-left: 104px; }
.cms-file-info .cms-file-info-data .field label, .cms-file-info .cms-file-info-data .field span { padding: 0; } .cms-file-info .cms-file-info-data .field label, .cms-file-info .cms-file-info-data .field span { padding: 0; }
form.small .cms-file-info-preview { width: 112px; } form.small .cms-file-info-preview { width: 112px; }
@ -707,7 +720,6 @@ form.import-form label.left { width: 250px; }
.cms-container .CMSMain.CMSPageSettingsController .tab#Root_Settings .optionset li { white-space: nowrap; } .cms-container .CMSMain.CMSPageSettingsController .tab#Root_Settings .optionset li { white-space: nowrap; }
.cms-container .CMSMain.CMSPageSettingsController .tab#Root_Settings .optionset li label { padding-left: 2px; } .cms-container .CMSMain.CMSPageSettingsController .tab#Root_Settings .optionset li label { padding-left: 2px; }
.cms-container .CMSMain.CMSPageSettingsController .tab#Root_Settings .fieldgroup .fieldgroup-field { width: 216px; padding-left: 0; } .cms-container .CMSMain.CMSPageSettingsController .tab#Root_Settings .fieldgroup .fieldgroup-field { width: 216px; padding-left: 0; }
.cms-container .CMSMain.CMSPageSettingsController .tab#Root_Settings .TreeDropdownField .treedropdownfield-toggle-panel-link { border-left: none; background: none; background-image: none; }
/** -------------------------------------------- Buttons for FileUpload -------------------------------------------- */ /** -------------------------------------------- Buttons for FileUpload -------------------------------------------- */
.ss-uploadfield-item-edit-all .ui-button-text { padding-right: 0; } .ss-uploadfield-item-edit-all .ui-button-text { padding-right: 0; }
@ -727,10 +739,11 @@ form.import-form label.left { width: 250px; }
.cms .jstree li.jstree-open > ul, .TreeDropdownField .treedropdownfield-panel .jstree li.jstree-open > ul { display: block; } .cms .jstree li.jstree-open > ul, .TreeDropdownField .treedropdownfield-panel .jstree li.jstree-open > ul { display: block; }
.cms .jstree li.jstree-closed > ul, .TreeDropdownField .treedropdownfield-panel .jstree li.jstree-closed > ul { display: none; } .cms .jstree li.jstree-closed > ul, .TreeDropdownField .treedropdownfield-panel .jstree li.jstree-closed > ul { display: none; }
.cms .jstree li.disabled > a, .TreeDropdownField .treedropdownfield-panel .jstree li.disabled > a { color: #aaaaaa; } .cms .jstree li.disabled > a, .TreeDropdownField .treedropdownfield-panel .jstree li.disabled > a { color: #aaaaaa; }
.cms .jstree li.edit-disabled > a, .TreeDropdownField .treedropdownfield-panel .jstree li.edit-disabled > a { color: #aaaaaa; }
.cms .jstree li > .jstree-icon, .TreeDropdownField .treedropdownfield-panel .jstree li > .jstree-icon { cursor: pointer; } .cms .jstree li > .jstree-icon, .TreeDropdownField .treedropdownfield-panel .jstree li > .jstree-icon { cursor: pointer; }
.cms .jstree ins, .TreeDropdownField .treedropdownfield-panel .jstree ins { display: inline-block; text-decoration: none; width: 18px; height: 18px; margin: 0 0 0 0; padding: 0; float: left; } .cms .jstree ins, .TreeDropdownField .treedropdownfield-panel .jstree ins { display: inline-block; text-decoration: none; width: 18px; height: 18px; margin: 0 0 0 0; padding: 0; float: left; }
.cms .jstree a, .TreeDropdownField .treedropdownfield-panel .jstree a { display: inline-block; line-height: 16px; height: 16px; color: black; white-space: nowrap; text-decoration: none; padding: 1px 2px; margin: 0; border: 1px solid #fff; } .cms .jstree a, .TreeDropdownField .treedropdownfield-panel .jstree a { display: inline-block; line-height: 16px; height: 16px; color: black; white-space: nowrap; text-decoration: none; padding: 1px 2px; margin: 0; border: 1px solid #fff; }
.cms .jstree a:focus, .cms .jstree a:active, .cms .jstree a:hover, .TreeDropdownField .treedropdownfield-panel .jstree a:focus, .TreeDropdownField .treedropdownfield-panel .jstree a:active, .TreeDropdownField .treedropdownfield-panel .jstree a:hover { outline: none; text-decoration: none; cursor: pointer; text-shadow: none; } .cms .jstree a:focus, .cms .jstree a:active, .cms .jstree a:hover, .TreeDropdownField .treedropdownfield-panel .jstree a:focus, .TreeDropdownField .treedropdownfield-panel .jstree a:active, .TreeDropdownField .treedropdownfield-panel .jstree a:hover { text-decoration: none; cursor: pointer; text-shadow: none; }
.cms .jstree a > ins, .TreeDropdownField .treedropdownfield-panel .jstree a > ins { height: 16px; width: 16px; } .cms .jstree a > ins, .TreeDropdownField .treedropdownfield-panel .jstree a > ins { height: 16px; width: 16px; }
.cms .jstree a > ins.jstree-checkbox, .TreeDropdownField .treedropdownfield-panel .jstree a > ins.jstree-checkbox { height: 19px; } .cms .jstree a > ins.jstree-checkbox, .TreeDropdownField .treedropdownfield-panel .jstree a > ins.jstree-checkbox { height: 19px; }
.cms .jstree a > .jstree-icon, .TreeDropdownField .treedropdownfield-panel .jstree a > .jstree-icon { margin-right: 3px; } .cms .jstree a > .jstree-icon, .TreeDropdownField .treedropdownfield-panel .jstree a > .jstree-icon { margin-right: 3px; }
@ -934,7 +947,7 @@ li.class-ErrorPage > a .jstree-pageicon { background-position: 0 -112px; }
.cms-preview .preview-note span { background: url('../images/sprites-64x64-s88957ee578.png') 0 0 no-repeat; display: block; height: 41px; margin: 0 auto 20px; width: 50px; } .cms-preview .preview-note span { background: url('../images/sprites-64x64-s88957ee578.png') 0 0 no-repeat; display: block; height: 41px; margin: 0 auto 20px; width: 50px; }
.cms-preview .preview-scroll { height: 100%; overflow: auto; position: relative; width: 100%; } .cms-preview .preview-scroll { height: 100%; overflow: auto; position: relative; width: 100%; }
.cms-preview .preview-scroll .preview-device-outer { height: 100%; width: 100%; } .cms-preview .preview-scroll .preview-device-outer { height: 100%; width: 100%; }
.cms-preview .preview-scroll .preview-device-outer .preview-device-inner { -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; width: 100%; height: 100%; } .cms-preview .preview-scroll .preview-device-outer .preview-device-inner { -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; width: 100%; height: 100%; background-color: #FFF; }
.cms-preview .preview-scroll .preview-device-outer .preview-device-inner iframe { height: 100%; overflow-y: auto; width: 100%; } .cms-preview .preview-scroll .preview-device-outer .preview-device-inner iframe { height: 100%; overflow-y: auto; width: 100%; }
.cms-preview.mobile .preview-scroll, .cms-preview.mobileLandscape .preview-scroll, .cms-preview.tablet .preview-scroll, .cms-preview.tabletLandscape .preview-scroll, .cms-preview.desktop .preview-scroll { background-color: #eceff1; /* cover website preview icon */ } .cms-preview.mobile .preview-scroll, .cms-preview.mobileLandscape .preview-scroll, .cms-preview.tablet .preview-scroll, .cms-preview.tabletLandscape .preview-scroll, .cms-preview.desktop .preview-scroll { background-color: #eceff1; /* cover website preview icon */ }
.cms-preview.mobile .preview-scroll .preview-device-outer, .cms-preview.mobileLandscape .preview-scroll .preview-device-outer, .cms-preview.tablet .preview-scroll .preview-device-outer, .cms-preview.tabletLandscape .preview-scroll .preview-device-outer, .cms-preview.desktop .preview-scroll .preview-device-outer { -webkit-border-radius: 7px; -moz-border-radius: 7px; -ms-border-radius: 7px; -o-border-radius: 7px; border-radius: 7px; background: #d5dde2; border: 1px solid transparent; border-left: 1px solid #cfd9de; padding: 0 16px 16px; } .cms-preview.mobile .preview-scroll .preview-device-outer, .cms-preview.mobileLandscape .preview-scroll .preview-device-outer, .cms-preview.tablet .preview-scroll .preview-device-outer, .cms-preview.tabletLandscape .preview-scroll .preview-device-outer, .cms-preview.desktop .preview-scroll .preview-device-outer { -webkit-border-radius: 7px; -moz-border-radius: 7px; -ms-border-radius: 7px; -o-border-radius: 7px; border-radius: 7px; background: #d5dde2; border: 1px solid transparent; border-left: 1px solid #cfd9de; padding: 0 16px 16px; }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 977 B

After

Width:  |  Height:  |  Size: 110 B

View File

@ -106,10 +106,11 @@
} else if (modeName == 'content') { } else if (modeName == 'content') {
container.entwine('.ss').contentViewMode(); container.entwine('.ss').contentViewMode();
this.setIsPreviewEnabled(false); this.setIsPreviewEnabled(false);
this._loadCurrentState(); // Do not load content as the preview is not visible.
} else if (modeName == 'preview') { } else if (modeName == 'preview') {
container.entwine('.ss').previewMode(); container.entwine('.ss').previewMode();
this.setIsPreviewEnabled(true); this.setIsPreviewEnabled(true);
this._loadCurrentState();
} else { } else {
throw 'Invalid mode: ' + modeName; throw 'Invalid mode: ' + modeName;
} }

View File

@ -125,10 +125,10 @@ jQuery.noConflict();
var self = this; var self = this;
// Browser detection // Browser detection
if($.browser.msie && parseInt($.browser.version, 10) < 7) { if($.browser.msie && parseInt($.browser.version, 10) < 8) {
$('.ss-loading-screen').append( $('.ss-loading-screen').append(
'<p class="ss-loading-incompat-warning"><span class="notice">' + '<p class="ss-loading-incompat-warning"><span class="notice">' +
'Your browser is not compatible with the CMS interface. Please use Internet Explorer 7+, Google Chrome 10+ or Mozilla Firefox 3.5+.' + 'Your browser is not compatible with the CMS interface. Please use Internet Explorer 8+, Google Chrome or Mozilla Firefox.' +
'</span></p>' '</span></p>'
).css('z-index', $('.ss-loading-screen').css('z-index')+1); ).css('z-index', $('.ss-loading-screen').css('z-index')+1);
$('.loading-animation').remove(); $('.loading-animation').remove();
@ -461,7 +461,8 @@ jQuery.noConflict();
// Support a full reload // Support a full reload
if(xhr.getResponseHeader('X-Reload') && xhr.getResponseHeader('X-ControllerURL')) { if(xhr.getResponseHeader('X-Reload') && xhr.getResponseHeader('X-ControllerURL')) {
document.location.href = xhr.getResponseHeader('X-ControllerURL'); document.location.href = $('base').attr('href').replace(/\/*$/, '')
+ '/' + xhr.getResponseHeader('X-ControllerURL');
return; return;
} }
@ -469,12 +470,6 @@ jQuery.noConflict();
// case we'll ignore the response // case we'll ignore the response
if(!data) return; if(!data) return;
// Support a full reload
if(xhr.getResponseHeader('X-Reload') && xhr.getResponseHeader('X-ControllerURL')) {
document.location.href = xhr.getResponseHeader('X-ControllerURL');
return;
}
// Update title // Update title
var title = xhr.getResponseHeader('X-Title'); var title = xhr.getResponseHeader('X-Title');
if(title) document.title = decodeURIComponent(title.replace(/\+/g, ' ')); if(title) document.title = decodeURIComponent(title.replace(/\+/g, ' '));
@ -674,7 +669,9 @@ jQuery.noConflict();
if(url) { if(url) {
s.removeItem('tabs-' + url); s.removeItem('tabs-' + url);
} else { } else {
for(var i=0;i<s.length;i++) s.removeItem(s.key(i)); for(var i=0;i<s.length;i++) {
if(s.key(i).match(/^tabs-/)) s.removeItem(s.key(i));
}
} }
}, },
@ -974,13 +971,14 @@ jQuery.noConflict();
/** /**
* Reset button handler. IE8 does not bubble reset events to * Reset button handler. IE8 does not bubble reset events to
*/ */
$(".cms-search-form button[type=reset]").entwine({ $(".cms-search-form button[type=reset], .cms-search-form input[type=reset]").entwine({
onclick: function(e) { onclick: function(e) {
e.preventDefault(); e.preventDefault();
var form = $(this).parents('form'); var form = $(this).parents('form');
form.clearForm(); form.clearForm();
form.find(".dropdown select").prop('selectedIndex', 0).trigger("liszt:updated"); // Reset chosen.js
form.submit(); form.submit();
} }
}) })
@ -1064,6 +1062,12 @@ jQuery.noConflict();
return false; return false;
}, },
activate: function(e, ui) { activate: function(e, ui) {
// Accessibility: Simulate click to trigger panel load when tab is focused
// by a keyboard navigation event rather than a click
if(ui.newTab) {
ui.newTab.find('.cms-panel-link').click();
}
// Usability: Hide actions for "readonly" tabs (which don't contain any editable fields) // Usability: Hide actions for "readonly" tabs (which don't contain any editable fields)
var actions = $(this).closest('form').find('.Actions'); var actions = $(this).closest('form').find('.Actions');
if($(ui.newTab).closest('li').hasClass('readonly')) { if($(ui.newTab).closest('li').hasClass('readonly')) {

View File

@ -115,6 +115,13 @@
/** /**
* Extends jQueryUI dialog with iframe abilities (and related resizing logic), * Extends jQueryUI dialog with iframe abilities (and related resizing logic),
* and sets some CMS-wide defaults. * and sets some CMS-wide defaults.
*
* Additional settings:
* - 'autoPosition': Automatically reposition window on resize based on 'position' option
* - 'widthRatio': Sets width based on percentage of window (value between 0 and 1)
* - 'heightRatio': Sets width based on percentage of window (value between 0 and 1)
* - 'reloadOnOpen': Reloads the iframe whenever the dialog is reopened
* - 'iframeUrl': Create an iframe element and load this URL when the dialog is created
*/ */
$.widget("ssui.ssdialog", $.ui.dialog, { $.widget("ssui.ssdialog", $.ui.dialog, {
options: { options: {
@ -124,12 +131,17 @@
dialogExtraClass: '', dialogExtraClass: '',
// Defaults // Defaults
width: '80%',
height: 500,
position: 'center',
modal: true, modal: true,
bgiframe: true, bgiframe: true,
autoOpen: false autoOpen: false,
autoPosition: true,
minWidth: 500,
maxWidth: 700,
minHeight: 300,
maxHeight: 600,
widthRatio: 0.8,
heightRatio: 0.8,
resizable: false
}, },
_create: function() { _create: function() {
$.ui.dialog.prototype._create.call(this); $.ui.dialog.prototype._create.call(this);
@ -150,7 +162,7 @@
this.element.append(iframe); this.element.append(iframe);
// Let the iframe handle its scrolling // Let the iframe handle its scrolling
this.element.css('overflow', 'hidden'); if(this.options.iframeUrl) this.element.css('overflow', 'hidden');
}, },
open: function() { open: function() {
$.ui.dialog.prototype.open.call(this); $.ui.dialog.prototype.open.call(this);
@ -165,7 +177,6 @@
} }
// Resize events // Resize events
this.uiDialog.bind('resize.ssdialog', function() {self._resizeIframe();});
$(window).bind('resize.ssdialog', function() {self._resizeIframe();}); $(window).bind('resize.ssdialog', function() {self._resizeIframe();});
}, },
close: function() { close: function() {
@ -175,18 +186,33 @@
$(window).unbind('resize.ssdialog'); $(window).unbind('resize.ssdialog');
}, },
_resizeIframe: function() { _resizeIframe: function() {
var el = this.element, iframe = el.children('iframe'); var opts = {}, newWidth, newHeight;
if(this.options.widthRatio) {
iframe.attr('width', newWidth = $(window).width() * this.options.widthRatio;
el.innerWidth() if(this.options.minWidth && newWidth < this.options.minWidth) {
- parseFloat(el.css('paddingLeft')) opts.width = this.options.minWidth
- parseFloat(el.css('paddingRight')) } else if(this.options.maxWidth && newWidth > this.options.maxWidth) {
); opts.width = this.options.maxWidth;
iframe.attr('height', } else {
el.innerHeight() opts.width = newWidth;
- parseFloat(el.css('paddingTop')) }
- parseFloat(el.css('paddingBottom')) }
); if(this.options.heightRatio) {
newHeight = $(window).height() * this.options.heightRatio;
if(this.options.minHeight && newHeight < this.options.minHeight) {
opts.height = this.options.minHeight
} else if(this.options.maxHeight && newHeight > this.options.maxHeight) {
opts.height = this.options.maxHeight;
} else {
opts.height = newHeight;
}
}
if(this.options.autoPosition) {
opts.position = this.options.position;
}
if(!jQuery.isEmptyObject(opts)) {
this._setOptions(opts);
}
} }
}); });

View File

@ -23,12 +23,12 @@ form.nostyle {
//overflow: hidden; //overflow: hidden;
// bottom padding accounts for the border and we have a negative // bottom padding accounts for the border and we have a negative
// margin with a postive padding to ensure the bottom border extends // margin with a postive padding to ensure the bottom border extends over the edges
// over the edges
padding: 0 0 $grid-y - 1 0; padding: 0 0 $grid-y - 1 0;
margin: 0 0 $grid-y 0; margin: $grid-y 0;
&:last-child { &.noborder, &:last-child {
padding-bottom: 0;
border-bottom: none; border-bottom: none;
@include box-shadow(none); @include box-shadow(none);
} }
@ -37,7 +37,7 @@ form.nostyle {
// need to use relative positioning and overflow hidden will not expand // need to use relative positioning and overflow hidden will not expand
// the containing boxes // the containing boxes
@include legacy-pie-clearfix(); @include legacy-pie-clearfix();
&.nolabel { &.nolabel {
.middleColumn { .middleColumn {
margin-left: 0; margin-left: 0;
@ -95,6 +95,7 @@ form.nostyle {
color: lighten($color-text, 20%); color: lighten($color-text, 20%);
display: block; display: block;
font-style: italic; font-style: italic;
line-height: $grid-y * 2;
margin: $grid-y/2 0 0 $grid-x*23; // left align with .middleColumn margin: $grid-y/2 0 0 $grid-x*23; // left align with .middleColumn
} }
@ -235,7 +236,6 @@ form.small .field, .field.small {
&:hover, &:focus, &:active { &:hover, &:focus, &:active {
text-decoration: none; text-decoration: none;
outline: none;
} }
div { div {

View File

@ -237,12 +237,12 @@
background: sprite($sprites64, preview) no-repeat; background: sprite($sprites64, preview) no-repeat;
display: block; display: block;
height: 41px; height: 41px;
margin: 0 auto 20px; margin: 0 auto 20px;
width: 50px; width: 50px;
} }
} }
.preview-scroll { .preview-scroll {
height: 100%; height: 100%;
overflow: auto; overflow: auto;
position: relative; position: relative;
width: 100%; width: 100%;
@ -250,13 +250,14 @@
height: 100%; height: 100%;
width: 100%; width: 100%;
.preview-device-inner { .preview-device-inner {
@include box-sizing('border-box'); @include box-sizing('border-box');
width: 100%; width: 100%;
height:100%; height:100%;
background-color: #FFF;
iframe { iframe {
height: 100%; height: 100%;
overflow-y: auto; overflow-y: auto;
width: 100%; width: 100%;
} }
} }
} }

View File

@ -97,11 +97,7 @@ body.cms {
image: url(../images/textures/cms_content_header.png); image: url(../images/textures/cms_content_header.png);
repeat: repeat; repeat: repeat;
position: left bottom; position: left bottom;
} color: $color-darker-bg;
.cms-content-header-info *,
.cms-content-header-tabs * {
@include inline-block;
} }
a { a {
@ -118,11 +114,20 @@ body.cms {
font-size: $font-base-size + 2; font-size: $font-base-size + 2;
font-weight: bold; font-weight: bold;
margin: 0; margin: 0;
margin-bottom: $grid-x;
* {
vertical-align: middle;
}
} }
.cms-content-header-info { .cms-content-header-info {
float:left; float:left;
padding-top: 6px; padding-top: 6px;
& > * {
display: inline-block; // align back button and breadcrumbs
}
} }
// Reset to default styles // Reset to default styles
@ -431,7 +436,7 @@ body.cms {
.message { // White .message { // White
display: block; display: block;
clear: both; clear: both;
margin: $grid-y 0; margin: 0 0 $grid-y;
padding: $grid-y + $grid-x/4 $grid-x + $grid-x/2; padding: $grid-y + $grid-x/4 $grid-x + $grid-x/2;
font-weight: normal; font-weight: normal;
border: 1px #ccc solid; border: 1px #ccc solid;
@ -604,7 +609,8 @@ body.cms {
.cms-content-toolbar { .cms-content-toolbar {
min-height: 29px; min-height: 29px;
display: block; display: block;
margin: 0 0 $grid-y 0; margin: 0 0 $grid-y*1.5 0;
padding-bottom: 0;
@include doubleborder(bottom, $color-light-separator, $box-shadow-shine); @include doubleborder(bottom, $color-light-separator, $box-shadow-shine);
@include legacy-pie-clearfix(); @include legacy-pie-clearfix();
@ -651,7 +657,6 @@ body.cms {
} }
div { div {
background:url(../images/btn-icon/settings.png) 5px 4px no-repeat;
border-left:none; border-left:none;
width:100%; width:100%;
} }
@ -690,7 +695,8 @@ body.cms {
.cms-panel-header { .cms-panel-header {
clear: both; clear: both;
margin: 0 0 $grid-y - 1; margin: 10px 0 $grid-y - 1;
padding-bottom: 2px;
line-height: $grid-y * 3; line-height: $grid-y * 3;
@include doubleborder(bottom, $color-light-separator, $box-shadow-shine); @include doubleborder(bottom, $color-light-separator, $box-shadow-shine);
@ -823,6 +829,22 @@ body.cms {
} }
} }
/** ------------------------------------------------------------------
* CMS notice, used for filter messages, but generic enough to use elsewhere
* ----------------------------------------------------------------- */
.cms-notice {
display: block;
margin: 0 0 8px;
padding: 10px 12px;
font-weight: normal;
border: 1px $color-light-separator solid;
background: #fff; // for browsers that don't understand rgba
background: rgba(#fff,0.5);
text-shadow: none;
@include border-radius(3px);
}
/** /**
* CMS Batch actions * CMS Batch actions
*/ */
@ -838,6 +860,7 @@ body.cms {
padding: 4px 6px; padding: 4px 6px;
border: 1px solid #aaa; border: 1px solid #aaa;
margin-bottom: 8px; margin-bottom: 8px;
margin-right:-1px;
background-color: #D9D9D9; background-color: #D9D9D9;
@include background-image(linear-gradient(top, #fff, #D9D9D9)); @include background-image(linear-gradient(top, #fff, #D9D9D9));
border-top-left-radius: 4px; border-top-left-radius: 4px;
@ -855,6 +878,9 @@ body.cms {
fieldset, .Actions { fieldset, .Actions {
display: inline-block; display: inline-block;
} }
#view-mode-batchactions {
margin-top: 2px;
}
} }
&.inactive .view-mode-batchactions-wrapper { &.inactive .view-mode-batchactions-wrapper {
@ -882,7 +908,6 @@ body.cms {
display: block; display: block;
.chzn-single { .chzn-single {
margin-left: -1px;
border-radius: 0; border-radius: 0;
@include background-image(linear-gradient(top, #fff, #D9D9D9)); @include background-image(linear-gradient(top, #fff, #D9D9D9));
@ -892,17 +917,26 @@ body.cms {
} }
} }
.cms-batch-actions .Actions .ss-ui-button {
padding-top: 4px; .cms-batch-actions {
padding-bottom: 4px; .dropdown {
height: 28px; margin: 0;
margin-left: -1px; .chzn-single {
border-top-left-radius: 0; padding-left: 8px; /* use default size without icon */
border-bottom-left-radius: 0; }
}
.Actions .ss-ui-button {
padding-top: 4px;
padding-bottom: 4px;
height: 28px;
margin-left: -1px;
border-top-left-radius: 0;
border-bottom-left-radius: 0;
&.ui-state-disabled { &.ui-state-disabled {
opacity: 1; opacity: 1;
color: #ccc; color: #ccc;
}
} }
} }
} }
@ -1233,10 +1267,6 @@ form.member-profile-form {
} }
.cms .ui-dialog{ .cms .ui-dialog{
min-width:570px;
.htmleditorfield-dialog{
min-width:570px;
}
.ss-ui-dialog.ui-dialog-content { .ss-ui-dialog.ui-dialog-content {
padding-top: 0px; //removes padding so that tabs are flush with header padding-top: 0px; //removes padding so that tabs are flush with header
} }
@ -1267,6 +1297,16 @@ form.member-profile-form {
} }
} }
.ui-dialog-content {
overflow: auto; // TODO Replace with proper $.layout grid
&.loading {
background-image: url(../images/spinner.gif);
background-position: 50% 50%;
background-repeat: no-repeat;
}
}
.cms-dialog-content { .cms-dialog-content {
background: url("../images/textures/bg_cms_main_content.png") repeat left top #F0F3F4; background: url("../images/textures/bg_cms_main_content.png") repeat left top #F0F3F4;
padding-bottom: $grid-y; padding-bottom: $grid-y;
@ -1326,7 +1366,7 @@ body.cms-dialog {
position:relative; position:relative;
} }
#MediaFormInsertMediaTabs_FromWeb{ .htmleditorfield-from-web {
.CompositeField{ .CompositeField{
@include clearfix; @include clearfix;
} }
@ -1402,11 +1442,14 @@ body.cms-dialog {
.ss-insert-media, .Actions, .ss-insert-link{ .ss-insert-media, .Actions, .ss-insert-link{
padding:$grid-y $grid-x*2 ; padding:$grid-y $grid-x*2 ;
.ui-tabs-panel {
padding: 0;
}
} }
.details{ .details{
.file-url{ .file-url{
display:block; display:block;
width:450px; width:300px;
@include hide-text-overflow; @include hide-text-overflow;
} }
.cms-file-info{ .cms-file-info{
@ -1443,15 +1486,26 @@ body.cms-dialog {
.htmleditorfield-mediaform { .htmleditorfield-mediaform {
.ss-gridfield { .ss-gridfield {
// Set thumbnail size .gridfield-button-delete {
tbody td:first-child img { // TODO Remove from PHP instead of hiding
max-height: 30px; display: none; // delete action shouldn't be allowed here
}
table.ss-gridfield-table {
tbody td:first-child {
padding: 0;
text-align: center;
img {
max-height: 30px; // same thumbnail size as uploadfield rows
}
}
tr td {
padding: $grid-x/2; // more compressed space
}
} }
} }
.ss-uploadfield{ .htmleditorfield-from-web, .htmleditorfield-from-cms {
&.from-web, &.from-CMS{ .ss-uploadfield {
margin-bottom:48px;
.middleColumn { .middleColumn {
width:auto; width:auto;
background:none; background:none;
@ -1459,20 +1513,24 @@ body.cms-dialog {
margin-top:13px; margin-top:13px;
} }
} }
}
&.from-CMS{ .htmleditorfield-from-cms {
margin-top:33px; .ss-uploadfield {
h4{ h4 {
margin-top:3px; float: left; // headline and dropdown on same line
margin-top: $grid-y/2; // bring to same baseline as dropdown
margin-bottom: 0;
} }
.middleColumn { .middleColumn {
margin-top:0; margin-top: $grid-y*2; // same as left-floated h4
.TreeDropdownField{ margin-left: $grid-x*23; // make room for headline
margin-top:23px; }
} .field.treedropdown {
border-bottom: 0; // don't show border, dropdown and gridfield visually belong together
padding: 0;
} }
} }
} }
.ss-uploadfield-editandorganize { .ss-uploadfield-editandorganize {
@ -1550,6 +1608,7 @@ body.cms-dialog {
img { img {
max-width: $grid-x * 22; // Same as ".field label" max-width: $grid-x * 22; // Same as ".field label"
max-height: $grid-x * 16; // Fitting typical info displayed (~5 rows)
} }
} }
.cms-file-info-data { .cms-file-info-data {
@ -1557,10 +1616,16 @@ body.cms-dialog {
.field { .field {
// Unsetting styles from .field, make it more compact visually // Unsetting styles from .field, make it more compact visually
margin-bottom: 0; margin: 0;
padding-bottom: $grid-x; padding-bottom: $grid-x;
border: none; border: none;
box-shadow: none; box-shadow: none;
label.left {
width: $grid-x*12;
}
.middleColumn {
margin-left: $grid-x*13;
}
label, span { label, span {
padding: 0; padding: 0;
} }
@ -1662,11 +1727,6 @@ form.import-form {
width:$grid-x*27; width:$grid-x*27;
padding-left:0; padding-left:0;
} }
.TreeDropdownField .treedropdownfield-toggle-panel-link {
border-left:none;
background:none;
background-image:none;
}
} }
} }

View File

@ -33,6 +33,9 @@
&.disabled > a { &.disabled > a {
color: #aaaaaa; color: #aaaaaa;
} }
&.edit-disabled > a {
color: #aaaaaa;
}
// Expand/collapse arrows // Expand/collapse arrows
& > .jstree-icon { & > .jstree-icon {
cursor: pointer; cursor: pointer;
@ -60,7 +63,6 @@
&:focus, &:focus,
&:active, &:active,
&:hover { &:hover {
outline: none;
text-decoration: none; text-decoration: none;
cursor: pointer; cursor: pointer;
text-shadow: none; text-shadow: none;

View File

@ -11,6 +11,7 @@ $color-base: #b0bec7 !default;
$color-widget-bg: lighten($color-base, 20%) !default; $color-widget-bg: lighten($color-base, 20%) !default;
/* Keep as solid colours transparent borders wont work in ie */ /* Keep as solid colours transparent borders wont work in ie */
$color-darker-bg: #D4D6D8 !default;
$color-dark-bg: #142136 !default; $color-dark-bg: #142136 !default;
$color-dark-separator: #19435c !default; $color-dark-separator: #19435c !default;
$color-medium-separator: #808080 !default; $color-medium-separator: #808080 !default;

View File

@ -1,6 +1,7 @@
<?php <?php
/** /**
* @package cms * @package framework
* @subpackage tests * @subpackage tests
*/ */
class LeftAndMainTest extends FunctionalTest { class LeftAndMainTest extends FunctionalTest {
@ -9,14 +10,49 @@ class LeftAndMainTest extends FunctionalTest {
protected $extraDataObjects = array('LeftAndMainTest_Object'); protected $extraDataObjects = array('LeftAndMainTest_Object');
protected $backupCss, $backupJs, $backupCombined;
public function setUp() { public function setUp() {
parent::setUp(); parent::setUp();
// @todo fix controller stack problems and re-activate // @todo fix controller stack problems and re-activate
//$this->autoFollowRedirection = false; //$this->autoFollowRedirection = false;
CMSMenu::populate_menu(); CMSMenu::populate_menu();
$this->backupCss = Config::inst()->get('LeftAndMain', 'extra_requirements_css');
$this->backupJs = Config::inst()->get('LeftAndMain', 'extra_requirements_javascript');
$this->backupCombined = Requirements::get_combined_files_enabled();
Config::inst()->update('LeftAndMain', 'extra_requirements_css', array(
FRAMEWORK_DIR . '/tests/assets/LeftAndMainTest.css'
));
Config::inst()->update('LeftAndMain', 'extra_requirements_javascript', array(
FRAMEWORK_DIR . '/tests/assets/LeftAndMainTest.js'
));
Requirements::set_combined_files_enabled(false);
}
public function tearDown() {
parent::tearDown();
Config::inst()->update('LeftAndMain', 'extra_requirements_css', $this->backupCss);
Config::inst()->update('LeftAndMain', 'extra_requirements_javascript', $this->backupJs);
Requirements::set_combined_files_enabled($this->backupCombined);
} }
public function testExtraCssAndJavascript() {
$admin = $this->objFromFixture('Member', 'admin');
$this->session()->inst_set('loggedInAs', $admin->ID);
$response = $this->get('LeftAndMainTest_Controller');
$this->assertRegExp('/tests\/assets\/LeftAndMainTest.css/i', $response->getBody(), "body should contain custom css");
$this->assertRegExp('/tests\/assets\/LeftAndMainTest.js/i', $response->getBody(), "body should contain custom js");
}
/** /**
* Note: This test would typically rely on SiteTree and CMSMain, but is mocked by * Note: This test would typically rely on SiteTree and CMSMain, but is mocked by
* LeftAndMain_Controller and LeftAndMain_Object here to remove this dependency. * LeftAndMain_Controller and LeftAndMain_Object here to remove this dependency.
@ -158,15 +194,22 @@ class LeftAndMainTest extends FunctionalTest {
$this->session()->inst_set('loggedInAs', null); $this->session()->inst_set('loggedInAs', null);
} }
} }
/**
* @package framework
* @subpackage tests
*/
class LeftAndMainTest_Controller extends LeftAndMain implements TestOnly { class LeftAndMainTest_Controller extends LeftAndMain implements TestOnly {
protected $template = 'BlankPage'; protected $template = 'BlankPage';
private static $tree_class = 'LeftAndMainTest_Object'; private static $tree_class = 'LeftAndMainTest_Object';
} }
/**
* @package framework
* @subpackage tests
*/
class LeftAndMainTest_Object extends DataObject implements TestOnly { class LeftAndMainTest_Object extends DataObject implements TestOnly {
private static $db = array( private static $db = array(

2
cache/Cache.php vendored
View File

@ -86,7 +86,7 @@
* *
* // No need for special backend for aggregate - TwoLevels with a File slow * // No need for special backend for aggregate - TwoLevels with a File slow
* // backend supports tags * // backend supports tags
* SS_Cache::pick_backend('two-level', 'any', 10); * SS_Cache::pick_backend('two-level', 'Two-Levels', 10);
* </code> * </code>
* *
* <h2>Invalidate an element</h2> * <h2>Invalidate an element</h2>

View File

@ -29,7 +29,7 @@ chdir(dirname($_SERVER['SCRIPT_FILENAME']));
* For example, * For example,
* sake my/url somearg otherarg key=val --otherkey=val third=val&fourth=val * sake my/url somearg otherarg key=val --otherkey=val third=val&fourth=val
* *
* Will result int he following get data: * Will result in the following get data:
* args => array('somearg', 'otherarg'), * args => array('somearg', 'otherarg'),
* key => val * key => val
* otherkey => val * otherkey => val

View File

@ -265,10 +265,12 @@ class Controller extends RequestHandler implements TemplateGlobalProvider {
*/ */
public function getViewer($action) { public function getViewer($action) {
// Hard-coded templates // Hard-coded templates
if($this->templates[$action]) { if(isset($this->templates[$action]) && $this->templates[$action]) {
$templates = $this->templates[$action]; $templates = $this->templates[$action];
} else if($this->templates['index']) {
} else if(isset($this->templates['index']) && $this->templates['index']) {
$templates = $this->templates['index']; $templates = $this->templates['index'];
} else if($this->template) { } else if($this->template) {
$templates = $this->template; $templates = $this->template;
} else { } else {
@ -318,6 +320,23 @@ class Controller extends RequestHandler implements TemplateGlobalProvider {
return $returnURL; return $returnURL;
} }
/**
* Return the class that defines the given action, so that we know where to check allowed_actions.
* Overrides RequestHandler to also look at defined templates
*/
protected function definingClassForAction($action) {
$definingClass = parent::definingClassForAction($action);
if($definingClass) return $definingClass;
$class = get_class($this);
while($class != 'RequestHandler') {
$templateName = strtok($class, '_') . '_' . $action;
if(SSViewer::hasTemplate($templateName)) return $class;
$class = get_parent_class($class);
}
}
/** /**
* Returns TRUE if this controller has a template that is specifically designed to handle a specific action. * Returns TRUE if this controller has a template that is specifically designed to handle a specific action.

View File

@ -110,6 +110,7 @@ class Cookie {
$expiry = $expiry > 0 ? time()+(86400*$expiry) : $expiry; $expiry = $expiry > 0 ? time()+(86400*$expiry) : $expiry;
$path = ($path) ? $path : Director::baseURL(); $path = ($path) ? $path : Director::baseURL();
setcookie($name, $value, $expiry, $path, $domain, $secure, $httpOnly); setcookie($name, $value, $expiry, $path, $domain, $secure, $httpOnly);
$_COOKIE[$name] = $value;
} else { } else {
if(Config::inst()->get('Cookie', 'report_errors')) { if(Config::inst()->get('Cookie', 'report_errors')) {
user_error("Cookie '$name' can't be set. The site started outputting content at line $line in $file", user_error("Cookie '$name' can't be set. The site started outputting content at line $line in $file",

View File

@ -371,6 +371,22 @@ class RequestHandler extends ViewableData {
return false; return false;
} }
/**
* Return the class that defines the given action, so that we know where to check allowed_actions.
*/
protected function definingClassForAction($actionOrigCasing) {
$action = strtolower($actionOrigCasing);
$definingClass = null;
$insts = array_merge(array($this), (array)$this->getExtensionInstances());
foreach($insts as $inst) {
if(!method_exists($inst, $action)) continue;
$r = new ReflectionClass(get_class($inst));
$m = $r->getMethod($actionOrigCasing);
return $m->getDeclaringClass()->getName();
}
}
/** /**
* Check that the given action is allowed to be called from a URL. * Check that the given action is allowed to be called from a URL.
@ -382,58 +398,45 @@ class RequestHandler extends ViewableData {
$isAllowed = false; $isAllowed = false;
$isDefined = false; $isDefined = false;
if($this->hasMethod($actionOrigCasing) || !$action || $action == 'index') {
// Get actions for this specific class (without inheritance) // Get actions for this specific class (without inheritance)
$definingClass = null; $definingClass = $this->definingClassForAction($actionOrigCasing);
$insts = array_merge(array($this), (array)$this->getExtensionInstances()); $allowedActions = $this->allowedActions($definingClass);
foreach($insts as $inst) {
if(!method_exists($inst, $action)) continue;
$r = new ReflectionClass(get_class($inst));
$m = $r->getMethod($actionOrigCasing);
$definingClass = $m->getDeclaringClass()->getName();
}
$allowedActions = $this->allowedActions($definingClass); // check if specific action is set
if(isset($allowedActions[$action])) {
// check if specific action is set $isDefined = true;
if(isset($allowedActions[$action])) { $test = $allowedActions[$action];
$isDefined = true; if($test === true || $test === 1 || $test === '1') {
$test = $allowedActions[$action]; // TRUE should always allow access
if($test === true || $test === 1 || $test === '1') {
// TRUE should always allow access
$isAllowed = true;
} elseif(substr($test, 0, 2) == '->') {
// Determined by custom method with "->" prefix
list($method, $arguments) = Object::parse_class_spec(substr($test, 2));
$definingClassInst = Injector::inst()->get($definingClass);
$isAllowed = call_user_func_array(array($definingClassInst, $method), $arguments);
} else {
// Value is a permission code to check the current member against
$isAllowed = Permission::check($test);
}
} elseif(
is_array($allowedActions)
&& (($key = array_search($action, $allowedActions, true)) !== false)
&& is_numeric($key)
) {
// Allow numeric array notation (search for array value as action instead of key)
$isDefined = true;
$isAllowed = true;
} elseif(is_array($allowedActions) && !count($allowedActions)) {
// If defined as empty array, deny action
$isAllowed = false;
} elseif($allowedActions === null) {
// If undefined, allow action
$isAllowed = true; $isAllowed = true;
} elseif(substr($test, 0, 2) == '->') {
// Determined by custom method with "->" prefix
list($method, $arguments) = Object::parse_class_spec(substr($test, 2));
$isAllowed = call_user_func_array(array($this, $method), $arguments);
} else {
// Value is a permission code to check the current member against
$isAllowed = Permission::check($test);
} }
} elseif(
is_array($allowedActions)
&& (($key = array_search($action, $allowedActions, true)) !== false)
&& is_numeric($key)
) {
// Allow numeric array notation (search for array value as action instead of key)
$isDefined = true;
$isAllowed = true;
} elseif(is_array($allowedActions) && !count($allowedActions)) {
// If defined as empty array, deny action
$isAllowed = false;
} elseif($allowedActions === null) {
// If undefined, allow action
$isAllowed = true;
}
// If we don't have a match in allowed_actions, // If we don't have a match in allowed_actions,
// whitelist the 'index' action as well as undefined actions. // whitelist the 'index' action as well as undefined actions.
if(!$isDefined && ($action == 'index' || empty($action))) { if(!$isDefined && ($action == 'index' || empty($action))) {
$isAllowed = true;
}
} else {
// Doesn't have method, set to true so that a template can handle this action
$isAllowed = true; $isAllowed = true;
} }

View File

@ -541,7 +541,7 @@ class Session {
// Modify the timeout behaviour so it's the *inactive* time before the session expires. // Modify the timeout behaviour so it's the *inactive* time before the session expires.
// By default it's the total session lifetime // By default it's the total session lifetime
if($timeout && !headers_sent()) { if($timeout && !headers_sent()) {
setcookie(session_name(), session_id(), time()+$timeout, $path, $domain ? $domain : null, $secure, true); Cookie::set(session_name(), session_id(), time()+$timeout, $path, $domain ? $domain : null, $secure, true);
} }
} }
@ -559,10 +559,10 @@ class Session {
$secure = Config::inst()->get('Session', 'cookie_secure'); $secure = Config::inst()->get('Session', 'cookie_secure');
if($domain) { if($domain) {
setcookie(session_name(), '', null, $path, $domain, $secure, true); Cookie::set(session_name(), '', null, $path, $domain, $secure, true);
} }
else { else {
setcookie(session_name(), '', null, $path, null, $secure, true); Cookie::set(session_name(), '', null, $path, null, $secure, true);
} }
unset($_COOKIE[session_name()]); unset($_COOKIE[session_name()]);

View File

@ -275,6 +275,7 @@ gc_enable();
require_once 'cache/Cache.php'; require_once 'cache/Cache.php';
require_once 'core/Object.php'; require_once 'core/Object.php';
require_once 'core/ClassInfo.php'; require_once 'core/ClassInfo.php';
require_once 'core/DAG.php';
require_once 'core/Config.php'; require_once 'core/Config.php';
require_once 'view/TemplateGlobalProvider.php'; require_once 'view/TemplateGlobalProvider.php';
require_once 'control/Director.php'; require_once 'control/Director.php';

View File

@ -36,7 +36,7 @@ body.cms.ss-uploadfield-edit-iframe .fieldholder-small label, .composite.ss-asse
.ss-assetuploadfield .ss-uploadfield-files .ss-uploadfield-item .info { position: relative; padding: 7px; overflow: hidden; background-color: #FFBE66; border: 1px solid #FF9300; } .ss-assetuploadfield .ss-uploadfield-files .ss-uploadfield-item .info { position: relative; padding: 7px; overflow: hidden; background-color: #FFBE66; border: 1px solid #FF9300; }
.ss-assetuploadfield .ss-uploadfield-files .ss-uploadfield-item-preview { position: absolute; height: 30px; width: 40px; overflow: hidden; z-index: 1; } .ss-assetuploadfield .ss-uploadfield-files .ss-uploadfield-item-preview { position: absolute; height: 30px; width: 40px; overflow: hidden; z-index: 1; }
.ss-assetuploadfield .ss-uploadfield-files .ss-uploadfield-item-preview .no-preview { display: block; height: 100%; width: 100%; background: url("../images/icons/document.png") 2px 0px no-repeat; } .ss-assetuploadfield .ss-uploadfield-files .ss-uploadfield-item-preview .no-preview { display: block; height: 100%; width: 100%; background: url("../images/icons/document.png") 2px 0px no-repeat; }
.ss-assetuploadfield .ss-uploadfield-files .ss-uploadfield-item-info { position: relative; line-height: 30px; font-size: 14px; overflow: hidden; background-color: #5db4df; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #5db4df), color-stop(8%, #5db1dd), color-stop(50%, #439bcb), color-stop(54%, #3f99cd), color-stop(96%, #207db6), color-stop(100%, #1e7cba)); background-image: -webkit-linear-gradient(top, #5db4df 0%, #5db1dd 8%, #439bcb 50%, #3f99cd 54%, #207db6 96%, #1e7cba 100%); background-image: -moz-linear-gradient(top, #5db4df 0%, #5db1dd 8%, #439bcb 50%, #3f99cd 54%, #207db6 96%, #1e7cba 100%); background-image: -o-linear-gradient(top, #5db4df 0%, #5db1dd 8%, #439bcb 50%, #3f99cd 54%, #207db6 96%, #1e7cba 100%); background-image: linear-gradient(top, #5db4df 0%, #5db1dd 8%, #439bcb 50%, #3f99cd 54%, #207db6 96%, #1e7cba 100%); } .ss-assetuploadfield .ss-uploadfield-files .ss-uploadfield-item-info { position: relative; line-height: 30px; overflow: hidden; background-color: #5db4df; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #5db4df), color-stop(8%, #5db1dd), color-stop(50%, #439bcb), color-stop(54%, #3f99cd), color-stop(96%, #207db6), color-stop(100%, #1e7cba)); background-image: -webkit-linear-gradient(top, #5db4df 0%, #5db1dd 8%, #439bcb 50%, #3f99cd 54%, #207db6 96%, #1e7cba 100%); background-image: -moz-linear-gradient(top, #5db4df 0%, #5db1dd 8%, #439bcb 50%, #3f99cd 54%, #207db6 96%, #1e7cba 100%); background-image: -o-linear-gradient(top, #5db4df 0%, #5db1dd 8%, #439bcb 50%, #3f99cd 54%, #207db6 96%, #1e7cba 100%); background-image: linear-gradient(top, #5db4df 0%, #5db1dd 8%, #439bcb 50%, #3f99cd 54%, #207db6 96%, #1e7cba 100%); }
.ss-assetuploadfield .ss-uploadfield-files .ui-state-error .ss-uploadfield-item-info { background-color: #c11f1d; padding-right: 130px; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #c11f1d), color-stop(4%, #bf1d1b), color-stop(8%, #b71b1c), color-stop(15%, #b61e1d), color-stop(27%, #b11d1d), color-stop(31%, #ab1d1c), color-stop(42%, #a51b1b), color-stop(46%, #9f1b19), color-stop(50%, #9f1b19), color-stop(54%, #991c1a), color-stop(58%, #971a18), color-stop(62%, #911b1b), color-stop(65%, #911b1b), color-stop(88%, #7e1816), color-stop(92%, #771919), color-stop(100%, #731817)); background-image: -webkit-linear-gradient(top, #c11f1d 0%, #bf1d1b 4%, #b71b1c 8%, #b61e1d 15%, #b11d1d 27%, #ab1d1c 31%, #a51b1b 42%, #9f1b19 46%, #9f1b19 50%, #991c1a 54%, #971a18 58%, #911b1b 62%, #911b1b 65%, #7e1816 88%, #771919 92%, #731817 100%); background-image: -moz-linear-gradient(top, #c11f1d 0%, #bf1d1b 4%, #b71b1c 8%, #b61e1d 15%, #b11d1d 27%, #ab1d1c 31%, #a51b1b 42%, #9f1b19 46%, #9f1b19 50%, #991c1a 54%, #971a18 58%, #911b1b 62%, #911b1b 65%, #7e1816 88%, #771919 92%, #731817 100%); background-image: -o-linear-gradient(top, #c11f1d 0%, #bf1d1b 4%, #b71b1c 8%, #b61e1d 15%, #b11d1d 27%, #ab1d1c 31%, #a51b1b 42%, #9f1b19 46%, #9f1b19 50%, #991c1a 54%, #971a18 58%, #911b1b 62%, #911b1b 65%, #7e1816 88%, #771919 92%, #731817 100%); background-image: linear-gradient(top, #c11f1d 0%, #bf1d1b 4%, #b71b1c 8%, #b61e1d 15%, #b11d1d 27%, #ab1d1c 31%, #a51b1b 42%, #9f1b19 46%, #9f1b19 50%, #991c1a 54%, #971a18 58%, #911b1b 62%, #911b1b 65%, #7e1816 88%, #771919 92%, #731817 100%); } .ss-assetuploadfield .ss-uploadfield-files .ui-state-error .ss-uploadfield-item-info { background-color: #c11f1d; padding-right: 130px; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #c11f1d), color-stop(4%, #bf1d1b), color-stop(8%, #b71b1c), color-stop(15%, #b61e1d), color-stop(27%, #b11d1d), color-stop(31%, #ab1d1c), color-stop(42%, #a51b1b), color-stop(46%, #9f1b19), color-stop(50%, #9f1b19), color-stop(54%, #991c1a), color-stop(58%, #971a18), color-stop(62%, #911b1b), color-stop(65%, #911b1b), color-stop(88%, #7e1816), color-stop(92%, #771919), color-stop(100%, #731817)); background-image: -webkit-linear-gradient(top, #c11f1d 0%, #bf1d1b 4%, #b71b1c 8%, #b61e1d 15%, #b11d1d 27%, #ab1d1c 31%, #a51b1b 42%, #9f1b19 46%, #9f1b19 50%, #991c1a 54%, #971a18 58%, #911b1b 62%, #911b1b 65%, #7e1816 88%, #771919 92%, #731817 100%); background-image: -moz-linear-gradient(top, #c11f1d 0%, #bf1d1b 4%, #b71b1c 8%, #b61e1d 15%, #b11d1d 27%, #ab1d1c 31%, #a51b1b 42%, #9f1b19 46%, #9f1b19 50%, #991c1a 54%, #971a18 58%, #911b1b 62%, #911b1b 65%, #7e1816 88%, #771919 92%, #731817 100%); background-image: -o-linear-gradient(top, #c11f1d 0%, #bf1d1b 4%, #b71b1c 8%, #b61e1d 15%, #b11d1d 27%, #ab1d1c 31%, #a51b1b 42%, #9f1b19 46%, #9f1b19 50%, #991c1a 54%, #971a18 58%, #911b1b 62%, #911b1b 65%, #7e1816 88%, #771919 92%, #731817 100%); background-image: linear-gradient(top, #c11f1d 0%, #bf1d1b 4%, #b71b1c 8%, #b61e1d 15%, #b11d1d 27%, #ab1d1c 31%, #a51b1b 42%, #9f1b19 46%, #9f1b19 50%, #991c1a 54%, #971a18 58%, #911b1b 62%, #911b1b 65%, #7e1816 88%, #771919 92%, #731817 100%); }
.ss-assetuploadfield .ss-uploadfield-files .ui-state-error .ss-uploadfield-item-info .ss-uploadfield-item-name { width: 100%; cursor: default; background: #bcb9b9; background: rgba(201, 198, 198, 0.9); } .ss-assetuploadfield .ss-uploadfield-files .ui-state-error .ss-uploadfield-item-info .ss-uploadfield-item-name { width: 100%; cursor: default; background: #bcb9b9; background: rgba(201, 198, 198, 0.9); }
.ss-assetuploadfield .ss-uploadfield-files .ui-state-error .ss-uploadfield-item-info .ss-uploadfield-item-name .name { text-shadow: 0px 1px 0px rgba(255, 255, 255, 0.7); } .ss-assetuploadfield .ss-uploadfield-files .ui-state-error .ss-uploadfield-item-info .ss-uploadfield-item-name .name { text-shadow: 0px 1px 0px rgba(255, 255, 255, 0.7); }

View File

@ -1,55 +1,22 @@
/** Fields */ form { /** Messages */ }
form * { font-size: 12px; } form * { font-size: 12px; }
form fieldset { margin: 0; padding: 0; border-style: none; } form fieldset { margin: 0; padding: 0; border-style: none; }
form .field { clear: both; padding: 0.2em; margin: 0 0 0 10em; vertical-align: middle; } form .field { clear: both; padding: 0.2em; margin: 0 0 0 10em; vertical-align: middle; }
form p.checkbox { margin: 0 0 0 8.5em; } form p.checkbox { margin: 0 0 0 8.5em; }
form .field.nolabel { margin-left: 0; } form .field.nolabel { margin-left: 0; }
form label.left { float: left; width: 10em; margin-left: -10em; } form label.left { float: left; width: 10em; margin-left: -10em; }
form input.maxlength { width: auto; } form input.maxlength { width: auto; }
form .actions { float: right; } form .actions { float: right; }
form .validation, form .error, form .required { border: 1px solid #f00; background: #fcc; padding: 0.5em; width: 50%; } form .validation, form .error, form .required { border: 1px solid #f00; background: #fcc; padding: 0.5em; width: 50%; }
form .field span.readonly { border: 1px #CCC dotted; background-color: #F7F7F7; display: block; width: 98%; padding: 3px; margin: 5px 0; } form .field span.readonly { border: 1px #CCC dotted; background-color: #F7F7F7; display: block; width: 98%; padding: 3px; margin: 5px 0; }
form .indicator.inline { display: inline; margin-left: 5px; vertical-align: middle; } form .indicator.inline { display: inline; margin-left: 5px; vertical-align: middle; }
form .indicator.block { display: inline; } form .indicator.block { display: inline; }
/* Emulating link styling for actions requiring lesser attention, e.g. "cancel" FormActions */
form button.minorAction { background: none; padding: 0; border: 0; color: #0074C6; text-decoration: underline; } form button.minorAction { background: none; padding: 0; border: 0; color: #0074C6; text-decoration: underline; }
/** Composite Fields - raw concatenation of fields for programmatic purposes. */
.right form div.CompositeField { margin-left: 7.5em; }
.right form div.CompositeField div.field { font-size: 1em; }
.right form div.CompositeField { clear: both; }
.right form div.CompositeField label.left { float: left; width: 10em; margin-left: -10em; }
.right form div.column2 { float: left; width: 45%; margin-right: 4%; }
.right form div.multicolumn { width: 100%; float: left; clear: left; }
/** Messages */
form .message.notice { background-color: #FCFFDF; border-color: #FF9300; }
form .message { margin: 1em 0; padding: 0.5em; font-weight: bold; border: 1px black solid; background-color: #B9FFB9; border-color: #00FF00; } form .message { margin: 1em 0; padding: 0.5em; font-weight: bold; border: 1px black solid; background-color: #B9FFB9; border-color: #00FF00; }
form .message.notice { background-color: #FCFFDF; border-color: #FF9300; }
form .message.warning { background-color: #FFD2A6; border-color: #FF9300; } form .message.warning { background-color: #FFD2A6; border-color: #FF9300; }
form .message.bad { background-color: #FF8080; border-color: #FF0000; } form .message.bad { background-color: #FF8080; border-color: #FF0000; }
form .message.required, form .message.validation { display: block; margin-top: 5px; color: #FF9300; width: 240px; border-color: #FF9300; } form .message.required, form .message.validation { display: block; margin-top: 5px; color: #FF9300; width: 240px; border-color: #FF9300; }
form .message.validation { color: #FF4040; width: 240px; border-color: #FF4040; } form .message.validation { color: #FF4040; width: 240px; border-color: #FF4040; }
.typography .ss-tabset ul { margin: 0; } .typography .ss-tabset ul { margin: 0; }

View File

@ -30,7 +30,7 @@ Used in side panels and action tabs
.cms .ss-gridfield .add-existing-autocompleter span { display: -moz-inline-stack; display: inline-block; vertical-align: top; *vertical-align: auto; zoom: 1; *display: inline; } .cms .ss-gridfield .add-existing-autocompleter span { display: -moz-inline-stack; display: inline-block; vertical-align: top; *vertical-align: auto; zoom: 1; *display: inline; }
.cms .ss-gridfield .add-existing-autocompleter input.relation-search { width: 270px; margin-bottom: 12px; } .cms .ss-gridfield .add-existing-autocompleter input.relation-search { width: 270px; margin-bottom: 12px; }
.cms .ss-gridfield .grid-csv-button, .cms .ss-gridfield .grid-print-button { margin-bottom: 12px; display: -moz-inline-stack; display: inline-block; vertical-align: middle; *vertical-align: auto; zoom: 1; *display: inline; } .cms .ss-gridfield .grid-csv-button, .cms .ss-gridfield .grid-print-button { margin-bottom: 12px; display: -moz-inline-stack; display: inline-block; vertical-align: middle; *vertical-align: auto; zoom: 1; *display: inline; }
.cms table.ss-gridfield-table { display: table; -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none; padding: 0; border-collapse: separate; border-bottom: 0 none; width: 100%; margin-bottom: 12px; } .cms table.ss-gridfield-table { display: table; -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none; padding: 0; border-collapse: separate; border-bottom: 0 none; width: 100%; }
.cms table.ss-gridfield-table thead { color: #323e46; background: transparent; } .cms table.ss-gridfield-table thead { color: #323e46; background: transparent; }
.cms table.ss-gridfield-table thead tr.filter-header .fieldgroup { max-width: 512px; } .cms table.ss-gridfield-table thead tr.filter-header .fieldgroup { max-width: 512px; }
.cms table.ss-gridfield-table thead tr.filter-header .fieldgroup .fieldgroup-field { padding: 0; } .cms table.ss-gridfield-table thead tr.filter-header .fieldgroup .fieldgroup-field { padding: 0; }
@ -114,7 +114,7 @@ Used in side panels and action tabs
.cms table.ss-gridfield-table tr td.bottom-all { -moz-border-radius-bottomleft: 5px; -webkit-border-bottom-left-radius: 5px; border-bottom-left-radius: 5px; -moz-border-radius-bottomright: 5px; -webkit-border-bottom-right-radius: 5px; border-bottom-right-radius: 5px; background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjUwJSIgeTE9IjAlIiB4Mj0iNTAlIiB5Mj0iMTAwJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2IwYmVjNyIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iIzk4YWFiNiIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #b0bec7), color-stop(100%, #98aab6)); background-image: -webkit-linear-gradient(#b0bec7, #98aab6); background-image: -moz-linear-gradient(#b0bec7, #98aab6); background-image: -o-linear-gradient(#b0bec7, #98aab6); background-image: linear-gradient(#b0bec7, #98aab6); padding: 4px 12px; } .cms table.ss-gridfield-table tr td.bottom-all { -moz-border-radius-bottomleft: 5px; -webkit-border-bottom-left-radius: 5px; border-bottom-left-radius: 5px; -moz-border-radius-bottomright: 5px; -webkit-border-bottom-right-radius: 5px; border-bottom-right-radius: 5px; background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjUwJSIgeTE9IjAlIiB4Mj0iNTAlIiB5Mj0iMTAwJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2IwYmVjNyIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iIzk4YWFiNiIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #b0bec7), color-stop(100%, #98aab6)); background-image: -webkit-linear-gradient(#b0bec7, #98aab6); background-image: -moz-linear-gradient(#b0bec7, #98aab6); background-image: -o-linear-gradient(#b0bec7, #98aab6); background-image: linear-gradient(#b0bec7, #98aab6); padding: 4px 12px; }
.cms table.ss-gridfield-table tr td.bottom-all .datagrid-footer-message { text-align: center; padding-top: 6px; color: white; } .cms table.ss-gridfield-table tr td.bottom-all .datagrid-footer-message { text-align: center; padding-top: 6px; color: white; }
.cms table.ss-gridfield-table tr td.bottom-all .datagrid-pagination { padding-top: 1px; position: absolute; left: 50%; margin-left: -116px; z-index: 5; } .cms table.ss-gridfield-table tr td.bottom-all .datagrid-pagination { padding-top: 1px; position: absolute; left: 50%; margin-left: -116px; z-index: 5; }
.cms table.ss-gridfield-table tr td.bottom-all .datagrid-pagination .pagination-page-number { color: white; text-shadow: 0px -1px 0 rgba(0, 0, 0, 0.2); } .cms table.ss-gridfield-table tr td.bottom-all .datagrid-pagination .pagination-page-number { color: white; text-align: center; text-shadow: 0px -1px 0 rgba(0, 0, 0, 0.2); }
.cms table.ss-gridfield-table tr td.bottom-all .datagrid-pagination .pagination-page-number input { width: 35px; height: 18px; margin-bottom: -6px; padding: 0px; border: 1px solid #899eab; border-bottom: 1px solid #a7b7c1; } .cms table.ss-gridfield-table tr td.bottom-all .datagrid-pagination .pagination-page-number input { width: 35px; height: 18px; margin-bottom: -6px; padding: 0px; border: 1px solid #899eab; border-bottom: 1px solid #a7b7c1; }
.cms table.ss-gridfield-table tr td.bottom-all .datagrid-pagination button { -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none; border: none; width: 10px; margin: 0 10px; display: inline; float: none; } .cms table.ss-gridfield-table tr td.bottom-all .datagrid-pagination button { -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none; border: none; width: 10px; margin: 0 10px; display: inline; float: none; }
.cms table.ss-gridfield-table tr td.bottom-all .datagrid-pagination button span { text-indent: -9999em; } .cms table.ss-gridfield-table tr td.bottom-all .datagrid-pagination button span { text-indent: -9999em; }
@ -127,3 +127,4 @@ Used in side panels and action tabs
.cms table.ss-gridfield-table tr.last td { border-bottom: 0 none; } .cms table.ss-gridfield-table tr.last td { border-bottom: 0 none; }
.cms table.ss-gridfield-table td:first-child { border-left: 1px solid rgba(0, 0, 0, 0.1); } .cms table.ss-gridfield-table td:first-child { border-left: 1px solid rgba(0, 0, 0, 0.1); }
.cms table.ss-gridfield-table td:last-child { border-right: 1px solid rgba(0, 0, 0, 0.1); } .cms table.ss-gridfield-table td:last-child { border-right: 1px solid rgba(0, 0, 0, 0.1); }
.cms .grid-bottom-button { margin-top: 12px; }

View File

@ -5,7 +5,7 @@ div.TreeDropdownField .treedropdownfield-panel { clear: left; position: absolute
div.TreeDropdownField .treedropdownfield-panel.loading { min-height: 30px; background: white url("../images/network-save.gif") 7px 7px no-repeat; } div.TreeDropdownField .treedropdownfield-panel.loading { min-height: 30px; background: white url("../images/network-save.gif") 7px 7px no-repeat; }
div.TreeDropdownField .treedropdownfield-panel ul.tree { margin: 0; } div.TreeDropdownField .treedropdownfield-panel ul.tree { margin: 0; }
div.TreeDropdownField .treedropdownfield-panel ul.tree a { font-size: 12px; } div.TreeDropdownField .treedropdownfield-panel ul.tree a { font-size: 12px; }
div.TreeDropdownField .treedropdownfield-toggle-panel-link { border: none; margin: 0; z-index: 0; padding: 7px 3px; overflow: hidden; -webkit-border-radius: 0 4px 4px 0; -moz-border-radius: 0 4px 4px 0; border-radius: 0 4px 4px 0; -moz-background-clip: padding; -webkit-background-clip: padding-box; background-clip: padding-box; background: #ccc; background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #cccccc), color-stop(0.6, #eeeeee)); background-image: -webkit-linear-gradient(center bottom, #cccccc 0%, #eeeeee 60%); background-image: -moz-linear-gradient(center bottom, #cccccc 0%, #eeeeee 60%); background-image: -o-linear-gradient(bottom, #cccccc 0%, #eeeeee 60%); background-image: -ms-linear-gradient(top, #cccccc 0%, #eeeeee 60%); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#cccccc', endColorstr='#eeeeee',GradientType=0 ); background-image: linear-gradient(top, #cccccc 0%, #eeeeee 60%); border-left: 1px solid #aaa; } div.TreeDropdownField .treedropdownfield-toggle-panel-link { border: none; margin: 0; z-index: 0; padding: 7px 3px; overflow: hidden; -webkit-border-radius: 0 4px 4px 0; -moz-border-radius: 0 4px 4px 0; border-radius: 0 4px 4px 0; }
div.TreeDropdownField .treedropdownfield-toggle-panel-link.treedropdownfield-open-tree { background: transparent; border: none; } div.TreeDropdownField .treedropdownfield-toggle-panel-link.treedropdownfield-open-tree { background: transparent; border: none; }
div.TreeDropdownField .treedropdownfield-toggle-panel-link a { text-decoration: none; display: block; border: 0; margin: 0; opacity: 0.5; } div.TreeDropdownField .treedropdownfield-toggle-panel-link a { text-decoration: none; display: block; border: 0; margin: 0; opacity: 0.5; }
div.TreeDropdownField a.jstree-loading .jstree-pageicon { background: white url("../images/network-save.gif") center center no-repeat; } div.TreeDropdownField a.jstree-loading .jstree-pageicon { background: white url("../images/network-save.gif") center center no-repeat; }

View File

@ -11,9 +11,6 @@
Used in side panels and action tabs Used in side panels and action tabs
*/ */
.ss-uploadfield .clear { clear: both; } .ss-uploadfield .clear { clear: both; }
.ss-insert-media .ss-uploadfield { margin-top: 20px; }
.ss-insert-media .ss-uploadfield h4 { float: left; }
.ss-insert-media .ss-uploadfield.from-CMS .nolabel.treedropdown .middleColumn { margin-left: 184px; }
.ss-uploadfield .middleColumn { width: 510px; padding: 0; background: #fff; border: 1px solid #b3b3b3; -webkit-border-radius: 4px; -moz-border-radius: 4px; -ms-border-radius: 4px; -o-border-radius: 4px; border-radius: 4px; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #efefef), color-stop(10%, #ffffff), color-stop(90%, #ffffff), color-stop(100%, #efefef)); background-image: -webkit-linear-gradient(#efefef, #ffffff 10%, #ffffff 90%, #efefef); background-image: -moz-linear-gradient(#efefef, #ffffff 10%, #ffffff 90%, #efefef); background-image: -o-linear-gradient(#efefef, #ffffff 10%, #ffffff 90%, #efefef); background-image: linear-gradient(#efefef, #ffffff 10%, #ffffff 90%, #efefef); } .ss-uploadfield .middleColumn { width: 510px; padding: 0; background: #fff; border: 1px solid #b3b3b3; -webkit-border-radius: 4px; -moz-border-radius: 4px; -ms-border-radius: 4px; -o-border-radius: 4px; border-radius: 4px; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #efefef), color-stop(10%, #ffffff), color-stop(90%, #ffffff), color-stop(100%, #efefef)); background-image: -webkit-linear-gradient(#efefef, #ffffff 10%, #ffffff 90%, #efefef); background-image: -moz-linear-gradient(#efefef, #ffffff 10%, #ffffff 90%, #efefef); background-image: -o-linear-gradient(#efefef, #ffffff 10%, #ffffff 90%, #efefef); background-image: linear-gradient(#efefef, #ffffff 10%, #ffffff 90%, #efefef); }
.ss-uploadfield .ss-uploadfield-item { margin: 0; padding: 15px; overflow: auto; } .ss-uploadfield .ss-uploadfield-item { margin: 0; padding: 15px; overflow: auto; }
.ss-uploadfield .ss-uploadfield-item .ss-uploadfield-item-preview { height: 60px; line-height: 60px; width: 80px; text-align: center; font-weight: bold; float: left; overflow: hidden; } .ss-uploadfield .ss-uploadfield-item .ss-uploadfield-item-preview { height: 60px; line-height: 60px; width: 80px; text-align: center; font-weight: bold; float: left; overflow: hidden; }

View File

@ -0,0 +1,23 @@
<?php
/**
* @package framework
* @subpackage testing
*/
class BehatFixtureFactory extends \FixtureFactory {
public function createObject($name, $identifier, $data = null) {
if(!$data) $data = array();
// Copy identifier to some visible property unless its already defined.
// Exclude files, since they generate their own named based on the file path.
if(!is_a($name, 'File', true)) {
foreach(array('Name', 'Title') as $fieldName) {
if(singleton($name)->hasField($fieldName) && !isset($data[$fieldName])) {
$data[$fieldName] = $identifier;
break;
}
}
}
return parent::createObject($name, $identifier, $data);
}
}

View File

@ -88,7 +88,7 @@ class Deprecation {
$callingfile = realpath($backtrace[1]['file']); $callingfile = realpath($backtrace[1]['file']);
global $manifest; $manifest = SS_ClassLoader::instance()->getManifest();
foreach ($manifest->getModules() as $name => $path) { foreach ($manifest->getModules() as $name => $path) {
if (strpos($callingfile, realpath($path)) === 0) { if (strpos($callingfile, realpath($path)) === 0) {
return $name; return $name;

View File

@ -116,6 +116,7 @@ class FixtureBlueprint {
$this->setValue($obj, $fieldName, $fieldVal, $fixtures); $this->setValue($obj, $fieldName, $fieldVal, $fixtures);
} }
$obj->write(); $obj->write();
// Save to fixture before relationship processing in case of reflexive relationships // Save to fixture before relationship processing in case of reflexive relationships

View File

@ -292,6 +292,10 @@ class SapphireTest extends PHPUnit_Framework_TestCase {
public function setUpOnce() { public function setUpOnce() {
$isAltered = false; $isAltered = false;
if(!Director::isDev()) {
user_error('Tests can only run in "dev" mode', E_USER_ERROR);
}
// Remove any illegal extensions that are present // Remove any illegal extensions that are present
foreach($this->illegalExtensions as $class => $extensions) { foreach($this->illegalExtensions as $class => $extensions) {
foreach($extensions as $extension) { foreach($extensions as $extension) {

View File

@ -286,8 +286,18 @@ class TestRunner extends Controller {
$skipTests = explode(',', $this->request->getVar('SkipTests')); $skipTests = explode(',', $this->request->getVar('SkipTests'));
} }
$classList = array_diff($classList, $skipTests); $abstractClasses = array();
foreach($classList as $className) {
// Ensure that the autoloader pulls in the test class, as PHPUnit won't know how to do this.
class_exists($className);
$reflection = new ReflectionClass($className);
if ($reflection->isAbstract()) {
array_push($abstractClasses, $className);
}
}
$classList = array_diff($classList, $skipTests, $abstractClasses);
// run tests before outputting anything to the client // run tests before outputting anything to the client
$suite = new PHPUnit_Framework_TestSuite(); $suite = new PHPUnit_Framework_TestSuite();
natcasesort($classList); natcasesort($classList);

View File

@ -14,6 +14,7 @@
* Removed SiteTree "MetaTitle" and "MetaKeywords" fields * Removed SiteTree "MetaTitle" and "MetaKeywords" fields
* More legible and simplified tab and menu styling in the CMS * More legible and simplified tab and menu styling in the CMS
* Dropped support for Internet Explorer 7 * Dropped support for Internet Explorer 7
* Added support for Internet Explorer 10 (in "classic"/desktop mode)
### Framework ### Framework
@ -156,7 +157,7 @@ Here's an example on how to rewrite a common `_config.php` configuration:
Object::add_extension('Member', 'MyMemberExtension'); Object::add_extension('Member', 'MyMemberExtension');
The ugpraded `_config.php`: The upgraded `_config.php`:
:::php :::php
<?php <?php
@ -189,7 +190,7 @@ The upgraded `config.yml`:
theme: 'simple' theme: 'simple'
Member: Member:
extensions: extensions:
MyMemberExtension - MyMemberExtension
--- ---
Only: Only:
environment: 'live' environment: 'live'
@ -475,3 +476,6 @@ you can enable those warnings and future-proof your code already.
by `updateCMSFields`. See the [DataExtension Reference](/reference/dataextension) for more information. by `updateCMSFields`. See the [DataExtension Reference](/reference/dataextension) for more information.
* Magic quotes is now deprecated. Will trigger user_error on live sites, as well as an error on new installs * Magic quotes is now deprecated. Will trigger user_error on live sites, as well as an error on new installs
* Support for Apache 1.x is removed. * Support for Apache 1.x is removed.
* Forms created in the CMS should now be instances of a new `CMSForm` class,
and have the CMS controller's response negotiator passed into them.
Example: `$form = new CMSForm(...); $form->setResponseNegotiator($this->getResponseNegotiator());`

View File

@ -2,28 +2,31 @@
## Introduction ## ## Introduction ##
The CMS interface works just like any other part of your website: It consists of PHP controllers, The CMS interface works just like any other part of your website: It consists of
templates, CSS stylesheets and JavaScript. Because it uses the same base elements, PHP controllers, templates, CSS stylesheets and JavaScript. Because it uses the
it is relatively easy to extend. same base elements, it is relatively easy to extend.
As an example, we're going to add a permanent "bookmarks" bar to popular pages at the bottom of the CMS.
A page can be bookmarked by a CMS author through a simple checkbox. As an example, we're going to add a permanent "bookmarks" bar to popular pages
at the bottom of the CMS. A page can be bookmarked by a CMS author through a
simple checkbox.
For a deeper introduction to the inner workings of the CMS, please refer to our For a deeper introduction to the inner workings of the CMS, please refer to our
guide on [CMS Architecture](../reference/cms-architecture). guide on [CMS Architecture](../reference/cms-architecture).
## Overload a CMS template ## ## Overload a CMS template ##
If you place a template with an identical name into your application template directory If you place a template with an identical name into your application template
(usually `mysite/templates/`), it'll take priority over the built-in one. directory (usually `mysite/templates/`), it'll take priority over the built-in
one.
CMS templates are inherited based on their controllers, similar to subclasses of CMS templates are inherited based on their controllers, similar to subclasses of
the common `Page` object (a new PHP class `MyPage` will look for a `MyPage.ss` template). the common `Page` object (a new PHP class `MyPage` will look for a `MyPage.ss` template).
We can use this to create a different base template with `LeftAndMain.ss` We can use this to create a different base template with `LeftAndMain.ss`
(which corresponds to the `LeftAndMain` PHP controller class). (which corresponds to the `LeftAndMain` PHP controller class).
Copy the template markup of the base implementation at `framework/admin/templates/LeftAndMain.ss` into Copy the template markup of the base implementation at `framework/admin/templates/LeftAndMain.ss`
`mysite/templates/LeftAndMain.ss`. It will automatically be picked up by the CMS logic. Add a new section after the into `mysite/templates/LeftAndMain.ss`. It will automatically be picked up by
`$Content` tag: the CMS logic. Add a new section after the `$Content` tag:
:::ss :::ss
... ...
@ -39,21 +42,24 @@ Copy the template markup of the base implementation at `framework/admin/template
</div> </div>
... ...
Refresh the CMS interface with `admin/?flush=all`, and you should see the new bottom bar with some hardcoded links. Refresh the CMS interface with `admin/?flush=all`, and you should see the new
We'll make these dynamic further down. bottom bar with some hardcoded links. We'll make these dynamic further down.
You might have noticed that we didn't write any JavaScript to add our layout manager. You might have noticed that we didn't write any JavaScript to add our layout
The important piece of information is the `south` class in our new `<div>` structure, manager. The important piece of information is the `south` class in our new
plus the height value in our CSS. It instructs the existing parent layout how to render the element. `<div>` structure, plus the height value in our CSS. It instructs the existing
This layout manager ([jLayout](http://www.bramstein.com/projects/jlayout/)) parent layout how to render the element. This layout manager
allows us to build complex layouts with minimal JavaScript configuration. ([jLayout](http://www.bramstein.com/projects/jlayout/)) allows us to build
complex layouts with minimal JavaScript configuration.
See [layout reference](../reference/layout) for more specific information on CMS layouting. See [layout reference](../reference/layout) for more specific information on
CMS layouting.
## Include custom CSS in the CMS ## Include custom CSS in the CMS
In order to show the links in one line, we'll add some CSS, and get it to load with the CMS interface. In order to show the links in one line, we'll add some CSS, and get it to load
Paste the following content into a new file called `mysite/css/BookmarkedPages.css`: with the CMS interface. Paste the following content into a new file called
`mysite/css/BookmarkedPages.css`:
:::css :::css
.cms-bottom-bar {height: 20px; padding: 5px; background: #C6D7DF;} .cms-bottom-bar {height: 20px; padding: 5px; background: #C6D7DF;}
@ -67,18 +73,23 @@ Load the new CSS file into the CMS, by setting the `LeftAndMain.extra_requiremen
:::yml :::yml
LeftAndMain: LeftAndMain:
extra_requirements_css: extra_requirements_css:
mysite/css/BookmarkedPages.css: - mysite/css/BookmarkedPages.css:
## Create a "bookmark" flag on pages ## ## Create a "bookmark" flag on pages ##
Now we'll define which pages are actually bookmarked, a flag that is stored in the database. Now we'll define which pages are actually bookmarked, a flag that is stored in
For this we need to decorate the page record with a `DataExtension`. the database. For this we need to decorate the page record with a
Create a new file called `mysite/code/BookmarkedPageExtension.php` and insert the following code. `DataExtension`. Create a new file called `mysite/code/BookmarkedPageExtension.php`
and insert the following code.
:::php :::php
<?php <?php
class BookmarkedPageExtension extends DataExtension { class BookmarkedPageExtension extends DataExtension {
private static $db = array('IsBookmarked' => 'Boolean');
private static $db = array(
'IsBookmarked' => 'Boolean'
);
public function updateCMSFields(FieldList $fields) { public function updateCMSFields(FieldList $fields) {
$fields->addFieldToTab('Root.Main', $fields->addFieldToTab('Root.Main',
@ -100,14 +111,17 @@ Refresh the CMS, open a page for editing and you should see the new checkbox.
## Retrieve the list of bookmarks from the database ## Retrieve the list of bookmarks from the database
One piece in the puzzle is still missing: How do we get the list of bookmarked One piece in the puzzle is still missing: How do we get the list of bookmarked
pages from the datbase into the template we've already created (with hardcoded links)? pages from the database into the template we've already created (with hardcoded
Again, we extend a core class: The main CMS controller called `LeftAndMain`. links)? Again, we extend a core class: The main CMS controller called
`LeftAndMain`.
Add the following code to a new file `mysite/code/BookmarkedLeftAndMainExtension.php`; Add the following code to a new file `mysite/code/BookmarkedLeftAndMainExtension.php`;
:::php :::php
<?php <?php
class BookmarkedPagesLeftAndMainExtension extends LeftAndMainExtension { class BookmarkedPagesLeftAndMainExtension extends LeftAndMainExtension {
public function BookmarkedPages() { public function BookmarkedPages() {
return Page::get()->filter("IsBookmarked", 1); return Page::get()->filter("IsBookmarked", 1);
} }
@ -133,39 +147,51 @@ and replace it with the following:
## Extending the CMS actions ## Extending the CMS actions
CMS actions follow a principle similar to the CMS fields: they are built in the backend with the help of `FormFields` CMS actions follow a principle similar to the CMS fields: they are built in the
and `FormActions`, and the frontend is responsible for applying a consistent styling. backend with the help of `FormFields` and `FormActions`, and the frontend is
responsible for applying a consistent styling.
The following conventions apply: The following conventions apply:
* New actions can be added by redefining `getCMSActions`, or adding an extension with `updateCMSActions`. * New actions can be added by redefining `getCMSActions`, or adding an extension
* It is required the actions are contained in a `FieldSet` (`getCMSActions` returns this already). with `updateCMSActions`.
* Standalone buttons are created by adding a top-level `FormAction` (no such button is added by default). * It is required the actions are contained in a `FieldSet` (`getCMSActions`
* Button groups are created by adding a top-level `CompositeField` with `FormActions` in it. returns this already).
* Standalone buttons are created by adding a top-level `FormAction` (no such
button is added by default).
* Button groups are created by adding a top-level `CompositeField` with
`FormActions` in it.
* A `MajorActions` button group is already provided as a default. * A `MajorActions` button group is already provided as a default.
* Drop ups with additional actions that appear as links are created via a `TabSet` and `Tabs` with `FormActions` inside. * Drop ups with additional actions that appear as links are created via a
* A `ActionMenus.MoreOptions` tab is already provided as a default and contains some minor actions. `TabSet` and `Tabs` with `FormActions` inside.
* You can override the actions completely by providing your own `getAllCMSFields`. * A `ActionMenus.MoreOptions` tab is already provided as a default and contains
some minor actions.
* You can override the actions completely by providing your own
`getAllCMSFields`.
Let's walk through a couple of examples of adding new CMS actions in `getCMSActions`. Let's walk through a couple of examples of adding new CMS actions in `getCMSActions`.
First of all we can add a regular standalone button anywhere in the set. Here we are inserting it in the front of all First of all we can add a regular standalone button anywhere in the set. Here
other actions. We could also add a button group (`CompositeField`) in a similar fashion. we are inserting it in the front of all other actions. We could also add a
button group (`CompositeField`) in a similar fashion.
:::php :::php
$fields->unshift(FormAction::create('normal', 'Normal button')); $fields->unshift(FormAction::create('normal', 'Normal button'));
We can affect the existing button group by manipulating the `CompositeField` already present in the `FieldList`. We can affect the existing button group by manipulating the `CompositeField`
already present in the `FieldList`.
:::php :::php
$fields->fieldByName('MajorActions')->push(FormAction::create('grouped', 'New group button')); $fields->fieldByName('MajorActions')->push(FormAction::create('grouped', 'New group button'));
Another option is adding actions into the drop-up - best place for placing infrequently used minor actions. Another option is adding actions into the drop-up - best place for placing
infrequently used minor actions.
:::php :::php
$fields->addFieldToTab('ActionMenus.MoreOptions', FormAction::create('minor', 'Minor action')); $fields->addFieldToTab('ActionMenus.MoreOptions', FormAction::create('minor', 'Minor action'));
We can also easily create new drop-up menus by defining new tabs within the `TabSet`. We can also easily create new drop-up menus by defining new tabs within the
`TabSet`.
:::php :::php
$fields->addFieldToTab('ActionMenus.MyDropUp', FormAction::create('minor', 'Minor action in a new drop-up')); $fields->addFieldToTab('ActionMenus.MyDropUp', FormAction::create('minor', 'Minor action in a new drop-up'));
@ -174,15 +200,18 @@ We can also easily create new drop-up menus by defining new tabs within the `Tab
Empty tabs will be automatically removed from the `FieldList` to prevent clutter. Empty tabs will be automatically removed from the `FieldList` to prevent clutter.
</div> </div>
New actions will need associated controller handlers to work. You can use a `LeftAndMainExtension` to provide one. Refer New actions will need associated controller handlers to work. You can use a
to [Controller documentation](../topics/controller) for instructions on setting up handlers. `LeftAndMainExtension` to provide one. Refer to [Controller documentation](../topics/controller)
for instructions on setting up handlers.
To make the actions more user-friendly you can also use alternating buttons as detailed in the [CMS Alternating To make the actions more user-friendly you can also use alternating buttons as
Button](../reference/cms-alternating-button) how-to. detailed in the [CMS Alternating Button](../reference/cms-alternating-button)
how-to.
## Summary ## Summary
In a few lines of code, we've customized the look and feel of the CMS. In a few lines of code, we've customized the look and feel of the CMS.
While this example is only scratching the surface, it includes most building While this example is only scratching the surface, it includes most building
blocks and concepts for more complex extensions as well. blocks and concepts for more complex extensions as well.

View File

@ -1,9 +1,11 @@
# Contributing # Contributing
Any open source product is only as good as the community behind it. You can participate by sharing Any open source product is only as good as the community behind it. You can
code, ideas, or simply helping others. No matter what your skill level is, every contribution counts. participate by sharing code, ideas, or simply helping others. No matter what
your skill level is, every contribution counts.
See our [high level overview on silverstripe.org](http://silverstripe.org/contributing-to-silverstripe) on how you can help out. See our [high level overview on silverstripe.org](http://silverstripe.org/contributing-to-silverstripe)
on how you can help out.
Or, for more detailed guidance, read one of the following pages: Or, for more detailed guidance, read one of the following pages:

View File

@ -1,10 +1,9 @@
# Misc # Misc
This section is dedicated to going to detail about an assortment of topics which don't necessary fit into other documentation This section is dedicated to going to detail about an assortment of topics which
sections. don't necessary fit into other documentation sections.
* [Coding conventions](coding-conventions): Guidelines and standards for code formatting and documentation * [Coding conventions](coding-conventions): Guidelines and standards for code formatting and documentation
* [Contributing](contributing): How you can be a part of the SilverStripe Open Source community * [Contributing](contributing): How you can be a part of the SilverStripe Open Source community
* [Module release process](module-release-process): Creating and looking after a module
* [Release process](release-process): Describes the Framework and CMS release process * [Release process](release-process): Describes the Framework and CMS release process
* [SS markdown](ss-markdown): Markdown syntax for our technical documentation * [SS markdown](ss-markdown): Markdown syntax for our technical documentation

View File

@ -1,241 +0,0 @@
# Module Maintenance and Release Procedures
## Creating a module
One of the best ways that you can contribute to SilverStripe is by developing a module for SilverStripe.
If you do, we would love to host your module and have you become an official module maintainer on our site.
Please read our ["Contributing to SilverStripe"](http://silverstripe.org/contributing-to-silverstripe/) overview.
Once you have created a module, login at [silverstripe.org](http://silverstripe.org) and
[submit your module](http://silverstripe.org/modules/manage/add)
It's very important to us that users of SilverStripe can come to expect a level of quality from the core product and any
modules running on it. In order to provide this, we require certain things from module maintainers.
<div class="hint" markdown="1">
The following documentation describes aspects of subversion, you can read about similiar
strategies for git on a [free online book](http://progit.org/book).
</div>
### Principles
Strive for features you add to the CMS to be innovatively usable by a content editor rather than a web-developer.
Think Wordpress and Apple. Most modules should work by merely placing the code in your SilverStripe installation and
running /dev/build. Provide a default set of configuration options that are easily changed in `_config.php`
(for instance the `ecommerce` module works out of the box, and you can easily set up a payment provider), aiding a pleasant
user experience.
### Code
Each line of code you write should be version controlled, in version control systems like
[subversion](http://subversion.tigris.org) or [Git](http://gitscm.com). There's lots of services that are freely
available for opensource projects, including wiki and bugtracker functionality
(e.g. [Google Code for Subversion](http://code.google.com) or [Github for Git](http://github.com)).
* Add your module to [silverstripe.org/modules](http://silverstripe.org/modules) (and keep the version compatibility information current)
* Follow our [coding-conventions](coding-conventions)
* Write unit tests and functional tests covering code bundled with the module - see [testing-guide](/topics/testing)
* Ensure your code is [localizable](/topics/i18n)
### Maintenance
* Create releases (see ["Module Releases"](#module-releases) below)
* Ensure that your module is patched to always work with the latest SilverStripe release, and note these compatibilities on
your modules page on silverstripe.org
* Be involved in our community
* Subscripe to our developer mailing list and be available to answer questions on the forum.
* Attend our weekly core discussions on IRC as regularly as you can.
* Create an **issue tracker** so your users can file bugs and feature requests (see ["Feedback and Bugtracking"](module-release-process#feedback-and-bugtracking) below)
* Create a **roadmap** and **milestones** outlining future release planning
### Feedback and Bugtracking
Both Google Code and github.com provide their own bugtracker - we encourage you to use any built-in tools that come with
your version control hoster. Most Silverstripe-maintained modules have their bugtracker on
[github.com](http://www.github.com) (see [issue reporting guidelines](/misc/contributing/issues)).
Providing bugtracking is a major form of communicating with your users in an efficient way, and will provide a good overview
of outstanding work and the stability of your code to an interested user.
If the user community finds bugs that shouldn't be included in the next stable release, you will need to release another
release candidate. If your release candidate is found to be stable, then you can create the stable release.
### Documentation
You should have both **developer documentation** and **user documentation**, and keep them updated with your releases.
See [Producing OSS: "Documentation"](http://producingoss.com/en/getting-started.html#documentation) and our
[contributing guide](contributing/documentation).
### README file
Each module should have a `README.md file` in the project root in
[markdown format](http://daringfireball.net/projects/markdown/), roughly following this template:
# <MODULENAME> Module
## Maintainer Contact
* <FULLNAME> (Nickname: <NICKNAME>, <EMAIL>)
## Requirements
* <Specific SilverStripe version, PHP, MySQL, ...>
## Documentation
<Links to the wiki, blog posts, etc>
## Installation Instructions
<Step by step instructions>
## Usage Overview
<Highlevel usage, refer to wiki documentation for details>
## Known issues
<Popular issues, how to solve them, and links to tickets in the bugtracker>
### The docs/ folder ###
The `README.md` file might get a bit long for bigger modules, and you might want to break it up into multiple files
that you can link from the `README.md` file. Example:
mymodule/
README.md
code/
docs/
installation.md
tutorial.md
howto-search-mymodule.md
The ["docsviewer" module](https://github.com/silverstripe/silverstripe-docsviewer) can be used
to list and render content inside a `docs/` folder (although it is not required, Markdown is designed
to be readable in plain text as well).
### What do you get?
In return for all your hard work in putting a high-quality module on the site, the SilverStripe project has the following
options to support you:
* Advertising of your module on the http://silverstripe.org/modules/ modules page once it has reached a beta stage and shown
to meet our requirements above.
* We might showcase your module on our blog and/or newsletter, when it's first released and/or when a major version with
significant new features is released. We'll work with you to publicise it on other blogs too (it helps if you deliver
screenshots and screencasts)
* More influence in suggesting changes to the core product
* Kudos on [Ohloh](http://www.ohloh.net/projects/5034?p=SilverStripe+CMS)
## Releasing a Module
If you are a module maintaienr, you will be responsible for creating new releases of the module.
Releases are important for each codebase to provide stability for its users,
and clearly communicate dependencies/requirements.
### Release Branches
In order to ensure stability, the first thing we do when making a release is to create a release branch. This branch
will exist for the duration of the testing and release candidate phase. The key is that **you should only commit
bugfixes to this branch**. This lets you focus on getting a stable version of module ready for release, and new
features can still be added to trunk.
Creating a release branch is a simple `svn cp` command. In the example below, (modulename) would be something like
"ecommerce" or "flickrservice", and (releasenumber) would be something like "0.2.1" (see
[Producing OSS: Release Numbering](http://producingoss.com/en/development-cycle.html#release-numbering))
svn cp http://svn.silverstripe.com/open/modules/(modulename)/trunk http://svn.silverstripe.com/open/modules/(modulename)/branches/(releasenumber)
Once you have created a release branch, you should do some testing of the module yourself. Try installing it on a new
site, and existing site, use the different features, and if possible, install on a couple of different servers.
See [SVN Book: "Release Branches"](http://svnbook.red-bean.com/en/1.5/svn.branchmerge.commonpatterns.html#svn.branchmerge.commonpatterns.release),
[Producing OSS: "Release Branches"](http://producingoss.com/en/release-branches.html) and
[Producing OSS: "Stabilizing a release"](http://producingoss.com/en/stabilizing-a-release.html) for more details.
### Release Candidates
Once you've done your own testing, it's time to create a release candidate (RC). This is a copy of your module that
will be sent to the developer community for testing and feedback. Creating a release candidate is a matter of executing
a `svn cp` command.
Note: If you are the only developer on the module, and you aren't going to be creating any new features for the duration
of the release cycle, then you can get away with creating your RCs directly from trunk instead of creating a release
branch. For major modules, we advise against this, but for very simple modules, going through the whole release process
might be overkill.
svn cp http://svn.silverstripe.com/open/modules/(modulename)/branches/(releasenumber) http://svn.silverstripe.com/open/modules/(modulename)/tags/rc/(releasenumber)-rc1
svn co http://svn.silverstripe.com/open/modules/(modulename)/tags/rc/(releasenumber)-rc1 (modulename)
tar czf (modulename)_(releasenumber)-rc1.tar.gz (modulename)
See ["ReleaseBranches" chapter](http://svnbook.red-bean.com/en/1.5/svn.branchmerge.commonpatterns.html#svn.branchmerge.commonpatterns.release)
and ["Tags" chapter](http://svnbook.red-bean.com/en/1.5/svn.branchmerge.tags.html).
### Stabilizing A Release
After you have put a release candidate out for testing and no-one has found any bugs that would prevent a release, you
can create the stable release! Please: **The stable release should always be a copy of a release candidate**. Even if
"there's just one tiny bug to fix", you shouldn't release that bug fix onto a stable release - there is always the risk
that you inadvertently broke something! As you might guess, `svn cp` is used to create the final release, and then an
export to a tar.gz.
svn cp http://svn.silverstripe.com/open/modules/(modulename)/tags/rc/(releasenumber)-rc2 http://svn.silverstripe.com/open/modules/(modulename)/tags/(releasenumber)
svn export http://svn.silverstripe.com/open/modules/(modulename)/tags/(releasenumber) (modulename)
tar czf (modulename)_(releasenumber).tar.gz (modulename)
### Announcing a Release or Release Candidate
* See [Producing OSS: "Announcing Releases"](http://producingoss.com/en/testing-and-releasing.html#release-announcement)
* Update your [documentation](module-release-process#documentation) in the sourcecode, wiki and README
* Add your release to the [silverstripe.org/modules](http://silverstripe.org/modules) listing
* Announce the release on [silverstripe-announce](http://groups.google.com/group/silverstripe-announce). Include a
[changelog](module-release-process#changelogs), the download link and instructions for filing bug reports.
* If this release is a major release, our [marketing guys](http://silverstripe.com/contact/) will strive to announce it
on the main [silverstripe.com blog](http://silverstripe.com/blog) as well
### Changelogs
Each release you make should contain `CHANGELOG` file in the project root with a highlevel overview of additions and
bugfixes in this release. The `svn log` command gives you all commit messages for a specific project, and is a good
start to build a changelog (see ["Examining historical changes" chapter](http://svnbook.red-bean.com/en/1.5/svn.tour.history.html)).
Depending on the volume of changes, it is preferred that you summarize these messages in a more "digestible"
form (see [Producing OSS: "Changes vs. Changelog"](http://producingoss.com/en/packaging.html#changelog)).
A good `CHANGELOG` example from the subversion project itself:
Version 1.5.2
(29 Aug 2008, from /branches/1.5.x)
http://svn.collab.net/repos/svn/tags/1.5.2
User-visible changes:
* Set correct permissions on created fsfs shards (r32355, -7)
* Pass client capabilities to start-commit hook (issue #3255)
* Disallow creating nested repositories (issue #3269)
Developer-visible changes:
* make libsvn_ra_neon initialization thread-safe (r32497, r32510)
Version 1.5.1
(24 Jul 2008, from /branches/1.5.x)
http://svn.collab.net/repos/svn/tags/1.5.1
...
### Release Branch Maintenance
This is also the time to remove the release branch from the subversion tree - we don't want to have lots of branches on
the source tree to confuse everyone. However, before you do this, you will need to merge your changes back to the
trunk.
## See Also
* [Module Development](/topics/module-development)
* [Documentation Guide](contributing/documentation)
* [Contributing to SilverStripe](contributing)
* [Submit your Module](http://silverstripe.org/modules/manage/add)
* [subversion](subversion)

View File

@ -1,7 +1,6 @@
# Release Process # Release Process
Describes the process followed for "core" releases (mainly the `framework` and `cms` modules). Describes the process followed for "core" releases (mainly the `framework` and `cms` modules).
For other modules, we've compiled a helpful guide for a good [module release process](module-release-process).
## Release Maintainer ## Release Maintainer
@ -18,8 +17,8 @@ Release dates are usually not published prior to the release, but you can get a
reviewing the release milestone on github.com. Releases will be reviewing the release milestone on github.com. Releases will be
announced on the [release announcements mailing list](http://groups.google.com/group/silverstripe-announce). announced on the [release announcements mailing list](http://groups.google.com/group/silverstripe-announce).
Releases of the *cms* and *framework* modules are coupled at the moment, they follow the same numbering scheme. Module Releases of the *cms* and *framework* modules are coupled at the moment, they
releases are documented separately in [module-release-process](module-release-process). follow the same numbering scheme.
## Release Numbering ## Release Numbering

View File

@ -106,12 +106,15 @@ In order to set the correct layout classes, we also need a custom template.
To obey the inheritance chain, we use `$this->getTemplatesWithSuffix('_EditForm')` for To obey the inheritance chain, we use `$this->getTemplatesWithSuffix('_EditForm')` for
selecting the most specific template (so `MyAdmin_EditForm.ss`, if it exists). selecting the most specific template (so `MyAdmin_EditForm.ss`, if it exists).
The form should be of type `CMSForm` rather than `Form`, since it allows the use
of a `PjaxResponseNegotiator` to handle its display.
Basic example form in a CMS controller subclass: Basic example form in a CMS controller subclass:
:::php :::php
class MyAdmin extends LeftAndMain { class MyAdmin extends LeftAndMain {
function getEditForm() { function getEditForm() {
$form = new Form( return CMSForm::create(
$this, $this,
'EditForm', 'EditForm',
new FieldSet( new FieldSet(
@ -125,11 +128,14 @@ Basic example form in a CMS controller subclass:
new FieldSet( new FieldSet(
FormAction::create('doSubmit') FormAction::create('doSubmit')
) )
); )
// Required for correct CMS layout // JS and CSS use this identifier
$form->addExtraClass('cms-edit-form'); ->setHTMLID('Form_EditForm')
$form->setTemplate($this->getTemplatesWithSuffix('_EditForm')); // Render correct responses on validation errors
return $form; ->setResponseNegotiator($this->getResponseNegotiator());
// Required for correct CMS layout
->addExtraClass('cms-edit-form')
->setTemplate($this->getTemplatesWithSuffix('_EditForm'));
} }
} }

View File

@ -167,13 +167,13 @@ Example: Simple Definition
'ProductCode' => 'Int', 'ProductCode' => 'Int',
); );
private static $summary_fields = array( private static $summary_fields = array(
'Name', 'Name',
'ProductCode' 'ProductCode'
); );
} }
To include relations in your summaries, you can use a dot-notation. To include relations or field manipulations in your summaries, you can use a dot-notation.
:::php :::php
class OtherObject extends DataObject { class OtherObject extends DataObject {
@ -183,17 +183,37 @@ To include relations in your summaries, you can use a dot-notation.
} }
class MyDataObject extends DataObject { class MyDataObject extends DataObject {
private static $db = array( private static $db = array(
'Name' => 'Text' 'Name' => 'Text',
'Description' => 'HTMLText'
); );
private static $has_one = array( private static $has_one = array(
'OtherObject' => 'OtherObject' 'OtherObject' => 'OtherObject'
); );
private static $summary_fields = array( private static $summary_fields = array(
'Name', 'Name' => 'Name',
'OtherObject.Title' 'Description.Summary' => 'Description (summary)',
); 'OtherObject.Title' => 'Other Object Title'
);
} }
Non-textual elements (such as images and their manipulations) can also be used in summaries.
:::php
class MyDataObject extends DataObject {
private static $db = array(
'Name' => 'Text'
);
private static $has_one = array(
'HeroImage' => 'Image'
);
private static $summary_fields = array(
'Name' => 'Name,
'HeroImage.CMSThumbnail' => 'Hero Image'
);
}
## Permissions ## Permissions
Models can be modified in a variety of controllers and user interfaces, Models can be modified in a variety of controllers and user interfaces,

View File

@ -1,6 +1,6 @@
# Gridfield # GridField
Gridfield is SilverStripe's implementation of data grids. Its main purpose is to display tabular data GridField is SilverStripe's implementation of data grids. Its main purpose is to display tabular data
in a format that is easy to view and modify. It's a can be thought of as a HTML table with some tricks. in a format that is easy to view and modify. It's a can be thought of as a HTML table with some tricks.
It's built in a way that provides developers with an extensible way to display tabular data in a It's built in a way that provides developers with an extensible way to display tabular data in a
@ -170,6 +170,7 @@ The namespace notation is `ManyMany[<extradata-field-name>]`, so for example
Example: Example:
:::php :::php
class Player extends DataObject { class Player extends DataObject {
private static $db = array('Name' => 'Text'); private static $db = array('Name' => 'Text');
public static $many_many = array('Teams' => 'Team'); public static $many_many = array('Teams' => 'Team');

View File

@ -2,31 +2,37 @@
## Overview ## Overview
With the addition of side-by-side editing, the preview has the ability to appear within the CMS window when editing With the addition of side-by-side editing, the preview has the ability to appear
content in the _Pages_ section of the CMS. The site is rendered into an iframe. It will update itself whenever the within the CMS window when editing content in the _Pages_ section of the CMS.
content is saved, and relevant pages will be loaded for editing when the user navigates around in the preview. The site is rendered into an iframe. It will update itself whenever the content
is saved, and relevant pages will be loaded for editing when the user navigates
around in the preview.
The root element for preview is `.cms-preview` which maintains the internal states neccessary for rendering within the The root element for preview is `.cms-preview` which maintains the internal
entwine properties. It provides function calls for transitioning between these states and has the ability to update the states necessary for rendering within the entwine properties. It provides
appearance of the option selectors. function calls for transitioning between these states and has the ability to
update the appearance of the option selectors.
In terms of backend support, it relies on `SilverStripeNavigator` to be rendered into the `.cms-edit-form`. In terms of backend support, it relies on `SilverStripeNavigator` to be rendered
_LeftAndMain_ will automatically take care of generating it as long as the `*_SilverStripeNavigator` template is found - into the `.cms-edit-form`. _LeftAndMain_ will automatically take care of
first segment has to match current _LeftAndMain_-derived class (e.g. `LeftAndMain_SilverStripeNavigator`). generating it as long as the `*_SilverStripeNavigator` template is found -
first segment has to match current _LeftAndMain_-derived class (e.g.
`LeftAndMain_SilverStripeNavigator`).
We use `ss.preview` entwine namespace for all preview-related entwines. We use `ss.preview` entwine namespace for all preview-related entwines.
<div class="notice" markdown='1'> <div class="notice" markdown='1'>
Caveat: `SilverStripeNavigator` and `CMSPreviewable` interface currently only support SiteTree objects that are Caveat: `SilverStripeNavigator` and `CMSPreviewable` interface currently only
_Versioned_. They are not general enough for using on any other DataObject. That pretty much limits the extendability support SiteTree objects that are _Versioned_. They are not general enough for
of the feature. using on any other DataObject. That pretty much limits the extendability of the
feature.
</div> </div>
## Configuration and Defaults ## Configuration and Defaults
Like most of the CMS, the preview UI is powered by Like most of the CMS, the preview UI is powered by
[jQuery entwine](https://github.com/hafriedlander/jquery.entwine). [jQuery entwine](https://github.com/hafriedlander/jquery.entwine). This means
This means its defaults are configured through JavaScript, by setting entwine properties. its defaults are configured through JavaScript, by setting entwine properties.
In order to achieve this, create a new file `mysite/javascript/MyLeftAndMain.Preview.js`. In order to achieve this, create a new file `mysite/javascript/MyLeftAndMain.Preview.js`.
In the following example we configure three aspects: In the following example we configure three aspects:
@ -69,7 +75,7 @@ to the `LeftAndMain.extra_requirements_javascript` [configuration value](/topics
:::yml :::yml
LeftAndMain LeftAndMain
extra_requirements_javascript: extra_requirements_javascript:
mysite/javascript/MyLeftAndMain.Preview.js: - mysite/javascript/MyLeftAndMain.Preview.js:
In order to find out which configuration values are available, the source code In order to find out which configuration values are available, the source code
is your best reference at the moment - have a look in `framework/admin/javascript/LeftAndMain.Preview.js`. is your best reference at the moment - have a look in `framework/admin/javascript/LeftAndMain.Preview.js`.
@ -78,30 +84,33 @@ To understand how layouts are handled in the CMS UI, have a look at the
## Enabling preview ## Enabling preview
The frontend decides on the preview being enabled or disabled based on the presnce of the `.cms-previewable` class. If The frontend decides on the preview being enabled or disabled based on the
this class is not found the preview will remain hidden, and the layout will stay in the _content_ mode. presence of the `.cms-previewable` class. If this class is not found the preview
will remain hidden, and the layout will stay in the _content_ mode.
If the class is found, frontend looks for the `SilverStripeNavigator` structure and moves it to the If the class is found, frontend looks for the `SilverStripeNavigator` structure
`.cms-preview-control` panel at the bottom of the preview. This structure supplies preview options such as state and moves it to the `.cms-preview-control` panel at the bottom of the preview.
selector. This structure supplies preview options such as state selector.
If the navigator is not found, the preview appears in the GUI, but is shown as "blocked" - i.e. displaying the "preview If the navigator is not found, the preview appears in the GUI, but is shown as
unavailable" overlay. "blocked" - i.e. displaying the "preview unavailable" overlay.
The preview can be affected by calling `enablePreview` and `disablePreview`. You can check if the preview is active by The preview can be affected by calling `enablePreview` and `disablePreview`. You
inspecting the `IsPreviewEnabled` entwine property. can check if the preview is active by inspecting the `IsPreviewEnabled` entwine
property.
## Preview states ## Preview states
States are the site stages: _live_, _stage_ etc. Preview states are picked up from the `SilverStripeNavigator`. States are the site stages: _live_, _stage_ etc. Preview states are picked up
You can invoke the state change by calling: from the `SilverStripeNavigator`. You can invoke the state change by calling:
```js ```js
$('.cms-preview').entwine('.ss.preview').changeState('StageLink'); $('.cms-preview').entwine('.ss.preview').changeState('StageLink');
``` ```
Note the state names come from `SilverStripeNavigatorItems` class names - thus the _Link_ in their names. This call will Note the state names come from `SilverStripeNavigatorItems` class names - thus
also redraw the state selector to fit with the internal state. See `AllowedStates` in `.cms-preview` entwine for the the _Link_ in their names. This call will also redraw the state selector to fit
with the internal state. See `AllowedStates` in `.cms-preview` entwine for the
list of supported states. list of supported states.
You can get the current state by calling: You can get the current state by calling:
@ -112,16 +121,18 @@ You can get the current state by calling:
## Preview sizes ## Preview sizes
This selector defines how the preview iframe is rendered, and try to emulate different device sizes. The options are This selector defines how the preview iframe is rendered, and try to emulate
hardcoded. The option names map directly to CSS classes applied to the `.cms-preview` and are as follows: different device sizes. The options are hardcoded. The option names map directly
to CSS classes applied to the `.cms-preview` and are as follows:
* _auto_: responsive layout * _auto_: responsive layout
* _desktop_ * _desktop_
* _tablet_ * _tablet_
* _mobile_ * _mobile_
You can switch between different types of display sizes programmatically, which has the benefit of redrawing the You can switch between different types of display sizes programmatically, which
related selector and maintaining a consistent internal state: has the benefit of redrawing the related selector and maintaining a consistent
internal state:
```js ```js
$('.cms-preview').entwine('.ss.preview').changeSize('auto'); $('.cms-preview').entwine('.ss.preview').changeSize('auto');
@ -135,25 +146,27 @@ You can find out current size by calling:
## Preview modes ## Preview modes
Preview modes map to the modes supported by the _threeColumnCompressor_ layout algorithm, see Preview modes map to the modes supported by the _threeColumnCompressor_ layout
[layout reference](../reference/layout) for more details. You can change modes by calling: algorithm, see [layout reference](../reference/layout) for more details. You
can change modes by calling:
```js ```js
$('.cms-preview').entwine('.ss.preview').changeMode('preview'); $('.cms-preview').entwine('.ss.preview').changeMode('preview');
``` ```
Currently active mode is stored on the `.cms-container` along with related internal states of the layout. You can reach Currently active mode is stored on the `.cms-container` along with related
it by calling: internal states of the layout. You can reach it by calling:
```js ```js
$('.cms-container').entwine('.ss').getLayoutOptions().mode; $('.cms-container').entwine('.ss').getLayoutOptions().mode;
``` ```
<div class="notice" markdown='1'> <div class="notice" markdown='1'>
Caveat: the `.preview-mode-selector` appears twice, once in the preview and second time in the CMS actions area as Caveat: the `.preview-mode-selector` appears twice, once in the preview and
`#preview-mode-dropdown-in-cms`. This is done because the user should still have access to the mode selector even if second time in the CMS actions area as `#preview-mode-dropdown-in-cms`. This is
preview is not visible. Currently CMS Actions are a separate area to the preview option selectors, even if they try done because the user should still have access to the mode selector even if
to appear as one horizontal bar. preview is not visible. Currently CMS Actions are a separate area to the preview
option selectors, even if they try to appear as one horizontal bar.
</div> </div>
## Preview API ## Preview API

View File

@ -146,7 +146,7 @@ quotes, `kipper`, which is a **literal**. If true, the text inside the if-block
is output. is output.
:::ss :::ss
<% if $MyDinner="kipper" %> <% if $MyDinner=="kipper" %>
Yummy, kipper for tea. Yummy, kipper for tea.
<% end_if %> <% end_if %>
@ -159,7 +159,7 @@ This example shows the use of the `else` option. The markup after `else` is
output if the tested condition is *not* true. output if the tested condition is *not* true.
:::ss :::ss
<% if $MyDinner="kipper" %> <% if $MyDinner=="kipper" %>
Yummy, kipper for tea Yummy, kipper for tea
<% else %> <% else %>
I wish I could have kipper :-( I wish I could have kipper :-(
@ -171,7 +171,7 @@ and the markup for that condition is used. If none of the conditions are true,
the markup in the `else` clause is used, if that clause is present. the markup in the `else` clause is used, if that clause is present.
:::ss :::ss
<% if $MyDinner="quiche" %> <% if $MyDinner=="quiche" %>
Real men don't eat quiche Real men don't eat quiche
<% else_if $MyDinner=$YourDinner %> <% else_if $MyDinner=$YourDinner %>
We both have good taste We both have good taste

View File

@ -208,7 +208,7 @@ like this:
'Description' => 'Text' 'Description' => 'Text'
); );
public static $belongs_many_many = array( private static $belongs_many_many = array(
'GalleryPage' => 'GalleryPage' 'GalleryPage' => 'GalleryPage'
); );
} }

View File

@ -98,22 +98,25 @@ This code provides a good template:
:::php :::php
class MyProcess extends Controller { class MyProcess extends Controller {
public static $allowed_actions = array('index');
function index() { private static $allowed_actions = array(
set_time_limit(0); 'index'
while(memory_get_usage() < 32*1024*1024) { );
if($this->somethingToDo()) {
$this->doSomething(); function index() {
sleep(1) set_time_limit(0);
} else {
sleep(300); while(memory_get_usage() < 32*1024*1024) {
} if($this->somethingToDo()) {
} $this->doSomething();
} sleep(1)
} else {
sleep(300);
}
}
}
} }
Step 2: Install the "daemon" command-line tool on your server. Step 2: Install the "daemon" command-line tool on your server.
Step 3: Use sake to start and stop your process Step 3: Use sake to start and stop your process
@ -122,8 +125,9 @@ Step 3: Use sake to start and stop your process
sake -stop MyProcess sake -stop MyProcess
Note that sake processes are currently a little brittle, in that the pid and log files are placed in the site root Note that sake processes are currently a little brittle, in that the pid and log
directory, rather than somewhere sensible like /var/log or /var/run. files are placed in the site root directory, rather than somewhere sensible like
/var/log or /var/run.
### Running Regular Tasks With Cron ### Running Regular Tasks With Cron
@ -137,6 +141,7 @@ php /path/to/site_root/framework/cli-script.php dev/tasks/MyTask
If you find that your cron job appears to be retrieving the login screen, then you may need to use `php-cli` If you find that your cron job appears to be retrieving the login screen, then you may need to use `php-cli`
instead. This is typical of a cPanel-based setup. instead. This is typical of a cPanel-based setup.
``` ```
php-cli /path/to/site_root/framework/cli-script.php dev/tasks/MyTask php-cli /path/to/site_root/framework/cli-script.php dev/tasks/MyTask
``` ```

View File

@ -164,8 +164,12 @@ through `/fastfood/drivethrough/` to use the same order function.
:::php :::php
class FastFood_Controller extends Controller { class FastFood_Controller extends Controller {
private static $allowed_actions = array('drivethrough');
public static $url_handlers = array( private static $allowed_actions = array(
'drivethrough'
);
private static $url_handlers = array(
'drivethrough/$Action/$ID/$Name' => 'order' 'drivethrough/$Action/$ID/$Name' => 'order'
); );

View File

@ -1,21 +1,26 @@
# Datamodel # Datamodel
SilverStripe uses an [object-relational model](http://en.wikipedia.org/wiki/Object-relational_model) that assumes the SilverStripe uses an [object-relational model](http://en.wikipedia.org/wiki/Object-relational_model)
following connections: that assumes the following connections:
* Each database-table maps to a PHP class * Each database-table maps to a PHP class
* Each database-row maps to a PHP object * Each database-row maps to a PHP object
* Each database-column maps to a property on a PHP object * Each database-column maps to a property on a PHP object
All data tables in SilverStripe are defined as subclasses of `[api:DataObject]`. Inheritance is supported in the data All data tables in SilverStripe are defined as subclasses of `[api:DataObject]`.
model: seperate tables will be linked together, the data spread across these tables. The mapping and saving/loading
logic is handled by SilverStripe, you don't need to worry about writing SQL most of the time. Inheritance is supported in the data model: separate tables will be linked
together, the data spread across these tables. The mapping and saving/loading
logic is handled by SilverStripe, you don't need to worry about writing SQL most
of the time.
Most of the ORM customizations are possible through [PHP5 Object Most of the ORM customizations are possible through [PHP5 Object
Overloading](http://www.onlamp.com/pub/a/php/2005/06/16/overloading.html) handled in the `[api:Object]`-class. Overloading](http://www.onlamp.com/pub/a/php/2005/06/16/overloading.html)
handled in the `[api:Object]`-class.
See [database-structure](/reference/database-structure) for in-depth information on the database-schema, See [database-structure](/reference/database-structure) for in-depth information
and the ["sql queries" topic](/reference/sqlquery) in case you need to drop down to the bare metal. on the database-schema and the ["sql queries" topic](/reference/sqlquery) in
case you need to drop down to the bare metal.
## Generating the Database Schema ## Generating the Database Schema
@ -24,27 +29,34 @@ The SilverStripe database-schema is generated automatically by visiting the URL.
<div class="notice" markdown='1'> <div class="notice" markdown='1'>
Note: You need to be logged in as an administrator to perform this command, Note: You need to be logged in as an administrator to perform this command,
unless your site is in "[dev mode](/topics/debugging)", or the command is run through CLI. unless your site is in "[dev mode](/topics/debugging)", or the command is run
through CLI.
</div> </div>
## Querying Data ## Querying Data
Every query to data starts with a `DataList::create(<class>)` or `<class>::get()` call. For example, this query would return all of the `Member` objects: Every query to data starts with a `DataList::create(<class>)` or `<class>::get()`
call. For example, this query would return all of the `Member` objects:
:::php :::php
$members = Member::get(); $members = Member::get();
The ORM uses a "fluent" syntax, where you specify a query by chaining together different methods. Two common methods The ORM uses a "fluent" syntax, where you specify a query by chaining together
are `filter()` and `sort()`: different methods. Two common methods are `filter()` and `sort()`:
:::php :::php
$members = Member::get()->filter(array('FirstName' => 'Sam'))->sort('Surname'); $members = Member::get()->filter(array(
'FirstName' => 'Sam'
))->sort('Surname');
Those of you who know a bit about SQL might be thinking "it looks like you're querying all members, and then filtering Those of you who know a bit about SQL might be thinking "it looks like you're
to those with a first name of 'Sam'. Isn't this very slow?" Is isn't, because the ORM doesn't actually execute the SQL querying all members, and then filtering to those with a first name of 'Sam'.
query until you iterate on the result with a `foreach()` or `<% loop %>`. The ORM is smart enough to generate a single
efficient query at the last moment in time without needing to post process the result set in PHP. In MySQL the query Isn't this very slow?" Is isn't, because the ORM doesn't actually execute the
generated by the ORM may look something like this for the previous query. SQL query until you iterate on the result with a `foreach()` or `<% loop %>`.
The ORM is smart enough to generate a single efficient query at the last moment
in time without needing to post process the result set in PHP. In MySQL the
query generated by the ORM may look something like this for the previous query.
::: :::
SELECT * FROM Member WHERE FirstName = 'Sam' ORDER BY Surname SELECT * FROM Member WHERE FirstName = 'Sam' ORDER BY Surname
@ -64,10 +76,13 @@ An example of the query process in action:
echo "<p>$member->FirstName $member->Surname</p>"; echo "<p>$member->FirstName $member->Surname</p>";
} }
This also means that getting the count of a list of objects will be done with a single, efficient query. This also means that getting the count of a list of objects will be done with a
single, efficient query.
:::php :::php
$members = Member::get()->filter(array('FirstName' => 'Sam'))->sort('Surname'); $members = Member::get()->filter(array(
'FirstName' => 'Sam'
))->sort('Surname');
// This will create an single SELECT COUNT query similar to - // This will create an single SELECT COUNT query similar to -
// SELECT COUNT(*) FROM Members WHERE FirstName = 'Sam' // SELECT COUNT(*) FROM Members WHERE FirstName = 'Sam'
@ -76,35 +91,42 @@ This also means that getting the count of a list of objects will be done with a
### Returning a single DataObject ### Returning a single DataObject
There are a couple of ways of getting a single DataObject from the ORM. If you know the ID number of the object, There are a couple of ways of getting a single DataObject from the ORM. If you
you can use `byID($id)`: know the ID number of the object, you can use `byID($id)`:
:::php :::php
$member = Member::get()->byID(5); $member = Member::get()->byID(5);
If you have constructed a query that you know should return a single record, you can call `First()`: If you have constructed a query that you know should return a single record, you
can call `First()`:
:::php :::php
$member = Member::get()->filter(array('FirstName' => 'Sam', 'Surname' => 'Minnee'))->First(); $member = Member::get()->filter(array(
'FirstName' => 'Sam', 'Surname' => 'Minnee'
))->First();
### Sort ### Sort
Quite often you would like to sort a list. Doing this on a list could be done in a few ways. Quite often you would like to sort a list. Doing this on a list could be done in
a few ways.
If would like to sort the list by `FirstName` in a ascending way (from A to Z). If would like to sort the list by `FirstName` in a ascending way (from A to Z).
:::php :::php
$member = Member::get()->sort('FirstName', 'ASC'); // ASC or DESC $members = Member::get()->sort('FirstName', 'ASC'); // ASC or DESC
$member = Member::get()->sort('FirstName'); // Ascending is implied $members = Member::get()->sort('FirstName'); // Ascending is implied
To reverse the sort To reverse the sort
:::php :::php
$member = Member::get()->sort('FirstName', 'DESC'); $members = Member::get()->sort('FirstName', 'DESC');
However you might have several entries with the same `FirstName` and would like to sort them by `FirstName` // or..
and `LastName` $members = Member::get()->sort('FirstName', 'ASC')->reverse();
However you might have several entries with the same `FirstName` and would like
to sort them by `FirstName` and `LastName`
:::php :::php
$member = Member::get()->sort(array( $member = Member::get()->sort(array(
@ -119,18 +141,19 @@ You can also sort randomly
### Filter ### Filter
As you might expect, the `filter()` method filters the list of objects that gets returned. The previous example As you might expect, the `filter()` method filters the list of objects that gets
included this filter, which returns all Members with a first name of "Sam". returned. The previous example included this filter, which returns all Members
with a first name of "Sam".
:::php :::php
$members = Member::get()->filter(array('FirstName' => 'Sam')); $members = Member::get()->filter(array('FirstName' => 'Sam'));
In SilverStripe 2, we would have passed `"\"FirstName\" = 'Sam'` to make this query. Now, we pass an array, In SilverStripe 2, we would have passed `"\"FirstName\" = 'Sam'` to make this
`array('FirstName' => 'Sam')`, to minimise the risk of SQL injection bugs. The format of this array follows a few query. Now, we pass an array, `array('FirstName' => 'Sam')`, to minimize the
rules: risk of SQL injection bugs. The format of this array follows a few rules:
* Each element of the array specifies a filter. You can specify as many filters as you like, and they **all** must * Each element of the array specifies a filter. You can specify as many
be true. filters as you like, and they **all** must be true.
* The key in the filter corresponds to the field that you want to filter by. * The key in the filter corresponds to the field that you want to filter by.
* The value in the filter corresponds to the value that you want to filter to. * The value in the filter corresponds to the value that you want to filter to.
@ -154,18 +177,19 @@ Or if you want to find both Sam and Sig.
'FirstName', array('Sam', 'Sig') 'FirstName', array('Sam', 'Sig')
); );
Then there is the most complex task when you want to find Sam and Sig that has
Then there is the most complex task when you want to find Sam and Sig that has either Age 17 or 74. either Age 17 or 74.
:::php :::php
$members = Member::get()->filter(array( $members = Member::get()->filter(array(
'FirstName' => array('Sam', 'Sig'), 'FirstName' => array('Sam', 'Sig'),
'Age' => array(17, 74) 'Age' => array(17, 74)
)); ));
// SQL: WHERE ("FirstName" IN ('Sam', 'Sig) AND "Age" IN ('17', '74)) // SQL: WHERE ("FirstName" IN ('Sam', 'Sig) AND "Age" IN ('17', '74))
In case you want to match multiple criteria non-exclusively (with an "OR" disjunctive), In case you want to match multiple criteria non-exclusively (with an "OR"
use the `filterAny()` method instead: disjunctive),use the `filterAny()` method instead:
:::php :::php
$members = Member::get()->filterAny(array( $members = Member::get()->filterAny(array(
@ -185,11 +209,12 @@ You can also combine both conjunctive ("AND") and disjunctive ("OR") statements.
'FirstName' => 'Sam', 'FirstName' => 'Sam',
'Age' => 17, 'Age' => 17,
)); ));
// SQL: WHERE ("LastName" = 'Minnée' AND ("FirstName" = 'Sam' OR "Age" = '17')) // WHERE ("LastName" = 'Minnée' AND ("FirstName" = 'Sam' OR "Age" = '17'))
### Exclude ### Exclude
The `exclude()` method is the opposite to the filter in that it removes entries from a list. The `exclude()` method is the opposite to the filter in that it removes entries
from a list.
If we would like to remove all members from the list with the FirstName of Sam. If we would like to remove all members from the list with the FirstName of Sam.
@ -201,7 +226,8 @@ Remove both Sam and Sig is as easy as.
:::php :::php
$members = Member::get()->exclude('FirstName', array('Sam','Sig')); $members = Member::get()->exclude('FirstName', array('Sam','Sig'));
As you can see it follows the same pattern as filter, so for removing only Sam Minnée from the list As you can see it follows the same pattern as filter, so for removing only Sam
Minnée from the list:
:::php :::php
$members = Member::get()->exclude(array( $members = Member::get()->exclude(array(
@ -224,20 +250,24 @@ This would be equivalent to a SQL query of
### Search Filter Modifiers ### Search Filter Modifiers
The where clauses showcased in the previous two sections (filter and exclude) specify exact The where clauses showcased in the previous two sections (filter and exclude)
matches by default. However, there are a number of suffixes that you can put on field names to change this specify exact matches by default. However, there are a number of suffixes that
behaviour `":StartsWith"`, `":EndsWith"`, `":PartialMatch"`, `":GreaterThan"`, `":LessThan"`, `":Negation"`. you can put on field names to change this behavior such as `":StartsWith"`,
`":EndsWith"`, `":PartialMatch"`, `":GreaterThan"`, `":LessThan"`,
`":Negation"`.
Each of these suffixes is represented in the ORM as a subclass of `[api:SearchFilter]`. Developers can define Each of these suffixes is represented in the ORM as a subclass of
their own SearchFilters if needing to extend the ORM filter and exclude behaviours. `[api:SearchFilter]`. Developers can define their own SearchFilters if needing
to extend the ORM filter and exclude behaviors.
These suffixes can also take modifiers themselves. The modifiers currently supported are `":not"`, `":nocase"` These suffixes can also take modifiers themselves. The modifiers currently
and `":case"`. These negate the filter, make it case-insensitive and make it case-sensitive respectively. The supported are `":not"`, `":nocase"` and `":case"`. These negate the filter,
default comparison uses the database's default. For MySQL and MSSQL, this is case-insensitive. For PostgreSQL, make it case-insensitive and make it case-sensitive respectively. The default
this is case-sensitive. comparison uses the database's default. For MySQL and MSSQL, this is
case-insensitive. For PostgreSQL, this is case-sensitive.
The following is a query which will return everyone whose first name doesn't start with S, who has logged in The following is a query which will return everyone whose first name doesn't
since 1/1/2011. start with S, who has logged in since 1/1/2011.
:::php :::php
$members = Member::get()->filter(array( $members = Member::get()->filter(array(
@ -247,15 +277,17 @@ since 1/1/2011.
### Subtract ### Subtract
You can subtract entries from a DataList by passing in another DataList to `subtract()` You can subtract entries from a DataList by passing in another DataList to
`subtract()`
:::php :::php
$allSams = Member::get()->filter('FirstName', 'Sam'); $allSams = Member::get()->filter('FirstName', 'Sam');
$allMembers = Member::get(); $allMembers = Member::get();
$noSams = $allMembers->subtract($allSams); $noSams = $allMembers->subtract($allSams);
Though for the above example it would probably be easier to use `filter()` and `exclude()`. A better Though for the above example it would probably be easier to use `filter()` and
use case could be when you want to find all the members that does not exist in a Group. `exclude()`. A better use case could be when you want to find all the members
that does not exist in a Group.
:::php :::php
// ... Finding all members that does not belong to $group. // ... Finding all members that does not belong to $group.
@ -263,15 +295,17 @@ use case could be when you want to find all the members that does not exist in a
### Limit ### Limit
You can limit the amount of records returned in a DataList by using the `limit()` method. You can limit the amount of records returned in a DataList by using the
`limit()` method.
:::php :::php
// Returning the first 5 members, sorted alphabetically by Surname // Returning the first 5 members, sorted alphabetically by Surname
$members = Member::get()->sort('Surname')->limit(5); $members = Member::get()->sort('Surname')->limit(5);
`limit()` accepts two arguments, the first being the amount of results you want returned, with an optional second `limit()` accepts two arguments, the first being the amount of results you want
parameter to specify the offset, which allows you to tell the system where to start getting the results from. The returned, with an optional second parameter to specify the offset, which allows
offset, if not provided as an argument, will default to 0. you to tell the system where to start getting the results from. The offset, if
not provided as an argument, will default to 0.
:::php :::php
// Return 10 members with an offset of 4 (starting from the 5th result). // Return 10 members with an offset of 4 (starting from the 5th result).
@ -280,27 +314,33 @@ offset, if not provided as an argument, will default to 0.
### Raw SQL options for advanced users ### Raw SQL options for advanced users
Occasionally, the system described above won't let you do exactly what you need to do. In these situations, we have Occasionally, the system described above won't let you do exactly what you need
methods that manipulate the SQL query at a lower level. When using these, please ensure that all table & field names to do. In these situations, we have methods that manipulate the SQL query at a
are escaped with double quotes, otherwise some DB back-ends (e.g. PostgreSQL) won't work. lower level. When using these, please ensure that all table & field names are
escaped with double quotes, otherwise some DB back-ends (e.g. PostgreSQL) won't
work.
Under the hood, query generation is handled by the `[api:DataQuery]` class. This class does provide more direct Under the hood, query generation is handled by the `[api:DataQuery]` class. This
access to certain SQL features that `DataList` abstracts away from you. class does provide more direct access to certain SQL features that `DataList`
abstracts away from you.
In general, we advise against using these methods unless it's absolutely necessary. If the ORM doesn't do quite what In general, we advise against using these methods unless it's absolutely
you need it to, you may also consider extending the ORM with new data types or filter modifiers (that documentation necessary. If the ORM doesn't do quite what you need it to, you may also
still needs to be written) consider extending the ORM with new data types or filter modifiers (that
documentation still needs to be written)
#### Where clauses #### Where clauses
You can specify a WHERE clause fragment (that will be combined with other filters using AND) with the `where()` method: You can specify a WHERE clause fragment (that will be combined with other
filters using AND) with the `where()` method:
:::php :::php
$members = Member::get()->where("\"FirstName\" = 'Sam'") $members = Member::get()->where("\"FirstName\" = 'Sam'")
#### Joining #### Joining
You can specify a join with the innerJoin and leftJoin methods. Both of these methods have the same arguments: You can specify a join with the innerJoin and leftJoin methods. Both of these
methods have the same arguments:
* The name of the table to join to * The name of the table to join to
* The filter clause for the join * The filter clause for the join
@ -310,11 +350,15 @@ For example:
:::php :::php
// Without an alias // Without an alias
$members = Member::get()->leftJoin("Group_Members", "\"Group_Members\".\"MemberID\" = \"Member\".\"ID\""); $members = Member::get()
$members = Member::get()->innerJoin("Group_Members", "\"Rel\".\"MemberID\" = \"Member\".\"ID\"", "REl"); ->leftJoin("Group_Members", "\"Group_Members\".\"MemberID\" = \"Member\".\"ID\"");
$members = Member::get()
->innerJoin("Group_Members", "\"Rel\".\"MemberID\" = \"Member\".\"ID\"", "Rel");
Passing a *$join* statement to DataObject::get will filter results further by the JOINs performed against the foreign Passing a *$join* statement to DataObject::get will filter results further by
table. **It will NOT return the additionally joined data.** The returned *$records* will always be a the JOINs performed against the foreign table. **It will NOT return the
additionally joined data.** The returned *$records* will always be a
`[api:DataObject]`. `[api:DataObject]`.
## Properties ## Properties
@ -340,9 +384,11 @@ See [data-types](data-types) for all available types.
### Overloading ### Overloading
"Getters" and "Setters" are functions that help us save fields to our data objects. By default, the methods getField() "Getters" and "Setters" are functions that help us save fields to our data
and setField() are used to set data object fields. They save to the protected array, $obj->record. We can overload the objects. By default, the methods getField() and setField() are used to set data
default behaviour by making a function called "get`<fieldname>`" or "set`<fieldname>`". object fields. They save to the protected array, $obj->record. We can overload
the default behavior by making a function called "get`<fieldname>`" or
"set`<fieldname>`".
:::php :::php
class Player extends DataObject { class Player extends DataObject {
@ -359,17 +405,22 @@ default behaviour by making a function called "get`<fieldname>`" or "set`<fieldn
### Customizing ### Customizing
We can create new "virtual properties" which are not actually listed in *static $db* or stored in the database-row. We can create new "virtual properties" which are not actually listed in
Here we combined a Player's first name and surname, accessible through $myPlayer->Title. `private static $db` or stored in the database-row.
Here we combined a Player's first name and surname, accessible through
$myPlayer->Title.
:::php :::php
class Player extends DataObject { class Player extends DataObject {
public function getTitle() { public function getTitle() {
return "{$this->FirstName} {$this->Surname}"; return "{$this->FirstName} {$this->Surname}";
} }
// access through $myPlayer->Title = "John Doe"; // access through $myPlayer->Title = "John Doe";
// just saves data on the object, please use $myPlayer->write() to save the database-row // just saves data on the object, please use $myPlayer->write() to save
// the database-row
public function setTitle($title) { public function setTitle($title) {
list($firstName, $surName) = explode(' ', $title); list($firstName, $surName) = explode(' ', $title);
$this->FirstName = $firstName; $this->FirstName = $firstName;
@ -378,48 +429,55 @@ Here we combined a Player's first name and surname, accessible through $myPlayer
} }
<div class="warning" markdown='1'> <div class="warning" markdown='1'>
**CAUTION:** It is common practice to make sure that pairs of custom getters/setter deal with the same data, in a consistent **CAUTION:** It is common practice to make sure that pairs of custom
format. getters/setter deal with the same data, in a consistent format.
</div> </div>
<div class="warning" markdown='1'> <div class="warning" markdown='1'>
**CAUTION:** Custom setters can be hard to debug: Please double check if you could transform your data in more **CAUTION:** Custom setters can be hard to debug: Please double check if you
straight-forward logic embedded to your custom controller or form-saving. could transform your data in more straight-forward logic embedded to your custom
controller or form-saving.
</div> </div>
### Default Values ### Default Values
Define the default values for all the $db fields. This example sets the "Status"-column on Player to "Active" whenever a Define the default values for all the $db fields. This example sets the
new object is created. "Status"-column on Player to "Active" whenever a new object is created.
:::php :::php
class Player extends DataObject { class Player extends DataObject {
public static $defaults = array(
private static $defaults = array(
"Status" => 'Active', "Status" => 'Active',
); );
} }
<div class="notice" markdown='1'> <div class="notice" markdown='1'>
Note: Alternatively you can set defaults directly in the database-schema (rather than the object-model). See Note: Alternatively you can set defaults directly in the database-schema (rather
[data-types](data-types) for details. than the object-model). See [data-types](data-types) for details.
</div> </div>
### Casting ### Casting
Properties defined in *static $db* are automatically casted to their [data-types](data-types) when used in templates. Properties defined in *static $db* are automatically casted to their
You can also cast the return-values of your custom functions (e.g. your "virtual properties"). [data-types](data-types) when used in templates.
Calling those functions directly will still return whatever type your PHP code generates,
but using the *obj()*-method or accessing through a template will cast the value according to the $casting-definition. You can also cast the return-values of your custom functions (e.g. your "virtual
properties"). Calling those functions directly will still return whatever type
your PHP code generates, but using the *obj()*-method or accessing through a
template will cast the value according to the $casting-definition.
:::php :::php
class Player extends DataObject { class Player extends DataObject {
public static $casting = array(
private static $casting = array(
"MembershipFee" => 'Currency', "MembershipFee" => 'Currency',
); );
// $myPlayer->MembershipFee() returns a float (e.g. 123.45) // $myPlayer->MembershipFee() returns a float (e.g. 123.45)
// $myPlayer->obj('MembershipFee') returns a object of type Currency // $myPlayer->obj('MembershipFee') returns a object of type Currency
// In a template: <% loop $MyPlayer %>MembershipFee.Nice<% end_loop %> returns a casted string (e.g. "$123.45") // In a template: <% loop $MyPlayer %>MembershipFee.Nice<% end_loop %>
// returns a casted string (e.g. "$123.45")
public function getMembershipFee() { public function getMembershipFee() {
return $this->Team()->BaseFee * $this->MembershipYears; return $this->Team()->BaseFee * $this->MembershipYears;
} }
@ -428,86 +486,98 @@ but using the *obj()*-method or accessing through a template will cast the value
## Relations ## Relations
Relations are built through static array definitions on a class, in the format `<relationship-name> => <classname>` Relations are built through static array definitions on a class, in the format
`<relationship-name> => <classname>`.
### has_one ### has_one
A 1-to-1 relation creates a database-column called "`<relationship-name>`ID", in the example below this would be "TeamID" A 1-to-1 relation creates a database-column called "`<relationship-name>`ID", in
on the "Player"-table. the example below this would be "TeamID" on the "Player"-table.
:::php :::php
// access with $myPlayer->Team() // access with $myPlayer->Team()
class Player extends DataObject { class Player extends DataObject {
public static $has_one = array(
private static $has_one = array(
"Team" => "Team", "Team" => "Team",
); );
} }
SilverStripe's `[api:SiteTree]` base-class for content-pages uses a 1-to-1 relationship to link to its SilverStripe's `[api:SiteTree]` base-class for content-pages uses a 1-to-1
parent element in the tree: relationship to link to its parent element in the tree:
:::php :::php
// access with $mySiteTree->Parent() // access with $mySiteTree->Parent()
class SiteTree extends DataObject { class SiteTree extends DataObject {
public static $has_one = array( private static $has_one = array(
"Parent" => "SiteTree", "Parent" => "SiteTree",
); );
} }
### has_many ### has_many
Defines 1-to-many joins. A database-column named ""`<relationship-name>`ID"" will to be created in the child-class. Defines 1-to-many joins. A database-column named ""`<relationship-name>`ID""
will to be created in the child-class.
<div class="warning" markdown='1'> <div class="warning" markdown='1'>
**CAUTION:** Please specify a $has_one-relationship on the related child-class as well, in order to have the necessary **CAUTION:** Please specify a $has_one-relationship on the related child-class
accessors available on both ends. as well, in order to have the necessary accessors available on both ends.
</div> </div>
:::php :::php
// access with $myTeam->Players() or $player->Team() // access with $myTeam->Players() or $player->Team()
class Team extends DataObject { class Team extends DataObject {
public static $has_many = array(
private static $has_many = array(
"Players" => "Player", "Players" => "Player",
); );
} }
class Player extends DataObject { class Player extends DataObject {
public static $has_one = array(
private static $has_one = array(
"Team" => "Team", "Team" => "Team",
); );
} }
To specify multiple $has_manys to the same object you can use dot notation to distinguish them like below To specify multiple $has_manys to the same object you can use dot notation to
distinguish them like below
:::php :::php
class Person extends DataObject { class Person extends DataObject {
public static $has_many = array(
private static $has_many = array(
"Managing" => "Company.Manager", "Managing" => "Company.Manager",
"Cleaning" => "Company.Cleaner", "Cleaning" => "Company.Cleaner",
); );
} }
class Company extends DataObject { class Company extends DataObject {
public static $has_one = array(
private static $has_one = array(
"Manager" => "Person", "Manager" => "Person",
"Cleaner" => "Person" "Cleaner" => "Person"
); );
} }
Multiple $has_one relationships are okay if they aren't linking to the same object type. Multiple $has_one relationships are okay if they aren't linking to the same
object type.
:::php :::php
/** /**
* THIS IS BAD * THIS IS BAD
*/ */
class Team extends DataObject { class Team extends DataObject {
public static $has_many = array(
private static $has_many = array(
"Players" => "Player", "Players" => "Player",
); );
} }
class Player extends DataObject { class Player extends DataObject {
public static $has_one = array( private static $has_one = array(
"Team" => "Team", "Team" => "Team",
"AnotherTeam" => "Team", "AnotherTeam" => "Team",
); );
@ -516,22 +586,26 @@ Multiple $has_one relationships are okay if they aren't linking to the same obje
### many_many ### many_many
Defines many-to-many joins. A new table, (this-class)_(relationship-name), will be created with a pair of ID fields. Defines many-to-many joins. A new table, (this-class)_(relationship-name), will
be created with a pair of ID fields.
<div class="warning" markdown='1'> <div class="warning" markdown='1'>
**CAUTION:** Please specify a $belongs_many_many-relationship on the related class as well, in order to have the necessary **CAUTION:** Please specify a $belongs_many_many-relationship on the related
accessors available on both ends. class as well, in order to have the necessary accessors available on both ends.
</div> </div>
:::php :::php
// access with $myTeam->Categories() or $myCategory->Teams() // access with $myTeam->Categories() or $myCategory->Teams()
class Team extends DataObject { class Team extends DataObject {
public static $many_many = array(
private static $many_many = array(
"Categories" => "Category", "Categories" => "Category",
); );
} }
class Category extends DataObject { class Category extends DataObject {
public static $belongs_many_many = array(
private static $belongs_many_many = array(
"Teams" => "Team", "Teams" => "Team",
); );
} }
@ -539,14 +613,16 @@ accessors available on both ends.
### Adding relations ### Adding relations
Adding new items to a relations works the same, regardless if you're editing a *has_many*- or a *many_many*. Adding new items to a relations works the same, regardless if you're editing a
They are encapsulated by `[api:HasManyList]` and `[api:ManyManyList]`, both of which provide very similar APIs, *has_many*- or a *many_many*. They are encapsulated by `[api:HasManyList]` and
e.g. an `add()` and `remove()` method. `[api:ManyManyList]`, both of which provide very similar APIs, e.g. an `add()`
and `remove()` method.
:::php :::php
class Team extends DataObject { class Team extends DataObject {
// see "many_many"-description for a sample definition of class "Category" // see "many_many"-description for a sample definition of class "Category"
public static $many_many = array( private static $many_many = array(
"Categories" => "Category", "Categories" => "Category",
); );
@ -558,14 +634,15 @@ e.g. an `add()` and `remove()` method.
### Custom Relations ### Custom Relations
You can use the flexible datamodel to get a filtered result-list without writing any SQL. For example, this snippet You can use the flexible datamodel to get a filtered result-list without writing
gets you the "Players"-relation on a team, but only containing active players. any SQL. For example, this snippet gets you the "Players"-relation on a team,
but only containing active players.
See `[api:DataObject::$has_many]` for more info on the described relations. See `[api:DataObject::$has_many]` for more info on the described relations.
:::php :::php
class Team extends DataObject { class Team extends DataObject {
public static $has_many = array( private static $has_many = array(
"Players" => "Player" "Players" => "Player"
); );
@ -575,39 +652,45 @@ See `[api:DataObject::$has_many]` for more info on the described relations.
} }
} }
Note: Adding new records to a filtered `RelationList` like in the example above doesn't automatically set the Note: Adding new records to a filtered `RelationList` like in the example above
filtered criteria on the added record. doesn't automatically set the filtered criteria on the added record.
### Relations on Unsaved Objects ### Relations on Unsaved Objects
You can also set *has_many* and *many_many* relations before the `DataObject` is saved. This behaviour uses the You can also set *has_many* and *many_many* relations before the `DataObject` is
`[api:UnsavedRelationList]` and converts it into the correct `RelationList` when saving the `DataObject` for the saved. This behaviour uses the `[api:UnsavedRelationList]` and converts it into
first time. the correct `RelationList` when saving the `DataObject` for the first time.
This unsaved lists will also recursively save any unsaved objects that they contain. This unsaved lists will also recursively save any unsaved objects that they
contain.
As these lists are not backed by the database, most of the filtering methods on `DataList` cannot be used on a As these lists are not backed by the database, most of the filtering methods on
list of this type. As such, an `UnsavedRelationList` should only be used for setting a relation before saving an `DataList` cannot be used on a list of this type. As such, an
object, not for displaying the objects contained in the relation. `UnsavedRelationList` should only be used for setting a relation before saving
an object, not for displaying the objects contained in the relation.
## Validation and Constraints ## Validation and Constraints
Traditionally, validation in SilverStripe has been mostly handled on the controller Traditionally, validation in SilverStripe has been mostly handled on the
through [form validation](/topics/form-validation). controller through [form validation](/topics/form-validation).
While this is a useful approach, it can lead to data inconsistencies if the While this is a useful approach, it can lead to data inconsistencies if the
record is modified outside of the controller and form context. record is modified outside of the controller and form context.
Most validation constraints are actually data constraints which belong on the model.
SilverStripe provides the `[api:DataObject->validate()]` method for this purpose. Most validation constraints are actually data constraints which belong on the
model. SilverStripe provides the `[api:DataObject->validate()]` method for this
purpose.
By default, there is no validation - objects are always valid! By default, there is no validation - objects are always valid!
However, you can overload this method in your However, you can overload this method in your
DataObject sub-classes to specify custom validation, DataObject sub-classes to specify custom validation,
or use the hook through `[api:DataExtension]`. or use the hook through `[api:DataExtension]`.
Invalid objects won't be able to be written - a [api:ValidationException]` Invalid objects won't be able to be written - a [api:ValidationException]` will
will be thrown and no write will occur. be thrown and no write will occur.
It is expected that you call validate() in your own application to test that an object
is valid before attempting a write, and respond appropriately if it isn't. It is expected that you call validate() in your own application to test that an
object is valid before attempting a write, and respond appropriately if it isn't.
The return value of `validate()` is a `[api:ValidationResult]` object. The return value of `validate()` is a `[api:ValidationResult]` object.
You can append your own errors in there. You can append your own errors in there.
@ -616,6 +699,7 @@ Example: Validate postcodes based on the selected country
:::php :::php
class MyObject extends DataObject { class MyObject extends DataObject {
private static $db = array( private static $db = array(
'Country' => 'Varchar', 'Country' => 'Varchar',
'Postcode' => 'Varchar' 'Postcode' => 'Varchar'
@ -632,21 +716,23 @@ Example: Validate postcodes based on the selected country
## Maps ## Maps
A map is an array where the array indexes contain data as well as the values. You can build a map A map is an array where the array indexes contain data as well as the values.
from any DataList like this: You can build a map from any DataList like this:
:::php :::php
$members = Member::get()->map('ID', 'FirstName'); $members = Member::get()->map('ID', 'FirstName');
This will return a map where the keys are Member IDs, and the values are the corresponding FirstName This will return a map where the keys are Member IDs, and the values are the
values. Like everything else in the ORM, these maps are lazy loaded, so the following code will only corresponding FirstName values. Like everything else in the ORM, these maps are
query a single record from the database: lazy loaded, so the following code will only query a single record from the
database:
:::php :::php
$members = Member::get()->map('ID', 'FirstName'); $members = Member::get()->map('ID', 'FirstName');
echo $member[5]; echo $member[5];
This functionality is provided by the `SS_Map` class, which can be used to build a map around any `SS_List`. This functionality is provided by the `SS_Map` class, which can be used to build
a map around any `SS_List`.
:::php :::php
$members = Member::get(); $members = Member::get();
@ -657,8 +743,9 @@ through `[api:SS_List->column()]`.
## Data Handling ## Data Handling
When saving data through the object model, you don't have to manually escape strings to create SQL-safe commands. When saving data through the object model, you don't have to manually escape
You have to make sure though that certain properties are not overwritten, e.g. *ID* or *ClassName*. strings to create SQL-safe commands. You have to make sure though that certain
properties are not overwritten, e.g. *ID* or *ClassName*.
### Creation ### Creation
@ -689,8 +776,9 @@ You have to make sure though that certain properties are not overwritten, e.g. *
); );
Alternatively you can use *castedUpdate()* to respect the [data-types](/topics/data-types). This is preferred to manually Alternatively you can use *castedUpdate()* to respect the
casting data before saving. [data-types](/topics/data-types). This is preferred to manually casting data
before saving.
:::php :::php
$myPlayer->castedUpdate( $myPlayer->castedUpdate(
@ -703,20 +791,24 @@ casting data before saving.
### onBeforeWrite ### onBeforeWrite
You can customize saving-behaviour for each DataObject, e.g. for adding workflow or data customization. The function is You can customize saving-behaviour for each DataObject, e.g. for adding workflow
triggered when calling *write()* to save the object to the database. This includes saving a page in the CMS or altering or data customization. The function is triggered when calling *write()* to save
a ModelAdmin record. the object to the database. This includes saving a page in the CMS or altering a
ModelAdmin record.
Example: Disallow creation of new players if the currently logged-in player is not a team-manager. Example: Disallow creation of new players if the currently logged-in player is
not a team-manager.
:::php :::php
class Player extends DataObject { class Player extends DataObject {
public static $has_many = array(
private static $has_many = array(
"Teams"=>"Team" "Teams"=>"Team"
); );
public function onBeforeWrite() { public function onBeforeWrite() {
// check on first write action, aka "database row creation" (ID-property is not set) // check on first write action, aka "database row creation"
// (ID-property is not set)
if(!$this->ID) { if(!$this->ID) {
$currentPlayer = Member::currentUser(); $currentPlayer = Member::currentUser();
if(!$currentPlayer->IsTeamManager()) { if(!$currentPlayer->IsTeamManager()) {
@ -727,31 +819,34 @@ Example: Disallow creation of new players if the currently logged-in player is n
// check on every write action // check on every write action
if(!$this->record['TeamID']) { if(!$this->record['TeamID']) {
user_error('Cannot save player without a valid team-connection', E_USER_ERROR); user_error('Cannot save player without a valid team', E_USER_ERROR);
exit(); exit();
} }
// CAUTION: You are required to call the parent-function, otherwise SilverStripe will not execute the request. // CAUTION: You are required to call the parent-function, otherwise
// SilverStripe will not execute the request.
parent::onBeforeWrite(); parent::onBeforeWrite();
} }
} }
<div class="notice" markdown='1'> <div class="notice" markdown='1'>
Note: There are no separate methods for *onBeforeCreate* and *onBeforeUpdate*. Please check for the existence of Note: There are no separate methods for *onBeforeCreate* and *onBeforeUpdate*.
$this->ID to toggle these two modes, as shown in the example above. Please check for the existence of $this->ID to toggle these two modes, as shown
in the example above.
</div> </div>
### onBeforeDelete ### onBeforeDelete
Triggered before executing *delete()* on an existing object. Triggered before executing *delete()* on an existing object.
Example: Checking for a specific [permission](/reference/permission) to delete this type of object. Example: Checking for a specific [permission](/reference/permission) to delete
It checks if a member is logged in who belongs to a group containing the permission "PLAYER_DELETE". this type of object. It checks if a member is logged in who belongs to a group
containing the permission "PLAYER_DELETE".
:::php :::php
class Player extends DataObject { class Player extends DataObject {
public static $has_many = array( private static $has_many = array(
"Teams"=>"Team" "Teams"=>"Team"
); );
@ -771,20 +866,25 @@ See [forms](/topics/forms).
### Saving data with custom SQL ### Saving data with custom SQL
See the ["sql queries" topic](/reference/sqlquery) for custom *INSERT*, *UPDATE*, *DELETE* queries. See the ["sql queries" topic](/reference/sqlquery) for custom *INSERT*,
*UPDATE*, *DELETE* queries.
## Extending DataObjects ## Extending DataObjects
You can add properties and methods to existing `[api:DataObjects]`s like `[api:Member]` (a core class) without You can add properties and methods to existing `[api:DataObjects]`s like
hacking core code or subclassing. See `[api:DataExtension]` for a general description, and `[api:Hierarchy]` for `[api:Member]` (a core class) without hacking core code or subclassing. See
the most popular examples. `[api:DataExtension]` for a general description, and `[api:Hierarchy]` for the
most popular examples.
## FAQ ## FAQ
### What's the difference between DataObject::get() and a relation-getter? ### What's the difference between DataObject::get() and a relation-getter?
You can work with both in pretty much the same way, but relationship-getters return a special type of collection: You can work with both in pretty much the same way, but relationship-getters
A `[api:HasManyList]` or a `[api:ManyManyList]` with relation-specific functionality. return a special type of collection:
A `[api:HasManyList]` or a `[api:ManyManyList]` with relation-specific
functionality.
:::php :::php
$myTeams = $myPlayer->Team(); // returns HasManyList $myTeams = $myPlayer->Team(); // returns HasManyList

View File

@ -1,11 +1,13 @@
# Forms # Forms
HTML forms are in practice the most used way to communicate with a browser. SilverStripe provides classes to generate HTML forms are in practice the most used way to communicate with a browser.
and handle the actions and data from a form. SilverStripe provides classes to generate and handle the actions and data from a
form.
## Overview ## Overview
A fully implemented form in SilverStripe includes a couple of classes that individually have separate concerns. A fully implemented form in SilverStripe includes a couple of classes that
individually have separate concerns.
* Controller - Takes care of assembling the form and receiving data from it. * Controller - Takes care of assembling the form and receiving data from it.
* Form - Holds sets of fields, actions and validators. * Form - Holds sets of fields, actions and validators.
@ -13,19 +15,22 @@ A fully implemented form in SilverStripe includes a couple of classes that indiv
* FormActions - Often submit buttons that executes actions. * FormActions - Often submit buttons that executes actions.
* Validators - Validate the whole form, see [Form validation](form-validation.md) topic for more information. * Validators - Validate the whole form, see [Form validation](form-validation.md) topic for more information.
Depending on your needs you can customize and override any of the above classes, however the defaults are often Depending on your needs you can customize and override any of the above classes,
sufficient. however the defaults are often sufficient.
## The Controller ## The Controller
Forms start at the controller. Here is a simple example on how to set up a form in a controller. Forms start at the controller. Here is a simple example on how to set up a form
in a controller.
**Page.php** **Page.php**
:::php :::php
class Page_Controller extends ContentController { class Page_Controller extends ContentController {
public static $allowed_actions = array('HelloForm'); private static $allowed_actions = array(
'HelloForm'
);
// Template method // Template method
public function HelloForm() { public function HelloForm() {
@ -45,18 +50,20 @@ Forms start at the controller. Here is a simple example on how to set up a form
} }
} }
The name of the form ("HelloForm") is passed into the `Form` The name of the form ("HelloForm") is passed into the `Form` constructor as a
constructor as a second argument. It needs to match the method name. second argument. It needs to match the method name.
Since forms need a URL, the `HelloForm()` method needs to be handled Since forms need a URL, the `HelloForm()` method needs to be handled like any
like any other controller action. In order to whitelist its access through other controller action. In order to whitelist its access through URLs, we add
URLs, we add it to the `$allowed_actions` array. it to the `$allowed_actions` array.
Form actions ("doSayHello") on the other hand should NOT be included here,
these are handled separately through `Form->httpSubmission()`. Form actions ("doSayHello") on the other hand should NOT be included here, these
You can control access on form actions either by conditionally removing are handled separately through `Form->httpSubmission()`.
a `FormAction` from the form construction,
or by defining `$allowed_actions` in your own `Form` class You can control access on form actions either by conditionally removing a
(more information in the ["controllers" topic](/topics/controllers)). `FormAction` from the form construction, or by defining `$allowed_actions` in
your own `Form` class (more information in the
["controllers" topic](/topics/controllers)).
**Page.ss** **Page.ss**
@ -65,8 +72,8 @@ or by defining `$allowed_actions` in your own `Form` class
<div>$HelloForm</div> <div>$HelloForm</div>
<div class="warning" markdown='1'> <div class="warning" markdown='1'>
Be sure to add the Form name 'HelloForm' to the Controller::$allowed_actions() to be sure that form submissions Be sure to add the Form name 'HelloForm' to the Controller::$allowed_actions()
get through to the correct action. to be sure that form submissions get through to the correct action.
</div> </div>
<div class="notice" markdown='1'> <div class="notice" markdown='1'>
@ -78,13 +85,15 @@ documentation or the API documentation for `[api:Object]`::create().
## The Form ## The Form
Form is the base class of all forms in a SilverStripe application. Forms in your application can be created either by Form is the base class of all forms in a SilverStripe application. Forms in your
instantiating the Form class itself, or by subclassing it. application can be created either by instantiating the Form class itself, or by
subclassing it.
### Instantiating a form ### Instantiating a form
Creating a form is a matter of defining a method to represent that form. This method should return a form object. The Creating a form is a matter of defining a method to represent that form. This
constructor takes the following arguments: method should return a form object. The constructor takes the following
arguments:
* `$controller`: This must be and instance of the controller that contains the form, often `$this`. * `$controller`: This must be and instance of the controller that contains the form, often `$this`.
* `$name`: This must be the name of the method on that controller that is called to return the form. The first two * `$name`: This must be the name of the method on that controller that is called to return the form. The first two
@ -141,7 +150,7 @@ data.
:::php :::php
class Page_Controller extends ContentController { class Page_Controller extends ContentController {
public static $allowed_actions = array( private static $allowed_actions = array(
'HelloForm', 'HelloForm',
); );
@ -161,6 +170,7 @@ data.
EmailField::create("Email"), EmailField::create("Email"),
PasswordField::create("Password") PasswordField::create("Password")
); );
$actions = new FieldList(FormAction::create("login")->setTitle("Log in")); $actions = new FieldList(FormAction::create("login")->setTitle("Log in"));
parent::__construct($controller, $name, $fields, $actions); parent::__construct($controller, $name, $fields, $actions);
@ -180,8 +190,9 @@ There are many classes extending `[api:FormField]`. There is a full overview at
### Using Form Fields ### Using Form Fields
To get these fields automatically rendered into a form element, all you need to do is create a new instance of the To get these fields automatically rendered into a form element, all you need to
class, and add it to the fieldlist of the form. do is create a new instance of the class, and add it to the `FieldList` of the
form.
:::php :::php
$form = new Form( $form = new Form(
@ -202,8 +213,9 @@ class, and add it to the fieldlist of the form.
## Readonly ## Readonly
You can turn a form or individual fields into a readonly version. This is handy in the case of confirmation pages or You can turn a form or individual fields into a readonly version. This is handy
when certain fields can be edited due to permissions. in the case of confirmation pages or when certain fields can be edited due to
permissions.
Readonly on a Form Readonly on a Form
@ -242,6 +254,7 @@ First of all, you need to create your form on it's own class, that way you can d
EmailField::create("Email"), EmailField::create("Email"),
PasswordField::create("Password") PasswordField::create("Password")
); );
$actions = new FieldList(FormAction::create("login")->setTitle("Log in")); $actions = new FieldList(FormAction::create("login")->setTitle("Log in"));
parent::__construct($controller, $name, $fields, $actions); parent::__construct($controller, $name, $fields, $actions);
} }
@ -256,11 +269,12 @@ First of all, you need to create your form on it's own class, that way you can d
} }
} }
`MyForm->forTemplate()` tells the `[api:Form]` class to render with a template of return value of `$this->class`, which in this case `MyForm->forTemplate()` tells the `[api:Form]` class to render with a template
is *MyForm*. If the template doesn't exist, then it falls back to using Form.ss. of return value of `$this->class`, which in this case is *MyForm*. If the
template doesn't exist, then it falls back to using Form.ss.
*MyForm.ss* should then be placed into your *templates/Includes* directory for your project. Here is an example of *MyForm.ss* should then be placed into your *templates/Includes* directory for
basic customisation: your project. Here is an example of basic customization:
:::ss :::ss
<form $FormAttributes> <form $FormAttributes>
@ -314,30 +328,34 @@ Will be rendered as:
:::html :::html
<input type="text" name="MyText" class="text largeText" id="MyForm_MyCustomForm_MyText" data-validation-regex="[\d]*"> <input type="text" name="MyText" class="text largeText" id="MyForm_MyCustomForm_MyText" data-validation-regex="[\d]*">
Each form field is rendered into a form via the `[FormField->FieldHolder()](api:FormField)` method, which includes Each form field is rendered into a form via the
a container `<div>` as well as a `<label>` element (if applicable). `[FormField->FieldHolder()](api:FormField)` method, which includes a container
`<div>` as well as a `<label>` element (if applicable).
You can also render each field without these structural elements through the `[FormField->Field()](api:FormField)` You can also render each field without these structural elements through the
method. In order to influence the form rendering, overloading these two methods is a good start. `[FormField->Field()](api:FormField)` method. In order to influence the form
rendering, overloading these two methods is a good start.
In addition, most form fields are rendered through SilverStripe templates, e.g. `TextareaField` is rendered via In addition, most form fields are rendered through SilverStripe templates, e.g.
`framework/templates/forms/TextareaField.ss`. `TextareaField` is rendered via `framework/templates/forms/TextareaField.ss`.
These templates can be overwritten globally by placing a template with the same name in your `mysite` directory, These templates can be overwritten globally by placing a template with the same
or set on a form field instance via anyone of these methods: name in your `mysite` directory, or set on a form field instance via anyone of
these methods:
- FormField->setTemplate() - FormField->setTemplate()
- FormField->setFieldHolderTemplate() - FormField->setFieldHolderTemplate()
- FormField->getSmallFieldHolderTemplate() - FormField->getSmallFieldHolderTemplate()
<div class="hint" markdown='1'> <div class="hint" markdown='1'>
Caution: Not all FormFields consistently uses templates set by the above methods. Caution: Not all FormFields consistently uses templates set by the above methods.
</div> </div>
### Securing forms against Cross-Site Request Forgery (CSRF) ### Securing forms against Cross-Site Request Forgery (CSRF)
SilverStripe tries to protect users against *Cross-Site Request Forgery (CSRF)* by adding a hidden *SecurityID* SilverStripe tries to protect users against *Cross-Site Request Forgery (CSRF)*
parameter to each form. See [secure-development](/topics/security) for details. by adding a hidden *SecurityID* parameter to each form. See
[secure-development](/topics/security) for details.
In addition, you should limit forms to the intended HTTP verb (mostly `GET` or `POST`) In addition, you should limit forms to the intended HTTP verb (mostly `GET` or `POST`)
to further reduce attack surface, by using `[api:Form->setStrictFormMethodCheck()]`. to further reduce attack surface, by using `[api:Form->setStrictFormMethodCheck()]`.
@ -353,6 +371,7 @@ If you want to remove certain fields from your subclass:
:::php :::php
class MyCustomForm extends MyForm { class MyCustomForm extends MyForm {
public function __construct($controller, $name) { public function __construct($controller, $name) {
parent::__construct($controller, $name); parent::__construct($controller, $name);

View File

@ -2,24 +2,34 @@
## Introduction ## Introduction
Creating a module is a good way to re-use abstract code and templates across multiple projects. SilverStripe already has Creating a module is a good way to re-use abstract code and templates across
certain modules included, for example "framework" and "cms". These two modules are the core functionality and multiple projects. SilverStripe already has certain modules included, for
templating for any initial installation. If you're wanting to add generic functionality that isn't specific to your example "framework" and "cms". These two modules are the core functionality and
templates for any initial installation.
If you want to add generic functionality that isn't specific to your
project, like a forum, an ecommerce package or a blog you can do it like this; project, like a forum, an ecommerce package or a blog you can do it like this;
1. Create another directory at the root level (same level as "framework" and "cms") 1. Create another directory at the root level (same level as "framework" and
2. You must create an `_config/` directory inside your module directory, else SilverStripe will not include it "cms")
2. You must create a _config.php inside your module directory, or else
SilverStripe will not include it
3. Inside your module directory, follow our [directory structure guidelines](/topics/directory-structure#module_structure) 3. Inside your module directory, follow our [directory structure guidelines](/topics/directory-structure#module_structure)
As long as your module has a `_config.php` file inside it, SilverStripe will
automatically include any PHP classes from that module.
## Tips ## Tips
Try and keep your module as generic as possible - for example if you're making a forum module, your members section Try to keep your module as generic as possible - for example if you're making a
shouldn't contain fields like 'Games You Play' or 'Your LiveJournal Name' - if people want to add these fields they can forum module, your members section shouldn't contain fields like 'Games You
Play' or 'Your LiveJournal Name' - if people want to add these fields they can
sub-class your class, or extend the fields on to it. sub-class your class, or extend the fields on to it.
If you're using Requirements to include generic support files for your project like CSS or Javascript, and want to If you're using [api:Requirements] to include generic support files for your project
override these files to be more specific in your project, the following code is an example of how to do so using the like CSS or Javascript, and want to override these files to be more specific in
init() function on your module controller classes: your project, the following code is an example of how to do so using the init()
function on your module controller classes:
:::php :::php
class Forum_Controller extends Page_Controller { class Forum_Controller extends Page_Controller {
@ -27,7 +37,7 @@ init() function on your module controller classes:
public function init() { public function init() {
if(Director::fileExists(project() . "/css/forum.css")) { if(Director::fileExists(project() . "/css/forum.css")) {
Requirements::css(project() . "/css/forum.css"); Requirements::css(project() . "/css/forum.css");
}else{ } else {
Requirements::css("forum/css/forum.css"); Requirements::css("forum/css/forum.css");
} }
parent::init(); parent::init();
@ -36,22 +46,148 @@ init() function on your module controller classes:
} }
This will use `<projectname>/css/forum.css` if it exists, otherwise it falls back to using `forum/css/forum.css`. This will use `<projectname>/css/forum.css` if it exists, otherwise it falls
back to using `forum/css/forum.css`.
## Conventions
### Configuration
SilverStripe has a comprehensive [Configuration](/topics/configuration) system
built on YAML which allows developers to set configuration values in core
classes.
If your module allows developers to customize specific values (for example API
key values) use the existing configuration system for your data.
:::php
// use this in your module code
$varible = Config::inst()->get('ModuleName', 'SomeValue');
Then developers can set that value in their own configuration file. As a module
author, you can set the default configuration values.
// yourmodule/_config/module.yml
---
Name: modulename
---
ModuleName:
SomeValue: 10
But by using the Config system, developers can alter the value for their
application without editing your code.
// mysite/_config/module_customizations.yml
---
Name: modulecustomizations
After: "#modulename"
---
ModuleName:
SomeValue: 10
If you want to make the configuration value user editable in the backend CMS,
provide an extension to [SiteConfig](/reference/siteconfig).
## Publication ## Publication
If you wish to submit your module to our public directory, you take responsibility for a certain level of code quality, If you wish to submit your module to our public directory, you take
adherence to conventions, writing documentation, and releasing updates. See [contributing](/misc/contributing). responsibility for a certain level of code quality, adherence to conventions,
writing documentation, and releasing updates. See
[contributing](/misc/contributing).
### Composer and Packagist
SilverStripe uses [Composer](/installation/composer/) to manage module releases
and dependencies between modules. If you plan on releasing your module to the
public, ensure that you provide a `composer.json` file in the root of your
module containing the meta-data about your module.
For more information about what your `composer.json` file should include,
consult the [Composer Documentation](http://getcomposer.org/doc/01-basic-usage.md).
A basic usage of a module for 3.1 that requires the CMS would look similar to
this:
{
"name": "yourname/silverstripe-modulename",
"description": "..",
"type": "silverstripe-module",
"keywords": ["silverstripe", ".."],
"license": "BSD-3-Clause",
"authors": [{
"name": "Your Name",
"email": "Your Email"
}],
"require": {
"silverstripe/framework": ">=3.1.x-dev,<4.0"
}
}
Once your module is released, submit it to [Packagist](https://packagist.org/)
to have the module accessible to developers.
### Versioning
Over time you may have to release new versions of your module to continue to
work with newer versions of SilverStripe. By using composer, this is made easy
for developers by allowing them to specify what version they want to use. Each
version of your module should be a separate branch in your version control and
each branch should have a `composer.json` file explicitly defining what versions
of SilverStripe you support.
<div class="notice" markdown='1'>
The convention to follow for support is the `master` or `trunk` branch of your
code should always be the one to work with the `master` branch of SilverStripe.
Other branches should be created as needed for other SilverStripe versions you
want to support.
</div>
For example, if you release a module for 3.0 which works well but doesn't work
in 3.1.0 you should provide a separate `branch` of the module for 3.0 support.
// for module that supports 3.0.1. (git branch 1.0)
"require": {
"silverstripe/framework": "3.0.*",
}
// for branch of the module that only supports 3.1 (git branch master)
"require": {
"silverstripe/framework": ">=3.1.*",
}
You can have an overlap in supported versions (e.g two branches for 3.1) but you
should explain the differences in your `README.md` file.
If you want to change the minimum supported version of your module, make sure
you create a new branch which continues to support the minimum version as it
stands before you update the main branch.
## Reference ## Reference
**How To:** ### How To:
* [Add a link to your module in the main SilverStripe Admin Menu](/reference/leftandmain) * [How to customize the CMS Menu](/howto/customize-cms-menu)
* [How to extend the CMS interface](/howto/extend-cms-interface)
**Useful Links:** ### Reference:
Provide custom functionality for the developer via:
* [DataExtension](/reference/dataextension)
* [SiteConfig](/reference/siteconfig)
* [Page types](/topics/page-types)
Follow SilverStripe best practice:
* [Partial Caching](/reference/partial-caching)
* [Injector](/reference/injector)
## Useful Links
* [Introduction to Composer](http://getcomposer.org/doc/00-intro.md)
* [Modules](modules) * [Modules](modules)
* [Module Release Process](module-release-process) * [Directory structure guidelines](/topics/directory-structure#module_structure)
* [Debugging methods](/topics/debugging) * [Debugging methods](/topics/debugging)
* [URL Variable Tools](/reference/urlvariabletools) - Lists a number of page options, rendering tools or special URL variables that you can use to debug your SilverStripe applications * [URL Variable Tools](/reference/urlvariabletools) - Lists a number of page options, rendering tools or special URL variables that you can use to debug your SilverStripe applications

View File

@ -105,5 +105,4 @@ and comes with the same caveats.
## Related ## Related
* [Modules Development](/topics/module-developement) * [Modules Development](/topics/module-developement)
* [Module Release Process](/misc/module-release-process)

View File

@ -466,7 +466,9 @@ class File extends DataObject {
parent::onBeforeWrite(); parent::onBeforeWrite();
// Set default owner // Set default owner
if(!$this->ID) $this->OwnerID = (Member::currentUser() ? Member::currentUser()->ID : 0); if(!$this->ID && !$this->OwnerID) {
$this->OwnerID = (Member::currentUser() ? Member::currentUser()->ID : 0);
}
// Set default name // Set default name
if(!$this->getField('Name')) $this->Name = "new-" . strtolower($this->class); if(!$this->getField('Name')) $this->Name = "new-" . strtolower($this->class);
@ -875,14 +877,11 @@ class File extends DataObject {
if(!in_array(strtolower($extension), $allowed)) { if(!in_array(strtolower($extension), $allowed)) {
$exts = $allowed; $exts = $allowed;
sort($exts); sort($exts);
$message = sprintf( $message = _t(
_t( 'File.INVALIDEXTENSION',
'File.INVALIDEXTENSION', 'Extension is not allowed (valid: {extensions})',
'Extension is not allowed (valid: %s)', 'Argument 1: Comma-separated list of valid extensions',
array('extensions' => wordwrap(implode(', ',$exts)))
'Argument 1: Comma-separated list of valid extensions'
),
wordwrap(implode(', ',$exts))
); );
return new ValidationResult(false, $message); return new ValidationResult(false, $message);
} }

View File

@ -359,9 +359,36 @@ class Form extends RequestHandler {
// Validate the form // Validate the form
if(!$this->validate()) { if(!$this->validate()) {
if(Director::is_ajax()) { return $this->getValidationErrorResponse();
// Special case for legacy Validator.js implementation (assumes eval'ed javascript collected through }
// FormResponse)
// First, try a handler method on the controller (has been checked for allowed_actions above already)
if($this->controller->hasMethod($funcName)) {
return $this->controller->$funcName($vars, $this, $request);
// Otherwise, try a handler method on the form object.
} elseif($this->hasMethod($funcName)) {
return $this->$funcName($vars, $this, $request);
} elseif($field = $this->checkFieldsForAction($this->Fields(), $funcName)) {
return $field->$funcName($vars, $this, $request);
}
return $this->httpError(404);
}
/**
* Returns the appropriate response up the controller chain
* if {@link validate()} fails (which is checked prior to executing any form actions).
* By default, returns different views for ajax/non-ajax request, and
* handles 'appliction/json' requests with a JSON object containing the error messages.
* Behaviour can be influenced by setting {@link $redirectToFormOnValidationError}.
*
* @return SS_HTTPResponse|string
*/
protected function getValidationErrorResponse() {
$request = $this->getRequest();
if($request->isAjax()) {
// Special case for legacy Validator.js implementation
// (assumes eval'ed javascript collected through FormResponse)
$acceptType = $request->getHeader('Accept'); $acceptType = $request->getHeader('Accept');
if(strpos($acceptType, 'application/json') !== FALSE) { if(strpos($acceptType, 'application/json') !== FALSE) {
// Send validation errors back as JSON with a flag at the start // Send validation errors back as JSON with a flag at the start
@ -387,19 +414,6 @@ class Form extends RequestHandler {
} }
return $this->controller->redirectBack(); return $this->controller->redirectBack();
} }
}
// First, try a handler method on the controller (has been checked for allowed_actions above already)
if($this->controller->hasMethod($funcName)) {
return $this->controller->$funcName($vars, $this, $request);
// Otherwise, try a handler method on the form object.
} elseif($this->hasMethod($funcName)) {
return $this->$funcName($vars, $this, $request);
} elseif($field = $this->checkFieldsForAction($this->Fields(), $funcName)) {
return $field->$funcName($vars, $this, $request);
}
return $this->httpError(404);
} }
/** /**
@ -726,9 +740,9 @@ class Form extends RequestHandler {
/** /**
* Set the {@link FormTemplateHelper} * Set the {@link FormTemplateHelper}
* *
* @param string|FormTemplateHelper * @param string|FormTemplateHelper
*/ */
public function setTemplateHelper($helper) { public function setTemplateHelper($helper) {
$this->templateHelper = $helper; $this->templateHelper = $helper;
} }
@ -949,7 +963,7 @@ class Form extends RequestHandler {
return $this; return $this;
} }
/** /**
* @return string * @return string
*/ */
@ -1049,9 +1063,9 @@ class Form extends RequestHandler {
return $this->message; return $this->message;
} }
$this->message = Session::get("FormInfo.{$this->FormName()}.formError.message"); $this->message = Session::get("FormInfo.{$this->FormName()}.formError.message");
$this->messageType = Session::get("FormInfo.{$this->FormName()}.formError.type"); $this->messageType = Session::get("FormInfo.{$this->FormName()}.formError.type");
} }
/** /**
* Set a status message for the form. * Set a status message for the form.
@ -1126,11 +1140,11 @@ class Form extends RequestHandler {
* *
* @return boolean * @return boolean
*/ */
public function validate() { public function validate(){
if($this->validator) { if($this->validator){
$errors = $this->validator->validate(); $errors = $this->validator->validate();
if($errors) { if($errors){
// Load errors into session and post back // Load errors into session and post back
$data = $this->getData(); $data = $this->getData();
@ -1162,7 +1176,7 @@ class Form extends RequestHandler {
* *
* Passed data should not be escaped, and is saved to the FormField * Passed data should not be escaped, and is saved to the FormField
* instances unescaped. * instances unescaped.
* *
* Escaping happens automatically on saving the data through * Escaping happens automatically on saving the data through
* {@link saveInto()}. * {@link saveInto()}.
* *
@ -1315,7 +1329,7 @@ class Form extends RequestHandler {
$dataFields = $this->fields->dataFields(); $dataFields = $this->fields->dataFields();
$data = array(); $data = array();
if($dataFields) { if($dataFields){
foreach($dataFields as $field) { foreach($dataFields as $field) {
if($field->getName()) { if($field->getName()) {
$data[$field->getName()] = $field->dataValue(); $data[$field->getName()] = $field->dataValue();
@ -1463,9 +1477,9 @@ class Form extends RequestHandler {
foreach($this->actions as $action) { foreach($this->actions as $action) {
if($this->buttonClickedFunc == $action->actionName()) { if($this->buttonClickedFunc == $action->actionName()) {
return $action; return $action;
}
} }
} }
}
/** /**
* Return the default button that should be clicked when another one isn't * Return the default button that should be clicked when another one isn't
@ -1476,7 +1490,7 @@ class Form extends RequestHandler {
public function defaultAction() { public function defaultAction() {
if($this->hasDefaultAction && $this->actions) { if($this->hasDefaultAction && $this->actions) {
return $this->actions->First(); return $this->actions->First();
} }
} }
/** /**
@ -1548,7 +1562,7 @@ class Form extends RequestHandler {
public static function single_field_required() { public static function single_field_required() {
if(self::current_action() == 'callfieldmethod') { if(self::current_action() == 'callfieldmethod') {
return $_REQUEST['fieldName']; return $_REQUEST['fieldName'];
} }
} }
/** /**

View File

@ -380,6 +380,8 @@ class HtmlEditorField_Toolbar extends RequestHandler {
new GridFieldSortableHeader(), new GridFieldSortableHeader(),
new GridFieldDataColumns(), new GridFieldDataColumns(),
new GridFieldPaginator(5), new GridFieldPaginator(5),
// TODO Shouldn't allow delete here, its too confusing with a "remove from editor view" action.
// Remove once we can fit the search button in the last actual title column
new GridFieldDeleteAction(), new GridFieldDeleteAction(),
new GridFieldDetailForm() new GridFieldDetailForm()
); );
@ -399,11 +401,11 @@ class HtmlEditorField_Toolbar extends RequestHandler {
$fromCMS = new CompositeField( $fromCMS = new CompositeField(
new LiteralField('headerSelect', new LiteralField('headerSelect',
'<h4>'.sprintf($numericLabelTmpl, '1', _t('HtmlEditorField.FindInFolder', 'Find in Folder')).'</h4>'), '<h4>'.sprintf($numericLabelTmpl, '1', _t('HtmlEditorField.FindInFolder', 'Find in Folder')).'</h4>'),
$select = new TreeDropdownField('ParentID', "", 'Folder'), $select = TreeDropdownField::create('ParentID', "", 'Folder')->addExtraClass('noborder'),
$fileField $fileField
); );
$fromCMS->addExtraClass('content ss-uploadfield from-CMS'); $fromCMS->addExtraClass('content ss-uploadfield');
$select->addExtraClass('content-select'); $select->addExtraClass('content-select');
@ -416,7 +418,7 @@ class HtmlEditorField_Toolbar extends RequestHandler {
); );
$remoteURL->addExtraClass('remoteurl'); $remoteURL->addExtraClass('remoteurl');
$fromWeb->addExtraClass('content ss-uploadfield from-web'); $fromWeb->addExtraClass('content ss-uploadfield');
Requirements::css(FRAMEWORK_DIR . '/css/AssetUploadField.css'); Requirements::css(FRAMEWORK_DIR . '/css/AssetUploadField.css');
$computerUploadField = Object::create('UploadField', 'AssetUploadField', ''); $computerUploadField = Object::create('UploadField', 'AssetUploadField', '');
@ -426,30 +428,32 @@ class HtmlEditorField_Toolbar extends RequestHandler {
$computerUploadField->removeExtraClass('ss-uploadfield'); $computerUploadField->removeExtraClass('ss-uploadfield');
$computerUploadField->setTemplate('HtmlEditorField_UploadField'); $computerUploadField->setTemplate('HtmlEditorField_UploadField');
$computerUploadField->setFolderName(Config::inst()->get('Upload', 'uploads_folder')); $computerUploadField->setFolderName(Config::inst()->get('Upload', 'uploads_folder'));
// @todo - Remove this once this field supports display and recovery of file upload validation errors
$computerUploadField->setOverwriteWarning(false);
$tabSet = new TabSet( $tabSet = new TabSet(
"MediaFormInsertMediaTabs", "MediaFormInsertMediaTabs",
new Tab( Tab::create(
'FromComputer', 'FromComputer',
_t('HtmlEditorField.FROMCOMPUTER','From your computer'), _t('HtmlEditorField.FROMCOMPUTER','From your computer'),
$computerUploadField $computerUploadField
), )->addExtraClass('htmleditorfield-from-computer'),
new Tab( Tab::create(
'FromWeb', 'FromWeb',
_t('HtmlEditorField.FROMWEB', 'From the web'), _t('HtmlEditorField.FROMWEB', 'From the web'),
$fromWeb $fromWeb
), )->addExtraClass('htmleditorfield-from-web'),
new Tab( Tab::create(
'FromCms', 'FromCms',
_t('HtmlEditorField.FROMCMS','From the CMS'), _t('HtmlEditorField.FROMCMS','From the CMS'),
$fromCMS $fromCMS
) )->addExtraClass('htmleditorfield-from-cms')
); );
$tabSet->addExtraClass('cms-tabset-primary'); $tabSet->addExtraClass('cms-tabset-primary');
$allFields = new CompositeField( $allFields = new CompositeField(
$tabSet, $tabSet,
new LiteralField('headerEdit', '<h4 class="field header-edit">' . sprintf($numericLabelTmpl, '2', new LiteralField('headerEdit', '<h4 class="field noborder header-edit">' . sprintf($numericLabelTmpl, '2',
_t('HtmlEditorField.ADJUSTDETAILSDIMENSIONS', 'Details &amp; dimensions')) . '</h4>'), _t('HtmlEditorField.ADJUSTDETAILSDIMENSIONS', 'Details &amp; dimensions')) . '</h4>'),
$editComposite = new CompositeField( $editComposite = new CompositeField(
new LiteralField('contentEdit', '<div class="content-edit ss-uploadfield-files files"></div>') new LiteralField('contentEdit', '<div class="content-edit ss-uploadfield-files files"></div>')
@ -709,15 +713,15 @@ class HtmlEditorField_Toolbar extends RequestHandler {
)->setName("FilePreviewImage")->addExtraClass('cms-file-info-preview'), )->setName("FilePreviewImage")->addExtraClass('cms-file-info-preview'),
CompositeField::create( CompositeField::create(
CompositeField::create( CompositeField::create(
new ReadonlyField("FileType", _t('AssetTableField.TYPE','File type') . ':', $file->FileType), new ReadonlyField("FileType", _t('AssetTableField.TYPE','File type'), $file->FileType),
new ReadonlyField("Size", _t('AssetTableField.SIZE','File size') . ':', $file->getSize()), new ReadonlyField("Size", _t('AssetTableField.SIZE','File size'), $file->getSize()),
$urlField = new ReadonlyField('ClickableURL', _t('AssetTableField.URL','URL'), $urlField = new ReadonlyField('ClickableURL', _t('AssetTableField.URL','URL'),
sprintf('<a href="%s" target="_blank" class="file-url">%s</a>', sprintf('<a href="%s" title="%s" target="_blank" class="file-url">%s</a>',
$file->Link(), $file->RelativeLink()) $file->Link(), $file->Link(), $file->RelativeLink())
), ),
new DateField_Disabled("Created", _t('AssetTableField.CREATED','First uploaded') . ':', new DateField_Disabled("Created", _t('AssetTableField.CREATED','First uploaded'),
$file->Created), $file->Created),
new DateField_Disabled("LastEdited", _t('AssetTableField.LASTEDIT','Last changed') . ':', new DateField_Disabled("LastEdited", _t('AssetTableField.LASTEDIT','Last changed'),
$file->LastEdited) $file->LastEdited)
) )
)->setName("FilePreviewData")->addExtraClass('cms-file-info-data') )->setName("FilePreviewData")->addExtraClass('cms-file-info-data')

View File

@ -6,6 +6,14 @@
*/ */
class PasswordField extends TextField { class PasswordField extends TextField {
/**
* Controls the autocomplete attribute on the field.
*
* Setting it to false will set the attribute to "off", which will hint the browser
* to not cache the password and to not use any password managers.
*/
private static $autocomplete;
/** /**
* Returns an input field, class="text" and type="text" with an optional * Returns an input field, class="text" and type="text" with an optional
* maxlength * maxlength
@ -21,10 +29,17 @@ class PasswordField extends TextField {
public function getAttributes() { public function getAttributes() {
return array_merge( $attributes = array_merge(
parent::getAttributes(), parent::getAttributes(),
array('type' => 'password') array('type' => 'password')
); );
$autocomplete = Config::inst()->get('PasswordField', 'autocomplete');
if (isset($autocomplete)) {
$attributes['autocomplete'] = $autocomplete ? 'on' : 'off';
}
return $attributes;
} }
/** /**

View File

@ -502,14 +502,13 @@ class UploadField extends FileField {
/** /**
* Assign a front-end config variable for the upload field * Assign a front-end config variable for the upload field
* *
* @see https://github.com/blueimp/jQuery-File-Upload/wiki/Options for the list of front end options available
*
* @param string $key * @param string $key
* @param mixed $val * @param mixed $val
* @return UploadField self reference * @return UploadField self reference
*/ */
public function setConfig($key, $val) { public function setConfig($key, $val) {
if(!array_key_exists($key, $this->ufConfig)) {
user_error("UploadField->setConfig called with invalid option: '$key'", E_USER_ERROR);
}
$this->ufConfig[$key] = $val; $this->ufConfig[$key] = $val;
return $this; return $this;
} }
@ -517,13 +516,13 @@ class UploadField extends FileField {
/** /**
* Gets a front-end config variable for the upload field * Gets a front-end config variable for the upload field
* *
* @see https://github.com/blueimp/jQuery-File-Upload/wiki/Options for the list of front end options available
*
* @param string $key * @param string $key
* @return mixed * @return mixed
*/ */
public function getConfig($key) { public function getConfig($key) {
if(!array_key_exists($key, $this->ufConfig)) { if(!isset($this->ufConfig[$key])) return null;
user_error("UploadField->getConfig called with invalid option: '$key'", E_USER_ERROR);
}
return $this->ufConfig[$key]; return $this->ufConfig[$key];
} }
@ -1548,8 +1547,13 @@ class UploadField_SelectHandler extends RequestHandler {
$config = GridFieldConfig::create(); $config = GridFieldConfig::create();
$config->addComponent(new GridFieldSortableHeader()); $config->addComponent(new GridFieldSortableHeader());
$config->addComponent(new GridFieldFilterHeader()); $config->addComponent(new GridFieldFilterHeader());
$config->addComponent(new GridFieldDataColumns()); $config->addComponent($columns = new GridFieldDataColumns());
$config->addComponent(new GridFieldPaginator(10)); $columns->setDisplayFields(array(
'StripThumbnail' => '',
'Name' => 'Name',
'Title' => 'Title'
));
$config->addComponent(new GridFieldPaginator(8));
// If relation is to be autoset, we need to make sure we only list compatible objects. // If relation is to be autoset, we need to make sure we only list compatible objects.
$baseClass = $this->parent->getRelationAutosetClass(); $baseClass = $this->parent->getRelationAutosetClass();

View File

@ -381,6 +381,10 @@ class GridFieldDetailForm_ItemRequest extends RequestHandler {
if($this->record->ID && !$canEdit) { if($this->record->ID && !$canEdit) {
// Restrict editing of existing records // Restrict editing of existing records
$form->makeReadonly(); $form->makeReadonly();
// Hack to re-enable delete button if user can delete
if ($canDelete) {
$form->Actions()->fieldByName('action_doDelete')->setReadonly(false);
}
} elseif(!$this->record->ID && !$canCreate) { } elseif(!$this->record->ID && !$canCreate) {
// Restrict creation of new records // Restrict creation of new records
$form->makeReadonly(); $form->makeReadonly();

View File

@ -53,7 +53,7 @@ class GridFieldExportButton implements GridField_HTMLProvider, GridField_ActionP
$button->setAttribute('data-icon', 'download-csv'); $button->setAttribute('data-icon', 'download-csv');
$button->addExtraClass('no-ajax'); $button->addExtraClass('no-ajax');
return array( return array(
$this->targetFragment => '<p class="grid-csv-button">' . $button->Field() . '</p>', $this->targetFragment => '<p class="grid-bottom-button grid-csv-button">' . $button->Field() . '</p>',
); );
} }

View File

@ -14,6 +14,9 @@ var ss = ss || {};
*/ */
ss.editorWrappers = {}; ss.editorWrappers = {};
ss.editorWrappers.tinyMCE = (function() { ss.editorWrappers.tinyMCE = (function() {
var instance;
return { return {
init: function(config) { init: function(config) {
if(!ss.editorWrappers.tinyMCE.initialized) { if(!ss.editorWrappers.tinyMCE.initialized) {
@ -25,7 +28,7 @@ ss.editorWrappers.tinyMCE = (function() {
* @return Mixed Implementation specific object * @return Mixed Implementation specific object
*/ */
getInstance: function() { getInstance: function() {
return tinyMCE.activeEditor; return this.instance;
}, },
/** /**
* Invoked when a content-modifying UI is opened. * Invoked when a content-modifying UI is opened.
@ -55,13 +58,31 @@ ss.editorWrappers.tinyMCE = (function() {
* @param Function * @param Function
*/ */
create: function(domID, config) { create: function(domID, config) {
var ed = new tinymce.Editor(domID, config); this.instance = new tinymce.Editor(domID, config);
// Patch TinyMCE events into underlying textarea field. // Patch TinyMCE events into underlying textarea field.
ed.onInit.add(function(ed) { this.instance.onInit.add(function(ed) {
jQuery(ed.getElement()).trigger('editorinit'); jQuery(ed.getElement()).trigger('editorinit');
// Periodically check for inline changes when focused,
// since TinyMCE's onChange only fires on certain actions
// like inserting a new paragraph, as opposed to any user input.
// This also works around an issue where the "save" button
// wouldn't trigger if the click is the cause of a "blur" event
// after an (undetected) inline change. This "blur" causes onChange
// to trigger, which will change the button markup to show "alternative" styles,
// effectively cancelling the original click event.
var interval;
jQuery(ed.getBody()).on('focus', function() {
interval = setInterval(function() {
ed.save();
}, 5000);
});
jQuery(ed.getBody()).on('blur', function() {
clearInterval(interval);
});
}); });
ed.onChange.add(function(ed, l) { this.instance.onChange.add(function(ed, l) {
// Update underlying textarea on every change, so external handlers // Update underlying textarea on every change, so external handlers
// such as changetracker have a chance to trigger properly. // such as changetracker have a chance to trigger properly.
ed.save(); ed.save();
@ -69,7 +90,7 @@ ss.editorWrappers.tinyMCE = (function() {
}); });
// Add more events here as needed. // Add more events here as needed.
ed.render(); this.instance.render();
}, },
/** /**
* Redraw the editor contents * Redraw the editor contents
@ -234,7 +255,7 @@ ss.editorWrappers['default'] = ss.editorWrappers.tinyMCE;
* Constructor: onmatch * Constructor: onmatch
*/ */
onadd: function() { onadd: function() {
var edClass = this.data('editor') || ss.editorWrappers['default'], ed = edClass(); var edClass = this.data('editor') || 'default', ed = ss.editorWrappers[edClass]();
this.setEditor(ed); this.setEditor(ed);
// Using a global config (generated through HTMLEditorConfig PHP logic). // Using a global config (generated through HTMLEditorConfig PHP logic).
@ -342,10 +363,11 @@ ss.editorWrappers['default'] = ss.editorWrappers.tinyMCE;
return text.charAt(0).toUpperCase() + text.slice(1).toLowerCase(); return text.charAt(0).toUpperCase() + text.slice(1).toLowerCase();
}; };
var url = $('#cms-editor-dialogs').data('url' + capitalize(type) + 'form'), var self = this, url = $('#cms-editor-dialogs').data('url' + capitalize(type) + 'form'),
dialog = $('.htmleditorfield-' + type + 'dialog'); dialog = $('.htmleditorfield-' + type + 'dialog');
if(dialog.length) { if(dialog.length) {
dialog.getForm().setElement(this);
dialog.open(); dialog.open();
} else { } else {
// Show a placeholder for instant feedback. Will be replaced with actual // Show a placeholder for instant feedback. Will be replaced with actual
@ -354,8 +376,12 @@ ss.editorWrappers['default'] = ss.editorWrappers.tinyMCE;
$('body').append(dialog); $('body').append(dialog);
$.ajax({ $.ajax({
url: url, url: url,
complete: function() {
dialog.removeClass('loading');
},
success: function(html) { success: function(html) {
dialog.html(html); dialog.html(html);
dialog.getForm().setElement(self);
dialog.trigger('dialogopen'); dialog.trigger('dialogopen');
} }
}); });
@ -366,11 +392,9 @@ ss.editorWrappers['default'] = ss.editorWrappers.tinyMCE;
$('.htmleditorfield-dialog').entwine({ $('.htmleditorfield-dialog').entwine({
onadd: function() { onadd: function() {
// Create jQuery dialog // Create jQuery dialog
if (!this.is('.ui-dialog-content')) {
var height = $(window).height() * 0.8; this.ssdialog({autoOpen: true});
var width = $(window).width() * 0.8; }
if (!this.is('.ui-dialog-content')) this.dialog({autoOpen: true, bgiframe: true, modal: true, height: height, width: width, ghost: true});
this._super(); this._super();
}, },
@ -379,10 +403,10 @@ ss.editorWrappers['default'] = ss.editorWrappers.tinyMCE;
return this.find('form'); return this.find('form');
}, },
open: function() { open: function() {
this.dialog('open'); this.ssdialog('open');
}, },
close: function() { close: function() {
this.dialog('close'); this.ssdialog('close');
}, },
toggle: function(bool) { toggle: function(bool) {
if(this.is(':visible')) this.close(); if(this.is(':visible')) this.close();
@ -396,15 +420,17 @@ ss.editorWrappers['default'] = ss.editorWrappers.tinyMCE;
*/ */
$('form.htmleditorfield-form').entwine({ $('form.htmleditorfield-form').entwine({
Selection: null, Selection: null,
// Implementation-dependent serialization of the current editor selection state
Bookmark: null, Bookmark: null,
// DOMElement pointing to the currently active textarea
Element: null,
setSelection: function(node) { setSelection: function(node) {
return this._super($(node)); return this._super($(node));
}, },
// Wrapper for various HTML editors
Editor: null,
onadd: function() { onadd: function() {
// Move title from headline to (jQuery compatible) title attribute // Move title from headline to (jQuery compatible) title attribute
var titleEl = this.find(':header:first'); var titleEl = this.find(':header:first');
@ -415,7 +441,7 @@ ss.editorWrappers['default'] = ss.editorWrappers.tinyMCE;
onremove: function() { onremove: function() {
this.setSelection(null); this.setSelection(null);
this.setBookmark(null); this.setBookmark(null);
this.setEditor(null); this.setElement(null);
this._super(); this._super();
}, },
@ -454,19 +480,11 @@ ss.editorWrappers['default'] = ss.editorWrappers.tinyMCE;
} }
}, },
createEditor: function(){
return ss.editorWrappers['default']();
},
/** /**
* Get the tinyMCE editor * @return Object ss.editorWrapper instance
*/ */
getEditor: function(){ getEditor: function(){
var val = this._super(); return this.getElement().getEditor();
if(!val) {
this.setEditor(val = this.createEditor());
}
return val;
}, },
modifySelection: function(callback) { modifySelection: function(callback) {
@ -826,7 +844,7 @@ ss.editorWrappers['default'] = ss.editorWrappers.tinyMCE;
} }
this.redraw(); this.redraw();
}, },
redraw: function() { redraw: function(updateExisting) {
this._super(); this._super();
var node = this.getSelection(), var node = this.getSelection(),
@ -835,7 +853,7 @@ ss.editorWrappers['default'] = ss.editorWrappers.tinyMCE;
header = this.find('.header-edit'); header = this.find('.header-edit');
// Only show second step if files are selected // Only show second step if files are selected
if(header) header[(hasItems) ? 'show' : 'hide'](); header[(hasItems) ? 'show' : 'hide']();
// Disable "insert" button if no files are selected // Disable "insert" button if no files are selected
this.find('.Actions :submit') this.find('.Actions :submit')
@ -845,11 +863,15 @@ ss.editorWrappers['default'] = ss.editorWrappers.tinyMCE;
// Hide file selection and step labels when editing an existing file // Hide file selection and step labels when editing an existing file
this.find('#MediaFormInsertMediaTabs,.header-edit')[editingSelected ? 'hide' : 'show'](); this.find('#MediaFormInsertMediaTabs,.header-edit')[editingSelected ? 'hide' : 'show']();
var updateExisting = Boolean(this.find('.ss-htmleditorfield-file').length); // TODO Way too much knowledge on UploadField internals, use viewfile URL directly instead
this.find('.htmleditorfield-mediaform-heading.insert')[updateExisting ? 'hide' : 'show'](); this.find('.htmleditorfield-mediaform-heading.insert')[editingSelected ? 'hide' : 'show']();
this.find('.Actions .media-insert')[updateExisting ? 'hide' : 'show'](); this.find('.ss-uploadfield-item-actions')[editingSelected ? 'hide' : 'show']();
this.find('.htmleditorfield-mediaform-heading.update')[updateExisting ? 'show' : 'hide'](); this.find('.ss-uploadfield-item-name')[editingSelected ? 'hide' : 'show']();
this.find('.Actions .media-update')[updateExisting ? 'show' : 'hide'](); this.find('.ss-uploadfield-item-preview')[editingSelected ? 'hide' : 'show']();
this.find('.Actions .media-insert')[editingSelected ? 'hide' : 'show']();
this.find('.htmleditorfield-mediaform-heading.update')[editingSelected ? 'show' : 'hide']();
this.find('.Actions .media-update')[editingSelected ? 'show' : 'hide']();
this.find('.ss-uploadfield-item-editform').toggleEditForm(editingSelected);
}, },
resetFields: function() { resetFields: function() {
this.find('.ss-htmleditorfield-file').remove(); // Remove any existing views this.find('.ss-htmleditorfield-file').remove(); // Remove any existing views
@ -866,7 +888,7 @@ ss.editorWrappers['default'] = ss.editorWrappers.tinyMCE;
var self = this, params = (Number(idOrUrl) == idOrUrl) ? {ID: idOrUrl} : {FileURL: idOrUrl}; var self = this, params = (Number(idOrUrl) == idOrUrl) ? {ID: idOrUrl} : {FileURL: idOrUrl};
var item = $('<div class="ss-htmleditorfield-file loading" />'); var item = $('<div class="ss-htmleditorfield-file loading" />');
this.find('.content-edit').append(item); this.find('.content-edit').prepend(item);
var dfr = $.Deferred(); var dfr = $.Deferred();
@ -1004,6 +1026,10 @@ ss.editorWrappers['default'] = ss.editorWrappers.tinyMCE;
* @return {String} HTML suitable for insertion into the rich text editor * @return {String} HTML suitable for insertion into the rich text editor
*/ */
getHTML: function() { getHTML: function() {
// Assumes UploadField markup structure
return $('<div>').append(
$('<a/>').attr({href: this.data('url')}).text(this.find('.name').text())
).html();
}, },
/** /**
* Insert updated HTML content into the rich text editor * Insert updated HTML content into the rich text editor
@ -1300,11 +1326,11 @@ ss.editorWrappers['default'] = ss.editorWrappers.tinyMCE;
}); });
$('div.ss-assetuploadfield .ss-uploadfield-item-editform').entwine({ $('div.ss-assetuploadfield .ss-uploadfield-item-editform').entwine({
toggleEditForm: function() { toggleEditForm: function(bool) {
var itemInfo = this.prev('.ss-uploadfield-item-info'), status = itemInfo.find('.ss-uploadfield-item-status'); var itemInfo = this.prev('.ss-uploadfield-item-info'), status = itemInfo.find('.ss-uploadfield-item-status');
var text=""; var text="";
if(this.height() === 0) { if(bool === true || (bool !== false && this.height() === 0)) {
text = ss.i18n._t('UploadField.Editing', "Editing ..."); text = ss.i18n._t('UploadField.Editing', "Editing ...");
this.height('auto'); this.height('auto');
itemInfo.find('.toggle-details-icon').addClass('opened'); itemInfo.find('.toggle-details-icon').addClass('opened');

View File

@ -114,16 +114,19 @@
var node = tree.find('*[data-id="' + val + '"]'), var node = tree.find('*[data-id="' + val + '"]'),
title = node.children('a').find("span.jstree_pageicon")?node.children('a').find("span.item").html():null; title = node.children('a').find("span.jstree_pageicon")?node.children('a').find("span.item").html():null;
if(!title) title=(node) ? tree.jstree('get_text', node[0]) : null; if(!title) title=(node.length > 0) ? tree.jstree('get_text', node[0]) : null;
if(title) self.setTitle(title); if(title) {
self.setTitle(title);
self.data('title', title)
}
if(node) tree.jstree('select_node', node); if(node) tree.jstree('select_node', node);
} }
}; };
// Load the tree if its not already present // Load the tree if its not already present
if(jQuery.jstree._reference(tree) || !val) updateFn(); if(!tree.is(':empty') || !val) updateFn();
else this.loadTree(null, updateFn); else this.loadTree({forceValue: val}, updateFn);
}, },
setValue: function(val) { setValue: function(val) {
this.data('metadata', $.extend(this.data('metadata'), {id: val})); this.data('metadata', $.extend(this.data('metadata'), {id: val}));

View File

@ -2,6 +2,7 @@ af:
AssetAdmin: AssetAdmin:
ALLOWEDEXTS: 'Allowed extensions' ALLOWEDEXTS: 'Allowed extensions'
NEWFOLDER: 'Nuwe Dossier' NEWFOLDER: 'Nuwe Dossier'
SHOWALLOWEDEXTS: 'Show allowed extensions'
AssetTableField: AssetTableField:
CREATED: 'Eerste opgelaai' CREATED: 'Eerste opgelaai'
DIM: Afmetings DIM: Afmetings
@ -59,9 +60,9 @@ af:
ERRORNOTADMIN: 'Daardie verbruiker is nie ''n administreerder nie' ERRORNOTADMIN: 'Daardie verbruiker is nie ''n administreerder nie'
ERRORNOTREC: 'Daar die verbruikersnaam / wagwoord is nie herken nie' ERRORNOTREC: 'Daar die verbruikersnaam / wagwoord is nie herken nie'
Boolean: Boolean:
0: Onwaar
ANY: Enige ANY: Enige
1: Waar NOANSWER: 'False'
YESANSWER: 'True'
CMSLoadingScreen.ss: CMSLoadingScreen.ss:
LOADING: 'Besig om te laai...' LOADING: 'Besig om te laai...'
REQUIREJS: 'Die IBS vereis dat JavaScript aangeskakel is' REQUIREJS: 'Die IBS vereis dat JavaScript aangeskakel is'
@ -70,6 +71,8 @@ af:
ACCESSALLINTERFACES: 'Toegang tot alle IBS gedeeltes' ACCESSALLINTERFACES: 'Toegang tot alle IBS gedeeltes'
ACCESSALLINTERFACESHELP: 'Oorheers meer spesifieke toegans verstellings' ACCESSALLINTERFACESHELP: 'Oorheers meer spesifieke toegans verstellings'
SAVE: Stoor SAVE: Stoor
CMSPageHistoryController_versions.ss:
PREVIEW: 'Website preview'
CMSProfileController: CMSProfileController:
MENUTITLE: 'My profiel' MENUTITLE: 'My profiel'
ChangePasswordEmail.ss: ChangePasswordEmail.ss:
@ -79,8 +82,8 @@ af:
HELLO: 'Hi daar' HELLO: 'Hi daar'
PASSWORD: Wagwoord PASSWORD: Wagwoord
CheckboxField: CheckboxField:
- Onwaar NOANSWER: 'False'
- Waar YESANSWER: 'True'
ComplexTableField: ComplexTableField:
CLOSEPOPUP: 'Maak wipop toe' CLOSEPOPUP: 'Maak wipop toe'
SUCCESSADD2: '{name} bygesit' SUCCESSADD2: '{name} bygesit'
@ -109,20 +112,21 @@ af:
PLURALNAME: 'Data Voorwerpe' PLURALNAME: 'Data Voorwerpe'
SINGULARNAME: 'Data Voorwerp' SINGULARNAME: 'Data Voorwerp'
Date: Date:
DAY: dag DAY: day
DAYS: dae DAYS: days
HOUR: uur HOUR: hour
HOURS: ure HOURS: hours
MIN: minuut LessThanMinuteAgo: 'less than a minute'
MINS: minute MIN: min
MONTH: maand MINS: mins
MONTHS: maande MONTH: month
SEC: sekonde MONTHS: months
SECS: sekondes SEC: sec
SECS: secs
TIMEDIFFAGO: '{difference} terug' TIMEDIFFAGO: '{difference} terug'
TIMEDIFFIN: 'in {difference}' TIMEDIFFIN: 'in {difference}'
YEAR: jaar YEAR: year
YEARS: jare YEARS: years
DateField: DateField:
NOTSET: 'Nie gestel nie' NOTSET: 'Nie gestel nie'
TODAY: vandag TODAY: vandag
@ -198,7 +202,8 @@ af:
TEXT2: 'wagwoord herstel skakel' TEXT2: 'wagwoord herstel skakel'
TEXT3: vir TEXT3: vir
Form: Form:
FIELDISREQUIRED: '%s word benodig.' CSRF_FAILED_MESSAGE: 'There seems to have been a technical problem. Please click the back button, refresh your browser, and try again.'
FIELDISREQUIRED: '{name} is required'
SubmitBtnLabel: Gaan SubmitBtnLabel: Gaan
VALIDATIONCREDITNUMBER: 'Please ensure you have entered the {number} credit card number correctly' VALIDATIONCREDITNUMBER: 'Please ensure you have entered the {number} credit card number correctly'
VALIDATIONNOTUNIQUE: 'The waarde wat ingesleutel is is nie uniek nie' VALIDATIONNOTUNIQUE: 'The waarde wat ingesleutel is is nie uniek nie'
@ -208,6 +213,7 @@ af:
VALIDATOR: Vergeldiger VALIDATOR: Vergeldiger
VALIDCURRENCY: 'Tik asseblief ''n geldige geldeenheid in ' VALIDCURRENCY: 'Tik asseblief ''n geldige geldeenheid in '
FormField: FormField:
Example: 'e.g. %s'
NONE: geen NONE: geen
GridAction: GridAction:
DELETE_DESCRIPTION: Verwyder DELETE_DESCRIPTION: Verwyder
@ -230,6 +236,7 @@ af:
ResetFilter: Herstel ResetFilter: Herstel
GridFieldAction_Delete: GridFieldAction_Delete:
DeletePermissionsFailure: 'Geen toestemming om te verwyder nie' DeletePermissionsFailure: 'Geen toestemming om te verwyder nie'
EditPermissionsFailure: 'No permission to unlink record'
GridFieldDetailForm: GridFieldDetailForm:
CancelBtn: 'Kanselleer ' CancelBtn: 'Kanselleer '
Create: Skep Create: Skep
@ -237,7 +244,9 @@ af:
DeletePermissionsFailure: 'Geen toestemming om te verwyder nie' DeletePermissionsFailure: 'Geen toestemming om te verwyder nie'
Deleted: 'Verwyderde %s %s' Deleted: 'Verwyderde %s %s'
Save: Stoor Save: Stoor
Saved: 'Gestoor %s %s' Saved: 'Saved {name} {link}'
GridFieldEditButton.ss:
EDIT: Edit
GridFieldItemEditView.ss: null GridFieldItemEditView.ss: null
Group: Group:
AddRole: 'Voeg nog ''n rol by hierdie groep' AddRole: 'Voeg nog ''n rol by hierdie groep'
@ -267,6 +276,7 @@ af:
ADDURL: 'Voeg URL by' ADDURL: 'Voeg URL by'
ADJUSTDETAILSDIMENSIONS: 'Details &amp; dimensions' ADJUSTDETAILSDIMENSIONS: 'Details &amp; dimensions'
ANCHORVALUE: Anker ANCHORVALUE: Anker
BUTTONADDURL: 'Add url'
BUTTONINSERT: 'Plaas in' BUTTONINSERT: 'Plaas in'
BUTTONINSERTLINK: 'Sit in' BUTTONINSERTLINK: 'Sit in'
BUTTONREMOVELINK: 'Verwyder skakel' BUTTONREMOVELINK: 'Verwyder skakel'
@ -331,6 +341,9 @@ af:
PreviewButton: Beskou PreviewButton: Beskou
REORGANISATIONSUCCESSFUL: 'Die ''site tree'' is suksesvol geheorganiseer' REORGANISATIONSUCCESSFUL: 'Die ''site tree'' is suksesvol geheorganiseer'
SAVEDUP: Gestoor SAVEDUP: Gestoor
ShowAsList: 'show as list'
TooManyPages: 'Too many pages'
ValidationError: 'Validation error'
VersionUnknown: Unknown VersionUnknown: Unknown
LeftAndMain_Menu.ss: LeftAndMain_Menu.ss:
Hello: Hi Hello: Hi
@ -407,6 +420,7 @@ af:
TWODIGITMONTH: 'Twee syfer maand (01=Januarie etc)' TWODIGITMONTH: 'Twee syfer maand (01=Januarie etc)'
TWODIGITSECOND: 'Twee syfers van sekondes (00 to 59)' TWODIGITSECOND: 'Twee syfers van sekondes (00 to 59)'
TWODIGITYEAR: 'Twee syfer jaar' TWODIGITYEAR: 'Twee syfer jaar'
Toggle: 'Show formatting help'
MemberImportForm: MemberImportForm:
Help1: '<p> Voer gebruikers in <em>CSV</em>formaat (komma geskeide waardes).<small> <a href="#" class="toggle-advanced">Wys gevorderde gebruike</a></small></p>' Help1: '<p> Voer gebruikers in <em>CSV</em>formaat (komma geskeide waardes).<small> <a href="#" class="toggle-advanced">Wys gevorderde gebruike</a></small></p>'
Help2: '<div class="advanced"> <h4>Advanced usage</h4> <ul> <li>Allowed columns: <em>%s</em></li> <li>Existing users are matched by their unique <em>Code</em> property, and updated with any new values from the imported file.</li> <li>Groups can be assigned by the <em>Groups</em> column. Groups are identified by their <em>Code</em> property, multiple groups can be separated by comma. Existing group memberships are not cleared.</li> </ul></div>' Help2: '<div class="advanced"> <h4>Advanced usage</h4> <ul> <li>Allowed columns: <em>%s</em></li> <li>Existing users are matched by their unique <em>Code</em> property, and updated with any new values from the imported file.</li> <li>Groups can be assigned by the <em>Groups</em> column. Groups are identified by their <em>Code</em> property, multiple groups can be separated by comma. Existing group memberships are not cleared.</li> </ul></div>'
@ -421,7 +435,7 @@ af:
ModelAdmin: ModelAdmin:
DELETE: Verwyder DELETE: Verwyder
DELETEDRECORDS: 'Verwyder {count} rekords' DELETEDRECORDS: 'Verwyder {count} rekords'
EMPTYBEFOREIMPORT: 'Maak databasis skoon voordat data ingevoer word' EMPTYBEFOREIMPORT: 'Replace data'
IMPORT: 'Voer in van CSV' IMPORT: 'Voer in van CSV'
IMPORTEDRECORDS: 'Imported {count} records.' IMPORTEDRECORDS: 'Imported {count} records.'
NOCSVFILE: 'Soek asseblief vir ''n CSV lêer om in the voer' NOCSVFILE: 'Soek asseblief vir ''n CSV lêer om in the voer'
@ -515,7 +529,20 @@ af:
BtnImport: 'Voer In' BtnImport: 'Voer In'
FileFieldLabel: 'CSV Lêer <small>(Laat toe uitbreidings: *.csv)</small>' FileFieldLabel: 'CSV Lêer <small>(Laat toe uitbreidings: *.csv)</small>'
SilverStripeNavigator: SilverStripeNavigator:
Auto: Auto
ChangeViewMode: 'Change view mode'
Desktop: Desktop
DualWindowView: 'Dual Window'
Edit: Verander Edit: Verander
EditView: 'Edit mode'
Mobile: Mobile
PreviewState: 'Preview State'
PreviewView: 'Preview mode'
Responsive: Responsive
SplitView: 'Split mode'
Tablet: Tablet
ViewDeviceWidth: 'Select a preview width'
Width: width
SimpleImageField: SimpleImageField:
NOUPLOAD: 'Geen foto gelaai nie' NOUPLOAD: 'Geen foto gelaai nie'
SiteTree: SiteTree:
@ -551,6 +578,8 @@ af:
ATTACHFILE: 'Heg lêer aan' ATTACHFILE: 'Heg lêer aan'
ATTACHFILES: 'Heg lêer(s) aan' ATTACHFILES: 'Heg lêer(s) aan'
AttachFile: 'Aangehegde lêer(s)' AttachFile: 'Aangehegde lêer(s)'
CHOOSEANOTHERFILE: 'Choose another file'
CHOOSEANOTHERINFO: 'Replace this file with another one from the file store'
DELETE: 'Verwyder van lêers af' DELETE: 'Verwyder van lêers af'
DELETEINFO: 'Wis die lêer uit die lêer stoor uit' DELETEINFO: 'Wis die lêer uit die lêer stoor uit'
DOEDIT: Stoor DOEDIT: Stoor
@ -565,12 +594,15 @@ af:
FROMFILES: 'Van die lêers afdeling' FROMFILES: 'Van die lêers afdeling'
HOTLINKINFO: 'Info: This image will be hotlinked. Please ensure you have permissions from the original site creator to do so.' HOTLINKINFO: 'Info: This image will be hotlinked. Please ensure you have permissions from the original site creator to do so.'
MAXNUMBEROFFILES: 'Maksimum aantal van {count} lêer(s) oorskry ' MAXNUMBEROFFILES: 'Maksimum aantal van {count} lêer(s) oorskry '
MAXNUMBEROFFILESONE: 'Can only upload one file'
MAXNUMBEROFFILESSHORT: 'Kan net {count} lêer oplaai' MAXNUMBEROFFILESSHORT: 'Kan net {count} lêer oplaai'
OVERWRITEWARNING: 'File with the same name already exists'
REMOVE: Verwyder REMOVE: Verwyder
REMOVEERROR: 'Daar het ''n fout onstaan met die verwydering van die lêer' REMOVEERROR: 'Daar het ''n fout onstaan met die verwydering van die lêer'
REMOVEINFO: 'Verwyder die lêer van hier af maar moet dit nie uit die lêer stoor verwyder nie' REMOVEINFO: 'Verwyder die lêer van hier af maar moet dit nie uit die lêer stoor verwyder nie'
STARTALL: 'Begin alles' STARTALL: 'Begin alles'
STARTALLINFO: 'Begin op alles op te laai' STARTALLINFO: 'Begin op alles op te laai'
Saved: Gestoor Saved: Gestoor
UPLOADSINTO: 'saves into /{path}'
Versioned: Versioned:
has_many_Versions: Weergawe has_many_Versions: Weergawe

View File

@ -2,14 +2,15 @@ ar:
AssetAdmin: AssetAdmin:
ALLOWEDEXTS: 'Allowed extensions' ALLOWEDEXTS: 'Allowed extensions'
NEWFOLDER: 'مجلد جديد' NEWFOLDER: 'مجلد جديد'
SHOWALLOWEDEXTS: 'Show allowed extensions'
AssetTableField: AssetTableField:
CREATED: 'أول المرفوعات' CREATED: 'أول المرفوعات'
DIM: الأبعاد DIM: الأبعاد
FILENAME: 'اسم الملف' FILENAME: 'اسم الملف'
FOLDER: Folder FOLDER: Folder
LASTEDIT: 'آخر التعديلات' LASTEDIT: 'آخر التعديلات'
OWNER: المالك OWNER: 'المالك'
SIZE: الحجم SIZE: 'الحجم'
TITLE: العنوان TITLE: العنوان
TYPE: النوع TYPE: النوع
URL: الرابط URL: الرابط
@ -28,7 +29,7 @@ ar:
UPLOADINPROGRESS: 'Please wait… upload in progress' UPLOADINPROGRESS: 'Please wait… upload in progress'
UPLOADOR: OR UPLOADOR: OR
BBCodeParser: BBCodeParser:
ALIGNEMENT: المحاذاة ALIGNEMENT: 'المحاذاة'
ALIGNEMENTEXAMPLE: 'محاذاة إلى اليمين' ALIGNEMENTEXAMPLE: 'محاذاة إلى اليمين'
BOLD: 'خط عريض' BOLD: 'خط عريض'
BOLDEXAMPLE: عريض BOLDEXAMPLE: عريض
@ -42,7 +43,7 @@ ar:
IMAGE: الصورة IMAGE: الصورة
IMAGEDESCRIPTION: 'عرض الصورة في الموضوع' IMAGEDESCRIPTION: 'عرض الصورة في الموضوع'
ITALIC: 'خط مائل' ITALIC: 'خط مائل'
ITALICEXAMPLE: مائل ITALICEXAMPLE: 'مائل'
LINK: 'رابط الموقع' LINK: 'رابط الموقع'
LINKDESCRIPTION: 'رابط إلى موقع آخر' LINKDESCRIPTION: 'رابط إلى موقع آخر'
STRUCK: 'خط في المنتصف' STRUCK: 'خط في المنتصف'
@ -59,9 +60,9 @@ ar:
ERRORNOTADMIN: 'هذا المستخدم لا يملك صلاحيات الإدارة' ERRORNOTADMIN: 'هذا المستخدم لا يملك صلاحيات الإدارة'
ERRORNOTREC: 'اسم المستخدم أو الرقم السري غير صحيح' ERRORNOTREC: 'اسم المستخدم أو الرقم السري غير صحيح'
Boolean: Boolean:
0: لا
ANY: أي ANY: أي
1: نعم NOANSWER: 'False'
YESANSWER: 'True'
CMSLoadingScreen.ss: CMSLoadingScreen.ss:
LOADING: Loading... LOADING: Loading...
REQUIREJS: 'The CMS requires that you have JavaScript enabled.' REQUIREJS: 'The CMS requires that you have JavaScript enabled.'
@ -70,6 +71,8 @@ ar:
ACCESSALLINTERFACES: 'الدخول إلى جميع واجهات إدارة المحتوى' ACCESSALLINTERFACES: 'الدخول إلى جميع واجهات إدارة المحتوى'
ACCESSALLINTERFACESHELP: 'ينقض أكثر من توصيف الوصول المحدد' ACCESSALLINTERFACESHELP: 'ينقض أكثر من توصيف الوصول المحدد'
SAVE: حفظ SAVE: حفظ
CMSPageHistoryController_versions.ss:
PREVIEW: 'Website preview'
CMSProfileController: CMSProfileController:
MENUTITLE: 'My Profile' MENUTITLE: 'My Profile'
ChangePasswordEmail.ss: ChangePasswordEmail.ss:
@ -79,8 +82,8 @@ ar:
HELLO: أهلاً HELLO: أهلاً
PASSWORD: 'الرقم السري' PASSWORD: 'الرقم السري'
CheckboxField: CheckboxField:
- لا NOANSWER: 'False'
- نعم YESANSWER: 'True'
ComplexTableField: ComplexTableField:
CLOSEPOPUP: 'إغلاق النافذة' CLOSEPOPUP: 'إغلاق النافذة'
SUCCESSADD2: 'Added {name}' SUCCESSADD2: 'Added {name}'
@ -109,23 +112,24 @@ ar:
PLURALNAME: 'بيانات كائن' PLURALNAME: 'بيانات كائن'
SINGULARNAME: 'بيانات كائن' SINGULARNAME: 'بيانات كائن'
Date: Date:
DAY: اليوم DAY: day
DAYS: الأيام DAYS: days
HOUR: ساعة HOUR: hour
HOURS: ساعات HOURS: hours
MIN: دقيقة LessThanMinuteAgo: 'less than a minute'
MINS: الدقائق MIN: min
MONTH: الشهر MINS: mins
MONTHS: الأشهر MONTH: month
SEC: ثانية MONTHS: months
SECS: الثواني SEC: sec
SECS: secs
TIMEDIFFAGO: '{difference} ago' TIMEDIFFAGO: '{difference} ago'
TIMEDIFFIN: 'in {difference}' TIMEDIFFIN: 'in {difference}'
YEAR: السنة YEAR: year
YEARS: السنوات YEARS: years
DateField: DateField:
NOTSET: 'غير محدد' NOTSET: 'غير محدد'
TODAY: اليوم TODAY: 'اليوم'
VALIDDATEFORMAT2: 'Please enter a valid date format ({format})' VALIDDATEFORMAT2: 'Please enter a valid date format ({format})'
VALIDDATEMAXDATE: 'Your date has to be older or matching the maximum allowed date ({date})' VALIDDATEMAXDATE: 'Your date has to be older or matching the maximum allowed date ({date})'
VALIDDATEMINDATE: 'Your date has to be newer or matching the minimum allowed date ({date})' VALIDDATEMINDATE: 'Your date has to be newer or matching the minimum allowed date ({date})'
@ -144,7 +148,7 @@ ar:
ANY: أي ANY: أي
File: File:
AviType: 'AVI video file' AviType: 'AVI video file'
Content: المحتوى Content: 'المحتوى'
CssType: 'CSS file' CssType: 'CSS file'
DmgType: 'Apple disk image' DmgType: 'Apple disk image'
DocType: 'Word document' DocType: 'Word document'
@ -162,11 +166,11 @@ ar:
MpgType: 'MPEG video file' MpgType: 'MPEG video file'
NOFILESIZE: 'حجم الملف 0 بايت' NOFILESIZE: 'حجم الملف 0 بايت'
NOVALIDUPLOAD: 'نوع الملف غير قابل للرفع' NOVALIDUPLOAD: 'نوع الملف غير قابل للرفع'
Name: الاسم Name: 'الاسم'
PLURALNAME: الملفات PLURALNAME: 'الملفات'
PdfType: 'Adobe Acrobat PDF file' PdfType: 'Adobe Acrobat PDF file'
PngType: 'PNG image - good general-purpose format' PngType: 'PNG image - good general-purpose format'
SINGULARNAME: الملف SINGULARNAME: 'الملف'
TOOLARGE: 'Filesize is too large, maximum {size} allowed' TOOLARGE: 'Filesize is too large, maximum {size} allowed'
TOOLARGESHORT: 'Filesize exceeds {size}' TOOLARGESHORT: 'Filesize exceeds {size}'
TiffType: 'Tagged image format' TiffType: 'Tagged image format'
@ -180,7 +184,7 @@ ar:
ATTACHONCESAVED2: 'Files can be attached once you have saved the record for the first time.' ATTACHONCESAVED2: 'Files can be attached once you have saved the record for the first time.'
DELETE: 'Delete {type}' DELETE: 'Delete {type}'
DISALLOWEDFILETYPE: 'This filetype is not allowed to be uploaded' DISALLOWEDFILETYPE: 'This filetype is not allowed to be uploaded'
FILE: ملف FILE: 'ملف'
FROMCOMPUTER: 'من جهازك الشخصي' FROMCOMPUTER: 'من جهازك الشخصي'
FROMFILESTORE: 'من مكتبة الملفات' FROMFILESTORE: 'من مكتبة الملفات'
NOSOURCE: 'الرجاء اختيارمصدر ملف المرفق' NOSOURCE: 'الرجاء اختيارمصدر ملف المرفق'
@ -198,16 +202,18 @@ ar:
TEXT2: 'رابط إعادة تعيين كلمة المرور' TEXT2: 'رابط إعادة تعيين كلمة المرور'
TEXT3: لـ TEXT3: لـ
Form: Form:
FIELDISREQUIRED: '%s مطلوب' CSRF_FAILED_MESSAGE: 'There seems to have been a technical problem. Please click the back button, refresh your browser, and try again.'
FIELDISREQUIRED: '{name} is required'
SubmitBtnLabel: Go SubmitBtnLabel: Go
VALIDATIONCREDITNUMBER: 'Please ensure you have entered the {number} credit card number correctly' VALIDATIONCREDITNUMBER: 'Please ensure you have entered the {number} credit card number correctly'
VALIDATIONNOTUNIQUE: 'القيمة المدخلة غير فريدة و قابلة للتكرار ' VALIDATIONNOTUNIQUE: 'القيمة المدخلة غير فريدة و قابلة للتكرار '
VALIDATIONPASSWORDSDONTMATCH: 'رقم المرور غير صحيح' VALIDATIONPASSWORDSDONTMATCH: 'رقم المرور غير صحيح'
VALIDATIONPASSWORDSNOTEMPTY: 'أرقام المرور لا يمكن أن تكون فارغة' VALIDATIONPASSWORDSNOTEMPTY: 'أرقام المرور لا يمكن أن تكون فارغة'
VALIDATIONSTRONGPASSWORD: 'Passwords must have at least one digit and one alphanumeric character' VALIDATIONSTRONGPASSWORD: 'Passwords must have at least one digit and one alphanumeric character'
VALIDATOR: المحقق VALIDATOR: 'المحقق'
VALIDCURRENCY: 'Please enter a valid currency' VALIDCURRENCY: 'Please enter a valid currency'
FormField: FormField:
Example: 'e.g. %s'
NONE: لايوجد NONE: لايوجد
GridAction: GridAction:
DELETE_DESCRIPTION: Delete DELETE_DESCRIPTION: Delete
@ -230,6 +236,7 @@ ar:
ResetFilter: Reset ResetFilter: Reset
GridFieldAction_Delete: GridFieldAction_Delete:
DeletePermissionsFailure: 'No delete permissions' DeletePermissionsFailure: 'No delete permissions'
EditPermissionsFailure: 'No permission to unlink record'
GridFieldDetailForm: GridFieldDetailForm:
CancelBtn: Cancel CancelBtn: Cancel
Create: Create Create: Create
@ -237,7 +244,9 @@ ar:
DeletePermissionsFailure: 'No delete permissions' DeletePermissionsFailure: 'No delete permissions'
Deleted: 'Deleted %s %s' Deleted: 'Deleted %s %s'
Save: Save Save: Save
Saved: 'Saved %s %s' Saved: 'Saved {name} {link}'
GridFieldEditButton.ss:
EDIT: Edit
GridFieldItemEditView.ss: null GridFieldItemEditView.ss: null
Group: Group:
AddRole: 'Add a role for this group' AddRole: 'Add a role for this group'
@ -267,6 +276,7 @@ ar:
ADDURL: 'Add URL' ADDURL: 'Add URL'
ADJUSTDETAILSDIMENSIONS: 'Details &amp; dimensions' ADJUSTDETAILSDIMENSIONS: 'Details &amp; dimensions'
ANCHORVALUE: رابط ANCHORVALUE: رابط
BUTTONADDURL: 'Add url'
BUTTONINSERT: Insert BUTTONINSERT: Insert
BUTTONINSERTLINK: 'أدخل رابط' BUTTONINSERTLINK: 'أدخل رابط'
BUTTONREMOVELINK: 'إزالة رابط' BUTTONREMOVELINK: 'إزالة رابط'
@ -279,8 +289,8 @@ ar:
CSSCLASSRIGHT: 'إلى اليمين ، مع التفاف النص' CSSCLASSRIGHT: 'إلى اليمين ، مع التفاف النص'
DETAILS: Details DETAILS: Details
EMAIL: 'بريد إلكتروني' EMAIL: 'بريد إلكتروني'
FILE: ملف FILE: 'ملف'
FOLDER: المجلد FOLDER: 'المجلد'
FROMCMS: 'From the CMS' FROMCMS: 'From the CMS'
FROMCOMPUTER: 'From your computer' FROMCOMPUTER: 'From your computer'
FROMWEB: 'From the web' FROMWEB: 'From the web'
@ -322,7 +332,7 @@ ar:
CANT_REORGANISE: 'You do not have permission to alter Top level pages. Your change was not saved.' CANT_REORGANISE: 'You do not have permission to alter Top level pages. Your change was not saved.'
DELETED: Deleted. DELETED: Deleted.
DropdownBatchActionsDefault: Actions DropdownBatchActionsDefault: Actions
HELP: مساعدة HELP: 'مساعدة'
PAGETYPE: 'نوع الصفحة:' PAGETYPE: 'نوع الصفحة:'
PERMAGAIN: 'تم خروجك من النظام بنجاح. للدخول مرة أخرى أدحل البريد الإلكتروني و الرقم السري بالأسفل' PERMAGAIN: 'تم خروجك من النظام بنجاح. للدخول مرة أخرى أدحل البريد الإلكتروني و الرقم السري بالأسفل'
PERMALREADY: 'عذراً , لكن لا يمكنك الوصول لهذا القسم من النظام. يتوجب عليك الدخول بصلاحية أخرى' PERMALREADY: 'عذراً , لكن لا يمكنك الوصول لهذا القسم من النظام. يتوجب عليك الدخول بصلاحية أخرى'
@ -331,7 +341,10 @@ ar:
PreviewButton: Preview PreviewButton: Preview
REORGANISATIONSUCCESSFUL: 'Reorganised the site tree successfully.' REORGANISATIONSUCCESSFUL: 'Reorganised the site tree successfully.'
SAVEDUP: Saved. SAVEDUP: Saved.
VersionUnknown: unknown ShowAsList: 'show as list'
TooManyPages: 'Too many pages'
ValidationError: 'Validation error'
VersionUnknown: Unknown
LeftAndMain_Menu.ss: LeftAndMain_Menu.ss:
Hello: Hi Hello: Hi
LOGOUT: 'Log out' LOGOUT: 'Log out'
@ -377,7 +390,7 @@ ar:
ValidationIdentifierFailed: 'Can''t overwrite existing member #{id} with identical identifier ({name} = {value}))' ValidationIdentifierFailed: 'Can''t overwrite existing member #{id} with identical identifier ({name} = {value}))'
WELCOMEBACK: 'Welcome Back, {firstname}' WELCOMEBACK: 'Welcome Back, {firstname}'
YOUROLDPASSWORD: 'رقم المرور السابق' YOUROLDPASSWORD: 'رقم المرور السابق'
belongs_many_many_Groups: المجموعات belongs_many_many_Groups: 'المجموعات'
db_LastVisited: 'تاريخ آخر زيارة' db_LastVisited: 'تاريخ آخر زيارة'
db_Locale: 'واجهة الموقع' db_Locale: 'واجهة الموقع'
db_LockedOutUntil: 'مغلق حتى تاريخ' db_LockedOutUntil: 'مغلق حتى تاريخ'
@ -407,6 +420,7 @@ ar:
TWODIGITMONTH: 'Two-digit month (01=January, etc.)' TWODIGITMONTH: 'Two-digit month (01=January, etc.)'
TWODIGITSECOND: 'Two digits of second (00 through 59)' TWODIGITSECOND: 'Two digits of second (00 through 59)'
TWODIGITYEAR: 'Two-digit year' TWODIGITYEAR: 'Two-digit year'
Toggle: 'Show formatting help'
MemberImportForm: MemberImportForm:
Help1: '<p>Import users in <em>CSV format</em> (comma-separated values). <small><a href="#" class="toggle-advanced">Show advanced usage</a></small></p>' Help1: '<p>Import users in <em>CSV format</em> (comma-separated values). <small><a href="#" class="toggle-advanced">Show advanced usage</a></small></p>'
Help2: '<div class="advanced"> <h4>Advanced usage</h4> <ul> <li>Allowed columns: <em>%s</em></li> <li>Existing users are matched by their unique <em>Code</em> property, and updated with any new values from the imported file.</li> <li>Groups can be assigned by the <em>Groups</em> column. Groups are identified by their <em>Code</em> property, multiple groups can be separated by comma. Existing group memberships are not cleared.</li> </ul></div>' Help2: '<div class="advanced"> <h4>Advanced usage</h4> <ul> <li>Allowed columns: <em>%s</em></li> <li>Existing users are matched by their unique <em>Code</em> property, and updated with any new values from the imported file.</li> <li>Groups can be assigned by the <em>Groups</em> column. Groups are identified by their <em>Code</em> property, multiple groups can be separated by comma. Existing group memberships are not cleared.</li> </ul></div>'
@ -421,7 +435,7 @@ ar:
ModelAdmin: ModelAdmin:
DELETE: حذف DELETE: حذف
DELETEDRECORDS: 'Deleted {count} records.' DELETEDRECORDS: 'Deleted {count} records.'
EMPTYBEFOREIMPORT: 'Clear Database before import' EMPTYBEFOREIMPORT: 'Replace data'
IMPORT: 'استيراد من CSV' IMPORT: 'استيراد من CSV'
IMPORTEDRECORDS: 'Imported {count} records.' IMPORTEDRECORDS: 'Imported {count} records.'
NOCSVFILE: 'فضلاً استعرض ملف CSV للاستيراد' NOCSVFILE: 'فضلاً استعرض ملف CSV للاستيراد'
@ -441,8 +455,8 @@ ar:
IMPORT_TAB_HEADER: Import IMPORT_TAB_HEADER: Import
SEARCHLISTINGS: Search SEARCHLISTINGS: Search
MoneyField: MoneyField:
FIELDLABELAMOUNT: الكمية FIELDLABELAMOUNT: 'الكمية'
FIELDLABELCURRENCY: العملة FIELDLABELCURRENCY: 'العملة'
NullableField: NullableField:
IsNullLabel: باطل IsNullLabel: باطل
NumericField: NumericField:
@ -515,7 +529,20 @@ ar:
BtnImport: استيراد BtnImport: استيراد
FileFieldLabel: ' CSV ملف <small>(الامتداد المسموح :*.csv )</small>' FileFieldLabel: ' CSV ملف <small>(الامتداد المسموح :*.csv )</small>'
SilverStripeNavigator: SilverStripeNavigator:
Auto: Auto
ChangeViewMode: 'Change view mode'
Desktop: Desktop
DualWindowView: 'Dual Window'
Edit: Edit Edit: Edit
EditView: 'Edit mode'
Mobile: Mobile
PreviewState: 'Preview State'
PreviewView: 'Preview mode'
Responsive: Responsive
SplitView: 'Split mode'
Tablet: Tablet
ViewDeviceWidth: 'Select a preview width'
Width: width
SimpleImageField: SimpleImageField:
NOUPLOAD: 'لا توجد صور مرفوعة' NOUPLOAD: 'لا توجد صور مرفوعة'
SiteTree: SiteTree:
@ -551,6 +578,8 @@ ar:
ATTACHFILE: 'Attach a file' ATTACHFILE: 'Attach a file'
ATTACHFILES: 'Attach files' ATTACHFILES: 'Attach files'
AttachFile: 'Attach file(s)' AttachFile: 'Attach file(s)'
CHOOSEANOTHERFILE: 'Choose another file'
CHOOSEANOTHERINFO: 'Replace this file with another one from the file store'
DELETE: 'Delete from files' DELETE: 'Delete from files'
DELETEINFO: 'Permanently delete this file from the file store' DELETEINFO: 'Permanently delete this file from the file store'
DOEDIT: Save DOEDIT: Save
@ -565,12 +594,15 @@ ar:
FROMFILES: 'From files' FROMFILES: 'From files'
HOTLINKINFO: 'Info: This image will be hotlinked. Please ensure you have permissions from the original site creator to do so.' HOTLINKINFO: 'Info: This image will be hotlinked. Please ensure you have permissions from the original site creator to do so.'
MAXNUMBEROFFILES: 'Max number of {count} file(s) exceeded.' MAXNUMBEROFFILES: 'Max number of {count} file(s) exceeded.'
MAXNUMBEROFFILESONE: 'Can only upload one file'
MAXNUMBEROFFILESSHORT: 'Can only upload {count} files' MAXNUMBEROFFILESSHORT: 'Can only upload {count} files'
OVERWRITEWARNING: 'File with the same name already exists'
REMOVE: Remove REMOVE: Remove
REMOVEERROR: 'Error removing file' REMOVEERROR: 'Error removing file'
REMOVEINFO: 'Remove this file from here, but do not delete it from the file store' REMOVEINFO: 'Remove this file from here, but do not delete it from the file store'
STARTALL: 'Start all' STARTALL: 'Start all'
STARTALLINFO: 'Start all uploads' STARTALLINFO: 'Start all uploads'
Saved: Saved Saved: Saved
UPLOADSINTO: 'saves into /{path}'
Versioned: Versioned:
has_many_Versions: الإصدارات has_many_Versions: الإصدارات

View File

@ -2,6 +2,7 @@ ast:
AssetAdmin: AssetAdmin:
ALLOWEDEXTS: 'Allowed extensions' ALLOWEDEXTS: 'Allowed extensions'
NEWFOLDER: NewFolder NEWFOLDER: NewFolder
SHOWALLOWEDEXTS: 'Show allowed extensions'
AssetTableField: AssetTableField:
CREATED: 'First uploaded' CREATED: 'First uploaded'
DIM: Dimensions DIM: Dimensions
@ -59,9 +60,9 @@ ast:
ERRORNOTADMIN: 'That user is not an administrator.' ERRORNOTADMIN: 'That user is not an administrator.'
ERRORNOTREC: 'That username / password isn''t recognised' ERRORNOTREC: 'That username / password isn''t recognised'
Boolean: Boolean:
0: 'False'
ANY: Any ANY: Any
1: 'True' NOANSWER: 'False'
YESANSWER: 'True'
CMSLoadingScreen.ss: CMSLoadingScreen.ss:
LOADING: Loading... LOADING: Loading...
REQUIREJS: 'The CMS requires that you have JavaScript enabled.' REQUIREJS: 'The CMS requires that you have JavaScript enabled.'
@ -70,6 +71,8 @@ ast:
ACCESSALLINTERFACES: 'Access to all CMS sections' ACCESSALLINTERFACES: 'Access to all CMS sections'
ACCESSALLINTERFACESHELP: 'Overrules more specific access settings.' ACCESSALLINTERFACESHELP: 'Overrules more specific access settings.'
SAVE: Save SAVE: Save
CMSPageHistoryController_versions.ss:
PREVIEW: 'Website preview'
CMSProfileController: CMSProfileController:
MENUTITLE: 'My Profile' MENUTITLE: 'My Profile'
ChangePasswordEmail.ss: ChangePasswordEmail.ss:
@ -79,8 +82,8 @@ ast:
HELLO: Hi HELLO: Hi
PASSWORD: Password PASSWORD: Password
CheckboxField: CheckboxField:
- 'False' NOANSWER: 'False'
- 'True' YESANSWER: 'True'
ComplexTableField: ComplexTableField:
CLOSEPOPUP: 'Close Popup' CLOSEPOPUP: 'Close Popup'
SUCCESSADD2: 'Added {name}' SUCCESSADD2: 'Added {name}'
@ -109,20 +112,21 @@ ast:
PLURALNAME: 'Oxetos de datos' PLURALNAME: 'Oxetos de datos'
SINGULARNAME: 'Oxetu de datos' SINGULARNAME: 'Oxetu de datos'
Date: Date:
DAY: ' day' DAY: day
DAYS: ' days' DAYS: days
HOUR: ' hour' HOUR: hour
HOURS: ' hours' HOURS: hours
MIN: ' min' LessThanMinuteAgo: 'less than a minute'
MINS: ' mins' MIN: min
MONTH: ' month' MINS: mins
MONTHS: ' months' MONTH: month
SEC: ' sec' MONTHS: months
SECS: ' secs' SEC: sec
SECS: secs
TIMEDIFFAGO: '{difference} ago' TIMEDIFFAGO: '{difference} ago'
TIMEDIFFIN: 'in {difference}' TIMEDIFFIN: 'in {difference}'
YEAR: ' year' YEAR: year
YEARS: ' years' YEARS: years
DateField: DateField:
NOTSET: 'nun s''establez' NOTSET: 'nun s''establez'
TODAY: hoi TODAY: hoi
@ -198,7 +202,8 @@ ast:
TEXT2: 'password reset link' TEXT2: 'password reset link'
TEXT3: for TEXT3: for
Form: Form:
FIELDISREQUIRED: '%s is required' CSRF_FAILED_MESSAGE: 'There seems to have been a technical problem. Please click the back button, refresh your browser, and try again.'
FIELDISREQUIRED: '{name} is required'
SubmitBtnLabel: Go SubmitBtnLabel: Go
VALIDATIONCREDITNUMBER: 'Please ensure you have entered the {number} credit card number correctly' VALIDATIONCREDITNUMBER: 'Please ensure you have entered the {number} credit card number correctly'
VALIDATIONNOTUNIQUE: 'The value entered is not unique' VALIDATIONNOTUNIQUE: 'The value entered is not unique'
@ -208,6 +213,7 @@ ast:
VALIDATOR: Validator VALIDATOR: Validator
VALIDCURRENCY: 'Please enter a valid currency' VALIDCURRENCY: 'Please enter a valid currency'
FormField: FormField:
Example: 'e.g. %s'
NONE: none NONE: none
GridAction: GridAction:
DELETE_DESCRIPTION: Delete DELETE_DESCRIPTION: Delete
@ -230,6 +236,7 @@ ast:
ResetFilter: Reset ResetFilter: Reset
GridFieldAction_Delete: GridFieldAction_Delete:
DeletePermissionsFailure: 'No delete permissions' DeletePermissionsFailure: 'No delete permissions'
EditPermissionsFailure: 'No permission to unlink record'
GridFieldDetailForm: GridFieldDetailForm:
CancelBtn: Cancel CancelBtn: Cancel
Create: Create Create: Create
@ -237,7 +244,9 @@ ast:
DeletePermissionsFailure: 'No delete permissions' DeletePermissionsFailure: 'No delete permissions'
Deleted: 'Deleted %s %s' Deleted: 'Deleted %s %s'
Save: Save Save: Save
Saved: 'Saved %s %s' Saved: 'Saved {name} {link}'
GridFieldEditButton.ss:
EDIT: Edit
GridFieldItemEditView.ss: null GridFieldItemEditView.ss: null
Group: Group:
AddRole: 'Add a role for this group' AddRole: 'Add a role for this group'
@ -267,6 +276,7 @@ ast:
ADDURL: 'Add URL' ADDURL: 'Add URL'
ADJUSTDETAILSDIMENSIONS: 'Details &amp; dimensions' ADJUSTDETAILSDIMENSIONS: 'Details &amp; dimensions'
ANCHORVALUE: Anchor ANCHORVALUE: Anchor
BUTTONADDURL: 'Add url'
BUTTONINSERT: Insert BUTTONINSERT: Insert
BUTTONINSERTLINK: 'Insert link' BUTTONINSERTLINK: 'Insert link'
BUTTONREMOVELINK: 'Remove link' BUTTONREMOVELINK: 'Remove link'
@ -331,7 +341,10 @@ ast:
PreviewButton: Preview PreviewButton: Preview
REORGANISATIONSUCCESSFUL: 'Reorganised the site tree successfully.' REORGANISATIONSUCCESSFUL: 'Reorganised the site tree successfully.'
SAVEDUP: Saved. SAVEDUP: Saved.
VersionUnknown: unknown ShowAsList: 'show as list'
TooManyPages: 'Too many pages'
ValidationError: 'Validation error'
VersionUnknown: Unknown
LeftAndMain_Menu.ss: LeftAndMain_Menu.ss:
Hello: Hi Hello: Hi
LOGOUT: 'Log out' LOGOUT: 'Log out'
@ -407,6 +420,7 @@ ast:
TWODIGITMONTH: 'Two-digit month (01=January, etc.)' TWODIGITMONTH: 'Two-digit month (01=January, etc.)'
TWODIGITSECOND: 'Two digits of second (00 through 59)' TWODIGITSECOND: 'Two digits of second (00 through 59)'
TWODIGITYEAR: 'Two-digit year' TWODIGITYEAR: 'Two-digit year'
Toggle: 'Show formatting help'
MemberImportForm: MemberImportForm:
Help1: '<p>Import users in <em>CSV format</em> (comma-separated values). <small><a href="#" class="toggle-advanced">Show advanced usage</a></small></p>' Help1: '<p>Import users in <em>CSV format</em> (comma-separated values). <small><a href="#" class="toggle-advanced">Show advanced usage</a></small></p>'
Help2: '<div class="advanced"> <h4>Advanced usage</h4> <ul> <li>Allowed columns: <em>%s</em></li> <li>Existing users are matched by their unique <em>Code</em> property, and updated with any new values from the imported file.</li> <li>Groups can be assigned by the <em>Groups</em> column. Groups are identified by their <em>Code</em> property, multiple groups can be separated by comma. Existing group memberships are not cleared.</li> </ul></div>' Help2: '<div class="advanced"> <h4>Advanced usage</h4> <ul> <li>Allowed columns: <em>%s</em></li> <li>Existing users are matched by their unique <em>Code</em> property, and updated with any new values from the imported file.</li> <li>Groups can be assigned by the <em>Groups</em> column. Groups are identified by their <em>Code</em> property, multiple groups can be separated by comma. Existing group memberships are not cleared.</li> </ul></div>'
@ -421,7 +435,7 @@ ast:
ModelAdmin: ModelAdmin:
DELETE: Delete DELETE: Delete
DELETEDRECORDS: 'Deleted {count} records.' DELETEDRECORDS: 'Deleted {count} records.'
EMPTYBEFOREIMPORT: 'Clear Database before import' EMPTYBEFOREIMPORT: 'Replace data'
IMPORT: 'Import from CSV' IMPORT: 'Import from CSV'
IMPORTEDRECORDS: 'Imported {count} records.' IMPORTEDRECORDS: 'Imported {count} records.'
NOCSVFILE: 'Please browse for a CSV file to import' NOCSVFILE: 'Please browse for a CSV file to import'
@ -515,7 +529,20 @@ ast:
BtnImport: 'Import from CSV' BtnImport: 'Import from CSV'
FileFieldLabel: 'CSV File <small>(Allowed extensions: *.csv)</small>' FileFieldLabel: 'CSV File <small>(Allowed extensions: *.csv)</small>'
SilverStripeNavigator: SilverStripeNavigator:
Auto: Auto
ChangeViewMode: 'Change view mode'
Desktop: Desktop
DualWindowView: 'Dual Window'
Edit: Edit Edit: Edit
EditView: 'Edit mode'
Mobile: Mobile
PreviewState: 'Preview State'
PreviewView: 'Preview mode'
Responsive: Responsive
SplitView: 'Split mode'
Tablet: Tablet
ViewDeviceWidth: 'Select a preview width'
Width: width
SimpleImageField: SimpleImageField:
NOUPLOAD: 'No Image Uploaded' NOUPLOAD: 'No Image Uploaded'
SiteTree: SiteTree:
@ -551,6 +578,8 @@ ast:
ATTACHFILE: 'Attach a file' ATTACHFILE: 'Attach a file'
ATTACHFILES: 'Attach files' ATTACHFILES: 'Attach files'
AttachFile: 'Attach file(s)' AttachFile: 'Attach file(s)'
CHOOSEANOTHERFILE: 'Choose another file'
CHOOSEANOTHERINFO: 'Replace this file with another one from the file store'
DELETE: 'Delete from files' DELETE: 'Delete from files'
DELETEINFO: 'Permanently delete this file from the file store' DELETEINFO: 'Permanently delete this file from the file store'
DOEDIT: Save DOEDIT: Save
@ -565,12 +594,15 @@ ast:
FROMFILES: 'From files' FROMFILES: 'From files'
HOTLINKINFO: 'Info: This image will be hotlinked. Please ensure you have permissions from the original site creator to do so.' HOTLINKINFO: 'Info: This image will be hotlinked. Please ensure you have permissions from the original site creator to do so.'
MAXNUMBEROFFILES: 'Max number of {count} file(s) exceeded.' MAXNUMBEROFFILES: 'Max number of {count} file(s) exceeded.'
MAXNUMBEROFFILESONE: 'Can only upload one file'
MAXNUMBEROFFILESSHORT: 'Can only upload {count} files' MAXNUMBEROFFILESSHORT: 'Can only upload {count} files'
OVERWRITEWARNING: 'File with the same name already exists'
REMOVE: Remove REMOVE: Remove
REMOVEERROR: 'Error removing file' REMOVEERROR: 'Error removing file'
REMOVEINFO: 'Remove this file from here, but do not delete it from the file store' REMOVEINFO: 'Remove this file from here, but do not delete it from the file store'
STARTALL: 'Start all' STARTALL: 'Start all'
STARTALLINFO: 'Start all uploads' STARTALLINFO: 'Start all uploads'
Saved: Saved Saved: Saved
UPLOADSINTO: 'saves into /{path}'
Versioned: Versioned:
has_many_Versions: Versiones has_many_Versions: Versiones

View File

@ -2,6 +2,7 @@ az:
AssetAdmin: AssetAdmin:
ALLOWEDEXTS: 'Allowed extensions' ALLOWEDEXTS: 'Allowed extensions'
NEWFOLDER: NewFolder NEWFOLDER: NewFolder
SHOWALLOWEDEXTS: 'Show allowed extensions'
AssetTableField: AssetTableField:
CREATED: 'First uploaded' CREATED: 'First uploaded'
DIM: Dimensions DIM: Dimensions
@ -59,9 +60,9 @@ az:
ERRORNOTADMIN: 'İstifadəçi administrator deyil' ERRORNOTADMIN: 'İstifadəçi administrator deyil'
ERRORNOTREC: 'Belə istifadəçi adı və ya parol tanınmadı' ERRORNOTREC: 'Belə istifadəçi adı və ya parol tanınmadı'
Boolean: Boolean:
0: Yox
ANY: İstənilən ANY: İstənilən
1: Bəli NOANSWER: 'False'
YESANSWER: 'True'
CMSLoadingScreen.ss: CMSLoadingScreen.ss:
LOADING: Loading... LOADING: Loading...
REQUIREJS: 'The CMS requires that you have JavaScript enabled.' REQUIREJS: 'The CMS requires that you have JavaScript enabled.'
@ -70,6 +71,8 @@ az:
ACCESSALLINTERFACES: 'Access to all CMS sections' ACCESSALLINTERFACES: 'Access to all CMS sections'
ACCESSALLINTERFACESHELP: 'Overrules more specific access settings.' ACCESSALLINTERFACESHELP: 'Overrules more specific access settings.'
SAVE: 'Yadda saxla' SAVE: 'Yadda saxla'
CMSPageHistoryController_versions.ss:
PREVIEW: 'Website preview'
CMSProfileController: CMSProfileController:
MENUTITLE: 'My Profile' MENUTITLE: 'My Profile'
ChangePasswordEmail.ss: ChangePasswordEmail.ss:
@ -79,8 +82,8 @@ az:
HELLO: Salam HELLO: Salam
PASSWORD: Parol PASSWORD: Parol
CheckboxField: CheckboxField:
- Yox NOANSWER: 'False'
- Bəli YESANSWER: 'True'
ComplexTableField: ComplexTableField:
CLOSEPOPUP: Bağla CLOSEPOPUP: Bağla
SUCCESSADD2: 'Added {name}' SUCCESSADD2: 'Added {name}'
@ -109,20 +112,21 @@ az:
PLURALNAME: 'Data Obyektlər' PLURALNAME: 'Data Obyektlər'
SINGULARNAME: 'Data Obyekt' SINGULARNAME: 'Data Obyekt'
Date: Date:
DAY: gün DAY: day
DAYS: günlər DAYS: days
HOUR: saat HOUR: hour
HOURS: saatlar HOURS: hours
MIN: dəq LessThanMinuteAgo: 'less than a minute'
MINS: dəqiqələr MIN: min
MONTH: ay MINS: mins
MONTHS: aylar MONTH: month
SEC: san MONTHS: months
SECS: san-lər SEC: sec
SECS: secs
TIMEDIFFAGO: '{difference} ago' TIMEDIFFAGO: '{difference} ago'
TIMEDIFFIN: 'in {difference}' TIMEDIFFIN: 'in {difference}'
YEAR: il YEAR: year
YEARS: illər YEARS: years
DateField: DateField:
NOTSET: 'təyin edilməyib' NOTSET: 'təyin edilməyib'
TODAY: 'bu gün' TODAY: 'bu gün'
@ -198,7 +202,8 @@ az:
TEXT2: 'parolu sıfırlma linki' TEXT2: 'parolu sıfırlma linki'
TEXT3: üçün TEXT3: üçün
Form: Form:
FIELDISREQUIRED: '%s tələb olunur.' CSRF_FAILED_MESSAGE: 'There seems to have been a technical problem. Please click the back button, refresh your browser, and try again.'
FIELDISREQUIRED: '{name} is required'
SubmitBtnLabel: Go SubmitBtnLabel: Go
VALIDATIONCREDITNUMBER: 'Please ensure you have entered the {number} credit card number correctly' VALIDATIONCREDITNUMBER: 'Please ensure you have entered the {number} credit card number correctly'
VALIDATIONNOTUNIQUE: 'Daxil edilən məlumat unikal deyil' VALIDATIONNOTUNIQUE: 'Daxil edilən məlumat unikal deyil'
@ -208,6 +213,7 @@ az:
VALIDATOR: Validator VALIDATOR: Validator
VALIDCURRENCY: 'Please enter a valid currency' VALIDCURRENCY: 'Please enter a valid currency'
FormField: FormField:
Example: 'e.g. %s'
NONE: 'heç bir' NONE: 'heç bir'
GridAction: GridAction:
DELETE_DESCRIPTION: Delete DELETE_DESCRIPTION: Delete
@ -230,6 +236,7 @@ az:
ResetFilter: Reset ResetFilter: Reset
GridFieldAction_Delete: GridFieldAction_Delete:
DeletePermissionsFailure: 'No delete permissions' DeletePermissionsFailure: 'No delete permissions'
EditPermissionsFailure: 'No permission to unlink record'
GridFieldDetailForm: GridFieldDetailForm:
CancelBtn: Cancel CancelBtn: Cancel
Create: Create Create: Create
@ -237,7 +244,9 @@ az:
DeletePermissionsFailure: 'No delete permissions' DeletePermissionsFailure: 'No delete permissions'
Deleted: 'Deleted %s %s' Deleted: 'Deleted %s %s'
Save: Save Save: Save
Saved: 'Saved %s %s' Saved: 'Saved {name} {link}'
GridFieldEditButton.ss:
EDIT: Edit
GridFieldItemEditView.ss: null GridFieldItemEditView.ss: null
Group: Group:
AddRole: 'Add a role for this group' AddRole: 'Add a role for this group'
@ -267,6 +276,7 @@ az:
ADDURL: 'Add URL' ADDURL: 'Add URL'
ADJUSTDETAILSDIMENSIONS: 'Details &amp; dimensions' ADJUSTDETAILSDIMENSIONS: 'Details &amp; dimensions'
ANCHORVALUE: Ankor ANCHORVALUE: Ankor
BUTTONADDURL: 'Add url'
BUTTONINSERT: Insert BUTTONINSERT: Insert
BUTTONINSERTLINK: 'Link əlavə et' BUTTONINSERTLINK: 'Link əlavə et'
BUTTONREMOVELINK: 'Linki sil' BUTTONREMOVELINK: 'Linki sil'
@ -331,7 +341,10 @@ az:
PreviewButton: Preview PreviewButton: Preview
REORGANISATIONSUCCESSFUL: 'Reorganised the site tree successfully.' REORGANISATIONSUCCESSFUL: 'Reorganised the site tree successfully.'
SAVEDUP: Saved. SAVEDUP: Saved.
VersionUnknown: unknown ShowAsList: 'show as list'
TooManyPages: 'Too many pages'
ValidationError: 'Validation error'
VersionUnknown: Unknown
LeftAndMain_Menu.ss: LeftAndMain_Menu.ss:
Hello: Hi Hello: Hi
LOGOUT: 'Log out' LOGOUT: 'Log out'
@ -407,6 +420,7 @@ az:
TWODIGITMONTH: 'Two-digit month (01=January, etc.)' TWODIGITMONTH: 'Two-digit month (01=January, etc.)'
TWODIGITSECOND: 'Two digits of second (00 through 59)' TWODIGITSECOND: 'Two digits of second (00 through 59)'
TWODIGITYEAR: 'Two-digit year' TWODIGITYEAR: 'Two-digit year'
Toggle: 'Show formatting help'
MemberImportForm: MemberImportForm:
Help1: '<p>Import users in <em>CSV format</em> (comma-separated values). <small><a href="#" class="toggle-advanced">Show advanced usage</a></small></p>' Help1: '<p>Import users in <em>CSV format</em> (comma-separated values). <small><a href="#" class="toggle-advanced">Show advanced usage</a></small></p>'
Help2: '<div class="advanced"> <h4>Advanced usage</h4> <ul> <li>Allowed columns: <em>%s</em></li> <li>Existing users are matched by their unique <em>Code</em> property, and updated with any new values from the imported file.</li> <li>Groups can be assigned by the <em>Groups</em> column. Groups are identified by their <em>Code</em> property, multiple groups can be separated by comma. Existing group memberships are not cleared.</li> </ul></div>' Help2: '<div class="advanced"> <h4>Advanced usage</h4> <ul> <li>Allowed columns: <em>%s</em></li> <li>Existing users are matched by their unique <em>Code</em> property, and updated with any new values from the imported file.</li> <li>Groups can be assigned by the <em>Groups</em> column. Groups are identified by their <em>Code</em> property, multiple groups can be separated by comma. Existing group memberships are not cleared.</li> </ul></div>'
@ -421,7 +435,7 @@ az:
ModelAdmin: ModelAdmin:
DELETE: Delete DELETE: Delete
DELETEDRECORDS: 'Deleted {count} records.' DELETEDRECORDS: 'Deleted {count} records.'
EMPTYBEFOREIMPORT: 'Clear Database before import' EMPTYBEFOREIMPORT: 'Replace data'
IMPORT: 'Import from CSV' IMPORT: 'Import from CSV'
IMPORTEDRECORDS: 'Imported {count} records.' IMPORTEDRECORDS: 'Imported {count} records.'
NOCSVFILE: 'Please browse for a CSV file to import' NOCSVFILE: 'Please browse for a CSV file to import'
@ -515,7 +529,20 @@ az:
BtnImport: 'Import from CSV' BtnImport: 'Import from CSV'
FileFieldLabel: 'CSV File <small>(Allowed extensions: *.csv)</small>' FileFieldLabel: 'CSV File <small>(Allowed extensions: *.csv)</small>'
SilverStripeNavigator: SilverStripeNavigator:
Auto: Auto
ChangeViewMode: 'Change view mode'
Desktop: Desktop
DualWindowView: 'Dual Window'
Edit: Edit Edit: Edit
EditView: 'Edit mode'
Mobile: Mobile
PreviewState: 'Preview State'
PreviewView: 'Preview mode'
Responsive: Responsive
SplitView: 'Split mode'
Tablet: Tablet
ViewDeviceWidth: 'Select a preview width'
Width: width
SimpleImageField: SimpleImageField:
NOUPLOAD: 'Şəkil yüklənməmişdir' NOUPLOAD: 'Şəkil yüklənməmişdir'
SiteTree: SiteTree:
@ -551,6 +578,8 @@ az:
ATTACHFILE: 'Attach a file' ATTACHFILE: 'Attach a file'
ATTACHFILES: 'Attach files' ATTACHFILES: 'Attach files'
AttachFile: 'Attach file(s)' AttachFile: 'Attach file(s)'
CHOOSEANOTHERFILE: 'Choose another file'
CHOOSEANOTHERINFO: 'Replace this file with another one from the file store'
DELETE: 'Delete from files' DELETE: 'Delete from files'
DELETEINFO: 'Permanently delete this file from the file store' DELETEINFO: 'Permanently delete this file from the file store'
DOEDIT: Save DOEDIT: Save
@ -565,12 +594,15 @@ az:
FROMFILES: 'From files' FROMFILES: 'From files'
HOTLINKINFO: 'Info: This image will be hotlinked. Please ensure you have permissions from the original site creator to do so.' HOTLINKINFO: 'Info: This image will be hotlinked. Please ensure you have permissions from the original site creator to do so.'
MAXNUMBEROFFILES: 'Max number of {count} file(s) exceeded.' MAXNUMBEROFFILES: 'Max number of {count} file(s) exceeded.'
MAXNUMBEROFFILESONE: 'Can only upload one file'
MAXNUMBEROFFILESSHORT: 'Can only upload {count} files' MAXNUMBEROFFILESSHORT: 'Can only upload {count} files'
OVERWRITEWARNING: 'File with the same name already exists'
REMOVE: Remove REMOVE: Remove
REMOVEERROR: 'Error removing file' REMOVEERROR: 'Error removing file'
REMOVEINFO: 'Remove this file from here, but do not delete it from the file store' REMOVEINFO: 'Remove this file from here, but do not delete it from the file store'
STARTALL: 'Start all' STARTALL: 'Start all'
STARTALLINFO: 'Start all uploads' STARTALLINFO: 'Start all uploads'
Saved: Saved Saved: Saved
UPLOADSINTO: 'saves into /{path}'
Versioned: Versioned:
has_many_Versions: Versiyalar has_many_Versions: Versiyalar

View File

@ -2,9 +2,10 @@ bg:
AssetAdmin: AssetAdmin:
ALLOWEDEXTS: 'Allowed extensions' ALLOWEDEXTS: 'Allowed extensions'
NEWFOLDER: НоваПапка NEWFOLDER: НоваПапка
SHOWALLOWEDEXTS: 'Show allowed extensions'
AssetTableField: AssetTableField:
CREATED: Създаден CREATED: Създаден
DIM: Размери DIM: 'Размери'
FILENAME: 'Име на файл' FILENAME: 'Име на файл'
FOLDER: Папка FOLDER: Папка
LASTEDIT: 'Последна промяна' LASTEDIT: 'Последна промяна'
@ -59,9 +60,9 @@ bg:
ERRORNOTADMIN: 'Този потребител не е администратор.' ERRORNOTADMIN: 'Този потребител не е администратор.'
ERRORNOTREC: 'Това потребителско име / парола не е разпознато' ERRORNOTREC: 'Това потребителско име / парола не е разпознато'
Boolean: Boolean:
0: 'False'
ANY: Any ANY: Any
1: 'True' NOANSWER: 'False'
YESANSWER: 'True'
CMSLoadingScreen.ss: CMSLoadingScreen.ss:
LOADING: 'Зареждане ...' LOADING: 'Зареждане ...'
REQUIREJS: 'The CMS requires that you have JavaScript enabled.' REQUIREJS: 'The CMS requires that you have JavaScript enabled.'
@ -70,6 +71,8 @@ bg:
ACCESSALLINTERFACES: 'Достъп до всички секции на CMS' ACCESSALLINTERFACES: 'Достъп до всички секции на CMS'
ACCESSALLINTERFACESHELP: 'Overrules more specific access settings.' ACCESSALLINTERFACESHELP: 'Overrules more specific access settings.'
SAVE: Запис SAVE: Запис
CMSPageHistoryController_versions.ss:
PREVIEW: 'Website preview'
CMSProfileController: CMSProfileController:
MENUTITLE: 'Моят профил' MENUTITLE: 'Моят профил'
ChangePasswordEmail.ss: ChangePasswordEmail.ss:
@ -79,8 +82,8 @@ bg:
HELLO: Здравей! HELLO: Здравей!
PASSWORD: Парола PASSWORD: Парола
CheckboxField: CheckboxField:
- 'не е чекнато' NOANSWER: 'False'
- чекнато YESANSWER: 'True'
ComplexTableField: ComplexTableField:
CLOSEPOPUP: 'Затвори прозореца' CLOSEPOPUP: 'Затвори прозореца'
SUCCESSADD2: 'Беше добавен {name}' SUCCESSADD2: 'Беше добавен {name}'
@ -88,8 +91,8 @@ bg:
ComplexTableField.ss: ComplexTableField.ss:
ADDITEM: 'Добави %s' ADDITEM: 'Добави %s'
NOITEMSFOUND: 'No items found' NOITEMSFOUND: 'No items found'
SORTASC: Възходящ SORTASC: 'Възходящ'
SORTDESC: Низходящ SORTDESC: 'Низходящ'
ComplexTableField_popup.ss: ComplexTableField_popup.ss:
NEXT: Следващо NEXT: Следващо
PREVIOUS: Предишно PREVIOUS: Предишно
@ -109,20 +112,21 @@ bg:
PLURALNAME: 'Обекти с данни' PLURALNAME: 'Обекти с данни'
SINGULARNAME: 'Обект с данни' SINGULARNAME: 'Обект с данни'
Date: Date:
DAY: ден DAY: day
DAYS: дни DAYS: days
HOUR: час HOUR: hour
HOURS: часове HOURS: hours
MIN: минута LessThanMinuteAgo: 'less than a minute'
MINS: минути MIN: min
MONTH: месец MINS: mins
MONTHS: месеци MONTH: month
SEC: секунда MONTHS: months
SECS: секунди SEC: sec
SECS: secs
TIMEDIFFAGO: 'преди {difference}' TIMEDIFFAGO: 'преди {difference}'
TIMEDIFFIN: 'за {difference}' TIMEDIFFIN: 'за {difference}'
YEAR: година YEAR: year
YEARS: години YEARS: years
DateField: DateField:
NOTSET: 'Не нагласено' NOTSET: 'Не нагласено'
TODAY: днес TODAY: днес
@ -198,7 +202,8 @@ bg:
TEXT2: 'адрес за рестартирване на парола' TEXT2: 'адрес за рестартирване на парола'
TEXT3: за TEXT3: за
Form: Form:
FIELDISREQUIRED: 'нужно е %s' CSRF_FAILED_MESSAGE: 'There seems to have been a technical problem. Please click the back button, refresh your browser, and try again.'
FIELDISREQUIRED: '{name} is required'
SubmitBtnLabel: Go SubmitBtnLabel: Go
VALIDATIONCREDITNUMBER: 'Please ensure you have entered the {number} credit card number correctly' VALIDATIONCREDITNUMBER: 'Please ensure you have entered the {number} credit card number correctly'
VALIDATIONNOTUNIQUE: 'Въведената стойност не е уникална' VALIDATIONNOTUNIQUE: 'Въведената стойност не е уникална'
@ -208,6 +213,7 @@ bg:
VALIDATOR: Валидатор VALIDATOR: Валидатор
VALIDCURRENCY: 'Моля, въведете коректна валута.' VALIDCURRENCY: 'Моля, въведете коректна валута.'
FormField: FormField:
Example: 'e.g. %s'
NONE: нищо NONE: нищо
GridAction: GridAction:
DELETE_DESCRIPTION: Изтриване DELETE_DESCRIPTION: Изтриване
@ -230,6 +236,7 @@ bg:
ResetFilter: Изчистване ResetFilter: Изчистване
GridFieldAction_Delete: GridFieldAction_Delete:
DeletePermissionsFailure: 'Изтриването не е разрешено' DeletePermissionsFailure: 'Изтриването не е разрешено'
EditPermissionsFailure: 'No permission to unlink record'
GridFieldDetailForm: GridFieldDetailForm:
CancelBtn: Cancel CancelBtn: Cancel
Create: Създай Create: Създай
@ -237,7 +244,9 @@ bg:
DeletePermissionsFailure: 'Изтриването не е разрешено' DeletePermissionsFailure: 'Изтриването не е разрешено'
Deleted: 'Изтрити %s %s' Deleted: 'Изтрити %s %s'
Save: Запис Save: Запис
Saved: 'Съхранени %s %s' Saved: 'Saved {name} {link}'
GridFieldEditButton.ss:
EDIT: Edit
GridFieldItemEditView.ss: null GridFieldItemEditView.ss: null
Group: Group:
AddRole: 'Добавяне на роля към групата' AddRole: 'Добавяне на роля към групата'
@ -253,7 +262,7 @@ bg:
RolesAddEditLink: 'Управление на ролите' RolesAddEditLink: 'Управление на ролите'
SINGULARNAME: Group SINGULARNAME: Group
Sort: Сортиране Sort: Сортиране
has_many_Permissions: Разрешения has_many_Permissions: 'Разрешения'
many_many_Members: Потребители many_many_Members: Потребители
GroupImportForm: GroupImportForm:
Help1: '<p>Внасяне на една или повече групи в <em>CSV формат</em> (comma-separated values). <small><a href="#" class="toggle-advanced">Покажи начин на употреба</a></small></p>' Help1: '<p>Внасяне на една или повече групи в <em>CSV формат</em> (comma-separated values). <small><a href="#" class="toggle-advanced">Покажи начин на употреба</a></small></p>'
@ -267,6 +276,7 @@ bg:
ADDURL: 'Добави URL' ADDURL: 'Добави URL'
ADJUSTDETAILSDIMENSIONS: 'Детайли и размери' ADJUSTDETAILSDIMENSIONS: 'Детайли и размери'
ANCHORVALUE: Котва ANCHORVALUE: Котва
BUTTONADDURL: 'Add url'
BUTTONINSERT: Вмъкни BUTTONINSERT: Вмъкни
BUTTONINSERTLINK: 'Вмъкни препратка' BUTTONINSERTLINK: 'Вмъкни препратка'
BUTTONREMOVELINK: 'Премахни препратка' BUTTONREMOVELINK: 'Премахни препратка'
@ -288,7 +298,7 @@ bg:
IMAGEALT: 'Алтернативен текст (alt)' IMAGEALT: 'Алтернативен текст (alt)'
IMAGEALTTEXT: 'Алтернативен текст (alt) - показва се ако изображението не е заредено' IMAGEALTTEXT: 'Алтернативен текст (alt) - показва се ако изображението не е заредено'
IMAGEALTTEXTDESC: 'Вижда се на екранните четци или ако картинката не може да бъде показана' IMAGEALTTEXTDESC: 'Вижда се на екранните четци или ако картинката не може да бъде показана'
IMAGEDIMENSIONS: Размери IMAGEDIMENSIONS: 'Размери'
IMAGEHEIGHTPX: Височина IMAGEHEIGHTPX: Височина
IMAGETITLE: 'Описание (tooltip) - за допълнителна информация към изображението' IMAGETITLE: 'Описание (tooltip) - за допълнителна информация към изображението'
IMAGETITLETEXT: 'Описание (tooltip)' IMAGETITLETEXT: 'Описание (tooltip)'
@ -331,6 +341,9 @@ bg:
PreviewButton: Преглед PreviewButton: Преглед
REORGANISATIONSUCCESSFUL: 'Реорганизацията на дървото на сайта беше успешна.' REORGANISATIONSUCCESSFUL: 'Реорганизацията на дървото на сайта беше успешна.'
SAVEDUP: Записано SAVEDUP: Записано
ShowAsList: 'show as list'
TooManyPages: 'Too many pages'
ValidationError: 'Validation error'
VersionUnknown: непозната VersionUnknown: непозната
LeftAndMain_Menu.ss: LeftAndMain_Menu.ss:
Hello: Здравей Hello: Здравей
@ -407,6 +420,7 @@ bg:
TWODIGITMONTH: 'Месец с водеща нула (01=Януари, и т.н.)' TWODIGITMONTH: 'Месец с водеща нула (01=Януари, и т.н.)'
TWODIGITSECOND: 'Секунди с водеща нула (00 до 59)' TWODIGITSECOND: 'Секунди с водеща нула (00 до 59)'
TWODIGITYEAR: 'Двуцифрена година' TWODIGITYEAR: 'Двуцифрена година'
Toggle: 'Show formatting help'
MemberImportForm: MemberImportForm:
Help1: '<p>Внасяне на потебители в <em>CSV формат</em> (comma-separated values). <small><a href="#" class="toggle-advanced">Покажи начин на употреба</a></small></p>' Help1: '<p>Внасяне на потебители в <em>CSV формат</em> (comma-separated values). <small><a href="#" class="toggle-advanced">Покажи начин на употреба</a></small></p>'
Help2: '<div class="advanced"> <h4>Advanced usage</h4> <ul> <li>Allowed columns: <em>%s</em></li> <li>Existing users are matched by their unique <em>Code</em> property, and updated with any new values from the imported file.</li> <li>Groups can be assigned by the <em>Groups</em> column. Groups are identified by their <em>Code</em> property, multiple groups can be separated by comma. Existing group memberships are not cleared.</li> </ul></div>' Help2: '<div class="advanced"> <h4>Advanced usage</h4> <ul> <li>Allowed columns: <em>%s</em></li> <li>Existing users are matched by their unique <em>Code</em> property, and updated with any new values from the imported file.</li> <li>Groups can be assigned by the <em>Groups</em> column. Groups are identified by their <em>Code</em> property, multiple groups can be separated by comma. Existing group memberships are not cleared.</li> </ul></div>'
@ -421,7 +435,7 @@ bg:
ModelAdmin: ModelAdmin:
DELETE: Изтрий DELETE: Изтрий
DELETEDRECORDS: 'Бяха изтрити {count} записа.' DELETEDRECORDS: 'Бяха изтрити {count} записа.'
EMPTYBEFOREIMPORT: 'Clear Database before import' EMPTYBEFOREIMPORT: 'Replace data'
IMPORT: 'Внасяне от CSV' IMPORT: 'Внасяне от CSV'
IMPORTEDRECORDS: 'Бяха внесени {count} записа.' IMPORTEDRECORDS: 'Бяха внесени {count} записа.'
NOCSVFILE: 'Преглед на CSV файл за внасяне' NOCSVFILE: 'Преглед на CSV файл за внасяне'
@ -506,16 +520,29 @@ bg:
MENUTITLE: Сигурност MENUTITLE: Сигурност
MemberListCaution: 'Внимание: изтривайки потребители от този списък, ще ги премахне от всички групи и от базата данни.' MemberListCaution: 'Внимание: изтривайки потребители от този списък, ще ги премахне от всички групи и от базата данни.'
NEWGROUP: 'Нова група' NEWGROUP: 'Нова група'
PERMISSIONS: Разрешения PERMISSIONS: 'Разрешения'
ROLES: Роли ROLES: 'Роли'
ROLESDESCRIPTION: 'Ролите са предварително зададени сетове от разрешения и могат да бъдат присвоявани на групи.<br />Ако е нужно, те се наследяват от родителските групи.' ROLESDESCRIPTION: 'Ролите са предварително зададени сетове от разрешения и могат да бъдат присвоявани на групи.<br />Ако е нужно, те се наследяват от родителските групи.'
TABROLES: Роли TABROLES: 'Роли'
Users: Потребители Users: Потребители
SecurityAdmin_MemberImportForm: SecurityAdmin_MemberImportForm:
BtnImport: 'Внасяне от CSV' BtnImport: 'Внасяне от CSV'
FileFieldLabel: 'CSV файл <small>(разширение: *.csv)</small>' FileFieldLabel: 'CSV файл <small>(разширение: *.csv)</small>'
SilverStripeNavigator: SilverStripeNavigator:
Edit: Редакция Auto: Auto
ChangeViewMode: 'Change view mode'
Desktop: Desktop
DualWindowView: 'Dual Window'
Edit: 'Редакция'
EditView: 'Edit mode'
Mobile: Mobile
PreviewState: 'Preview State'
PreviewView: 'Preview mode'
Responsive: Responsive
SplitView: 'Split mode'
Tablet: Tablet
ViewDeviceWidth: 'Select a preview width'
Width: width
SimpleImageField: SimpleImageField:
NOUPLOAD: 'Няма качени изображения' NOUPLOAD: 'Няма качени изображения'
SiteTree: SiteTree:
@ -551,12 +578,14 @@ bg:
ATTACHFILE: 'Прикачване на файл' ATTACHFILE: 'Прикачване на файл'
ATTACHFILES: 'Прикачване на файлове' ATTACHFILES: 'Прикачване на файлове'
AttachFile: 'Прикачване на файл(ове)' AttachFile: 'Прикачване на файл(ове)'
CHOOSEANOTHERFILE: 'Choose another file'
CHOOSEANOTHERINFO: 'Replace this file with another one from the file store'
DELETE: 'Delete from files' DELETE: 'Delete from files'
DELETEINFO: 'Изтрий файла от сървъра' DELETEINFO: 'Изтрий файла от сървъра'
DOEDIT: Запис DOEDIT: Запис
DROPFILE: 'пуснете файл' DROPFILE: 'пуснете файл'
DROPFILES: 'пускане на файлове' DROPFILES: 'пускане на файлове'
Dimensions: Размери Dimensions: 'Размери'
EDIT: Edit EDIT: Edit
EDITINFO: 'Редактирай този файл' EDITINFO: 'Редактирай този файл'
FIELDNOTSET: 'Информация за файла не беше намерена' FIELDNOTSET: 'Информация за файла не беше намерена'
@ -565,12 +594,15 @@ bg:
FROMFILES: 'От файлове' FROMFILES: 'От файлове'
HOTLINKINFO: 'Info: This image will be hotlinked. Please ensure you have permissions from the original site creator to do so.' HOTLINKINFO: 'Info: This image will be hotlinked. Please ensure you have permissions from the original site creator to do so.'
MAXNUMBEROFFILES: 'Максималния брой файлове ({count}) е надхвърлен.' MAXNUMBEROFFILES: 'Максималния брой файлове ({count}) е надхвърлен.'
MAXNUMBEROFFILESONE: 'Can only upload one file'
MAXNUMBEROFFILESSHORT: 'Максималният брой файлове за качване е {count}' MAXNUMBEROFFILESSHORT: 'Максималният брой файлове за качване е {count}'
REMOVE: Премахни OVERWRITEWARNING: 'File with the same name already exists'
REMOVE: 'Премахни'
REMOVEERROR: 'Грешка при премахване на файл' REMOVEERROR: 'Грешка при премахване на файл'
REMOVEINFO: 'Премахни файла без да го изтриваш' REMOVEINFO: 'Премахни файла без да го изтриваш'
STARTALL: 'Старт на всички' STARTALL: 'Старт на всички'
STARTALLINFO: 'Start all uploads' STARTALLINFO: 'Start all uploads'
Saved: Записано Saved: Записано
UPLOADSINTO: 'saves into /{path}'
Versioned: Versioned:
has_many_Versions: Версии has_many_Versions: Версии

View File

@ -2,6 +2,7 @@ bs:
AssetAdmin: AssetAdmin:
ALLOWEDEXTS: 'Allowed extensions' ALLOWEDEXTS: 'Allowed extensions'
NEWFOLDER: NoviDirektorij NEWFOLDER: NoviDirektorij
SHOWALLOWEDEXTS: 'Show allowed extensions'
AssetTableField: AssetTableField:
CREATED: 'Prvo postavljeno' CREATED: 'Prvo postavljeno'
DIM: Dimenzije DIM: Dimenzije
@ -59,9 +60,9 @@ bs:
ERRORNOTADMIN: 'Ovaj korisnik nije administrator.' ERRORNOTADMIN: 'Ovaj korisnik nije administrator.'
ERRORNOTREC: 'Korisničko ime / šifra nije prepoznata' ERRORNOTREC: 'Korisničko ime / šifra nije prepoznata'
Boolean: Boolean:
0: 'False'
ANY: Any ANY: Any
1: 'True' NOANSWER: 'False'
YESANSWER: 'True'
CMSLoadingScreen.ss: CMSLoadingScreen.ss:
LOADING: Loading... LOADING: Loading...
REQUIREJS: 'The CMS requires that you have JavaScript enabled.' REQUIREJS: 'The CMS requires that you have JavaScript enabled.'
@ -70,6 +71,8 @@ bs:
ACCESSALLINTERFACES: 'Access to all CMS sections' ACCESSALLINTERFACES: 'Access to all CMS sections'
ACCESSALLINTERFACESHELP: 'Overrules more specific access settings.' ACCESSALLINTERFACESHELP: 'Overrules more specific access settings.'
SAVE: Snimi SAVE: Snimi
CMSPageHistoryController_versions.ss:
PREVIEW: 'Website preview'
CMSProfileController: CMSProfileController:
MENUTITLE: 'My Profile' MENUTITLE: 'My Profile'
ChangePasswordEmail.ss: ChangePasswordEmail.ss:
@ -79,8 +82,8 @@ bs:
HELLO: Pozdrav HELLO: Pozdrav
PASSWORD: Password PASSWORD: Password
CheckboxField: CheckboxField:
- 'False' NOANSWER: 'False'
- 'True' YESANSWER: 'True'
ComplexTableField: ComplexTableField:
CLOSEPOPUP: 'Close Popup' CLOSEPOPUP: 'Close Popup'
SUCCESSADD2: 'Added {name}' SUCCESSADD2: 'Added {name}'
@ -109,20 +112,21 @@ bs:
PLURALNAME: 'Data Objects' PLURALNAME: 'Data Objects'
SINGULARNAME: 'Data Object' SINGULARNAME: 'Data Object'
Date: Date:
DAY: dan DAY: day
DAYS: dani DAYS: days
HOUR: sat HOUR: hour
HOURS: sati HOURS: hours
MIN: minuta LessThanMinuteAgo: 'less than a minute'
MINS: minute MIN: min
MONTH: mjesec MINS: mins
MONTHS: mjeseci MONTH: month
SEC: sekunda MONTHS: months
SECS: sekundi SEC: sec
SECS: secs
TIMEDIFFAGO: '{difference} ago' TIMEDIFFAGO: '{difference} ago'
TIMEDIFFIN: 'in {difference}' TIMEDIFFIN: 'in {difference}'
YEAR: godina YEAR: year
YEARS: godine YEARS: years
DateField: DateField:
NOTSET: 'nije postavljeno' NOTSET: 'nije postavljeno'
TODAY: danas TODAY: danas
@ -198,7 +202,8 @@ bs:
TEXT2: 'link za ponovno podešavanje šifre' TEXT2: 'link za ponovno podešavanje šifre'
TEXT3: za TEXT3: za
Form: Form:
FIELDISREQUIRED: '%s je obavezno' CSRF_FAILED_MESSAGE: 'There seems to have been a technical problem. Please click the back button, refresh your browser, and try again.'
FIELDISREQUIRED: '{name} is required'
SubmitBtnLabel: Go SubmitBtnLabel: Go
VALIDATIONCREDITNUMBER: 'Please ensure you have entered the {number} credit card number correctly' VALIDATIONCREDITNUMBER: 'Please ensure you have entered the {number} credit card number correctly'
VALIDATIONNOTUNIQUE: 'Unesena vrijednost nije jedinstvena' VALIDATIONNOTUNIQUE: 'Unesena vrijednost nije jedinstvena'
@ -208,6 +213,7 @@ bs:
VALIDATOR: 'Provjera ispravnosti' VALIDATOR: 'Provjera ispravnosti'
VALIDCURRENCY: 'Please enter a valid currency' VALIDCURRENCY: 'Please enter a valid currency'
FormField: FormField:
Example: 'e.g. %s'
NONE: ništa NONE: ništa
GridAction: GridAction:
DELETE_DESCRIPTION: Delete DELETE_DESCRIPTION: Delete
@ -230,6 +236,7 @@ bs:
ResetFilter: Reset ResetFilter: Reset
GridFieldAction_Delete: GridFieldAction_Delete:
DeletePermissionsFailure: 'No delete permissions' DeletePermissionsFailure: 'No delete permissions'
EditPermissionsFailure: 'No permission to unlink record'
GridFieldDetailForm: GridFieldDetailForm:
CancelBtn: Cancel CancelBtn: Cancel
Create: Create Create: Create
@ -237,7 +244,9 @@ bs:
DeletePermissionsFailure: 'No delete permissions' DeletePermissionsFailure: 'No delete permissions'
Deleted: 'Deleted %s %s' Deleted: 'Deleted %s %s'
Save: Save Save: Save
Saved: 'Saved %s %s' Saved: 'Saved {name} {link}'
GridFieldEditButton.ss:
EDIT: Edit
GridFieldItemEditView.ss: null GridFieldItemEditView.ss: null
Group: Group:
AddRole: 'Add a role for this group' AddRole: 'Add a role for this group'
@ -267,6 +276,7 @@ bs:
ADDURL: 'Add URL' ADDURL: 'Add URL'
ADJUSTDETAILSDIMENSIONS: 'Details &amp; dimensions' ADJUSTDETAILSDIMENSIONS: 'Details &amp; dimensions'
ANCHORVALUE: Sidro ANCHORVALUE: Sidro
BUTTONADDURL: 'Add url'
BUTTONINSERT: Insert BUTTONINSERT: Insert
BUTTONINSERTLINK: 'Ubaci link' BUTTONINSERTLINK: 'Ubaci link'
BUTTONREMOVELINK: 'Ukloni link' BUTTONREMOVELINK: 'Ukloni link'
@ -293,7 +303,7 @@ bs:
IMAGETITLE: 'Title text (tooltip) - for additional information about the image' IMAGETITLE: 'Title text (tooltip) - for additional information about the image'
IMAGETITLETEXT: 'Title text (tooltip)' IMAGETITLETEXT: 'Title text (tooltip)'
IMAGETITLETEXTDESC: 'For additional information about the image' IMAGETITLETEXTDESC: 'For additional information about the image'
IMAGEWIDTHPX: Širina IMAGEWIDTHPX: 'Širina'
INSERTMEDIA: 'Insert Media' INSERTMEDIA: 'Insert Media'
LINK: Link LINK: Link
LINKANCHOR: 'Sidro na ovoj stranici' LINKANCHOR: 'Sidro na ovoj stranici'
@ -331,7 +341,10 @@ bs:
PreviewButton: Preview PreviewButton: Preview
REORGANISATIONSUCCESSFUL: 'Reorganised the site tree successfully.' REORGANISATIONSUCCESSFUL: 'Reorganised the site tree successfully.'
SAVEDUP: Saved. SAVEDUP: Saved.
VersionUnknown: unknown ShowAsList: 'show as list'
TooManyPages: 'Too many pages'
ValidationError: 'Validation error'
VersionUnknown: Unknown
LeftAndMain_Menu.ss: LeftAndMain_Menu.ss:
Hello: Hi Hello: Hi
LOGOUT: 'Log out' LOGOUT: 'Log out'
@ -365,7 +378,7 @@ bs:
INVALIDNEWPASSWORD: 'We couldn''t accept that password: {password}' INVALIDNEWPASSWORD: 'We couldn''t accept that password: {password}'
LOGGEDINAS: 'You''re logged in as {name}.' LOGGEDINAS: 'You''re logged in as {name}.'
NEWPASSWORD: 'Nova šifra' NEWPASSWORD: 'Nova šifra'
PASSWORD: Šifra PASSWORD: 'Šifra'
PLURALNAME: Members PLURALNAME: Members
REMEMBERME: 'Zapamti me slijedeći put' REMEMBERME: 'Zapamti me slijedeći put'
SINGULARNAME: Member SINGULARNAME: Member
@ -407,6 +420,7 @@ bs:
TWODIGITMONTH: 'Two-digit month (01=January, etc.)' TWODIGITMONTH: 'Two-digit month (01=January, etc.)'
TWODIGITSECOND: 'Two digits of second (00 through 59)' TWODIGITSECOND: 'Two digits of second (00 through 59)'
TWODIGITYEAR: 'Two-digit year' TWODIGITYEAR: 'Two-digit year'
Toggle: 'Show formatting help'
MemberImportForm: MemberImportForm:
Help1: '<p>Import users in <em>CSV format</em> (comma-separated values). <small><a href="#" class="toggle-advanced">Show advanced usage</a></small></p>' Help1: '<p>Import users in <em>CSV format</em> (comma-separated values). <small><a href="#" class="toggle-advanced">Show advanced usage</a></small></p>'
Help2: '<div class="advanced"> <h4>Advanced usage</h4> <ul> <li>Allowed columns: <em>%s</em></li> <li>Existing users are matched by their unique <em>Code</em> property, and updated with any new values from the imported file.</li> <li>Groups can be assigned by the <em>Groups</em> column. Groups are identified by their <em>Code</em> property, multiple groups can be separated by comma. Existing group memberships are not cleared.</li> </ul></div>' Help2: '<div class="advanced"> <h4>Advanced usage</h4> <ul> <li>Allowed columns: <em>%s</em></li> <li>Existing users are matched by their unique <em>Code</em> property, and updated with any new values from the imported file.</li> <li>Groups can be assigned by the <em>Groups</em> column. Groups are identified by their <em>Code</em> property, multiple groups can be separated by comma. Existing group memberships are not cleared.</li> </ul></div>'
@ -421,7 +435,7 @@ bs:
ModelAdmin: ModelAdmin:
DELETE: Delete DELETE: Delete
DELETEDRECORDS: 'Deleted {count} records.' DELETEDRECORDS: 'Deleted {count} records.'
EMPTYBEFOREIMPORT: 'Clear Database before import' EMPTYBEFOREIMPORT: 'Replace data'
IMPORT: 'Import from CSV' IMPORT: 'Import from CSV'
IMPORTEDRECORDS: 'Imported {count} records.' IMPORTEDRECORDS: 'Imported {count} records.'
NOCSVFILE: 'Please browse for a CSV file to import' NOCSVFILE: 'Please browse for a CSV file to import'
@ -515,7 +529,20 @@ bs:
BtnImport: 'Import from CSV' BtnImport: 'Import from CSV'
FileFieldLabel: 'CSV File <small>(Allowed extensions: *.csv)</small>' FileFieldLabel: 'CSV File <small>(Allowed extensions: *.csv)</small>'
SilverStripeNavigator: SilverStripeNavigator:
Auto: Auto
ChangeViewMode: 'Change view mode'
Desktop: Desktop
DualWindowView: 'Dual Window'
Edit: Edit Edit: Edit
EditView: 'Edit mode'
Mobile: Mobile
PreviewState: 'Preview State'
PreviewView: 'Preview mode'
Responsive: Responsive
SplitView: 'Split mode'
Tablet: Tablet
ViewDeviceWidth: 'Select a preview width'
Width: width
SimpleImageField: SimpleImageField:
NOUPLOAD: 'Nijedna slika nije postavljena' NOUPLOAD: 'Nijedna slika nije postavljena'
SiteTree: SiteTree:
@ -527,7 +554,7 @@ bs:
ADDITEM: 'Add %s' ADDITEM: 'Add %s'
TableListField: TableListField:
CSVEXPORT: 'Izvezi u CSV' CSVEXPORT: 'Izvezi u CSV'
PRINT: Štampaj PRINT: 'Štampaj'
Print: Print Print: Print
SELECT: 'Select:' SELECT: 'Select:'
TableListField.ss: TableListField.ss:
@ -551,6 +578,8 @@ bs:
ATTACHFILE: 'Attach a file' ATTACHFILE: 'Attach a file'
ATTACHFILES: 'Attach files' ATTACHFILES: 'Attach files'
AttachFile: 'Attach file(s)' AttachFile: 'Attach file(s)'
CHOOSEANOTHERFILE: 'Choose another file'
CHOOSEANOTHERINFO: 'Replace this file with another one from the file store'
DELETE: 'Delete from files' DELETE: 'Delete from files'
DELETEINFO: 'Permanently delete this file from the file store' DELETEINFO: 'Permanently delete this file from the file store'
DOEDIT: Save DOEDIT: Save
@ -565,12 +594,15 @@ bs:
FROMFILES: 'From files' FROMFILES: 'From files'
HOTLINKINFO: 'Info: This image will be hotlinked. Please ensure you have permissions from the original site creator to do so.' HOTLINKINFO: 'Info: This image will be hotlinked. Please ensure you have permissions from the original site creator to do so.'
MAXNUMBEROFFILES: 'Max number of {count} file(s) exceeded.' MAXNUMBEROFFILES: 'Max number of {count} file(s) exceeded.'
MAXNUMBEROFFILESONE: 'Can only upload one file'
MAXNUMBEROFFILESSHORT: 'Can only upload {count} files' MAXNUMBEROFFILESSHORT: 'Can only upload {count} files'
OVERWRITEWARNING: 'File with the same name already exists'
REMOVE: Remove REMOVE: Remove
REMOVEERROR: 'Error removing file' REMOVEERROR: 'Error removing file'
REMOVEINFO: 'Remove this file from here, but do not delete it from the file store' REMOVEINFO: 'Remove this file from here, but do not delete it from the file store'
STARTALL: 'Start all' STARTALL: 'Start all'
STARTALLINFO: 'Start all uploads' STARTALLINFO: 'Start all uploads'
Saved: Saved Saved: Saved
UPLOADSINTO: 'saves into /{path}'
Versioned: Versioned:
has_many_Versions: Versions has_many_Versions: Versions

View File

@ -2,6 +2,7 @@ ca:
AssetAdmin: AssetAdmin:
ALLOWEDEXTS: 'Allowed extensions' ALLOWEDEXTS: 'Allowed extensions'
NEWFOLDER: NovaCarpeta NEWFOLDER: NovaCarpeta
SHOWALLOWEDEXTS: 'Show allowed extensions'
AssetTableField: AssetTableField:
CREATED: 'Carregat per primer cop' CREATED: 'Carregat per primer cop'
DIM: Dimensions DIM: Dimensions
@ -59,9 +60,9 @@ ca:
ERRORNOTADMIN: 'Aquest usuari no és un administrador.' ERRORNOTADMIN: 'Aquest usuari no és un administrador.'
ERRORNOTREC: 'Aquest nom d''usuari / contrasenya no es reconeix' ERRORNOTREC: 'Aquest nom d''usuari / contrasenya no es reconeix'
Boolean: Boolean:
0: 'False'
ANY: Any ANY: Any
1: 'True' NOANSWER: 'False'
YESANSWER: 'True'
CMSLoadingScreen.ss: CMSLoadingScreen.ss:
LOADING: Loading... LOADING: Loading...
REQUIREJS: 'The CMS requires that you have JavaScript enabled.' REQUIREJS: 'The CMS requires that you have JavaScript enabled.'
@ -70,6 +71,8 @@ ca:
ACCESSALLINTERFACES: 'Access to all CMS sections' ACCESSALLINTERFACES: 'Access to all CMS sections'
ACCESSALLINTERFACESHELP: 'Overrules more specific access settings.' ACCESSALLINTERFACESHELP: 'Overrules more specific access settings.'
SAVE: Desa SAVE: Desa
CMSPageHistoryController_versions.ss:
PREVIEW: 'Website preview'
CMSProfileController: CMSProfileController:
MENUTITLE: 'My Profile' MENUTITLE: 'My Profile'
ChangePasswordEmail.ss: ChangePasswordEmail.ss:
@ -79,8 +82,8 @@ ca:
HELLO: Hola HELLO: Hola
PASSWORD: Contrasenya PASSWORD: Contrasenya
CheckboxField: CheckboxField:
- 'False' NOANSWER: 'False'
- 'True' YESANSWER: 'True'
ComplexTableField: ComplexTableField:
CLOSEPOPUP: 'Tanca la finestra' CLOSEPOPUP: 'Tanca la finestra'
SUCCESSADD2: 'Added {name}' SUCCESSADD2: 'Added {name}'
@ -109,20 +112,21 @@ ca:
PLURALNAME: 'Objectes de dades' PLURALNAME: 'Objectes de dades'
SINGULARNAME: 'Objecte de dades' SINGULARNAME: 'Objecte de dades'
Date: Date:
DAY: dia DAY: day
DAYS: dies DAYS: days
HOUR: hora HOUR: hour
HOURS: hores HOURS: hours
MIN: minut LessThanMinuteAgo: 'less than a minute'
MINS: minuts MIN: min
MONTH: mes MINS: mins
MONTHS: mesos MONTH: month
SEC: segon MONTHS: months
SECS: segons SEC: sec
SECS: secs
TIMEDIFFAGO: '{difference} ago' TIMEDIFFAGO: '{difference} ago'
TIMEDIFFIN: 'in {difference}' TIMEDIFFIN: 'in {difference}'
YEAR: any YEAR: year
YEARS: anys YEARS: years
DateField: DateField:
NOTSET: 'no definit' NOTSET: 'no definit'
TODAY: avui TODAY: avui
@ -198,7 +202,8 @@ ca:
TEXT2: 'enllaç de reinici de la contrasenya' TEXT2: 'enllaç de reinici de la contrasenya'
TEXT3: per TEXT3: per
Form: Form:
FIELDISREQUIRED: 'Es requereix %s' CSRF_FAILED_MESSAGE: 'There seems to have been a technical problem. Please click the back button, refresh your browser, and try again.'
FIELDISREQUIRED: '{name} is required'
SubmitBtnLabel: Go SubmitBtnLabel: Go
VALIDATIONCREDITNUMBER: 'Please ensure you have entered the {number} credit card number correctly' VALIDATIONCREDITNUMBER: 'Please ensure you have entered the {number} credit card number correctly'
VALIDATIONNOTUNIQUE: 'El valor que heu introduït no és únic' VALIDATIONNOTUNIQUE: 'El valor que heu introduït no és únic'
@ -208,6 +213,7 @@ ca:
VALIDATOR: Validador VALIDATOR: Validador
VALIDCURRENCY: 'Please enter a valid currency' VALIDCURRENCY: 'Please enter a valid currency'
FormField: FormField:
Example: 'e.g. %s'
NONE: cap NONE: cap
GridAction: GridAction:
DELETE_DESCRIPTION: Delete DELETE_DESCRIPTION: Delete
@ -230,6 +236,7 @@ ca:
ResetFilter: Reset ResetFilter: Reset
GridFieldAction_Delete: GridFieldAction_Delete:
DeletePermissionsFailure: 'No delete permissions' DeletePermissionsFailure: 'No delete permissions'
EditPermissionsFailure: 'No permission to unlink record'
GridFieldDetailForm: GridFieldDetailForm:
CancelBtn: Cancel CancelBtn: Cancel
Create: Create Create: Create
@ -237,7 +244,9 @@ ca:
DeletePermissionsFailure: 'No delete permissions' DeletePermissionsFailure: 'No delete permissions'
Deleted: 'Deleted %s %s' Deleted: 'Deleted %s %s'
Save: Save Save: Save
Saved: 'Saved %s %s' Saved: 'Saved {name} {link}'
GridFieldEditButton.ss:
EDIT: Edit
GridFieldItemEditView.ss: null GridFieldItemEditView.ss: null
Group: Group:
AddRole: 'Add a role for this group' AddRole: 'Add a role for this group'
@ -267,6 +276,7 @@ ca:
ADDURL: 'Add URL' ADDURL: 'Add URL'
ADJUSTDETAILSDIMENSIONS: 'Details &amp; dimensions' ADJUSTDETAILSDIMENSIONS: 'Details &amp; dimensions'
ANCHORVALUE: Ancla ANCHORVALUE: Ancla
BUTTONADDURL: 'Add url'
BUTTONINSERT: Insert BUTTONINSERT: Insert
BUTTONINSERTLINK: 'Insereix un enllaç' BUTTONINSERTLINK: 'Insereix un enllaç'
BUTTONREMOVELINK: 'Suprimeix un enllaç' BUTTONREMOVELINK: 'Suprimeix un enllaç'
@ -304,7 +314,7 @@ ca:
LINKINTERNAL: 'Pàgina del lloc web' LINKINTERNAL: 'Pàgina del lloc web'
LINKOPENNEWWIN: 'Obrir l''enllaç a una nova finestra?' LINKOPENNEWWIN: 'Obrir l''enllaç a una nova finestra?'
LINKTO: 'Enllaça a' LINKTO: 'Enllaça a'
PAGE: Pàgina PAGE: 'Pàgina'
URL: URL URL: URL
URLNOTANOEMBEDRESOURCE: 'The URL ''{url}'' could not be turned into a media resource.' URLNOTANOEMBEDRESOURCE: 'The URL ''{url}'' could not be turned into a media resource.'
UpdateMEDIA: 'Update Media' UpdateMEDIA: 'Update Media'
@ -331,7 +341,10 @@ ca:
PreviewButton: Preview PreviewButton: Preview
REORGANISATIONSUCCESSFUL: 'Reorganised the site tree successfully.' REORGANISATIONSUCCESSFUL: 'Reorganised the site tree successfully.'
SAVEDUP: Saved. SAVEDUP: Saved.
VersionUnknown: unknown ShowAsList: 'show as list'
TooManyPages: 'Too many pages'
ValidationError: 'Validation error'
VersionUnknown: Unknown
LeftAndMain_Menu.ss: LeftAndMain_Menu.ss:
Hello: Hi Hello: Hi
LOGOUT: 'Log out' LOGOUT: 'Log out'
@ -407,6 +420,7 @@ ca:
TWODIGITMONTH: 'Two-digit month (01=January, etc.)' TWODIGITMONTH: 'Two-digit month (01=January, etc.)'
TWODIGITSECOND: 'Two digits of second (00 through 59)' TWODIGITSECOND: 'Two digits of second (00 through 59)'
TWODIGITYEAR: 'Two-digit year' TWODIGITYEAR: 'Two-digit year'
Toggle: 'Show formatting help'
MemberImportForm: MemberImportForm:
Help1: '<p>Import users in <em>CSV format</em> (comma-separated values). <small><a href="#" class="toggle-advanced">Show advanced usage</a></small></p>' Help1: '<p>Import users in <em>CSV format</em> (comma-separated values). <small><a href="#" class="toggle-advanced">Show advanced usage</a></small></p>'
Help2: '<div class="advanced"> <h4>Advanced usage</h4> <ul> <li>Allowed columns: <em>%s</em></li> <li>Existing users are matched by their unique <em>Code</em> property, and updated with any new values from the imported file.</li> <li>Groups can be assigned by the <em>Groups</em> column. Groups are identified by their <em>Code</em> property, multiple groups can be separated by comma. Existing group memberships are not cleared.</li> </ul></div>' Help2: '<div class="advanced"> <h4>Advanced usage</h4> <ul> <li>Allowed columns: <em>%s</em></li> <li>Existing users are matched by their unique <em>Code</em> property, and updated with any new values from the imported file.</li> <li>Groups can be assigned by the <em>Groups</em> column. Groups are identified by their <em>Code</em> property, multiple groups can be separated by comma. Existing group memberships are not cleared.</li> </ul></div>'
@ -421,7 +435,7 @@ ca:
ModelAdmin: ModelAdmin:
DELETE: Suprimeix DELETE: Suprimeix
DELETEDRECORDS: 'Deleted {count} records.' DELETEDRECORDS: 'Deleted {count} records.'
EMPTYBEFOREIMPORT: 'Clear Database before import' EMPTYBEFOREIMPORT: 'Replace data'
IMPORT: 'Importa de CSV' IMPORT: 'Importa de CSV'
IMPORTEDRECORDS: 'Imported {count} records.' IMPORTEDRECORDS: 'Imported {count} records.'
NOCSVFILE: 'Si us plau, cerqueu el fitxer CSV per a importar' NOCSVFILE: 'Si us plau, cerqueu el fitxer CSV per a importar'
@ -515,7 +529,20 @@ ca:
BtnImport: 'Import from CSV' BtnImport: 'Import from CSV'
FileFieldLabel: 'CSV File <small>(Allowed extensions: *.csv)</small>' FileFieldLabel: 'CSV File <small>(Allowed extensions: *.csv)</small>'
SilverStripeNavigator: SilverStripeNavigator:
Auto: Auto
ChangeViewMode: 'Change view mode'
Desktop: Desktop
DualWindowView: 'Dual Window'
Edit: Edit Edit: Edit
EditView: 'Edit mode'
Mobile: Mobile
PreviewState: 'Preview State'
PreviewView: 'Preview mode'
Responsive: Responsive
SplitView: 'Split mode'
Tablet: Tablet
ViewDeviceWidth: 'Select a preview width'
Width: width
SimpleImageField: SimpleImageField:
NOUPLOAD: 'No heu carregat cap imatge' NOUPLOAD: 'No heu carregat cap imatge'
SiteTree: SiteTree:
@ -551,6 +578,8 @@ ca:
ATTACHFILE: 'Attach a file' ATTACHFILE: 'Attach a file'
ATTACHFILES: 'Attach files' ATTACHFILES: 'Attach files'
AttachFile: 'Attach file(s)' AttachFile: 'Attach file(s)'
CHOOSEANOTHERFILE: 'Choose another file'
CHOOSEANOTHERINFO: 'Replace this file with another one from the file store'
DELETE: 'Delete from files' DELETE: 'Delete from files'
DELETEINFO: 'Permanently delete this file from the file store' DELETEINFO: 'Permanently delete this file from the file store'
DOEDIT: Save DOEDIT: Save
@ -565,12 +594,15 @@ ca:
FROMFILES: 'From files' FROMFILES: 'From files'
HOTLINKINFO: 'Info: This image will be hotlinked. Please ensure you have permissions from the original site creator to do so.' HOTLINKINFO: 'Info: This image will be hotlinked. Please ensure you have permissions from the original site creator to do so.'
MAXNUMBEROFFILES: 'Max number of {count} file(s) exceeded.' MAXNUMBEROFFILES: 'Max number of {count} file(s) exceeded.'
MAXNUMBEROFFILESONE: 'Can only upload one file'
MAXNUMBEROFFILESSHORT: 'Can only upload {count} files' MAXNUMBEROFFILESSHORT: 'Can only upload {count} files'
OVERWRITEWARNING: 'File with the same name already exists'
REMOVE: Remove REMOVE: Remove
REMOVEERROR: 'Error removing file' REMOVEERROR: 'Error removing file'
REMOVEINFO: 'Remove this file from here, but do not delete it from the file store' REMOVEINFO: 'Remove this file from here, but do not delete it from the file store'
STARTALL: 'Start all' STARTALL: 'Start all'
STARTALLINFO: 'Start all uploads' STARTALLINFO: 'Start all uploads'
Saved: Saved Saved: Saved
UPLOADSINTO: 'saves into /{path}'
Versioned: Versioned:
has_many_Versions: Versions has_many_Versions: Versions

View File

@ -2,6 +2,7 @@ cs:
AssetAdmin: AssetAdmin:
ALLOWEDEXTS: 'Povolené extenze' ALLOWEDEXTS: 'Povolené extenze'
NEWFOLDER: 'Nová složka' NEWFOLDER: 'Nová složka'
SHOWALLOWEDEXTS: 'Show allowed extensions'
AssetTableField: AssetTableField:
CREATED: 'Poprvé nahráno' CREATED: 'Poprvé nahráno'
DIM: Rozměry DIM: Rozměry
@ -59,9 +60,9 @@ cs:
ERRORNOTADMIN: 'Tento uživatel není administrátor.' ERRORNOTADMIN: 'Tento uživatel není administrátor.'
ERRORNOTREC: 'Toto uživatelské jméno / heslo nebylo rozpoznáno' ERRORNOTREC: 'Toto uživatelské jméno / heslo nebylo rozpoznáno'
Boolean: Boolean:
0: Ne
ANY: Jakkýkoliv ANY: Jakkýkoliv
1: Ano NOANSWER: 'False'
YESANSWER: 'True'
CMSLoadingScreen.ss: CMSLoadingScreen.ss:
LOADING: Nahrávání... LOADING: Nahrávání...
REQUIREJS: 'CMS vyžaduje, aby jste měli JavaScript zapnut.' REQUIREJS: 'CMS vyžaduje, aby jste měli JavaScript zapnut.'
@ -70,6 +71,8 @@ cs:
ACCESSALLINTERFACES: 'Přístup ke všem sekcím CMS' ACCESSALLINTERFACES: 'Přístup ke všem sekcím CMS'
ACCESSALLINTERFACESHELP: 'Prepíše více specifické nastavení přístupu.' ACCESSALLINTERFACESHELP: 'Prepíše více specifické nastavení přístupu.'
SAVE: Uložit SAVE: Uložit
CMSPageHistoryController_versions.ss:
PREVIEW: 'Website preview'
CMSProfileController: CMSProfileController:
MENUTITLE: 'Můj profil' MENUTITLE: 'Můj profil'
ChangePasswordEmail.ss: ChangePasswordEmail.ss:
@ -79,8 +82,8 @@ cs:
HELLO: 'Dobrý den' HELLO: 'Dobrý den'
PASSWORD: Heslo PASSWORD: Heslo
CheckboxField: CheckboxField:
- Ne NOANSWER: 'False'
- Ano YESANSWER: 'True'
ComplexTableField: ComplexTableField:
CLOSEPOPUP: Zavřít CLOSEPOPUP: Zavřít
SUCCESSADD2: 'Přidáno {name}' SUCCESSADD2: 'Přidáno {name}'
@ -109,20 +112,21 @@ cs:
PLURALNAME: 'Datové objekty' PLURALNAME: 'Datové objekty'
SINGULARNAME: 'Datový objekt' SINGULARNAME: 'Datový objekt'
Date: Date:
DAY: den DAY: day
DAYS: dny DAYS: days
HOUR: hodina HOUR: hour
HOURS: hodiny HOURS: hours
MIN: minuta LessThanMinuteAgo: 'less than a minute'
MINS: minuty MIN: min
MONTH: měsíc MINS: mins
MONTHS: měsíce MONTH: month
SEC: sekunda MONTHS: months
SECS: sekundy SEC: sec
SECS: secs
TIMEDIFFAGO: 'před {difference}' TIMEDIFFAGO: 'před {difference}'
TIMEDIFFIN: 'v {difference}' TIMEDIFFIN: 'v {difference}'
YEAR: rok YEAR: year
YEARS: roky YEARS: years
DateField: DateField:
NOTSET: nenastaveno NOTSET: nenastaveno
TODAY: dnes TODAY: dnes
@ -198,7 +202,8 @@ cs:
TEXT2: 'odkaz na reset hesla' TEXT2: 'odkaz na reset hesla'
TEXT3: pro TEXT3: pro
Form: Form:
FIELDISREQUIRED: '%s je požadováno.' CSRF_FAILED_MESSAGE: 'There seems to have been a technical problem. Please click the back button, refresh your browser, and try again.'
FIELDISREQUIRED: '{name} is required'
SubmitBtnLabel: Jdi SubmitBtnLabel: Jdi
VALIDATIONCREDITNUMBER: 'Prosím ujistěte se, že jste zadal/a {number} číslo kreditní karty správně' VALIDATIONCREDITNUMBER: 'Prosím ujistěte se, že jste zadal/a {number} číslo kreditní karty správně'
VALIDATIONNOTUNIQUE: 'Zadaná hodnota není unikátní' VALIDATIONNOTUNIQUE: 'Zadaná hodnota není unikátní'
@ -208,6 +213,7 @@ cs:
VALIDATOR: Validátor VALIDATOR: Validátor
VALIDCURRENCY: 'Prosím zadejte platnou měnu' VALIDCURRENCY: 'Prosím zadejte platnou měnu'
FormField: FormField:
Example: 'e.g. %s'
NONE: žádný NONE: žádný
GridAction: GridAction:
DELETE_DESCRIPTION: Smazat DELETE_DESCRIPTION: Smazat
@ -230,6 +236,7 @@ cs:
ResetFilter: Resetovat ResetFilter: Resetovat
GridFieldAction_Delete: GridFieldAction_Delete:
DeletePermissionsFailure: 'Žádná oprávnění mazat' DeletePermissionsFailure: 'Žádná oprávnění mazat'
EditPermissionsFailure: 'No permission to unlink record'
GridFieldDetailForm: GridFieldDetailForm:
CancelBtn: Storno CancelBtn: Storno
Create: Vytvořit Create: Vytvořit
@ -237,7 +244,9 @@ cs:
DeletePermissionsFailure: 'Žádná oprávnění mazat' DeletePermissionsFailure: 'Žádná oprávnění mazat'
Deleted: 'Smazáno %s %s' Deleted: 'Smazáno %s %s'
Save: Uložit Save: Uložit
Saved: 'Uloženo %s %s' Saved: 'Saved {name} {link}'
GridFieldEditButton.ss:
EDIT: Edit
GridFieldItemEditView.ss: null GridFieldItemEditView.ss: null
Group: Group:
AddRole: 'Přidat roli pro tuto skupinu' AddRole: 'Přidat roli pro tuto skupinu'
@ -267,6 +276,7 @@ cs:
ADDURL: 'Přidat URL' ADDURL: 'Přidat URL'
ADJUSTDETAILSDIMENSIONS: 'Detaily &amp; rozměry' ADJUSTDETAILSDIMENSIONS: 'Detaily &amp; rozměry'
ANCHORVALUE: 'Záložka (kotva)' ANCHORVALUE: 'Záložka (kotva)'
BUTTONADDURL: 'Add url'
BUTTONINSERT: Vložit BUTTONINSERT: Vložit
BUTTONINSERTLINK: 'Vložit odkaz' BUTTONINSERTLINK: 'Vložit odkaz'
BUTTONREMOVELINK: 'Odstranit odkaz' BUTTONREMOVELINK: 'Odstranit odkaz'
@ -293,7 +303,7 @@ cs:
IMAGETITLE: 'Titul text (tooltip) - další informace o obrázku' IMAGETITLE: 'Titul text (tooltip) - další informace o obrázku'
IMAGETITLETEXT: 'Titulek textu (tooltip)' IMAGETITLETEXT: 'Titulek textu (tooltip)'
IMAGETITLETEXTDESC: 'Pro další informace o obrázku' IMAGETITLETEXTDESC: 'Pro další informace o obrázku'
IMAGEWIDTHPX: Šířka IMAGEWIDTHPX: 'Šířka'
INSERTMEDIA: 'Vložit média' INSERTMEDIA: 'Vložit média'
LINK: 'Vložit nebo upravit odkaz' LINK: 'Vložit nebo upravit odkaz'
LINKANCHOR: 'Záložka (kotva) na stránce' LINKANCHOR: 'Záložka (kotva) na stránce'
@ -331,7 +341,10 @@ cs:
PreviewButton: Náhled PreviewButton: Náhled
REORGANISATIONSUCCESSFUL: 'Strom webu reorganizován úspěšně.' REORGANISATIONSUCCESSFUL: 'Strom webu reorganizován úspěšně.'
SAVEDUP: Uloženo. SAVEDUP: Uloženo.
VersionUnknown: neznáme ShowAsList: 'show as list'
TooManyPages: 'Too many pages'
ValidationError: 'Validation error'
VersionUnknown: Unknown
LeftAndMain_Menu.ss: LeftAndMain_Menu.ss:
Hello: Ahoj Hello: Ahoj
LOGOUT: 'Odhlásit se' LOGOUT: 'Odhlásit se'
@ -407,6 +420,7 @@ cs:
TWODIGITMONTH: 'Dvojčíslí měsíce (01=Leden, atď.)' TWODIGITMONTH: 'Dvojčíslí měsíce (01=Leden, atď.)'
TWODIGITSECOND: 'Dvojčíslí vteřiny (00 až 59)' TWODIGITSECOND: 'Dvojčíslí vteřiny (00 až 59)'
TWODIGITYEAR: 'Dvojčíslí roku' TWODIGITYEAR: 'Dvojčíslí roku'
Toggle: 'Show formatting help'
MemberImportForm: MemberImportForm:
Help1: '<p>Import členů v <em>CSV formátu</em> (čárkou-oddělené hodnoty). <small><a href="#" class="toggle-advanced">Zobrazit rozšířené použití</a></small></p>' Help1: '<p>Import členů v <em>CSV formátu</em> (čárkou-oddělené hodnoty). <small><a href="#" class="toggle-advanced">Zobrazit rozšířené použití</a></small></p>'
Help2: "<div class=\"advanced\">\\n<h4>Pokročilé použití</h4>\\n<ul>\\n<li>Povolené sloupce: <em>%s</em></li>\\n<li>Existující uživatelé jsou porovnáni jejich unikátní vlastností <em>Code</em>, a aktualizováni s novými hodnotami z importovaného souboru.</li>\\n<li>Skupiny mohou být přiřazeny sloupcem <em>Groups</em>. Skupiny jsou identifikovány svojí vlastností <em>Code</em>, více skupin může být odděleno čárkou. Existující členství ve skupině nejsou smazána.</li>\\n</ul>\\n</div>" Help2: "<div class=\"advanced\">\\n<h4>Pokročilé použití</h4>\\n<ul>\\n<li>Povolené sloupce: <em>%s</em></li>\\n<li>Existující uživatelé jsou porovnáni jejich unikátní vlastností <em>Code</em>, a aktualizováni s novými hodnotami z importovaného souboru.</li>\\n<li>Skupiny mohou být přiřazeny sloupcem <em>Groups</em>. Skupiny jsou identifikovány svojí vlastností <em>Code</em>, více skupin může být odděleno čárkou. Existující členství ve skupině nejsou smazána.</li>\\n</ul>\\n</div>"
@ -421,7 +435,7 @@ cs:
ModelAdmin: ModelAdmin:
DELETE: Smazat DELETE: Smazat
DELETEDRECORDS: 'Smazáno {count} záznamů.' DELETEDRECORDS: 'Smazáno {count} záznamů.'
EMPTYBEFOREIMPORT: 'Vyčistit databázi před importováním' EMPTYBEFOREIMPORT: 'Replace data'
IMPORT: 'Importovat ze souboru CSV' IMPORT: 'Importovat ze souboru CSV'
IMPORTEDRECORDS: 'Importováno {count} záznamů.' IMPORTEDRECORDS: 'Importováno {count} záznamů.'
NOCSVFILE: 'Prosím, vyhledejte soubor CSV pro import' NOCSVFILE: 'Prosím, vyhledejte soubor CSV pro import'
@ -515,7 +529,20 @@ cs:
BtnImport: Import BtnImport: Import
FileFieldLabel: 'Soubor CSV <small>(Povoleny přípony: *.csv)</small>' FileFieldLabel: 'Soubor CSV <small>(Povoleny přípony: *.csv)</small>'
SilverStripeNavigator: SilverStripeNavigator:
Auto: Auto
ChangeViewMode: 'Change view mode'
Desktop: Desktop
DualWindowView: 'Dual Window'
Edit: Editovat Edit: Editovat
EditView: 'Edit mode'
Mobile: Mobile
PreviewState: 'Preview State'
PreviewView: 'Preview mode'
Responsive: Responsive
SplitView: 'Split mode'
Tablet: Tablet
ViewDeviceWidth: 'Select a preview width'
Width: width
SimpleImageField: SimpleImageField:
NOUPLOAD: 'Nebyl nahrán žádný obrázek' NOUPLOAD: 'Nebyl nahrán žádný obrázek'
SiteTree: SiteTree:
@ -551,6 +578,8 @@ cs:
ATTACHFILE: 'Připojit soubor' ATTACHFILE: 'Připojit soubor'
ATTACHFILES: 'Připojit soubory' ATTACHFILES: 'Připojit soubory'
AttachFile: 'Připojit soubor(y)' AttachFile: 'Připojit soubor(y)'
CHOOSEANOTHERFILE: 'Choose another file'
CHOOSEANOTHERINFO: 'Replace this file with another one from the file store'
DELETE: 'Smazat ze souborů' DELETE: 'Smazat ze souborů'
DELETEINFO: 'Trvale odstranit tento soubor z úložiště souborů' DELETEINFO: 'Trvale odstranit tento soubor z úložiště souborů'
DOEDIT: Uložit DOEDIT: Uložit
@ -565,12 +594,15 @@ cs:
FROMFILES: 'Ze souborů' FROMFILES: 'Ze souborů'
HOTLINKINFO: 'Info: Tento obrázek bude "hotlinkován". Ujistěte se prosím, že máte oprávnění od původního tvůrce webu, aby se tak stalo.' HOTLINKINFO: 'Info: Tento obrázek bude "hotlinkován". Ujistěte se prosím, že máte oprávnění od původního tvůrce webu, aby se tak stalo.'
MAXNUMBEROFFILES: 'Maximální počet {count} soubor(ů) překročen.' MAXNUMBEROFFILES: 'Maximální počet {count} soubor(ů) překročen.'
MAXNUMBEROFFILESONE: 'Can only upload one file'
MAXNUMBEROFFILESSHORT: 'Můžete nahrát pouze {count} souborů' MAXNUMBEROFFILESSHORT: 'Můžete nahrát pouze {count} souborů'
OVERWRITEWARNING: 'File with the same name already exists'
REMOVE: Odstranit REMOVE: Odstranit
REMOVEERROR: 'Chyba odstranění souboru' REMOVEERROR: 'Chyba odstranění souboru'
REMOVEINFO: 'Odtranit tento soubor odsud, ale nesmazat ho z úložiště souborů' REMOVEINFO: 'Odtranit tento soubor odsud, ale nesmazat ho z úložiště souborů'
STARTALL: 'Začni vše' STARTALL: 'Začni vše'
STARTALLINFO: 'Začni vše nahrávat' STARTALLINFO: 'Začni vše nahrávat'
Saved: Uloženo Saved: Uloženo
UPLOADSINTO: 'saves into /{path}'
Versioned: Versioned:
has_many_Versions: Verze has_many_Versions: Verze

View File

@ -2,6 +2,7 @@ da:
AssetAdmin: AssetAdmin:
ALLOWEDEXTS: 'Allowed extensions' ALLOWEDEXTS: 'Allowed extensions'
NEWFOLDER: 'Ny mappe' NEWFOLDER: 'Ny mappe'
SHOWALLOWEDEXTS: 'Show allowed extensions'
AssetTableField: AssetTableField:
CREATED: 'Først uploadet' CREATED: 'Først uploadet'
DIM: Dimensioner DIM: Dimensioner
@ -59,9 +60,9 @@ da:
ERRORNOTADMIN: 'That user is not an administrator.' ERRORNOTADMIN: 'That user is not an administrator.'
ERRORNOTREC: 'That username / password isn''t recognised' ERRORNOTREC: 'That username / password isn''t recognised'
Boolean: Boolean:
0: 'False'
ANY: Any ANY: Any
1: 'True' NOANSWER: 'False'
YESANSWER: 'True'
CMSLoadingScreen.ss: CMSLoadingScreen.ss:
LOADING: Loading... LOADING: Loading...
REQUIREJS: 'The CMS requires that you have JavaScript enabled.' REQUIREJS: 'The CMS requires that you have JavaScript enabled.'
@ -70,6 +71,8 @@ da:
ACCESSALLINTERFACES: 'Adgang til alle CMS grænseflader' ACCESSALLINTERFACES: 'Adgang til alle CMS grænseflader'
ACCESSALLINTERFACESHELP: 'Overrules more specific access settings.' ACCESSALLINTERFACESHELP: 'Overrules more specific access settings.'
SAVE: Gem SAVE: Gem
CMSPageHistoryController_versions.ss:
PREVIEW: 'Website preview'
CMSProfileController: CMSProfileController:
MENUTITLE: 'My Profile' MENUTITLE: 'My Profile'
ChangePasswordEmail.ss: ChangePasswordEmail.ss:
@ -79,8 +82,8 @@ da:
HELLO: Hi HELLO: Hi
PASSWORD: Password PASSWORD: Password
CheckboxField: CheckboxField:
- 'False' NOANSWER: 'False'
- 'True' YESANSWER: 'True'
ComplexTableField: ComplexTableField:
CLOSEPOPUP: 'Luk popup' CLOSEPOPUP: 'Luk popup'
SUCCESSADD2: 'Added {name}' SUCCESSADD2: 'Added {name}'
@ -109,20 +112,21 @@ da:
PLURALNAME: 'Data Objects' PLURALNAME: 'Data Objects'
SINGULARNAME: 'Data Object' SINGULARNAME: 'Data Object'
Date: Date:
DAY: ' day' DAY: day
DAYS: ' days' DAYS: days
HOUR: ' hour' HOUR: hour
HOURS: ' hours' HOURS: hours
MIN: ' min' LessThanMinuteAgo: 'less than a minute'
MINS: ' mins' MIN: min
MONTH: ' month' MINS: mins
MONTHS: ' months' MONTH: month
SEC: ' sec' MONTHS: months
SECS: ' secs' SEC: sec
SECS: secs
TIMEDIFFAGO: '{difference} ago' TIMEDIFFAGO: '{difference} ago'
TIMEDIFFIN: 'in {difference}' TIMEDIFFIN: 'in {difference}'
YEAR: ' year' YEAR: year
YEARS: ' years' YEARS: years
DateField: DateField:
NOTSET: 'not set' NOTSET: 'not set'
TODAY: today TODAY: today
@ -198,7 +202,8 @@ da:
TEXT2: 'password reset link' TEXT2: 'password reset link'
TEXT3: for TEXT3: for
Form: Form:
FIELDISREQUIRED: '%s is required' CSRF_FAILED_MESSAGE: 'There seems to have been a technical problem. Please click the back button, refresh your browser, and try again.'
FIELDISREQUIRED: '{name} is required'
SubmitBtnLabel: Go SubmitBtnLabel: Go
VALIDATIONCREDITNUMBER: 'Please ensure you have entered the {number} credit card number correctly' VALIDATIONCREDITNUMBER: 'Please ensure you have entered the {number} credit card number correctly'
VALIDATIONNOTUNIQUE: 'The value entered is not unique' VALIDATIONNOTUNIQUE: 'The value entered is not unique'
@ -208,6 +213,7 @@ da:
VALIDATOR: Validator VALIDATOR: Validator
VALIDCURRENCY: 'Please enter a valid currency' VALIDCURRENCY: 'Please enter a valid currency'
FormField: FormField:
Example: 'e.g. %s'
NONE: none NONE: none
GridAction: GridAction:
DELETE_DESCRIPTION: Delete DELETE_DESCRIPTION: Delete
@ -230,6 +236,7 @@ da:
ResetFilter: Reset ResetFilter: Reset
GridFieldAction_Delete: GridFieldAction_Delete:
DeletePermissionsFailure: 'No delete permissions' DeletePermissionsFailure: 'No delete permissions'
EditPermissionsFailure: 'No permission to unlink record'
GridFieldDetailForm: GridFieldDetailForm:
CancelBtn: Cancel CancelBtn: Cancel
Create: Create Create: Create
@ -237,7 +244,9 @@ da:
DeletePermissionsFailure: 'No delete permissions' DeletePermissionsFailure: 'No delete permissions'
Deleted: 'Deleted %s %s' Deleted: 'Deleted %s %s'
Save: Save Save: Save
Saved: 'Saved %s %s' Saved: 'Saved {name} {link}'
GridFieldEditButton.ss:
EDIT: Edit
GridFieldItemEditView.ss: null GridFieldItemEditView.ss: null
Group: Group:
AddRole: 'Add a role for this group' AddRole: 'Add a role for this group'
@ -267,6 +276,7 @@ da:
ADDURL: 'Add URL' ADDURL: 'Add URL'
ADJUSTDETAILSDIMENSIONS: 'Details &amp; dimensions' ADJUSTDETAILSDIMENSIONS: 'Details &amp; dimensions'
ANCHORVALUE: Anchor ANCHORVALUE: Anchor
BUTTONADDURL: 'Add url'
BUTTONINSERT: Insert BUTTONINSERT: Insert
BUTTONINSERTLINK: 'Insert link' BUTTONINSERTLINK: 'Insert link'
BUTTONREMOVELINK: 'Remove link' BUTTONREMOVELINK: 'Remove link'
@ -331,7 +341,10 @@ da:
PreviewButton: Preview PreviewButton: Preview
REORGANISATIONSUCCESSFUL: 'Reorganised the site tree successfully.' REORGANISATIONSUCCESSFUL: 'Reorganised the site tree successfully.'
SAVEDUP: Saved. SAVEDUP: Saved.
VersionUnknown: unknown ShowAsList: 'show as list'
TooManyPages: 'Too many pages'
ValidationError: 'Validation error'
VersionUnknown: Unknown
LeftAndMain_Menu.ss: LeftAndMain_Menu.ss:
Hello: Hi Hello: Hi
LOGOUT: 'Log out' LOGOUT: 'Log out'
@ -407,6 +420,7 @@ da:
TWODIGITMONTH: 'Two-digit month (01=January, etc.)' TWODIGITMONTH: 'Two-digit month (01=January, etc.)'
TWODIGITSECOND: 'Two digits of second (00 through 59)' TWODIGITSECOND: 'Two digits of second (00 through 59)'
TWODIGITYEAR: 'Two-digit year' TWODIGITYEAR: 'Two-digit year'
Toggle: 'Show formatting help'
MemberImportForm: MemberImportForm:
Help1: '<p>Import users in <em>CSV format</em> (comma-separated values). <small><a href="#" class="toggle-advanced">Show advanced usage</a></small></p>' Help1: '<p>Import users in <em>CSV format</em> (comma-separated values). <small><a href="#" class="toggle-advanced">Show advanced usage</a></small></p>'
Help2: '<div class="advanced"> <h4>Advanced usage</h4> <ul> <li>Allowed columns: <em>%s</em></li> <li>Existing users are matched by their unique <em>Code</em> property, and updated with any new values from the imported file.</li> <li>Groups can be assigned by the <em>Groups</em> column. Groups are identified by their <em>Code</em> property, multiple groups can be separated by comma. Existing group memberships are not cleared.</li> </ul></div>' Help2: '<div class="advanced"> <h4>Advanced usage</h4> <ul> <li>Allowed columns: <em>%s</em></li> <li>Existing users are matched by their unique <em>Code</em> property, and updated with any new values from the imported file.</li> <li>Groups can be assigned by the <em>Groups</em> column. Groups are identified by their <em>Code</em> property, multiple groups can be separated by comma. Existing group memberships are not cleared.</li> </ul></div>'
@ -421,7 +435,7 @@ da:
ModelAdmin: ModelAdmin:
DELETE: Slet DELETE: Slet
DELETEDRECORDS: 'Deleted {count} records.' DELETEDRECORDS: 'Deleted {count} records.'
EMPTYBEFOREIMPORT: 'Clear Database before import' EMPTYBEFOREIMPORT: 'Replace data'
IMPORT: 'Importer fra CSV' IMPORT: 'Importer fra CSV'
IMPORTEDRECORDS: 'Imported {count} records.' IMPORTEDRECORDS: 'Imported {count} records.'
NOCSVFILE: 'Tryk p&aring; Gennemse for at v&aelig;lge en CSVfil til importering' NOCSVFILE: 'Tryk p&aring; Gennemse for at v&aelig;lge en CSVfil til importering'
@ -515,7 +529,20 @@ da:
BtnImport: 'Import from CSV' BtnImport: 'Import from CSV'
FileFieldLabel: 'CSV File <small>(Allowed extensions: *.csv)</small>' FileFieldLabel: 'CSV File <small>(Allowed extensions: *.csv)</small>'
SilverStripeNavigator: SilverStripeNavigator:
Auto: Auto
ChangeViewMode: 'Change view mode'
Desktop: Desktop
DualWindowView: 'Dual Window'
Edit: Edit Edit: Edit
EditView: 'Edit mode'
Mobile: Mobile
PreviewState: 'Preview State'
PreviewView: 'Preview mode'
Responsive: Responsive
SplitView: 'Split mode'
Tablet: Tablet
ViewDeviceWidth: 'Select a preview width'
Width: width
SimpleImageField: SimpleImageField:
NOUPLOAD: 'No Image Uploaded' NOUPLOAD: 'No Image Uploaded'
SiteTree: SiteTree:
@ -551,6 +578,8 @@ da:
ATTACHFILE: 'Attach a file' ATTACHFILE: 'Attach a file'
ATTACHFILES: 'Attach files' ATTACHFILES: 'Attach files'
AttachFile: 'Attach file(s)' AttachFile: 'Attach file(s)'
CHOOSEANOTHERFILE: 'Choose another file'
CHOOSEANOTHERINFO: 'Replace this file with another one from the file store'
DELETE: 'Delete from files' DELETE: 'Delete from files'
DELETEINFO: 'Permanently delete this file from the file store' DELETEINFO: 'Permanently delete this file from the file store'
DOEDIT: Save DOEDIT: Save
@ -565,12 +594,15 @@ da:
FROMFILES: 'From files' FROMFILES: 'From files'
HOTLINKINFO: 'Info: This image will be hotlinked. Please ensure you have permissions from the original site creator to do so.' HOTLINKINFO: 'Info: This image will be hotlinked. Please ensure you have permissions from the original site creator to do so.'
MAXNUMBEROFFILES: 'Max number of {count} file(s) exceeded.' MAXNUMBEROFFILES: 'Max number of {count} file(s) exceeded.'
MAXNUMBEROFFILESONE: 'Can only upload one file'
MAXNUMBEROFFILESSHORT: 'Can only upload {count} files' MAXNUMBEROFFILESSHORT: 'Can only upload {count} files'
OVERWRITEWARNING: 'File with the same name already exists'
REMOVE: Remove REMOVE: Remove
REMOVEERROR: 'Error removing file' REMOVEERROR: 'Error removing file'
REMOVEINFO: 'Remove this file from here, but do not delete it from the file store' REMOVEINFO: 'Remove this file from here, but do not delete it from the file store'
STARTALL: 'Start all' STARTALL: 'Start all'
STARTALLINFO: 'Start all uploads' STARTALLINFO: 'Start all uploads'
Saved: Saved Saved: Saved
UPLOADSINTO: 'saves into /{path}'
Versioned: Versioned:
has_many_Versions: Versions has_many_Versions: Versions

View File

@ -2,6 +2,7 @@ de:
AssetAdmin: AssetAdmin:
ALLOWEDEXTS: 'Allowed extensions' ALLOWEDEXTS: 'Allowed extensions'
NEWFOLDER: 'Neuer Ordner' NEWFOLDER: 'Neuer Ordner'
SHOWALLOWEDEXTS: 'Show allowed extensions'
AssetTableField: AssetTableField:
CREATED: 'Erstmalig hochgeladen' CREATED: 'Erstmalig hochgeladen'
DIM: Dimensionen DIM: Dimensionen
@ -59,9 +60,9 @@ de:
ERRORNOTADMIN: 'Dieser Nutzer ist kein Administrator' ERRORNOTADMIN: 'Dieser Nutzer ist kein Administrator'
ERRORNOTREC: 'Dieser/s Nutzername/Passwort wurde nicht erkannt' ERRORNOTREC: 'Dieser/s Nutzername/Passwort wurde nicht erkannt'
Boolean: Boolean:
0: Nein
ANY: alle ANY: alle
1: Ja NOANSWER: 'False'
YESANSWER: 'True'
CMSLoadingScreen.ss: CMSLoadingScreen.ss:
LOADING: 'Lade Daten ...' LOADING: 'Lade Daten ...'
REQUIREJS: 'Für die Benutzung des CMS wird JavaScript benötigt.' REQUIREJS: 'Für die Benutzung des CMS wird JavaScript benötigt.'
@ -70,6 +71,8 @@ de:
ACCESSALLINTERFACES: 'Zugriff auf alle Bereiche des CMS' ACCESSALLINTERFACES: 'Zugriff auf alle Bereiche des CMS'
ACCESSALLINTERFACESHELP: 'Hebt alle bereichspezifischen Berechtigungen auf.' ACCESSALLINTERFACESHELP: 'Hebt alle bereichspezifischen Berechtigungen auf.'
SAVE: Speichern SAVE: Speichern
CMSPageHistoryController_versions.ss:
PREVIEW: 'Website preview'
CMSProfileController: CMSProfileController:
MENUTITLE: 'Mein Profil' MENUTITLE: 'Mein Profil'
ChangePasswordEmail.ss: ChangePasswordEmail.ss:
@ -79,8 +82,8 @@ de:
HELLO: Hi HELLO: Hi
PASSWORD: Passwort PASSWORD: Passwort
CheckboxField: CheckboxField:
- Nein NOANSWER: 'False'
- Ja YESANSWER: 'True'
ComplexTableField: ComplexTableField:
CLOSEPOPUP: 'Popup schließen' CLOSEPOPUP: 'Popup schließen'
SUCCESSADD2: '{name} hinzugefügt' SUCCESSADD2: '{name} hinzugefügt'
@ -109,20 +112,21 @@ de:
PLURALNAME: DataObjects PLURALNAME: DataObjects
SINGULARNAME: DataObject SINGULARNAME: DataObject
Date: Date:
DAY: Tag DAY: day
DAYS: Tage DAYS: days
HOUR: Stunde HOUR: hour
HOURS: Stunden HOURS: hours
MIN: Minuten LessThanMinuteAgo: 'less than a minute'
MINS: Minuten MIN: min
MONTH: Monat MINS: mins
MONTHS: Monat MONTH: month
SEC: Sekunden MONTHS: months
SECS: Sekunden SEC: sec
SECS: secs
TIMEDIFFAGO: 'vor {difference}' TIMEDIFFAGO: 'vor {difference}'
TIMEDIFFIN: 'in {difference}' TIMEDIFFIN: 'in {difference}'
YEAR: Jahr YEAR: year
YEARS: Jahre YEARS: years
DateField: DateField:
NOTSET: 'nicht gesetzt' NOTSET: 'nicht gesetzt'
TODAY: heute TODAY: heute
@ -198,7 +202,8 @@ de:
TEXT2: 'Link zum Zurücksetzen des Passworts' TEXT2: 'Link zum Zurücksetzen des Passworts'
TEXT3: für TEXT3: für
Form: Form:
FIELDISREQUIRED: '%s wird benötigt' CSRF_FAILED_MESSAGE: 'There seems to have been a technical problem. Please click the back button, refresh your browser, and try again.'
FIELDISREQUIRED: '{name} is required'
SubmitBtnLabel: Los SubmitBtnLabel: Los
VALIDATIONCREDITNUMBER: 'Bitte stellen Sie sicher, dass Sie die Kreditkartennummer ({number}) korrekt eingegeben haben' VALIDATIONCREDITNUMBER: 'Bitte stellen Sie sicher, dass Sie die Kreditkartennummer ({number}) korrekt eingegeben haben'
VALIDATIONNOTUNIQUE: 'Der eingegebene Wert ist nicht einzigartig' VALIDATIONNOTUNIQUE: 'Der eingegebene Wert ist nicht einzigartig'
@ -208,6 +213,7 @@ de:
VALIDATOR: Prüfer VALIDATOR: Prüfer
VALIDCURRENCY: 'Bitte geben Sie einen korrekten Betrag ein' VALIDCURRENCY: 'Bitte geben Sie einen korrekten Betrag ein'
FormField: FormField:
Example: 'e.g. %s'
NONE: keine NONE: keine
GridAction: GridAction:
DELETE_DESCRIPTION: Löschen DELETE_DESCRIPTION: Löschen
@ -230,6 +236,7 @@ de:
ResetFilter: Zurücksetzen ResetFilter: Zurücksetzen
GridFieldAction_Delete: GridFieldAction_Delete:
DeletePermissionsFailure: 'Keine Berechtigung zum Löschen' DeletePermissionsFailure: 'Keine Berechtigung zum Löschen'
EditPermissionsFailure: 'No permission to unlink record'
GridFieldDetailForm: GridFieldDetailForm:
CancelBtn: Abbrechen CancelBtn: Abbrechen
Create: Erstellen Create: Erstellen
@ -237,7 +244,9 @@ de:
DeletePermissionsFailure: 'Keine Berechtigungen zum löschen' DeletePermissionsFailure: 'Keine Berechtigungen zum löschen'
Deleted: 'Gelöscht %s %s' Deleted: 'Gelöscht %s %s'
Save: Speichern Save: Speichern
Saved: 'Gespeichert %s %s' Saved: 'Saved {name} {link}'
GridFieldEditButton.ss:
EDIT: Edit
GridFieldItemEditView.ss: null GridFieldItemEditView.ss: null
Group: Group:
AddRole: 'Rolle für die Gruppe hinzufügen' AddRole: 'Rolle für die Gruppe hinzufügen'
@ -267,6 +276,7 @@ de:
ADDURL: 'URL hinzufügen' ADDURL: 'URL hinzufügen'
ADJUSTDETAILSDIMENSIONS: 'Details &amp; Dimensionen' ADJUSTDETAILSDIMENSIONS: 'Details &amp; Dimensionen'
ANCHORVALUE: Anker ANCHORVALUE: Anker
BUTTONADDURL: 'Add url'
BUTTONINSERT: Einfügen BUTTONINSERT: Einfügen
BUTTONINSERTLINK: 'Verweis einfügen' BUTTONINSERTLINK: 'Verweis einfügen'
BUTTONREMOVELINK: 'Verweise entfernen' BUTTONREMOVELINK: 'Verweise entfernen'
@ -331,7 +341,10 @@ de:
PreviewButton: Vorschau PreviewButton: Vorschau
REORGANISATIONSUCCESSFUL: 'Der Seitenbaum wurde erfolgreich sortiert.' REORGANISATIONSUCCESSFUL: 'Der Seitenbaum wurde erfolgreich sortiert.'
SAVEDUP: Gespeichert. SAVEDUP: Gespeichert.
VersionUnknown: Unbekannt ShowAsList: 'show as list'
TooManyPages: 'Too many pages'
ValidationError: 'Validation error'
VersionUnknown: unbekannt
LeftAndMain_Menu.ss: LeftAndMain_Menu.ss:
Hello: Hi Hello: Hi
LOGOUT: Ausloggen LOGOUT: Ausloggen
@ -407,6 +420,7 @@ de:
TWODIGITMONTH: 'Monat mit führender Null (z.B. 01 = Januar, usw.)' TWODIGITMONTH: 'Monat mit führender Null (z.B. 01 = Januar, usw.)'
TWODIGITSECOND: Sekunde TWODIGITSECOND: Sekunde
TWODIGITYEAR: 'Zweistellige Jahreszahl' TWODIGITYEAR: 'Zweistellige Jahreszahl'
Toggle: 'Show formatting help'
MemberImportForm: MemberImportForm:
Help1: '<p>Mitglieder im <em>CSV</em>-Format (kommaseparierte Werte) importieren. <small><a href="#" class="toggle-advanced">Erweiterte Nutzung</a></small></p>' Help1: '<p>Mitglieder im <em>CSV</em>-Format (kommaseparierte Werte) importieren. <small><a href="#" class="toggle-advanced">Erweiterte Nutzung</a></small></p>'
Help2: "<div class=\"advanced\">\\n<h4>Erweiterte Benutzung</h4>\\n<ul>\\n<li>Gültige Spalten: <em>%s</em></li>\\n<li>Bereits existierende Benutzer werden anhand ihres eindeutigen <em>Code</em> identifiziert und um neue Einträge aus der Importdatei erweitert.</li>\\n<li>Gruppen können in der Spalte <em>Gruppen</em> hinzugefügt werden. Gruppen werden anhand ihres <em>Code</em> erkannt. Mehrere Gruppen werden Komma-separiert eingetragen. Schon zugewiesene Gruppen werden nicht entfernt.</li>\\n</ul>\\n</div>" Help2: "<div class=\"advanced\">\\n<h4>Erweiterte Benutzung</h4>\\n<ul>\\n<li>Gültige Spalten: <em>%s</em></li>\\n<li>Bereits existierende Benutzer werden anhand ihres eindeutigen <em>Code</em> identifiziert und um neue Einträge aus der Importdatei erweitert.</li>\\n<li>Gruppen können in der Spalte <em>Gruppen</em> hinzugefügt werden. Gruppen werden anhand ihres <em>Code</em> erkannt. Mehrere Gruppen werden Komma-separiert eingetragen. Schon zugewiesene Gruppen werden nicht entfernt.</li>\\n</ul>\\n</div>"
@ -421,7 +435,7 @@ de:
ModelAdmin: ModelAdmin:
DELETE: Löschen DELETE: Löschen
DELETEDRECORDS: '{count} Datensätze wurden gelöscht.' DELETEDRECORDS: '{count} Datensätze wurden gelöscht.'
EMPTYBEFOREIMPORT: 'Datenbank vor Import leeren' EMPTYBEFOREIMPORT: 'Replace data'
IMPORT: 'CSV Import' IMPORT: 'CSV Import'
IMPORTEDRECORDS: '{count} Datensätze wurden importiert.' IMPORTEDRECORDS: '{count} Datensätze wurden importiert.'
NOCSVFILE: 'Wählen Sie eine CSV-Datei zum Importieren' NOCSVFILE: 'Wählen Sie eine CSV-Datei zum Importieren'
@ -515,7 +529,20 @@ de:
BtnImport: Import BtnImport: Import
FileFieldLabel: 'CSV Datei <small>(Erlaubte Dateierweiterung: *.csv)</small>' FileFieldLabel: 'CSV Datei <small>(Erlaubte Dateierweiterung: *.csv)</small>'
SilverStripeNavigator: SilverStripeNavigator:
Auto: Auto
ChangeViewMode: 'Change view mode'
Desktop: Desktop
DualWindowView: 'Dual Window'
Edit: Bearbeiten Edit: Bearbeiten
EditView: 'Edit mode'
Mobile: Mobile
PreviewState: 'Preview State'
PreviewView: 'Preview mode'
Responsive: Responsive
SplitView: 'Split mode'
Tablet: Tablet
ViewDeviceWidth: 'Select a preview width'
Width: width
SimpleImageField: SimpleImageField:
NOUPLOAD: 'Es wurde kein Bild hochgeladen' NOUPLOAD: 'Es wurde kein Bild hochgeladen'
SiteTree: SiteTree:
@ -551,6 +578,8 @@ de:
ATTACHFILE: 'Datei anhängen' ATTACHFILE: 'Datei anhängen'
ATTACHFILES: 'Dateien anhängen' ATTACHFILES: 'Dateien anhängen'
AttachFile: 'Dateien anhängen' AttachFile: 'Dateien anhängen'
CHOOSEANOTHERFILE: 'Choose another file'
CHOOSEANOTHERINFO: 'Replace this file with another one from the file store'
DELETE: 'Aus Dateien löschen' DELETE: 'Aus Dateien löschen'
DELETEINFO: 'Löscht die Datei dauerhaft aus dem Dateisystem' DELETEINFO: 'Löscht die Datei dauerhaft aus dem Dateisystem'
DOEDIT: Speichern DOEDIT: Speichern
@ -565,12 +594,15 @@ de:
FROMFILES: 'Von "Dateien"' FROMFILES: 'Von "Dateien"'
HOTLINKINFO: 'Info: Dieses Bild wird verknüpft. Bitte vergewissere dich die Erlaubnis des Inhabers der Ursprungsseite zu haben.' HOTLINKINFO: 'Info: Dieses Bild wird verknüpft. Bitte vergewissere dich die Erlaubnis des Inhabers der Ursprungsseite zu haben.'
MAXNUMBEROFFILES: 'Maximale Anzahl an {count} Datei(en) überschritten' MAXNUMBEROFFILES: 'Maximale Anzahl an {count} Datei(en) überschritten'
MAXNUMBEROFFILESONE: 'Can only upload one file'
MAXNUMBEROFFILESSHORT: 'SIe können maximal {count} Datei(en) hochladen' MAXNUMBEROFFILESSHORT: 'SIe können maximal {count} Datei(en) hochladen'
OVERWRITEWARNING: 'File with the same name already exists'
REMOVE: Entfernen REMOVE: Entfernen
REMOVEERROR: 'Fehler beim Entfernen der Datei' REMOVEERROR: 'Fehler beim Entfernen der Datei'
REMOVEINFO: 'Entfernt die Datei von hier, löscht Sie aber nicht aus dem Dateisystem.' REMOVEINFO: 'Entfernt die Datei von hier, löscht Sie aber nicht aus dem Dateisystem.'
STARTALL: 'Alle starten' STARTALL: 'Alle starten'
STARTALLINFO: 'Alle Uploads starten' STARTALLINFO: 'Alle Uploads starten'
Saved: Gespeichert Saved: Gespeichert
UPLOADSINTO: 'saves into /{path}'
Versioned: Versioned:
has_many_Versions: Versionen has_many_Versions: Versionen

View File

@ -2,6 +2,7 @@ el:
AssetAdmin: AssetAdmin:
ALLOWEDEXTS: 'Allowed extensions' ALLOWEDEXTS: 'Allowed extensions'
NEWFOLDER: NewFolder NEWFOLDER: NewFolder
SHOWALLOWEDEXTS: 'Show allowed extensions'
AssetTableField: AssetTableField:
CREATED: 'First uploaded' CREATED: 'First uploaded'
DIM: Dimensions DIM: Dimensions
@ -59,9 +60,9 @@ el:
ERRORNOTADMIN: 'That user is not an administrator.' ERRORNOTADMIN: 'That user is not an administrator.'
ERRORNOTREC: 'That username / password isn''t recognised' ERRORNOTREC: 'That username / password isn''t recognised'
Boolean: Boolean:
0: 'False'
ANY: Any ANY: Any
1: 'True' NOANSWER: 'False'
YESANSWER: 'True'
CMSLoadingScreen.ss: CMSLoadingScreen.ss:
LOADING: Loading... LOADING: Loading...
REQUIREJS: 'The CMS requires that you have JavaScript enabled.' REQUIREJS: 'The CMS requires that you have JavaScript enabled.'
@ -69,7 +70,9 @@ el:
ACCESS: 'Access to ''{title}'' section' ACCESS: 'Access to ''{title}'' section'
ACCESSALLINTERFACES: 'Access to all CMS sections' ACCESSALLINTERFACES: 'Access to all CMS sections'
ACCESSALLINTERFACESHELP: 'Overrules more specific access settings.' ACCESSALLINTERFACESHELP: 'Overrules more specific access settings.'
SAVE: Αποθήκευση SAVE: 'Αποθήκευση'
CMSPageHistoryController_versions.ss:
PREVIEW: 'Website preview'
CMSProfileController: CMSProfileController:
MENUTITLE: 'My Profile' MENUTITLE: 'My Profile'
ChangePasswordEmail.ss: ChangePasswordEmail.ss:
@ -79,8 +82,8 @@ el:
HELLO: Hi HELLO: Hi
PASSWORD: Password PASSWORD: Password
CheckboxField: CheckboxField:
- 'False' NOANSWER: 'False'
- 'True' YESANSWER: 'True'
ComplexTableField: ComplexTableField:
CLOSEPOPUP: 'Close Popup' CLOSEPOPUP: 'Close Popup'
SUCCESSADD2: 'Added {name}' SUCCESSADD2: 'Added {name}'
@ -109,20 +112,21 @@ el:
PLURALNAME: 'Data Objects' PLURALNAME: 'Data Objects'
SINGULARNAME: 'Data Object' SINGULARNAME: 'Data Object'
Date: Date:
DAY: ' day' DAY: day
DAYS: ' days' DAYS: days
HOUR: ' hour' HOUR: hour
HOURS: ' hours' HOURS: hours
MIN: ' min' LessThanMinuteAgo: 'less than a minute'
MINS: ' mins' MIN: min
MONTH: ' month' MINS: mins
MONTHS: ' months' MONTH: month
SEC: ' sec' MONTHS: months
SECS: ' secs' SEC: sec
SECS: secs
TIMEDIFFAGO: '{difference} ago' TIMEDIFFAGO: '{difference} ago'
TIMEDIFFIN: 'in {difference}' TIMEDIFFIN: 'in {difference}'
YEAR: ' year' YEAR: year
YEARS: ' years' YEARS: years
DateField: DateField:
NOTSET: 'not set' NOTSET: 'not set'
TODAY: today TODAY: today
@ -198,7 +202,8 @@ el:
TEXT2: 'password reset link' TEXT2: 'password reset link'
TEXT3: for TEXT3: for
Form: Form:
FIELDISREQUIRED: '%s is required' CSRF_FAILED_MESSAGE: 'There seems to have been a technical problem. Please click the back button, refresh your browser, and try again.'
FIELDISREQUIRED: '{name} is required'
SubmitBtnLabel: Go SubmitBtnLabel: Go
VALIDATIONCREDITNUMBER: 'Please ensure you have entered the {number} credit card number correctly' VALIDATIONCREDITNUMBER: 'Please ensure you have entered the {number} credit card number correctly'
VALIDATIONNOTUNIQUE: 'The value entered is not unique' VALIDATIONNOTUNIQUE: 'The value entered is not unique'
@ -208,6 +213,7 @@ el:
VALIDATOR: Validator VALIDATOR: Validator
VALIDCURRENCY: 'Please enter a valid currency' VALIDCURRENCY: 'Please enter a valid currency'
FormField: FormField:
Example: 'e.g. %s'
NONE: none NONE: none
GridAction: GridAction:
DELETE_DESCRIPTION: Delete DELETE_DESCRIPTION: Delete
@ -230,6 +236,7 @@ el:
ResetFilter: Reset ResetFilter: Reset
GridFieldAction_Delete: GridFieldAction_Delete:
DeletePermissionsFailure: 'No delete permissions' DeletePermissionsFailure: 'No delete permissions'
EditPermissionsFailure: 'No permission to unlink record'
GridFieldDetailForm: GridFieldDetailForm:
CancelBtn: Cancel CancelBtn: Cancel
Create: Create Create: Create
@ -237,7 +244,9 @@ el:
DeletePermissionsFailure: 'No delete permissions' DeletePermissionsFailure: 'No delete permissions'
Deleted: 'Deleted %s %s' Deleted: 'Deleted %s %s'
Save: Save Save: Save
Saved: 'Saved %s %s' Saved: 'Saved {name} {link}'
GridFieldEditButton.ss:
EDIT: Edit
GridFieldItemEditView.ss: null GridFieldItemEditView.ss: null
Group: Group:
AddRole: 'Add a role for this group' AddRole: 'Add a role for this group'
@ -267,6 +276,7 @@ el:
ADDURL: 'Add URL' ADDURL: 'Add URL'
ADJUSTDETAILSDIMENSIONS: 'Details &amp; dimensions' ADJUSTDETAILSDIMENSIONS: 'Details &amp; dimensions'
ANCHORVALUE: Anchor ANCHORVALUE: Anchor
BUTTONADDURL: 'Add url'
BUTTONINSERT: Insert BUTTONINSERT: Insert
BUTTONINSERTLINK: 'Insert link' BUTTONINSERTLINK: 'Insert link'
BUTTONREMOVELINK: 'Remove link' BUTTONREMOVELINK: 'Remove link'
@ -331,7 +341,10 @@ el:
PreviewButton: Preview PreviewButton: Preview
REORGANISATIONSUCCESSFUL: 'Reorganised the site tree successfully.' REORGANISATIONSUCCESSFUL: 'Reorganised the site tree successfully.'
SAVEDUP: Saved. SAVEDUP: Saved.
VersionUnknown: unknown ShowAsList: 'show as list'
TooManyPages: 'Too many pages'
ValidationError: 'Validation error'
VersionUnknown: Unknown
LeftAndMain_Menu.ss: LeftAndMain_Menu.ss:
Hello: Hi Hello: Hi
LOGOUT: 'Log out' LOGOUT: 'Log out'
@ -407,6 +420,7 @@ el:
TWODIGITMONTH: 'Two-digit month (01=January, etc.)' TWODIGITMONTH: 'Two-digit month (01=January, etc.)'
TWODIGITSECOND: 'Two digits of second (00 through 59)' TWODIGITSECOND: 'Two digits of second (00 through 59)'
TWODIGITYEAR: 'Two-digit year' TWODIGITYEAR: 'Two-digit year'
Toggle: 'Show formatting help'
MemberImportForm: MemberImportForm:
Help1: '<p>Import users in <em>CSV format</em> (comma-separated values). <small><a href="#" class="toggle-advanced">Show advanced usage</a></small></p>' Help1: '<p>Import users in <em>CSV format</em> (comma-separated values). <small><a href="#" class="toggle-advanced">Show advanced usage</a></small></p>'
Help2: '<div class="advanced"> <h4>Advanced usage</h4> <ul> <li>Allowed columns: <em>%s</em></li> <li>Existing users are matched by their unique <em>Code</em> property, and updated with any new values from the imported file.</li> <li>Groups can be assigned by the <em>Groups</em> column. Groups are identified by their <em>Code</em> property, multiple groups can be separated by comma. Existing group memberships are not cleared.</li> </ul></div>' Help2: '<div class="advanced"> <h4>Advanced usage</h4> <ul> <li>Allowed columns: <em>%s</em></li> <li>Existing users are matched by their unique <em>Code</em> property, and updated with any new values from the imported file.</li> <li>Groups can be assigned by the <em>Groups</em> column. Groups are identified by their <em>Code</em> property, multiple groups can be separated by comma. Existing group memberships are not cleared.</li> </ul></div>'
@ -421,7 +435,7 @@ el:
ModelAdmin: ModelAdmin:
DELETE: Delete DELETE: Delete
DELETEDRECORDS: 'Deleted {count} records.' DELETEDRECORDS: 'Deleted {count} records.'
EMPTYBEFOREIMPORT: 'Clear Database before import' EMPTYBEFOREIMPORT: 'Replace data'
IMPORT: 'Import from CSV' IMPORT: 'Import from CSV'
IMPORTEDRECORDS: 'Imported {count} records.' IMPORTEDRECORDS: 'Imported {count} records.'
NOCSVFILE: 'Please browse for a CSV file to import' NOCSVFILE: 'Please browse for a CSV file to import'
@ -515,7 +529,20 @@ el:
BtnImport: 'Import from CSV' BtnImport: 'Import from CSV'
FileFieldLabel: 'CSV File <small>(Allowed extensions: *.csv)</small>' FileFieldLabel: 'CSV File <small>(Allowed extensions: *.csv)</small>'
SilverStripeNavigator: SilverStripeNavigator:
Auto: Auto
ChangeViewMode: 'Change view mode'
Desktop: Desktop
DualWindowView: 'Dual Window'
Edit: Edit Edit: Edit
EditView: 'Edit mode'
Mobile: Mobile
PreviewState: 'Preview State'
PreviewView: 'Preview mode'
Responsive: Responsive
SplitView: 'Split mode'
Tablet: Tablet
ViewDeviceWidth: 'Select a preview width'
Width: width
SimpleImageField: SimpleImageField:
NOUPLOAD: 'No Image Uploaded' NOUPLOAD: 'No Image Uploaded'
SiteTree: SiteTree:
@ -551,6 +578,8 @@ el:
ATTACHFILE: 'Attach a file' ATTACHFILE: 'Attach a file'
ATTACHFILES: 'Attach files' ATTACHFILES: 'Attach files'
AttachFile: 'Attach file(s)' AttachFile: 'Attach file(s)'
CHOOSEANOTHERFILE: 'Choose another file'
CHOOSEANOTHERINFO: 'Replace this file with another one from the file store'
DELETE: 'Delete from files' DELETE: 'Delete from files'
DELETEINFO: 'Permanently delete this file from the file store' DELETEINFO: 'Permanently delete this file from the file store'
DOEDIT: Save DOEDIT: Save
@ -565,12 +594,15 @@ el:
FROMFILES: 'From files' FROMFILES: 'From files'
HOTLINKINFO: 'Info: This image will be hotlinked. Please ensure you have permissions from the original site creator to do so.' HOTLINKINFO: 'Info: This image will be hotlinked. Please ensure you have permissions from the original site creator to do so.'
MAXNUMBEROFFILES: 'Max number of {count} file(s) exceeded.' MAXNUMBEROFFILES: 'Max number of {count} file(s) exceeded.'
MAXNUMBEROFFILESONE: 'Can only upload one file'
MAXNUMBEROFFILESSHORT: 'Can only upload {count} files' MAXNUMBEROFFILESSHORT: 'Can only upload {count} files'
OVERWRITEWARNING: 'File with the same name already exists'
REMOVE: Remove REMOVE: Remove
REMOVEERROR: 'Error removing file' REMOVEERROR: 'Error removing file'
REMOVEINFO: 'Remove this file from here, but do not delete it from the file store' REMOVEINFO: 'Remove this file from here, but do not delete it from the file store'
STARTALL: 'Start all' STARTALL: 'Start all'
STARTALLINFO: 'Start all uploads' STARTALLINFO: 'Start all uploads'
Saved: Saved Saved: Saved
UPLOADSINTO: 'saves into /{path}'
Versioned: Versioned:
has_many_Versions: Versions has_many_Versions: Versions

View File

@ -2,6 +2,7 @@ en:
AssetAdmin: AssetAdmin:
ALLOWEDEXTS: 'Allowed extensions' ALLOWEDEXTS: 'Allowed extensions'
NEWFOLDER: NewFolder NEWFOLDER: NewFolder
SHOWALLOWEDEXTS: 'Show allowed extensions'
AssetTableField: AssetTableField:
CREATED: 'First uploaded' CREATED: 'First uploaded'
DIM: Dimensions DIM: Dimensions
@ -109,20 +110,21 @@ en:
PLURALNAME: 'Data Objects' PLURALNAME: 'Data Objects'
SINGULARNAME: 'Data Object' SINGULARNAME: 'Data Object'
Date: Date:
DAY: ' day' DAY: day
DAYS: ' days' DAYS: days
HOUR: ' hour' HOUR: hour
HOURS: ' hours' HOURS: hours
MIN: ' min' MIN: min
MINS: ' mins' MINS: mins
MONTH: ' month' MONTH: month
MONTHS: ' months' MONTHS: months
SEC: ' sec' SEC: sec
SECS: ' secs' SECS: secs
TIMEDIFFAGO: '{difference} ago' TIMEDIFFAGO: '{difference} ago'
TIMEDIFFIN: 'in {difference}' TIMEDIFFIN: 'in {difference}'
YEAR: ' year' YEAR: year
YEARS: ' years' YEARS: years
LessThanMinuteAgo: 'less than a minute'
DateField: DateField:
NOTSET: 'not set' NOTSET: 'not set'
TODAY: today TODAY: today
@ -198,7 +200,7 @@ en:
TEXT2: 'password reset link' TEXT2: 'password reset link'
TEXT3: for TEXT3: for
Form: Form:
FIELDISREQUIRED: '%s is required' FIELDISREQUIRED: '{name} is required'
SubmitBtnLabel: Go SubmitBtnLabel: Go
VALIDATIONCREDITNUMBER: 'Please ensure you have entered the {number} credit card number correctly' VALIDATIONCREDITNUMBER: 'Please ensure you have entered the {number} credit card number correctly'
VALIDATIONNOTUNIQUE: 'The value entered is not unique' VALIDATIONNOTUNIQUE: 'The value entered is not unique'
@ -207,8 +209,10 @@ en:
VALIDATIONSTRONGPASSWORD: 'Passwords must have at least one digit and one alphanumeric character' VALIDATIONSTRONGPASSWORD: 'Passwords must have at least one digit and one alphanumeric character'
VALIDATOR: Validator VALIDATOR: Validator
VALIDCURRENCY: 'Please enter a valid currency' VALIDCURRENCY: 'Please enter a valid currency'
CSRF_FAILED_MESSAGE: 'There seems to have been a technical problem. Please click the back button, refresh your browser, and try again.'
FormField: FormField:
NONE: none NONE: none
Example: 'e.g. %s'
GridAction: GridAction:
DELETE_DESCRIPTION: Delete DELETE_DESCRIPTION: Delete
Delete: Delete Delete: Delete
@ -230,6 +234,7 @@ en:
ResetFilter: Reset ResetFilter: Reset
GridFieldAction_Delete: GridFieldAction_Delete:
DeletePermissionsFailure: 'No delete permissions' DeletePermissionsFailure: 'No delete permissions'
EditPermissionsFailure: 'No permission to unlink record'
GridFieldDetailForm: GridFieldDetailForm:
CancelBtn: Cancel CancelBtn: Cancel
Create: Create Create: Create
@ -237,7 +242,7 @@ en:
DeletePermissionsFailure: 'No delete permissions' DeletePermissionsFailure: 'No delete permissions'
Deleted: 'Deleted %s %s' Deleted: 'Deleted %s %s'
Save: Save Save: Save
Saved: 'Saved %s %s' Saved: 'Saved {name} {link}'
GridFieldItemEditView.ss: GridFieldItemEditView.ss:
'Go back': 'Go back' 'Go back': 'Go back'
Group: Group:
@ -309,6 +314,7 @@ en:
URL: URL URL: URL
URLNOTANOEMBEDRESOURCE: 'The URL ''{url}'' could not be turned into a media resource.' URLNOTANOEMBEDRESOURCE: 'The URL ''{url}'' could not be turned into a media resource.'
UpdateMEDIA: 'Update Media' UpdateMEDIA: 'Update Media'
BUTTONADDURL: 'Add url'
Image: Image:
PLURALNAME: Files PLURALNAME: Files
SINGULARNAME: File SINGULARNAME: File
@ -332,7 +338,10 @@ en:
PreviewButton: Preview PreviewButton: Preview
REORGANISATIONSUCCESSFUL: 'Reorganised the site tree successfully.' REORGANISATIONSUCCESSFUL: 'Reorganised the site tree successfully.'
SAVEDUP: Saved. SAVEDUP: Saved.
VersionUnknown: unknown VersionUnknown: Unknown
ShowAsList: 'show as list'
TooManyPages: 'Too many pages'
ValidationError: 'Validation error'
LeftAndMain_Menu.ss: LeftAndMain_Menu.ss:
Hello: Hi Hello: Hi
LOGOUT: 'Log out' LOGOUT: 'Log out'
@ -407,6 +416,7 @@ en:
TWODIGITMONTH: 'Two-digit month (01=January, etc.)' TWODIGITMONTH: 'Two-digit month (01=January, etc.)'
TWODIGITSECOND: 'Two digits of second (00 through 59)' TWODIGITSECOND: 'Two digits of second (00 through 59)'
TWODIGITYEAR: 'Two-digit year' TWODIGITYEAR: 'Two-digit year'
Toggle: 'Show formatting help'
MemberImportForm: MemberImportForm:
Help1: '<p>Import users in <em>CSV format</em> (comma-separated values). <small><a href="#" class="toggle-advanced">Show advanced usage</a></small></p>' Help1: '<p>Import users in <em>CSV format</em> (comma-separated values). <small><a href="#" class="toggle-advanced">Show advanced usage</a></small></p>'
Help2: "<div class=\"advanced\">\n <h4>Advanced usage</h4>\n <ul>\n <li>Allowed columns: <em>%s</em></li>\n <li>Existing users are matched by their unique <em>Code</em> property, and updated with any new values from\n the imported file.</li>\n <li>Groups can be assigned by the <em>Groups</em> column. Groups are identified by their <em>Code</em> property,\n multiple groups can be separated by comma. Existing group memberships are not cleared.</li>\n </ul>\n</div>" Help2: "<div class=\"advanced\">\n <h4>Advanced usage</h4>\n <ul>\n <li>Allowed columns: <em>%s</em></li>\n <li>Existing users are matched by their unique <em>Code</em> property, and updated with any new values from\n the imported file.</li>\n <li>Groups can be assigned by the <em>Groups</em> column. Groups are identified by their <em>Code</em> property,\n multiple groups can be separated by comma. Existing group memberships are not cleared.</li>\n </ul>\n</div>"
@ -422,7 +432,7 @@ en:
ModelAdmin: ModelAdmin:
DELETE: Delete DELETE: Delete
DELETEDRECORDS: 'Deleted {count} records.' DELETEDRECORDS: 'Deleted {count} records.'
EMPTYBEFOREIMPORT: 'Clear Database before import' EMPTYBEFOREIMPORT: 'Replace data'
IMPORT: 'Import from CSV' IMPORT: 'Import from CSV'
IMPORTEDRECORDS: 'Imported {count} records.' IMPORTEDRECORDS: 'Imported {count} records.'
NOCSVFILE: 'Please browse for a CSV file to import' NOCSVFILE: 'Please browse for a CSV file to import'
@ -517,6 +527,19 @@ en:
FileFieldLabel: 'CSV File <small>(Allowed extensions: *.csv)</small>' FileFieldLabel: 'CSV File <small>(Allowed extensions: *.csv)</small>'
SilverStripeNavigator: SilverStripeNavigator:
Edit: Edit Edit: Edit
Auto: Auto
ChangeViewMode: 'Change view mode'
Desktop: Desktop
DualWindowView: 'Dual Window'
EditView: 'Edit mode'
Mobile: Mobile
PreviewState: 'Preview State'
PreviewView: 'Preview mode'
Responsive: Responsive
SplitView: 'Split mode'
Tablet: Tablet
ViewDeviceWidth: 'Select a preview width'
Width: width
SimpleImageField: SimpleImageField:
NOUPLOAD: 'No Image Uploaded' NOUPLOAD: 'No Image Uploaded'
SiteTree: SiteTree:
@ -574,5 +597,13 @@ en:
STARTALL: 'Start all' STARTALL: 'Start all'
STARTALLINFO: 'Start all uploads' STARTALLINFO: 'Start all uploads'
Saved: Saved Saved: Saved
CHOOSEANOTHERFILE: 'Choose another file'
CHOOSEANOTHERINFO: 'Replace this file with another one from the file store'
OVERWRITEWARNING: 'File with the same name already exists'
UPLOADSINTO: 'saves into /{path}'
Versioned: Versioned:
has_many_Versions: Versions has_many_Versions: Versions
CMSPageHistoryController_versions.ss:
PREVIEW: 'Website preview'
GridFieldEditButton.ss:
EDIT: Edit

View File

@ -2,6 +2,7 @@ en_GB:
AssetAdmin: AssetAdmin:
ALLOWEDEXTS: 'Allowed extensions' ALLOWEDEXTS: 'Allowed extensions'
NEWFOLDER: NewFolder NEWFOLDER: NewFolder
SHOWALLOWEDEXTS: 'Show allowed extensions'
AssetTableField: AssetTableField:
CREATED: 'First uploaded' CREATED: 'First uploaded'
DIM: Dimensions DIM: Dimensions
@ -59,9 +60,9 @@ en_GB:
ERRORNOTADMIN: 'That user is not an administrator.' ERRORNOTADMIN: 'That user is not an administrator.'
ERRORNOTREC: 'That username / password isn''t recognised' ERRORNOTREC: 'That username / password isn''t recognised'
Boolean: Boolean:
0: 'False'
ANY: Any ANY: Any
1: 'True' NOANSWER: 'False'
YESANSWER: 'True'
CMSLoadingScreen.ss: CMSLoadingScreen.ss:
LOADING: Loading... LOADING: Loading...
REQUIREJS: 'The CMS requires that you have JavaScript enabled.' REQUIREJS: 'The CMS requires that you have JavaScript enabled.'
@ -70,6 +71,8 @@ en_GB:
ACCESSALLINTERFACES: 'Access to all CMS sections' ACCESSALLINTERFACES: 'Access to all CMS sections'
ACCESSALLINTERFACESHELP: 'Overrules more specific access settings.' ACCESSALLINTERFACESHELP: 'Overrules more specific access settings.'
SAVE: Save SAVE: Save
CMSPageHistoryController_versions.ss:
PREVIEW: 'Website preview'
CMSProfileController: CMSProfileController:
MENUTITLE: 'My Profile' MENUTITLE: 'My Profile'
ChangePasswordEmail.ss: ChangePasswordEmail.ss:
@ -79,8 +82,8 @@ en_GB:
HELLO: Hello HELLO: Hello
PASSWORD: Password PASSWORD: Password
CheckboxField: CheckboxField:
- 'False' NOANSWER: 'False'
- 'True' YESANSWER: 'True'
ComplexTableField: ComplexTableField:
CLOSEPOPUP: 'Close Popup' CLOSEPOPUP: 'Close Popup'
SUCCESSADD2: 'Added {name}' SUCCESSADD2: 'Added {name}'
@ -113,10 +116,11 @@ en_GB:
DAYS: days DAYS: days
HOUR: hour HOUR: hour
HOURS: hours HOURS: hours
LessThanMinuteAgo: 'less than a minute'
MIN: min MIN: min
MINS: mins MINS: mins
MONTH: month MONTH: month
MONTHS: ' months' MONTHS: months
SEC: sec SEC: sec
SECS: secs SECS: secs
TIMEDIFFAGO: '{difference} ago' TIMEDIFFAGO: '{difference} ago'
@ -198,7 +202,8 @@ en_GB:
TEXT2: 'password reset link' TEXT2: 'password reset link'
TEXT3: for TEXT3: for
Form: Form:
FIELDISREQUIRED: '%s is required.' CSRF_FAILED_MESSAGE: 'There seems to have been a technical problem. Please click the back button, refresh your browser, and try again.'
FIELDISREQUIRED: '{name} is required'
SubmitBtnLabel: Go SubmitBtnLabel: Go
VALIDATIONCREDITNUMBER: 'Please ensure you have entered the {number} credit card number correctly' VALIDATIONCREDITNUMBER: 'Please ensure you have entered the {number} credit card number correctly'
VALIDATIONNOTUNIQUE: 'The value entered is not unique' VALIDATIONNOTUNIQUE: 'The value entered is not unique'
@ -208,6 +213,7 @@ en_GB:
VALIDATOR: Validator VALIDATOR: Validator
VALIDCURRENCY: 'Please enter a valid currency' VALIDCURRENCY: 'Please enter a valid currency'
FormField: FormField:
Example: 'e.g. %s'
NONE: none NONE: none
GridAction: GridAction:
DELETE_DESCRIPTION: Delete DELETE_DESCRIPTION: Delete
@ -230,6 +236,7 @@ en_GB:
ResetFilter: Reset ResetFilter: Reset
GridFieldAction_Delete: GridFieldAction_Delete:
DeletePermissionsFailure: 'No delete permissions' DeletePermissionsFailure: 'No delete permissions'
EditPermissionsFailure: 'No permission to unlink record'
GridFieldDetailForm: GridFieldDetailForm:
CancelBtn: Cancel CancelBtn: Cancel
Create: Create Create: Create
@ -237,7 +244,9 @@ en_GB:
DeletePermissionsFailure: 'No delete permissions' DeletePermissionsFailure: 'No delete permissions'
Deleted: 'Deleted %s %s' Deleted: 'Deleted %s %s'
Save: Save Save: Save
Saved: 'Saved %s %s' Saved: 'Saved {name} {link}'
GridFieldEditButton.ss:
EDIT: Edit
GridFieldItemEditView.ss: null GridFieldItemEditView.ss: null
Group: Group:
AddRole: 'Add a role for this group' AddRole: 'Add a role for this group'
@ -267,6 +276,7 @@ en_GB:
ADDURL: 'Add URL' ADDURL: 'Add URL'
ADJUSTDETAILSDIMENSIONS: 'Details &amp; dimensions' ADJUSTDETAILSDIMENSIONS: 'Details &amp; dimensions'
ANCHORVALUE: Anchor ANCHORVALUE: Anchor
BUTTONADDURL: 'Add url'
BUTTONINSERT: Insert BUTTONINSERT: Insert
BUTTONINSERTLINK: 'Insert link' BUTTONINSERTLINK: 'Insert link'
BUTTONREMOVELINK: 'Remove link' BUTTONREMOVELINK: 'Remove link'
@ -331,7 +341,10 @@ en_GB:
PreviewButton: Preview PreviewButton: Preview
REORGANISATIONSUCCESSFUL: 'Reorganised the site tree successfully.' REORGANISATIONSUCCESSFUL: 'Reorganised the site tree successfully.'
SAVEDUP: Saved. SAVEDUP: Saved.
VersionUnknown: unknown ShowAsList: 'show as list'
TooManyPages: 'Too many pages'
ValidationError: 'Validation error'
VersionUnknown: Unknown
LeftAndMain_Menu.ss: LeftAndMain_Menu.ss:
Hello: Hi Hello: Hi
LOGOUT: 'Log out' LOGOUT: 'Log out'
@ -407,6 +420,7 @@ en_GB:
TWODIGITMONTH: 'Two-digit month (01=January, etc.)' TWODIGITMONTH: 'Two-digit month (01=January, etc.)'
TWODIGITSECOND: 'Two digits of second (00 through 59)' TWODIGITSECOND: 'Two digits of second (00 through 59)'
TWODIGITYEAR: 'Two-digit year' TWODIGITYEAR: 'Two-digit year'
Toggle: 'Show formatting help'
MemberImportForm: MemberImportForm:
Help1: '<p>Import users in <em>CSV format</em> (comma-separated values). <small><a href="#" class="toggle-advanced">Show advanced usage</a></small></p>' Help1: '<p>Import users in <em>CSV format</em> (comma-separated values). <small><a href="#" class="toggle-advanced">Show advanced usage</a></small></p>'
Help2: '<div class="advanced"> <h4>Advanced usage</h4> <ul> <li>Allowed columns: <em>%s</em></li> <li>Existing users are matched by their unique <em>Code</em> property, and updated with any new values from the imported file.</li> <li>Groups can be assigned by the <em>Groups</em> column. Groups are identified by their <em>Code</em> property, multiple groups can be separated by comma. Existing group memberships are not cleared.</li> </ul></div>' Help2: '<div class="advanced"> <h4>Advanced usage</h4> <ul> <li>Allowed columns: <em>%s</em></li> <li>Existing users are matched by their unique <em>Code</em> property, and updated with any new values from the imported file.</li> <li>Groups can be assigned by the <em>Groups</em> column. Groups are identified by their <em>Code</em> property, multiple groups can be separated by comma. Existing group memberships are not cleared.</li> </ul></div>'
@ -421,7 +435,7 @@ en_GB:
ModelAdmin: ModelAdmin:
DELETE: Delete DELETE: Delete
DELETEDRECORDS: 'Deleted {count} records.' DELETEDRECORDS: 'Deleted {count} records.'
EMPTYBEFOREIMPORT: 'Clear Database before import' EMPTYBEFOREIMPORT: 'Replace data'
IMPORT: 'Import from CSV' IMPORT: 'Import from CSV'
IMPORTEDRECORDS: 'Imported {count} records.' IMPORTEDRECORDS: 'Imported {count} records.'
NOCSVFILE: 'Please browse for a CSV file to import' NOCSVFILE: 'Please browse for a CSV file to import'
@ -515,7 +529,20 @@ en_GB:
BtnImport: 'Import from CSV' BtnImport: 'Import from CSV'
FileFieldLabel: 'CSV File <small>(Allowed extensions: *.csv)</small>' FileFieldLabel: 'CSV File <small>(Allowed extensions: *.csv)</small>'
SilverStripeNavigator: SilverStripeNavigator:
Auto: Auto
ChangeViewMode: 'Change view mode'
Desktop: Desktop
DualWindowView: 'Dual Window'
Edit: Edit Edit: Edit
EditView: 'Edit mode'
Mobile: Mobile
PreviewState: 'Preview State'
PreviewView: 'Preview mode'
Responsive: Responsive
SplitView: 'Split mode'
Tablet: Tablet
ViewDeviceWidth: 'Select a preview width'
Width: width
SimpleImageField: SimpleImageField:
NOUPLOAD: 'No Image Uploaded' NOUPLOAD: 'No Image Uploaded'
SiteTree: SiteTree:
@ -551,6 +578,8 @@ en_GB:
ATTACHFILE: 'Attach a file' ATTACHFILE: 'Attach a file'
ATTACHFILES: 'Attach files' ATTACHFILES: 'Attach files'
AttachFile: 'Attach file(s)' AttachFile: 'Attach file(s)'
CHOOSEANOTHERFILE: 'Choose another file'
CHOOSEANOTHERINFO: 'Replace this file with another one from the file store'
DELETE: 'Delete from files' DELETE: 'Delete from files'
DELETEINFO: 'Permanently delete this file from the file store' DELETEINFO: 'Permanently delete this file from the file store'
DOEDIT: Save DOEDIT: Save
@ -565,13 +594,15 @@ en_GB:
FROMFILES: 'From files' FROMFILES: 'From files'
HOTLINKINFO: 'Info: This image will be hotlinked. Please ensure you have permissions from the original site creator to do so.' HOTLINKINFO: 'Info: This image will be hotlinked. Please ensure you have permissions from the original site creator to do so.'
MAXNUMBEROFFILES: 'Max number of {count} file(s) exceeded.' MAXNUMBEROFFILES: 'Max number of {count} file(s) exceeded.'
MAXNUMBEROFFILESSHORT: 'Can only upload {count} files'
MAXNUMBEROFFILESONE: 'Can only upload one file' MAXNUMBEROFFILESONE: 'Can only upload one file'
MAXNUMBEROFFILESSHORT: 'Can only upload {count} files'
OVERWRITEWARNING: 'File with the same name already exists'
REMOVE: Remove REMOVE: Remove
REMOVEERROR: 'Error removing file' REMOVEERROR: 'Error removing file'
REMOVEINFO: 'Remove this file from here, but do not delete it from the file store' REMOVEINFO: 'Remove this file from here, but do not delete it from the file store'
STARTALL: 'Start all' STARTALL: 'Start all'
STARTALLINFO: 'Start all uploads' STARTALLINFO: 'Start all uploads'
Saved: Saved Saved: Saved
UPLOADSINTO: 'saves into /{path}'
Versioned: Versioned:
has_many_Versions: Versions has_many_Versions: Versions

View File

@ -2,6 +2,7 @@ eo:
AssetAdmin: AssetAdmin:
ALLOWEDEXTS: 'Allowed extensions' ALLOWEDEXTS: 'Allowed extensions'
NEWFOLDER: NewFolder NEWFOLDER: NewFolder
SHOWALLOWEDEXTS: 'Show allowed extensions'
AssetTableField: AssetTableField:
CREATED: 'Unue alŝutita' CREATED: 'Unue alŝutita'
DIM: Dimensioj DIM: Dimensioj
@ -59,9 +60,9 @@ eo:
ERRORNOTADMIN: 'Tiu uzanto ne estas administranto.' ERRORNOTADMIN: 'Tiu uzanto ne estas administranto.'
ERRORNOTREC: 'Kiuj salutnomo / pasvorto ne estas rekonebla' ERRORNOTREC: 'Kiuj salutnomo / pasvorto ne estas rekonebla'
Boolean: Boolean:
0: Ne
ANY: Ajna ANY: Ajna
1: Jes NOANSWER: 'False'
YESANSWER: 'True'
CMSLoadingScreen.ss: CMSLoadingScreen.ss:
LOADING: Loading... LOADING: Loading...
REQUIREJS: 'The CMS requires that you have JavaScript enabled.' REQUIREJS: 'The CMS requires that you have JavaScript enabled.'
@ -70,6 +71,8 @@ eo:
ACCESSALLINTERFACES: 'Aliro al ĉiuj interfacoj de CMS' ACCESSALLINTERFACES: 'Aliro al ĉiuj interfacoj de CMS'
ACCESSALLINTERFACESHELP: 'Nuligas pli specifajn alirajn agordojn.' ACCESSALLINTERFACESHELP: 'Nuligas pli specifajn alirajn agordojn.'
SAVE: Konservi SAVE: Konservi
CMSPageHistoryController_versions.ss:
PREVIEW: 'Website preview'
CMSProfileController: CMSProfileController:
MENUTITLE: 'My Profile' MENUTITLE: 'My Profile'
ChangePasswordEmail.ss: ChangePasswordEmail.ss:
@ -79,8 +82,8 @@ eo:
HELLO: Saluton HELLO: Saluton
PASSWORD: Pasvorto PASSWORD: Pasvorto
CheckboxField: CheckboxField:
- Ne NOANSWER: 'False'
- Jes YESANSWER: 'True'
ComplexTableField: ComplexTableField:
CLOSEPOPUP: 'Fermi Ŝprucfenestron' CLOSEPOPUP: 'Fermi Ŝprucfenestron'
SUCCESSADD2: 'Added {name}' SUCCESSADD2: 'Added {name}'
@ -109,20 +112,21 @@ eo:
PLURALNAME: 'Datumaj Objektoj' PLURALNAME: 'Datumaj Objektoj'
SINGULARNAME: 'Datuma Objekto' SINGULARNAME: 'Datuma Objekto'
Date: Date:
DAY: tago DAY: day
DAYS: tagoj DAYS: days
HOUR: horo HOUR: hour
HOURS: horoj HOURS: hours
LessThanMinuteAgo: 'less than a minute'
MIN: min MIN: min
MINS: minutoj MINS: mins
MONTH: monato MONTH: month
MONTHS: monatoj MONTHS: months
SEC: sek SEC: sec
SECS: sekundoj SECS: secs
TIMEDIFFAGO: '{difference} ago' TIMEDIFFAGO: '{difference} ago'
TIMEDIFFIN: 'in {difference}' TIMEDIFFIN: 'in {difference}'
YEAR: jaro YEAR: year
YEARS: jaroj YEARS: years
DateField: DateField:
NOTSET: 'ne agordita' NOTSET: 'ne agordita'
TODAY: hodiaŭ TODAY: hodiaŭ
@ -198,7 +202,8 @@ eo:
TEXT2: 'pasvorta reagorda ligilo' TEXT2: 'pasvorta reagorda ligilo'
TEXT3: por TEXT3: por
Form: Form:
FIELDISREQUIRED: '%s estas postulita' CSRF_FAILED_MESSAGE: 'There seems to have been a technical problem. Please click the back button, refresh your browser, and try again.'
FIELDISREQUIRED: '{name} is required'
SubmitBtnLabel: Go SubmitBtnLabel: Go
VALIDATIONCREDITNUMBER: 'Please ensure you have entered the {number} credit card number correctly' VALIDATIONCREDITNUMBER: 'Please ensure you have entered the {number} credit card number correctly'
VALIDATIONNOTUNIQUE: 'La enirita valoron ne unika' VALIDATIONNOTUNIQUE: 'La enirita valoron ne unika'
@ -208,6 +213,7 @@ eo:
VALIDATOR: Validigilo VALIDATOR: Validigilo
VALIDCURRENCY: 'Please enter a valid currency' VALIDCURRENCY: 'Please enter a valid currency'
FormField: FormField:
Example: 'e.g. %s'
NONE: neniu NONE: neniu
GridAction: GridAction:
DELETE_DESCRIPTION: Delete DELETE_DESCRIPTION: Delete
@ -230,6 +236,7 @@ eo:
ResetFilter: Reset ResetFilter: Reset
GridFieldAction_Delete: GridFieldAction_Delete:
DeletePermissionsFailure: 'No delete permissions' DeletePermissionsFailure: 'No delete permissions'
EditPermissionsFailure: 'No permission to unlink record'
GridFieldDetailForm: GridFieldDetailForm:
CancelBtn: Cancel CancelBtn: Cancel
Create: Create Create: Create
@ -237,7 +244,9 @@ eo:
DeletePermissionsFailure: 'No delete permissions' DeletePermissionsFailure: 'No delete permissions'
Deleted: 'Deleted %s %s' Deleted: 'Deleted %s %s'
Save: Save Save: Save
Saved: 'Saved %s %s' Saved: 'Saved {name} {link}'
GridFieldEditButton.ss:
EDIT: Edit
GridFieldItemEditView.ss: null GridFieldItemEditView.ss: null
Group: Group:
AddRole: 'Add a role for this group' AddRole: 'Add a role for this group'
@ -267,6 +276,7 @@ eo:
ADDURL: 'Add URL' ADDURL: 'Add URL'
ADJUSTDETAILSDIMENSIONS: 'Details &amp; dimensions' ADJUSTDETAILSDIMENSIONS: 'Details &amp; dimensions'
ANCHORVALUE: Ankri ANCHORVALUE: Ankri
BUTTONADDURL: 'Add url'
BUTTONINSERT: Insert BUTTONINSERT: Insert
BUTTONINSERTLINK: 'Almeti ligilon' BUTTONINSERTLINK: 'Almeti ligilon'
BUTTONREMOVELINK: 'Forigi ligilon' BUTTONREMOVELINK: 'Forigi ligilon'
@ -331,7 +341,10 @@ eo:
PreviewButton: Preview PreviewButton: Preview
REORGANISATIONSUCCESSFUL: 'Reorganised the site tree successfully.' REORGANISATIONSUCCESSFUL: 'Reorganised the site tree successfully.'
SAVEDUP: Saved. SAVEDUP: Saved.
VersionUnknown: unknown ShowAsList: 'show as list'
TooManyPages: 'Too many pages'
ValidationError: 'Validation error'
VersionUnknown: Unknown
LeftAndMain_Menu.ss: LeftAndMain_Menu.ss:
Hello: Hi Hello: Hi
LOGOUT: 'Log out' LOGOUT: 'Log out'
@ -407,6 +420,7 @@ eo:
TWODIGITMONTH: 'Two-digit month (01=January, etc.)' TWODIGITMONTH: 'Two-digit month (01=January, etc.)'
TWODIGITSECOND: 'Two digits of second (00 through 59)' TWODIGITSECOND: 'Two digits of second (00 through 59)'
TWODIGITYEAR: 'Two-digit year' TWODIGITYEAR: 'Two-digit year'
Toggle: 'Show formatting help'
MemberImportForm: MemberImportForm:
Help1: '<p>Gravaj membroj en <em>CSV-formato</em> (perkome disigitaj valoroj ). <small><a href="#" class="toggle-advanced">Vidigi spertulan uzadon</a></small></p>' Help1: '<p>Gravaj membroj en <em>CSV-formato</em> (perkome disigitaj valoroj ). <small><a href="#" class="toggle-advanced">Vidigi spertulan uzadon</a></small></p>'
Help2: '<div class="advanced"> <h4>Advanced usage</h4> <ul> <li>Allowed columns: <em>%s</em></li> <li>Existing users are matched by their unique <em>Code</em> property, and updated with any new values from the imported file.</li> <li>Groups can be assigned by the <em>Groups</em> column. Groups are identified by their <em>Code</em> property, multiple groups can be separated by comma. Existing group memberships are not cleared.</li> </ul></div>' Help2: '<div class="advanced"> <h4>Advanced usage</h4> <ul> <li>Allowed columns: <em>%s</em></li> <li>Existing users are matched by their unique <em>Code</em> property, and updated with any new values from the imported file.</li> <li>Groups can be assigned by the <em>Groups</em> column. Groups are identified by their <em>Code</em> property, multiple groups can be separated by comma. Existing group memberships are not cleared.</li> </ul></div>'
@ -421,7 +435,7 @@ eo:
ModelAdmin: ModelAdmin:
DELETE: Forigi DELETE: Forigi
DELETEDRECORDS: 'Deleted {count} records.' DELETEDRECORDS: 'Deleted {count} records.'
EMPTYBEFOREIMPORT: 'Clear Database before import' EMPTYBEFOREIMPORT: 'Replace data'
IMPORT: 'Importi el CSV' IMPORT: 'Importi el CSV'
IMPORTEDRECORDS: 'Imported {count} records.' IMPORTEDRECORDS: 'Imported {count} records.'
NOCSVFILE: 'Bonvolu foliumi por CSV-dosiero importota' NOCSVFILE: 'Bonvolu foliumi por CSV-dosiero importota'
@ -515,7 +529,20 @@ eo:
BtnImport: Importi BtnImport: Importi
FileFieldLabel: 'CSV-dosiero <small>(Permesitaj sufiksoj: *.csv)</small>' FileFieldLabel: 'CSV-dosiero <small>(Permesitaj sufiksoj: *.csv)</small>'
SilverStripeNavigator: SilverStripeNavigator:
Auto: Auto
ChangeViewMode: 'Change view mode'
Desktop: Desktop
DualWindowView: 'Dual Window'
Edit: Edit Edit: Edit
EditView: 'Edit mode'
Mobile: Mobile
PreviewState: 'Preview State'
PreviewView: 'Preview mode'
Responsive: Responsive
SplitView: 'Split mode'
Tablet: Tablet
ViewDeviceWidth: 'Select a preview width'
Width: width
SimpleImageField: SimpleImageField:
NOUPLOAD: 'Neniu Bildo Alŝutita' NOUPLOAD: 'Neniu Bildo Alŝutita'
SiteTree: SiteTree:
@ -551,6 +578,8 @@ eo:
ATTACHFILE: 'Attach a file' ATTACHFILE: 'Attach a file'
ATTACHFILES: 'Attach files' ATTACHFILES: 'Attach files'
AttachFile: 'Attach file(s)' AttachFile: 'Attach file(s)'
CHOOSEANOTHERFILE: 'Choose another file'
CHOOSEANOTHERINFO: 'Replace this file with another one from the file store'
DELETE: 'Delete from files' DELETE: 'Delete from files'
DELETEINFO: 'Permanently delete this file from the file store' DELETEINFO: 'Permanently delete this file from the file store'
DOEDIT: Save DOEDIT: Save
@ -565,12 +594,15 @@ eo:
FROMFILES: 'From files' FROMFILES: 'From files'
HOTLINKINFO: 'Info: This image will be hotlinked. Please ensure you have permissions from the original site creator to do so.' HOTLINKINFO: 'Info: This image will be hotlinked. Please ensure you have permissions from the original site creator to do so.'
MAXNUMBEROFFILES: 'Max number of {count} file(s) exceeded.' MAXNUMBEROFFILES: 'Max number of {count} file(s) exceeded.'
MAXNUMBEROFFILESONE: 'Can only upload one file'
MAXNUMBEROFFILESSHORT: 'Can only upload {count} files' MAXNUMBEROFFILESSHORT: 'Can only upload {count} files'
OVERWRITEWARNING: 'File with the same name already exists'
REMOVE: Remove REMOVE: Remove
REMOVEERROR: 'Error removing file' REMOVEERROR: 'Error removing file'
REMOVEINFO: 'Remove this file from here, but do not delete it from the file store' REMOVEINFO: 'Remove this file from here, but do not delete it from the file store'
STARTALL: 'Start all' STARTALL: 'Start all'
STARTALLINFO: 'Start all uploads' STARTALLINFO: 'Start all uploads'
Saved: Saved Saved: Saved
UPLOADSINTO: 'saves into /{path}'
Versioned: Versioned:
has_many_Versions: Versioj has_many_Versions: Versioj

View File

@ -1,12 +1,13 @@
es: es:
AssetAdmin: AssetAdmin:
ALLOWEDEXTS: 'Allowed extensions' ALLOWEDEXTS: 'Extensiones permitidas'
NEWFOLDER: NuevaCarpeta NEWFOLDER: NuevaCarpeta
SHOWALLOWEDEXTS: 'Show allowed extensions'
AssetTableField: AssetTableField:
CREATED: 'Agregado por primera vez' CREATED: 'Agregado por primera vez'
DIM: Dimensiones DIM: Dimensiones
FILENAME: 'Nombre del archivo' FILENAME: 'Nombre del archivo'
FOLDER: Folder FOLDER: Carpeta
LASTEDIT: 'Modificado por última vez' LASTEDIT: 'Modificado por última vez'
OWNER: Propietario OWNER: Propietario
SIZE: Tamaño SIZE: Tamaño
@ -14,19 +15,19 @@ es:
TYPE: Tipo TYPE: Tipo
URL: URL URL: URL
AssetUploadField: AssetUploadField:
ChooseFiles: 'Choose files' ChooseFiles: 'Seleccione los archivos'
DRAGFILESHERE: 'Drag files here' DRAGFILESHERE: 'Arrastre los archivos aqui'
DROPAREA: 'Drop Area' DROPAREA: 'Area para soltar ficheros'
EDITALL: 'Edit all' EDITALL: 'Editar todo'
EDITANDORGANIZE: 'Edit & organize' EDITANDORGANIZE: 'Editar y organizar'
EDITINFO: 'Edit files' EDITINFO: 'Editar archivos'
FILES: Files FILES: Archivos
FROMCOMPUTER: 'Choose files from your computer' FROMCOMPUTER: 'Seleccione los archivos desde su ordenador'
FROMCOMPUTERINFO: 'Upload from your computer' FROMCOMPUTERINFO: 'Subir archivos desde tu ordenador'
TOTAL: Total TOTAL: Total
TOUPLOAD: 'Choose files to upload...' TOUPLOAD: 'Seleccione los archivos a subir...'
UPLOADINPROGRESS: 'Please wait… upload in progress' UPLOADINPROGRESS: 'Por favor espere .... carga en curso'
UPLOADOR: OR UPLOADOR: O
BBCodeParser: BBCodeParser:
ALIGNEMENT: Alineación ALIGNEMENT: Alineación
ALIGNEMENTEXAMPLE: 'alineado a la derecha' ALIGNEMENTEXAMPLE: 'alineado a la derecha'
@ -53,25 +54,27 @@ es:
UNORDEREDDESCRIPTION: 'Lista desordenada' UNORDEREDDESCRIPTION: 'Lista desordenada'
UNORDEREDEXAMPLE1: 'elemento 1 desordenado' UNORDEREDEXAMPLE1: 'elemento 1 desordenado'
BackLink_Button.ss: BackLink_Button.ss:
Back: Back Back: Volver
BasicAuth: BasicAuth:
ENTERINFO: 'Por favor introduzca su nombre de usuario y contraseña.' ENTERINFO: 'Por favor introduzca su nombre de usuario y contraseña.'
ERRORNOTADMIN: 'Ese usuario no es un administrador.' ERRORNOTADMIN: 'Ese usuario no es un administrador.'
ERRORNOTREC: 'Ese nombre de usuario / contraseña no pudo ser reconocido.' ERRORNOTREC: 'Ese nombre de usuario / contraseña no pudo ser reconocido.'
Boolean: Boolean:
0: 'False' ANY: Cualquiera
ANY: Any NOANSWER: 'False'
1: 'True' YESANSWER: 'True'
CMSLoadingScreen.ss: CMSLoadingScreen.ss:
LOADING: Loading... LOADING: Cargando...
REQUIREJS: 'The CMS requires that you have JavaScript enabled.' REQUIREJS: 'El CMS requiere que tenga habilitado JavaScript .'
CMSMain: CMSMain:
ACCESS: 'Access to ''{title}'' section' ACCESS: 'Acceder a la sección ''{title}'''
ACCESSALLINTERFACES: 'Acceder a todas las interfaces del CMS' ACCESSALLINTERFACES: 'Acceder a todas las interfaces del CMS'
ACCESSALLINTERFACESHELP: 'Overrules more specific access settings.' ACCESSALLINTERFACESHELP: 'Anula configuraciones de acceso más específicas.'
SAVE: Guardar SAVE: Guardar
CMSPageHistoryController_versions.ss:
PREVIEW: 'Website preview'
CMSProfileController: CMSProfileController:
MENUTITLE: 'My Profile' MENUTITLE: 'Mi Perfil'
ChangePasswordEmail.ss: ChangePasswordEmail.ss:
CHANGEPASSWORDTEXT1: 'Has cambiado tu contraseña por' CHANGEPASSWORDTEXT1: 'Has cambiado tu contraseña por'
CHANGEPASSWORDTEXT2: 'Ahora puede utilizar los siguientes datos de acreditación para iniciar sesión:' CHANGEPASSWORDTEXT2: 'Ahora puede utilizar los siguientes datos de acreditación para iniciar sesión:'
@ -79,24 +82,24 @@ es:
HELLO: Hola HELLO: Hola
PASSWORD: Contraseña PASSWORD: Contraseña
CheckboxField: CheckboxField:
- 'False' NOANSWER: 'False'
- 'True' YESANSWER: 'True'
ComplexTableField: ComplexTableField:
CLOSEPOPUP: 'Cerrar Popup' CLOSEPOPUP: 'Cerrar Popup'
SUCCESSADD2: 'Added {name}' SUCCESSADD2: 'Añadido {name}'
SUCCESSEDIT: 'Guardado %s %s %s' SUCCESSEDIT: 'Guardado %s %s %s'
ComplexTableField.ss: ComplexTableField.ss:
ADDITEM: 'Agregar %s' ADDITEM: 'Agregar %s'
NOITEMSFOUND: 'No items found' NOITEMSFOUND: 'Registros no encontrados'
SORTASC: 'Orden Ascendente' SORTASC: 'Orden Ascendente'
SORTDESC: 'Orden Descendente' SORTDESC: 'Orden Descendente'
ComplexTableField_popup.ss: ComplexTableField_popup.ss:
NEXT: Siguiente NEXT: Siguiente
PREVIOUS: Anterior PREVIOUS: Anterior
ConfirmedPasswordField: ConfirmedPasswordField:
ATLEAST: 'Passwords must be at least {min} characters long.' ATLEAST: 'Las constraseñas deben tener al menos {min} caracteres de longitud.'
BETWEEN: 'Passwords must be {min} to {max} characters long.' BETWEEN: 'Las contraseñas deben tener desde {min} a {max} caracteres de longitud.'
MAXIMUM: 'Passwords must be at most {max} characters long.' MAXIMUM: 'Las contraseñas deben tener como máximo {max} caracteres de longitud.'
SHOWONCLICKTITLE: 'Cambiar contraseña' SHOWONCLICKTITLE: 'Cambiar contraseña'
CreditCardField: CreditCardField:
FIRST: primero FIRST: primero
@ -109,192 +112,199 @@ es:
PLURALNAME: 'Objetos de Datos' PLURALNAME: 'Objetos de Datos'
SINGULARNAME: 'Objeto de Datos' SINGULARNAME: 'Objeto de Datos'
Date: Date:
DAY: día DAY: day
DAYS: días DAYS: days
HOUR: hora HOUR: hour
HOURS: horas HOURS: hours
LessThanMinuteAgo: 'less than a minute'
MIN: min MIN: min
MINS: mins. MINS: mins
MONTH: mes MONTH: month
MONTHS: meses MONTHS: months
SEC: seg. SEC: sec
SECS: segs. SECS: secs
TIMEDIFFAGO: '{difference} ago' TIMEDIFFAGO: 'hace {difference}'
TIMEDIFFIN: 'in {difference}' TIMEDIFFIN: 'en {difference}'
YEAR: año YEAR: year
YEARS: años YEARS: years
DateField: DateField:
NOTSET: 'sin establecer' NOTSET: 'sin establecer'
TODAY: hoy TODAY: hoy
VALIDDATEFORMAT2: 'Please enter a valid date format ({format})' VALIDDATEFORMAT2: 'Por favor, introduzca un formato de fecha válido ({format})'
VALIDDATEMAXDATE: 'Your date has to be older or matching the maximum allowed date ({date})' VALIDDATEMAXDATE: 'La fecha tiene que ser mayor o igual a la fecha máxima permitida ({date})'
VALIDDATEMINDATE: 'Your date has to be newer or matching the minimum allowed date ({date})' VALIDDATEMINDATE: 'La fecha tiene que ser posterior o coincidente a la fecha mínima permitida ({date})'
DatetimeField: DatetimeField:
NOTSET: 'Not set' NOTSET: 'No establecido'
Director: Director:
INVALID_REQUEST: 'Invalid request' INVALID_REQUEST: 'Solicitud no válida'
DropdownField: DropdownField:
CHOOSE: (Elegir) CHOOSE: (Elegir)
EmailField: EmailField:
VALIDATION: 'Please enter an email address' VALIDATION: 'Introduzca una dirección de correo electrónico'
Email_BounceRecord: Email_BounceRecord:
PLURALNAME: 'Email Bounce Records' PLURALNAME: 'Email Bounce Records'
SINGULARNAME: 'Email Bounce Record' SINGULARNAME: 'Email Bounce Record'
Enum: Enum:
ANY: Any ANY: Cualquiera
File: File:
AviType: 'AVI video file' AviType: 'Archivo de video AVI'
Content: Contenido Content: Contenido
CssType: 'CSS file' CssType: 'Archivo CSS'
DmgType: 'Apple disk image' DmgType: 'Image de disco de Apple'
DocType: 'Word document' DocType: 'Documento Word'
Filename: 'Nombre del archivo' Filename: 'Nombre del archivo'
GifType: 'GIF image - good for diagrams' GifType: 'Imagen GIF - buena para diagramas'
GzType: 'GZIP compressed file' GzType: 'Archivo comprimido GZIP'
HtlType: 'HTML file' HtlType: 'Archivo HTML'
HtmlType: 'HTML file' HtmlType: 'Archivo HTML'
INVALIDEXTENSION: 'Extension is not allowed (valid: {extensions})' INVALIDEXTENSION: 'La extensión no es permitida (válidas: {extensions})'
INVALIDEXTENSIONSHORT: 'Extension is not allowed' INVALIDEXTENSIONSHORT: 'La extensión no es permitida'
IcoType: 'Icon image' IcoType: 'Imagen Icon'
JpgType: 'JPEG image - good for photos' JpgType: 'Imagen JPEG - buena para fotos'
JsType: 'Javascript file' JsType: 'Archivo Javascript'
Mp3Type: 'MP3 audio file' Mp3Type: 'Archivo de audio MP3'
MpgType: 'MPEG video file' MpgType: 'Archivo de video MPEG'
NOFILESIZE: 'El tamaño del fichero es de cero bytes.' NOFILESIZE: 'El tamaño del fichero es de cero bytes.'
NOVALIDUPLOAD: 'File is not a valid upload' NOVALIDUPLOAD: 'El archivo no es válido para cargarlo'
Name: Nombre Name: Nombre
PLURALNAME: Archivos PLURALNAME: Archivos
PdfType: 'Adobe Acrobat PDF file' PdfType: 'Archivo PDF de Adobe Acrobat'
PngType: 'PNG image - good general-purpose format' PngType: 'Imagen PNG - buen formato de propósito general'
SINGULARNAME: Archivo SINGULARNAME: Archivo
TOOLARGE: 'Filesize is too large, maximum {size} allowed' TOOLARGE: 'El tamaño del archivo es demasiado grande, máximo permitido {size}'
TOOLARGESHORT: 'Filesize exceeds {size}' TOOLARGESHORT: 'El tamaño del archivo supera {size}'
TiffType: 'Tagged image format' TiffType: 'Formato de imagen etiquetada'
Title: Título Title: Título
WavType: 'WAV audo file' WavType: 'Archivo de audio WAV'
XlsType: 'Excel spreadsheet' XlsType: 'Hoja de cálculo Excel'
ZipType: 'ZIP compressed file' ZipType: 'Archivo comprimido ZIP'
FileIFrameField: FileIFrameField:
ATTACH: 'Attach {type}' ATTACH: 'Adjunte {type}'
ATTACHONCESAVED: '{type}s can be attached once you have saved the record for the first time.' ATTACHONCESAVED: '{type}s puede ser adjuntado una vez hayas guardado el registro por primera vez.'
ATTACHONCESAVED2: 'Files can be attached once you have saved the record for the first time.' ATTACHONCESAVED2: 'Se pueden adjuntar archivos una vez se haya guardado el registro por primera vez.'
DELETE: 'Delete {type}' DELETE: 'Borrar {type}'
DISALLOWEDFILETYPE: 'This filetype is not allowed to be uploaded' DISALLOWEDFILETYPE: 'No se permite cargar este tipo de archivo'
FILE: File FILE: Archivo
FROMCOMPUTER: 'From your Computer' FROMCOMPUTER: 'Desde tu ordenador'
FROMFILESTORE: 'From the File Store' FROMFILESTORE: 'Desde el Almacén de archivos'
NOSOURCE: 'Please select a source file to attach' NOSOURCE: 'Por favor, seleccione un archivo de origen para adjuntar'
REPLACE: 'Replace {type}' REPLACE: 'Reemplace {type}'
FileIFrameField_iframe.ss: FileIFrameField_iframe.ss:
TITLE: 'Image Uploading Iframe' TITLE: 'Imagen para cargar Iframe'
Filesystem: Filesystem:
SYNCRESULTS: 'Sync complete: {createdcount} items created, {deletedcount} items deleted' SYNCRESULTS: 'Sincronización completada: {createdcount} registros creados, {deletedcount} registros borrados'
Folder: Folder:
PLURALNAME: Folders PLURALNAME: Carpetas
SINGULARNAME: Folder SINGULARNAME: Carpeta
ForgotPasswordEmail.ss: ForgotPasswordEmail.ss:
HELLO: Hola HELLO: Hola
TEXT1: 'Aquí tiene su' TEXT1: 'Aquí tiene su'
TEXT2: 'enlace para restablecer contraseña' TEXT2: 'enlace para restablecer contraseña'
TEXT3: para TEXT3: para
Form: Form:
FIELDISREQUIRED: 'se requiere llenar el campo %s' CSRF_FAILED_MESSAGE: 'There seems to have been a technical problem. Please click the back button, refresh your browser, and try again.'
SubmitBtnLabel: Go FIELDISREQUIRED: '{name} is required'
VALIDATIONCREDITNUMBER: 'Please ensure you have entered the {number} credit card number correctly' SubmitBtnLabel: Ir
VALIDATIONCREDITNUMBER: 'Por favor, asegúrese de que ha introducido el número de tarjeta de crédito correctamente {number}'
VALIDATIONNOTUNIQUE: 'El valor que se ha introducido no es único' VALIDATIONNOTUNIQUE: 'El valor que se ha introducido no es único'
VALIDATIONPASSWORDSDONTMATCH: 'Las contraseñas no concuerdan' VALIDATIONPASSWORDSDONTMATCH: 'Las contraseñas no concuerdan'
VALIDATIONPASSWORDSNOTEMPTY: 'Las contraseñas no pueden estar vacías' VALIDATIONPASSWORDSNOTEMPTY: 'Las contraseñas no pueden estar vacías'
VALIDATIONSTRONGPASSWORD: 'Passwords must have at least one digit and one alphanumeric character' VALIDATIONSTRONGPASSWORD: 'Las contraseñas deben tener al menos un dígito y un carácter alfanumérico'
VALIDATOR: Validador VALIDATOR: Validador
VALIDCURRENCY: 'Please enter a valid currency' VALIDCURRENCY: 'Por favor, introduzca una moneda válida.'
FormField: FormField:
Example: 'e.g. %s'
NONE: ninguna NONE: ninguna
GridAction: GridAction:
DELETE_DESCRIPTION: Delete DELETE_DESCRIPTION: Borrar
Delete: Delete Delete: Borrar
UnlinkRelation: Unlink UnlinkRelation: Desenlazar
GridField: GridField:
Add: 'Add {name}' Add: 'Añadir {name}'
Filter: Filter Filter: Filtro
FilterBy: 'Filter by ' FilterBy: 'Filtrar por'
Find: Find Find: Buscar
LEVELUP: 'Level up' LEVELUP: 'Subir nivel'
LinkExisting: 'Link Existing' LinkExisting: 'Enlace Existente'
NewRecord: 'New %s' NewRecord: 'Nuevo %s'
NoItemsFound: 'No items found' NoItemsFound: 'No se encontraron registros'
PRINTEDAT: 'Printed at' PRINTEDAT: 'Impreso en'
PRINTEDBY: 'Printed by' PRINTEDBY: 'Impreso por'
PlaceHolder: 'Find {type}' PlaceHolder: 'Buscar {type}'
PlaceHolderWithLabels: 'Find {type} by {name}' PlaceHolderWithLabels: 'Buscar {type} por {name}'
RelationSearch: 'Relation search' RelationSearch: 'Búsqueda de relación'
ResetFilter: Reset ResetFilter: Restaurar
GridFieldAction_Delete: GridFieldAction_Delete:
DeletePermissionsFailure: 'No delete permissions' DeletePermissionsFailure: 'Sin permiso para borrar'
EditPermissionsFailure: 'No permission to unlink record'
GridFieldDetailForm: GridFieldDetailForm:
CancelBtn: Cancel CancelBtn: Cancelar
Create: Create Create: Crear
Delete: Delete Delete: Borrar
DeletePermissionsFailure: 'No delete permissions' DeletePermissionsFailure: 'Sin permiso para borrar'
Deleted: 'Deleted %s %s' Deleted: 'Borrado %s %s'
Save: Save Save: Guardar
Saved: 'Saved %s %s' Saved: 'Saved {name} {link}'
GridFieldEditButton.ss:
EDIT: Edit
GridFieldItemEditView.ss: null GridFieldItemEditView.ss: null
Group: Group:
AddRole: 'Add a role for this group' AddRole: 'Añadir una regla a este grupo'
Code: 'Código de grupo' Code: 'Código de grupo'
DefaultGroupTitleAdministrators: Administrators DefaultGroupTitleAdministrators: Administradores
DefaultGroupTitleContentAuthors: 'Content Authors' DefaultGroupTitleContentAuthors: 'Autores de contenido'
Description: Descripción Description: Descripción
GroupReminder: 'If you choose a parent group, this group will take all it''s roles' GroupReminder: 'Si selecciona un grupo padre, este grupo tomará todas sus funciones'
Locked: '¿Bloqueado?' Locked: '¿Bloqueado?'
NoRoles: 'No roles found' NoRoles: 'Reglas no encontradas'
PLURALNAME: Groups PLURALNAME: Grupos
Parent: 'Grupo Padre' Parent: 'Grupo Padre'
RolesAddEditLink: 'Manage roles' RolesAddEditLink: 'Administrar reglas'
SINGULARNAME: Group SINGULARNAME: Grupo
Sort: 'Orden de Clasificación' Sort: 'Orden de Clasificación'
has_many_Permissions: Permisos has_many_Permissions: Permisos
many_many_Members: Miembros many_many_Members: Miembros
GroupImportForm: GroupImportForm:
Help1: '<p>Import one or more groups in <em>CSV</em> format (comma-separated values). <small><a href="#" class="toggle-advanced">Show advanced usage</a></small></p>' Help1: '<p>Importar uno o más grupos en formato <em>CSV</em> (valores separados por coma). <small><a href="#" class="toggle-advanced">Mostrar uso avanzado</a></small></p>'
Help2: '<div class="advanced"> <h4>Advanced usage</h4> <ul> <li>Allowed columns: <em>%s</em></li> <li>Existing groups are matched by their unique <em>Code</em> value, and updated with any new values from the imported file</li> <li>Group hierarchies can be created by using a <em>ParentCode</em> column.</li> <li>Permission codes can be assigned by the <em>PermissionCode</em> column. Existing permission codes are not cleared.</li> </ul></div>' Help2: "<div class=\"advanced\">\\n<h4>Uso avanzado</h4>\\n<ul>\\n<li>Columnas permitidas: <em>%s</em></li>\\n<li>Grupos existentes son relacionados por su valor <em>Code</em>, y actualizados con nuevos valores desde el archivo importado</li>\\n<li>Jerarquías de grupos pueden ser creadas usando una columna <em>ParentCode</em>.</li>\\n<li>Códigos de permiso pueden ser asignados por la columna <em>PermissionCode</em>. Códigos de permisos existentes no son borrados.</li>\\n</ul>\\n</div>"
ResultCreated: 'Created {count} groups' ResultCreated: 'Creados {count} grupos'
ResultDeleted: 'Se eliminaron %d grupos' ResultDeleted: 'Se eliminaron %d grupos'
ResultUpdated: 'Updated %d groups' ResultUpdated: 'Actualizados grupos %d'
Hierarchy: Hierarchy:
InfiniteLoopNotAllowed: 'Infinite loop found within the "{type}" hierarchy. Please change the parent to resolve this' InfiniteLoopNotAllowed: 'Bucle infinito encontrado dentro de la jerarquía "{type}". Por favor, cambie el padre para resolver el problema'
HtmlEditorField: HtmlEditorField:
ADDURL: 'Add URL' ADDURL: 'Añadir URL'
ADJUSTDETAILSDIMENSIONS: 'Details &amp; dimensions' ADJUSTDETAILSDIMENSIONS: 'Detalles &amp; dimensiones'
ANCHORVALUE: Ancla ANCHORVALUE: Ancla
BUTTONINSERT: Insert BUTTONADDURL: 'Add url'
BUTTONINSERT: Insertar
BUTTONINSERTLINK: 'Insertar enlace' BUTTONINSERTLINK: 'Insertar enlace'
BUTTONREMOVELINK: 'Eliminar enlace' BUTTONREMOVELINK: 'Eliminar enlace'
BUTTONUpdate: Update BUTTONUpdate: Actualizar
CAPTIONTEXT: 'Caption text' CAPTIONTEXT: 'Texto del título'
CSSCLASS: 'Alineación / estilo' CSSCLASS: 'Alineación / estilo'
CSSCLASSCENTER: 'Centrado, en si mismo' CSSCLASSCENTER: 'Centrado, en si mismo'
CSSCLASSLEFT: 'A la izquierda, con el texto flotando alrededor.' CSSCLASSLEFT: 'A la izquierda, con el texto flotando alrededor.'
CSSCLASSLEFTALONE: 'En la izquierda, en el suyo.' CSSCLASSLEFTALONE: 'En la izquierda, en el suyo.'
CSSCLASSRIGHT: 'A la derecha, con el texto flotando alrededor.' CSSCLASSRIGHT: 'A la derecha, con el texto flotando alrededor.'
DETAILS: Details DETAILS: Detalles
EMAIL: 'Dirección de E-mail' EMAIL: 'Dirección de E-mail'
FILE: Archivo FILE: Archivo
FOLDER: Carpeta FOLDER: Carpeta
FROMCMS: 'From the CMS' FROMCMS: 'Desde el CMS'
FROMCOMPUTER: 'From your computer' FROMCOMPUTER: 'Desde tu ordenador'
FROMWEB: 'From the web' FROMWEB: 'Desde la web'
FindInFolder: 'Find in Folder' FindInFolder: 'Buscar en carpeta'
IMAGEALT: 'Alternative text (alt)' IMAGEALT: 'Texto alternativo (alt)'
IMAGEALTTEXT: 'Alternative text (alt) - shown if image cannot be displayed' IMAGEALTTEXT: 'Texto alternativo (alt) - es mostrado si la imagen no puede ser visualizada'
IMAGEALTTEXTDESC: 'Shown to screen readers or if image can not be displayed' IMAGEALTTEXTDESC: 'Mostrar a los lectores de pantalla o si la imagen no se puede visualizar'
IMAGEDIMENSIONS: Dimensiones IMAGEDIMENSIONS: Dimensiones
IMAGEHEIGHTPX: Alto IMAGEHEIGHTPX: Alto
IMAGETITLE: 'Title text (tooltip) - for additional information about the image' IMAGETITLE: 'Texto del título (tooltip) - para obtener más información acerca de la imagen'
IMAGETITLETEXT: 'Title text (tooltip)' IMAGETITLETEXT: 'Texto del título (tooltip)'
IMAGETITLETEXTDESC: 'For additional information about the image' IMAGETITLETEXTDESC: 'Para obtener información adicional acerca de la imagen'
IMAGEWIDTHPX: Ancho IMAGEWIDTHPX: Ancho
INSERTMEDIA: 'Insert Media' INSERTMEDIA: 'Insertar Media'
LINK: 'Insertar/editar enlace para el texto resaltado' LINK: 'Insertar/editar enlace para el texto resaltado'
LINKANCHOR: 'Ancla en esta página' LINKANCHOR: 'Ancla en esta página'
LINKDESCR: 'Descripción del Enlace' LINKDESCR: 'Descripción del Enlace'
@ -306,55 +316,58 @@ es:
LINKTO: 'Enlazar a' LINKTO: 'Enlazar a'
PAGE: Página PAGE: Página
URL: URL URL: URL
URLNOTANOEMBEDRESOURCE: 'The URL ''{url}'' could not be turned into a media resource.' URLNOTANOEMBEDRESOURCE: 'La URL ''{url}'' ''no se puede convertir en un recurso multimedia.'
UpdateMEDIA: 'Update Media' UpdateMEDIA: 'Actualizar Media'
Image: Image:
PLURALNAME: Files PLURALNAME: Archivos
SINGULARNAME: File SINGULARNAME: Archivo
ImageField: ImageField:
IMAGE: Image IMAGE: Imagen
Image_Cached: Image_Cached:
PLURALNAME: Files PLURALNAME: Archivos
SINGULARNAME: File SINGULARNAME: Archivo
Image_iframe.ss: Image_iframe.ss:
TITLE: 'Iframe para agregar imágenes' TITLE: 'Iframe para agregar imágenes'
LeftAndMain: LeftAndMain:
CANT_REORGANISE: 'You do not have permission to alter Top level pages. Your change was not saved.' CANT_REORGANISE: 'Usted no tiene permiso para modificar las páginas de nivel superior. Su modificación no se ha guardado.'
DELETED: Deleted. DELETED: Borrado
DropdownBatchActionsDefault: Actions DropdownBatchActionsDefault: Acciones
HELP: Ayuda HELP: Ayuda
PAGETYPE: 'Tipo de página:' PAGETYPE: 'Tipo de página:'
PERMAGAIN: 'Ha sido desconectado del CMS. Si quiere volver a entrar, introduzca su nombre de usuario y contraseña a continuación.' PERMAGAIN: 'Ha sido desconectado del CMS. Si quiere volver a entrar, introduzca su nombre de usuario y contraseña a continuación.'
PERMALREADY: 'Lamentablemente no puede acceder a esta parte del CMS. Si quiere entrar como alguien distinto, hágalo a continuación' PERMALREADY: 'Lamentablemente no puede acceder a esta parte del CMS. Si quiere entrar como alguien distinto, hágalo a continuación'
PERMDEFAULT: 'Introduzca su correo electrónico y su contraseña para acceder al CMS.' PERMDEFAULT: 'Introduzca su correo electrónico y su contraseña para acceder al CMS.'
PLEASESAVE: 'Por favor Guarde la Página: Esta página no se ha podido actualizar porque aún no ha sido salvada.' PLEASESAVE: 'Por favor Guarde la Página: Esta página no se ha podido actualizar porque aún no ha sido salvada.'
PreviewButton: Preview PreviewButton: 'Vista previa'
REORGANISATIONSUCCESSFUL: 'Reorganised the site tree successfully.' REORGANISATIONSUCCESSFUL: 'Reorganizado el árbol del sitio con éxito.'
SAVEDUP: Saved. SAVEDUP: Guardado
VersionUnknown: unknown ShowAsList: 'show as list'
TooManyPages: 'Too many pages'
ValidationError: 'Validation error'
VersionUnknown: Unknown
LeftAndMain_Menu.ss: LeftAndMain_Menu.ss:
Hello: Hi Hello: Hola
LOGOUT: 'Log out' LOGOUT: 'Finalizar la sesión'
LoginAttempt: LoginAttempt:
Email: 'Correo electrónico' Email: 'Correo electrónico'
IP: 'Dirección IP' IP: 'Dirección IP'
PLURALNAME: 'Login Attempts' PLURALNAME: 'Intentos de ingreso'
SINGULARNAME: 'Login Attempt' SINGULARNAME: 'Intento de ingreso'
Status: Estado Status: Estado
Member: Member:
ADDGROUP: 'Add group' ADDGROUP: 'Añadir grupo'
BUTTONCHANGEPASSWORD: 'Cambiar Contraseña' BUTTONCHANGEPASSWORD: 'Cambiar Contraseña'
BUTTONLOGIN: 'Inicie Sesión' BUTTONLOGIN: 'Inicie Sesión'
BUTTONLOGINOTHER: 'Inicie sesión como otra persona' BUTTONLOGINOTHER: 'Inicie sesión como otra persona'
BUTTONLOSTPASSWORD: 'He perdido mi contraseña' BUTTONLOSTPASSWORD: 'He perdido mi contraseña'
CANTEDIT: 'You don''t have permission to do that' CANTEDIT: 'No tiene permiso para hacer eso'
CONFIRMNEWPASSWORD: 'Confirmar Nueva Contraseña' CONFIRMNEWPASSWORD: 'Confirmar Nueva Contraseña'
CONFIRMPASSWORD: 'Confirmar Contraseña' CONFIRMPASSWORD: 'Confirmar Contraseña'
DATEFORMAT: 'Date format' DATEFORMAT: 'Formato de fecha'
DefaultAdminFirstname: 'Default Admin' DefaultAdminFirstname: 'Administrador por defecto'
DefaultDateTime: default DefaultDateTime: 'por defecto'
EMAIL: E-mail EMAIL: E-mail
EMPTYNEWPASSWORD: 'The new password can''t be empty, please try again' EMPTYNEWPASSWORD: 'La nueva contraseña no puede estar vacía, por favor inténtalo de nuevo'
ENTEREMAIL: 'Por favor, introduce un correo electrónico para obtener un enlace con el que cambiar la contraseña' ENTEREMAIL: 'Por favor, introduce un correo electrónico para obtener un enlace con el que cambiar la contraseña'
ERRORLOCKEDOUT: 'Su cuenta ha sido inhabilitada temporalmente porque ha habido demasiados intentos fallidos de conectarse. Por favor, intente de nuevo en 20 minutos.' ERRORLOCKEDOUT: 'Su cuenta ha sido inhabilitada temporalmente porque ha habido demasiados intentos fallidos de conectarse. Por favor, intente de nuevo en 20 minutos.'
ERRORNEWPASSWORD: 'Ha introducido su nueva contraseña de distinta manera, intente de nuevo' ERRORNEWPASSWORD: 'Ha introducido su nueva contraseña de distinta manera, intente de nuevo'
@ -362,8 +375,8 @@ es:
ERRORWRONGCRED: 'No parece ser la dirección de e-mail o contraseña correcta. Por favor intente de nuevo.' ERRORWRONGCRED: 'No parece ser la dirección de e-mail o contraseña correcta. Por favor intente de nuevo.'
FIRSTNAME: Nombre(s) FIRSTNAME: Nombre(s)
INTERFACELANG: 'Lenguaje de la Interfaz' INTERFACELANG: 'Lenguaje de la Interfaz'
INVALIDNEWPASSWORD: 'We couldn''t accept that password: {password}' INVALIDNEWPASSWORD: 'No podemos aceptar este password: {password}'
LOGGEDINAS: 'You''re logged in as {name}.' LOGGEDINAS: 'Estás conectado como {name}.'
NEWPASSWORD: 'Nueva Contraseña' NEWPASSWORD: 'Nueva Contraseña'
PASSWORD: Contraseña PASSWORD: Contraseña
PLURALNAME: Miembros PLURALNAME: Miembros
@ -372,10 +385,10 @@ es:
SUBJECTPASSWORDCHANGED: 'Su contraseña ha sido cambiada' SUBJECTPASSWORDCHANGED: 'Su contraseña ha sido cambiada'
SUBJECTPASSWORDRESET: 'Enlace para restaurar su contraseña' SUBJECTPASSWORDRESET: 'Enlace para restaurar su contraseña'
SURNAME: Apellidos SURNAME: Apellidos
TIMEFORMAT: 'Time format' TIMEFORMAT: 'Formato de tiempo'
VALIDATIONMEMBEREXISTS: 'Ya existe un miembro con este email.' VALIDATIONMEMBEREXISTS: 'Ya existe un miembro con este email.'
ValidationIdentifierFailed: 'Can''t overwrite existing member #{id} with identical identifier ({name} = {value}))' ValidationIdentifierFailed: 'No se puede sobrescribir el miembro existente #{id} con identificador idéntico ({name} = {value}))'
WELCOMEBACK: 'Welcome Back, {firstname}' WELCOMEBACK: 'Bienvenido de nuevo, {firstname}'
YOUROLDPASSWORD: 'Su contraseña anterior' YOUROLDPASSWORD: 'Su contraseña anterior'
belongs_many_many_Groups: Grupos belongs_many_many_Groups: Grupos
db_LastVisited: 'Fecha de la Última Visita' db_LastVisited: 'Fecha de la Última Visita'
@ -387,98 +400,99 @@ es:
MemberAuthenticator: MemberAuthenticator:
TITLE: 'E-mail &amp; Contraseña' TITLE: 'E-mail &amp; Contraseña'
MemberDatetimeOptionsetField: MemberDatetimeOptionsetField:
AMORPM: 'AM (Ante meridiem) or PM (Post meridiem)' AMORPM: 'AM (antes del mediodía) o PM (después del mediodía)'
'APPLY FILTER': 'Apply Filter' 'APPLY FILTER': 'Aplicar filtro'
Custom: Custom Custom: Personalizable
DATEFORMATBAD: 'Date format is invalid' DATEFORMATBAD: 'El formato de fecha es inválido'
DAYNOLEADING: 'Day of month without leading zero' DAYNOLEADING: 'Día del mes sin cero inicial'
DIGITSDECFRACTIONSECOND: 'One or more digits representing a decimal fraction of a second' DIGITSDECFRACTIONSECOND: 'Uno o más dígitos representando una fracción decimal de un segundo'
FOURDIGITYEAR: 'Four-digit year' FOURDIGITYEAR: 'Año de cuatro dígitos'
FULLNAMEMONTH: 'Full name of month (e.g. June)' FULLNAMEMONTH: 'Nombre completo del mes (ej.Junio)'
HOURNOLEADING: 'Hour without leading zero' HOURNOLEADING: 'Hora sin ceros a la izquierda'
MINUTENOLEADING: 'Minute without leading zero' MINUTENOLEADING: 'Minutos sin cero inicial'
MONTHNOLEADING: 'Month digit without leading zero' MONTHNOLEADING: 'Dígitos mes sin cero inicial'
Preview: Preview Preview: 'Vista previa'
SHORTMONTH: 'Short name of month (e.g. Jun)' SHORTMONTH: 'Nombre abreviado del mes (por ejemplo, Jun)'
TOGGLEHELP: 'Toggle formatting help' TOGGLEHELP: 'Cambia el formato de ayuda'
TWODIGITDAY: 'Two-digit day of month' TWODIGITDAY: 'Día de dos dígitos del mes'
TWODIGITHOUR: 'Two digits of hour (00 through 23)' TWODIGITHOUR: 'Dos dígitos de hora (00 a 23)'
TWODIGITMINUTE: 'Two digits of minute (00 through 59)' TWODIGITMINUTE: 'Dos dígitos en minutos (00 a 59)'
TWODIGITMONTH: 'Two-digit month (01=January, etc.)' TWODIGITMONTH: 'Meses con dos dígitos (01=Enero,etc.)'
TWODIGITSECOND: 'Two digits of second (00 through 59)' TWODIGITSECOND: 'Segundos con dos dígitos (00 a 59)'
TWODIGITYEAR: 'Two-digit year' TWODIGITYEAR: 'Año de dos dígitos'
Toggle: 'Show formatting help'
MemberImportForm: MemberImportForm:
Help1: '<p>Import users in <em>CSV format</em> (comma-separated values). <small><a href="#" class="toggle-advanced">Show advanced usage</a></small></p>' Help1: '<p>Importar usuarios en <em>formato CSV</em> (valores separados por coma). <small><a href="#" class="toggle-advanced">Mostrar uso avanzado</a></small></p>'
Help2: '<div class="advanced"> <h4>Advanced usage</h4> <ul> <li>Allowed columns: <em>%s</em></li> <li>Existing users are matched by their unique <em>Code</em> property, and updated with any new values from the imported file.</li> <li>Groups can be assigned by the <em>Groups</em> column. Groups are identified by their <em>Code</em> property, multiple groups can be separated by comma. Existing group memberships are not cleared.</li> </ul></div>' Help2: "<div class=\"advanced\">\\n<h4>Uso avanzado</h4>\\n<ul>\\n<li>Columnas permitidas: <em>%s</em></li>\\n<li>Usuarios existentes son relacionados por su propiedad <em>Code</em>, y actualizados con nuevos valores desde el archivo importado.</li>\\n<li>Los grupos pueden ser asignaods por la columna <em>Groups</em>. Los grupos son identificados por su propiedad <em>Code</em>,\\nmúltiples grupos pueden ser separados por comas. Los grupos de miembros existentes no son borrados.</li>\\n</ul>\\n</div>"
ResultCreated: 'Created {count} members' ResultCreated: 'Creados {count} miembros'
ResultDeleted: 'Se eliminaron %d miembros' ResultDeleted: 'Se eliminaron %d miembros'
ResultNone: 'No changes' ResultNone: 'No hay cambios'
ResultUpdated: 'Updated {count} members' ResultUpdated: 'Actualizados {count} miembros'
MemberPassword: MemberPassword:
PLURALNAME: 'Member Passwords' PLURALNAME: 'Contraseñas de los miembros'
SINGULARNAME: 'Member Password' SINGULARNAME: 'Contraseña del miembro'
MemberTableField: null MemberTableField: null
ModelAdmin: ModelAdmin:
DELETE: Eliminar DELETE: Eliminar
DELETEDRECORDS: 'Deleted {count} records.' DELETEDRECORDS: 'Borrados {count} registros.'
EMPTYBEFOREIMPORT: 'Clear Database before import' EMPTYBEFOREIMPORT: 'Replace data'
IMPORT: 'Importar desde CSV' IMPORT: 'Importar desde CSV'
IMPORTEDRECORDS: 'Imported {count} records.' IMPORTEDRECORDS: 'Importados {count} registros.'
NOCSVFILE: 'Por favor, selecciona un archivo CSV para importar' NOCSVFILE: 'Por favor, selecciona un archivo CSV para importar'
NOIMPORT: 'Nada para importar' NOIMPORT: 'Nada para importar'
RESET: Reset RESET: Restablecer
Title: 'Data Models' Title: 'Modelos de datos'
UPDATEDRECORDS: 'Updated {count} records.' UPDATEDRECORDS: 'Actualizados {count} registros.'
ModelAdmin_ImportSpec.ss: ModelAdmin_ImportSpec.ss:
IMPORTSPECFIELDS: 'Database columns' IMPORTSPECFIELDS: 'Columnas de la base de datos'
IMPORTSPECLINK: 'Show Specification for %s' IMPORTSPECLINK: 'Mostrar especificación para %s'
IMPORTSPECRELATIONS: Relations IMPORTSPECRELATIONS: Relaciones
IMPORTSPECTITLE: 'Specification for %s' IMPORTSPECTITLE: 'Especificación para %s'
ModelAdmin_Tools.ss: ModelAdmin_Tools.ss:
FILTER: Filter FILTER: Filtrar
IMPORT: Import IMPORT: Importar
ModelSidebar.ss: ModelSidebar.ss:
IMPORT_TAB_HEADER: Import IMPORT_TAB_HEADER: Importar
SEARCHLISTINGS: Search SEARCHLISTINGS: Buscar
MoneyField: MoneyField:
FIELDLABELAMOUNT: Amount FIELDLABELAMOUNT: Cantidad
FIELDLABELCURRENCY: Currency FIELDLABELCURRENCY: Moneda
NullableField: NullableField:
IsNullLabel: 'Is Null' IsNullLabel: 'Es Nulo'
NumericField: NumericField:
VALIDATION: '''{value}'' is not a number, only numbers can be accepted for this field' VALIDATION: '''{value}'' no es un número, sólo números pueden ser aceptados para este campo'
Pagination: Pagination:
Page: Page Page: Página
View: View View: Vista
Permission: Permission:
AdminGroup: Administrator AdminGroup: Administrador
CMS_ACCESS_CATEGORY: 'CMS Access' CMS_ACCESS_CATEGORY: 'Acceso al CMS'
FULLADMINRIGHTS: 'Todos los derechos administrativos' FULLADMINRIGHTS: 'Todos los derechos administrativos'
FULLADMINRIGHTS_HELP: 'Implies and overrules all other assigned permissions.' FULLADMINRIGHTS_HELP: 'Implica y anula todos los demás permisos asignados.'
PLURALNAME: Permissions PLURALNAME: Permisos
SINGULARNAME: Permission SINGULARNAME: Permiso
PermissionCheckboxSetField: PermissionCheckboxSetField:
AssignedTo: 'assigned to "{title}"' AssignedTo: 'asignado a "{title}"'
FromGroup: 'inherited from group "{title}"' FromGroup: 'heredado desde el grupo "{title}"'
FromRole: 'inherited from role "{title}"' FromRole: 'heredado desde la regla "{title}"'
FromRoleOnGroup: 'inherited from role "%s" on group "%s"' FromRoleOnGroup: 'heredado desde la regla "%s" del grupo "%s"'
PermissionRole: PermissionRole:
OnlyAdminCanApply: 'Only admin can apply' OnlyAdminCanApply: 'Sólo el administrador puede aplicar'
PLURALNAME: Roles PLURALNAME: Reglas
SINGULARNAME: Role SINGULARNAME: Regla
Title: Title Title: Título
PermissionRoleCode: PermissionRoleCode:
PLURALNAME: 'Permission Role Cods' PLURALNAME: 'Códigos de las reglas de permisos'
SINGULARNAME: 'Permission Role Code' SINGULARNAME: 'Códigos de las regla de permisos'
Permissions: Permissions:
PERMISSIONS_CATEGORY: 'Roles and access permissions' PERMISSIONS_CATEGORY: 'Reglas y permisos de acceso'
UserPermissionsIntro: 'Assigning groups to this user will adjust the permissions they have. See the groups section for details of permissions on individual groups.' UserPermissionsIntro: 'Asignar grupos a este usuario ajustará los permisos que tienen. Vea la sección de grupos para obtener información sobre permisos en grupos individuales.'
PhoneNumberField: PhoneNumberField:
VALIDATION: 'Por favor introduzca un número de teléfono válido' VALIDATION: 'Por favor introduzca un número de teléfono válido'
RelationComplexTableField.ss: RelationComplexTableField.ss:
ADD: Añadir ADD: Añadir
CSVEXPORT: 'Export to CSV' CSVEXPORT: 'Exportar a CSV'
NOTFOUND: 'No items found' NOTFOUND: 'Registros no encontrados'
Security: Security:
ALREADYLOGGEDIN: 'No tiene acceso a esta página. Si posee otra cuenta con los privilegios para acceder a esta página, puede iniciar sesión a continuación.' ALREADYLOGGEDIN: 'No tiene acceso a esta página. Si posee otra cuenta con los privilegios para acceder a esta página, puede iniciar sesión a continuación.'
BUTTONSEND: 'Envíenme el enlace para restaurar la contraseña' BUTTONSEND: 'Envíenme el enlace para restaurar la contraseña'
@ -489,88 +503,106 @@ es:
LOGGEDOUT: 'Ha terminado su sesión. Si desea iniciar sesión nuevamente, introduzca sus datos de acreditación a continuación.' LOGGEDOUT: 'Ha terminado su sesión. Si desea iniciar sesión nuevamente, introduzca sus datos de acreditación a continuación.'
LOGIN: Entrar LOGIN: Entrar
NOTEPAGESECURED: 'Esa página está protegida. Introduzca sus datos de acreditación a continuación y lo enviaremos a ella en un momento.' NOTEPAGESECURED: 'Esa página está protegida. Introduzca sus datos de acreditación a continuación y lo enviaremos a ella en un momento.'
NOTERESETLINKINVALID: '<p>The password reset link is invalid or expired.</p><p>You can request a new one <a href="{link1}">here</a> or change your password after you <a href="{link2}">logged in</a>.</p>' NOTERESETLINKINVALID: '<p>El enlace para restablecer la contraseña es inválido o ha expirado.</p><p>Usted puede solicitar uno nuevo <a href="{link1}">aqui</a> o cambiar su contraseña después de que se haya <a href="{link2}">conectado</a>.</p>'
NOTERESETPASSWORD: 'Introduzca su dirección de e-mail, y le enviaremos un enlace, con el cual podrá restaurar su contraseña' NOTERESETPASSWORD: 'Introduzca su dirección de e-mail, y le enviaremos un enlace, con el cual podrá restaurar su contraseña'
PASSWORDSENTHEADER: 'Password reset link sent to ''{email}''' PASSWORDSENTHEADER: 'Un enlace para restablecer la contraseña ha sido enviado a ''{email}'''
PASSWORDSENTTEXT: 'Thank you! A reset link has been sent to ''{email}'', provided an account exists for this email address.' PASSWORDSENTTEXT: 'Gracias! Un enlace para restablecer la contraseña ha sido enviado a ''{email}'', siempre que una cuenta exista para la dirección de email indicada.'
SecurityAdmin: SecurityAdmin:
ACCESS_HELP: 'Allow viewing, adding and editing users, as well as assigning permissions and roles to them.' ACCESS_HELP: 'Permitir ver, añadir y editar usuarios, así como asignarles permisos y reglas.'
APPLY_ROLES: 'Apply roles to groups' APPLY_ROLES: 'Aplicar reglas a grupos'
APPLY_ROLES_HELP: 'Ability to edit the roles assigned to a group. Requires the "Access to ''Users'' section" permission.' APPLY_ROLES_HELP: 'Posibilidad de editar las reglas asignados a un grupo. Requiere el permiso de "acceso a la sección ''Usuarios''" .'
EDITPERMISSIONS: 'Editar permisos y direcciones IP de cada grupo' EDITPERMISSIONS: 'Editar permisos y direcciones IP de cada grupo'
EDITPERMISSIONS_HELP: 'Ability to edit Permissions and IP Addresses for a group. Requires the "Access to ''Security'' section" permission.' EDITPERMISSIONS_HELP: 'Posibilidad de editar los permisos y direcciones IP para un grupo. Requiere el permiso de "Acceso a la sección ''Seguridad '' ".'
GROUPNAME: 'Nombre del grupo' GROUPNAME: 'Nombre del grupo'
IMPORTGROUPS: 'Import groups' IMPORTGROUPS: 'Importar grupos'
IMPORTUSERS: 'Import users' IMPORTUSERS: 'Importar usuarios'
MEMBERS: Miembros MEMBERS: Miembros
MENUTITLE: Security MENUTITLE: Seguridad
MemberListCaution: 'Caution: Removing members from this list will remove them from all groups and the database' MemberListCaution: 'Precaución: Borrar miembros de esta lista también los eliminará de todos los grupos y la base de datos'
NEWGROUP: 'Nuevo grupo' NEWGROUP: 'Nuevo grupo'
PERMISSIONS: Permisos PERMISSIONS: Permisos
ROLES: Roles ROLES: Reglas
ROLESDESCRIPTION: 'Roles are predefined sets of permissions, and can be assigned to groups.<br />They are inherited from parent groups if required.' ROLESDESCRIPTION: 'Las reglas son conjuntos predefinidos de permisos, y pueden ser asignadas a grupos.<br /> Pueden ser heredadas desde grupos padres si es necesario.'
TABROLES: Roles TABROLES: Reglas
Users: Users Users: Usuarios
SecurityAdmin_MemberImportForm: SecurityAdmin_MemberImportForm:
BtnImport: 'Import from CSV' BtnImport: 'Importar desde CSV'
FileFieldLabel: 'CSV File <small>(Allowed extensions: *.csv)</small>' FileFieldLabel: 'Archivo CSV <small>(Permitidas extensiones: *.csv)</small>'
SilverStripeNavigator: SilverStripeNavigator:
Edit: Edit Auto: Auto
ChangeViewMode: 'Change view mode'
Desktop: Desktop
DualWindowView: 'Dual Window'
Edit: Editar
EditView: 'Edit mode'
Mobile: Mobile
PreviewState: 'Preview State'
PreviewView: 'Preview mode'
Responsive: Responsive
SplitView: 'Split mode'
Tablet: Tablet
ViewDeviceWidth: 'Select a preview width'
Width: width
SimpleImageField: SimpleImageField:
NOUPLOAD: 'No se han agregado imágenes' NOUPLOAD: 'No se han agregado imágenes'
SiteTree: SiteTree:
TABMAIN: Principal TABMAIN: Principal
TableField: TableField:
ISREQUIRED: 'In %s ''%s'' is required' ISREQUIRED: 'En %s ''%s'' es requerido'
TableField.ss: TableField.ss:
ADD: 'Añadir una nueva línea' ADD: 'Añadir una nueva línea'
ADDITEM: 'Add %s' ADDITEM: 'Añadir %s'
TableListField: TableListField:
CSVEXPORT: 'Exportar a CSV' CSVEXPORT: 'Exportar a CSV'
PRINT: Imprimir PRINT: Imprimir
Print: Print Print: Imprimir
SELECT: 'Select:' SELECT: Seleccionar
TableListField.ss: TableListField.ss:
NOITEMSFOUND: 'No items found' NOITEMSFOUND: 'Registros no encontrados'
SORTASC: 'Sort in ascending order' SORTASC: 'Clasificar en orden ascendente'
SORTDESC: 'Sort in descending order' SORTDESC: 'Clasificar en orden descendente'
TableListField_PageControls.ss: TableListField_PageControls.ss:
DISPLAYING: Displaying DISPLAYING: Mostrando
OF: of OF: de
TO: to TO: a
VIEWFIRST: 'Ver primero' VIEWFIRST: 'Ver primero'
VIEWLAST: 'Ver último' VIEWLAST: 'Ver último'
VIEWNEXT: 'Ver siguiente' VIEWNEXT: 'Ver siguiente'
VIEWPREVIOUS: 'Ver anterior' VIEWPREVIOUS: 'Ver anterior'
TimeField: TimeField:
VALIDATEFORMAT: 'Please enter a valid time format ({format})' VALIDATEFORMAT: 'Por favor, introduzca un formato de tiempo válido ({format})'
ToggleField: ToggleField:
LESS: menos LESS: menos
MORE: más MORE: más
UploadField: UploadField:
ATTACHFILE: 'Attach a file' ATTACHFILE: 'Adjuntar un archivo'
ATTACHFILES: 'Attach files' ATTACHFILES: 'Adjuntar ficheros'
AttachFile: 'Attach file(s)' AttachFile: 'Adjuntar archivo(s)'
DELETE: 'Delete from files' CHOOSEANOTHERFILE: 'Choose another file'
DELETEINFO: 'Permanently delete this file from the file store' CHOOSEANOTHERINFO: 'Replace this file with another one from the file store'
DOEDIT: Save DELETE: 'Borrar desde archivos'
DROPFILE: 'drop a file' DELETEINFO: 'Borrar permanentemente este archivo del almacén de archivos'
DROPFILES: 'drop files' DOEDIT: Guardar
Dimensions: Dimensions DROPFILE: 'Soltar un fichero'
EDIT: Edit DROPFILES: 'soltar archivos'
EDITINFO: 'Edit this file' Dimensions: Dimensiones
FIELDNOTSET: 'File information not found' EDIT: Editar
FROMCOMPUTER: 'From your computer' EDITINFO: 'Editar este archivo'
FROMCOMPUTERINFO: 'Select from files' FIELDNOTSET: 'No ha sido encontrada la información del archivo'
FROMFILES: 'From files' FROMCOMPUTER: 'Desde tu ordenador'
HOTLINKINFO: 'Info: This image will be hotlinked. Please ensure you have permissions from the original site creator to do so.' FROMCOMPUTERINFO: 'Seleccione desde los archivos'
MAXNUMBEROFFILES: 'Max number of {count} file(s) exceeded.' FROMFILES: 'Desde archivos'
MAXNUMBEROFFILESSHORT: 'Can only upload {count} files' HOTLINKINFO: 'Información: Esta imagen será hotlinked. Asegúrese de que tiene los permisos del sitio original del creador para hacerlo.'
REMOVE: Remove MAXNUMBEROFFILES: 'El número máximo de {count} archivo(s) ha sido excedido.'
REMOVEERROR: 'Error removing file' MAXNUMBEROFFILESONE: 'Can only upload one file'
REMOVEINFO: 'Remove this file from here, but do not delete it from the file store' MAXNUMBEROFFILESSHORT: 'Sólo puede cargar {count} archivos'
STARTALL: 'Start all' OVERWRITEWARNING: 'File with the same name already exists'
STARTALLINFO: 'Start all uploads' REMOVE: Eliminar
Saved: Saved REMOVEERROR: 'Error borrando el fichero'
REMOVEINFO: 'Eliminar este archivo de este lugar, pero no eliminarlo del almacén de archivos'
STARTALL: 'Iniciar todos'
STARTALLINFO: 'Iniciar todas las subidas de archivos'
Saved: Guardado
UPLOADSINTO: 'saves into /{path}'
Versioned: Versioned:
has_many_Versions: Versiones has_many_Versions: Versiones

View File

@ -2,6 +2,7 @@ es_AR:
AssetAdmin: AssetAdmin:
ALLOWEDEXTS: 'Allowed extensions' ALLOWEDEXTS: 'Allowed extensions'
NEWFOLDER: 'Nueva Carpeta' NEWFOLDER: 'Nueva Carpeta'
SHOWALLOWEDEXTS: 'Show allowed extensions'
AssetTableField: AssetTableField:
CREATED: 'Agregado por primera vez' CREATED: 'Agregado por primera vez'
DIM: Dimensiones DIM: Dimensiones
@ -59,9 +60,9 @@ es_AR:
ERRORNOTADMIN: 'El usuario no es administrador.' ERRORNOTADMIN: 'El usuario no es administrador.'
ERRORNOTREC: 'No se reconoce el nombre de usuario / contraseña' ERRORNOTREC: 'No se reconoce el nombre de usuario / contraseña'
Boolean: Boolean:
0: No
ANY: Cualquiera ANY: Cualquiera
1: NOANSWER: 'False'
YESANSWER: 'True'
CMSLoadingScreen.ss: CMSLoadingScreen.ss:
LOADING: Loading... LOADING: Loading...
REQUIREJS: 'The CMS requires that you have JavaScript enabled.' REQUIREJS: 'The CMS requires that you have JavaScript enabled.'
@ -70,6 +71,8 @@ es_AR:
ACCESSALLINTERFACES: 'Acceder a todas las secciones del CMS' ACCESSALLINTERFACES: 'Acceder a todas las secciones del CMS'
ACCESSALLINTERFACESHELP: 'Overrules more specific access settings.' ACCESSALLINTERFACESHELP: 'Overrules more specific access settings.'
SAVE: Guardar SAVE: Guardar
CMSPageHistoryController_versions.ss:
PREVIEW: 'Website preview'
CMSProfileController: CMSProfileController:
MENUTITLE: 'My Profile' MENUTITLE: 'My Profile'
ChangePasswordEmail.ss: ChangePasswordEmail.ss:
@ -79,8 +82,8 @@ es_AR:
HELLO: Hola HELLO: Hola
PASSWORD: Contraseña PASSWORD: Contraseña
CheckboxField: CheckboxField:
- No NOANSWER: 'False'
- No YESANSWER: 'True'
ComplexTableField: ComplexTableField:
CLOSEPOPUP: 'Cerrar Ventana Emergente' CLOSEPOPUP: 'Cerrar Ventana Emergente'
SUCCESSADD2: 'Added {name}' SUCCESSADD2: 'Added {name}'
@ -109,20 +112,21 @@ es_AR:
PLURALNAME: 'Objetos de Datos' PLURALNAME: 'Objetos de Datos'
SINGULARNAME: 'Objeto de Datos' SINGULARNAME: 'Objeto de Datos'
Date: Date:
DAY: día DAY: day
DAYS: días DAYS: days
HOUR: hora HOUR: hour
HOURS: horas HOURS: hours
LessThanMinuteAgo: 'less than a minute'
MIN: min MIN: min
MINS: min MINS: mins
MONTH: mes MONTH: month
MONTHS: meses MONTHS: months
SEC: seg SEC: sec
SECS: segs SECS: secs
TIMEDIFFAGO: '{difference} ago' TIMEDIFFAGO: '{difference} ago'
TIMEDIFFIN: 'in {difference}' TIMEDIFFIN: 'in {difference}'
YEAR: año YEAR: year
YEARS: años YEARS: years
DateField: DateField:
NOTSET: 'no especificada' NOTSET: 'no especificada'
TODAY: hoy TODAY: hoy
@ -198,7 +202,8 @@ es_AR:
TEXT2: 'vínculo para restablecer la contraseña' TEXT2: 'vínculo para restablecer la contraseña'
TEXT3: para TEXT3: para
Form: Form:
FIELDISREQUIRED: '%s es obligatorio.' CSRF_FAILED_MESSAGE: 'There seems to have been a technical problem. Please click the back button, refresh your browser, and try again.'
FIELDISREQUIRED: '{name} is required'
SubmitBtnLabel: Go SubmitBtnLabel: Go
VALIDATIONCREDITNUMBER: 'Please ensure you have entered the {number} credit card number correctly' VALIDATIONCREDITNUMBER: 'Please ensure you have entered the {number} credit card number correctly'
VALIDATIONNOTUNIQUE: 'El valor ingresado no es único' VALIDATIONNOTUNIQUE: 'El valor ingresado no es único'
@ -208,6 +213,7 @@ es_AR:
VALIDATOR: Verificador VALIDATOR: Verificador
VALIDCURRENCY: 'Please enter a valid currency' VALIDCURRENCY: 'Please enter a valid currency'
FormField: FormField:
Example: 'e.g. %s'
NONE: ninguna NONE: ninguna
GridAction: GridAction:
DELETE_DESCRIPTION: Delete DELETE_DESCRIPTION: Delete
@ -230,6 +236,7 @@ es_AR:
ResetFilter: Reset ResetFilter: Reset
GridFieldAction_Delete: GridFieldAction_Delete:
DeletePermissionsFailure: 'No delete permissions' DeletePermissionsFailure: 'No delete permissions'
EditPermissionsFailure: 'No permission to unlink record'
GridFieldDetailForm: GridFieldDetailForm:
CancelBtn: Cancel CancelBtn: Cancel
Create: Create Create: Create
@ -237,7 +244,9 @@ es_AR:
DeletePermissionsFailure: 'No delete permissions' DeletePermissionsFailure: 'No delete permissions'
Deleted: 'Deleted %s %s' Deleted: 'Deleted %s %s'
Save: Save Save: Save
Saved: 'Saved %s %s' Saved: 'Saved {name} {link}'
GridFieldEditButton.ss:
EDIT: Edit
GridFieldItemEditView.ss: null GridFieldItemEditView.ss: null
Group: Group:
AddRole: 'Add a role for this group' AddRole: 'Add a role for this group'
@ -267,6 +276,7 @@ es_AR:
ADDURL: 'Add URL' ADDURL: 'Add URL'
ADJUSTDETAILSDIMENSIONS: 'Details &amp; dimensions' ADJUSTDETAILSDIMENSIONS: 'Details &amp; dimensions'
ANCHORVALUE: Anclar ANCHORVALUE: Anclar
BUTTONADDURL: 'Add url'
BUTTONINSERT: Insert BUTTONINSERT: Insert
BUTTONINSERTLINK: 'Insertar enlace' BUTTONINSERTLINK: 'Insertar enlace'
BUTTONREMOVELINK: 'Quitar enlace' BUTTONREMOVELINK: 'Quitar enlace'
@ -331,7 +341,10 @@ es_AR:
PreviewButton: Preview PreviewButton: Preview
REORGANISATIONSUCCESSFUL: 'Reorganised the site tree successfully.' REORGANISATIONSUCCESSFUL: 'Reorganised the site tree successfully.'
SAVEDUP: Saved. SAVEDUP: Saved.
VersionUnknown: unknown ShowAsList: 'show as list'
TooManyPages: 'Too many pages'
ValidationError: 'Validation error'
VersionUnknown: Unknown
LeftAndMain_Menu.ss: LeftAndMain_Menu.ss:
Hello: Hi Hello: Hi
LOGOUT: 'Log out' LOGOUT: 'Log out'
@ -407,6 +420,7 @@ es_AR:
TWODIGITMONTH: 'Two-digit month (01=January, etc.)' TWODIGITMONTH: 'Two-digit month (01=January, etc.)'
TWODIGITSECOND: 'Two digits of second (00 through 59)' TWODIGITSECOND: 'Two digits of second (00 through 59)'
TWODIGITYEAR: 'Two-digit year' TWODIGITYEAR: 'Two-digit year'
Toggle: 'Show formatting help'
MemberImportForm: MemberImportForm:
Help1: '<p>Importar miembros en <em>formato CSV</em> (valores separados por comas). <small><a href="#" class="toggle-advanced">Mostrar uso avanzado</a></small></p>' Help1: '<p>Importar miembros en <em>formato CSV</em> (valores separados por comas). <small><a href="#" class="toggle-advanced">Mostrar uso avanzado</a></small></p>'
Help2: '<div class="advanced"> <h4>Advanced usage</h4> <ul> <li>Allowed columns: <em>%s</em></li> <li>Existing users are matched by their unique <em>Code</em> property, and updated with any new values from the imported file.</li> <li>Groups can be assigned by the <em>Groups</em> column. Groups are identified by their <em>Code</em> property, multiple groups can be separated by comma. Existing group memberships are not cleared.</li> </ul></div>' Help2: '<div class="advanced"> <h4>Advanced usage</h4> <ul> <li>Allowed columns: <em>%s</em></li> <li>Existing users are matched by their unique <em>Code</em> property, and updated with any new values from the imported file.</li> <li>Groups can be assigned by the <em>Groups</em> column. Groups are identified by their <em>Code</em> property, multiple groups can be separated by comma. Existing group memberships are not cleared.</li> </ul></div>'
@ -421,7 +435,7 @@ es_AR:
ModelAdmin: ModelAdmin:
DELETE: Eliminar DELETE: Eliminar
DELETEDRECORDS: 'Deleted {count} records.' DELETEDRECORDS: 'Deleted {count} records.'
EMPTYBEFOREIMPORT: 'Clear Database before import' EMPTYBEFOREIMPORT: 'Replace data'
IMPORT: 'Importar desde CSV' IMPORT: 'Importar desde CSV'
IMPORTEDRECORDS: 'Imported {count} records.' IMPORTEDRECORDS: 'Imported {count} records.'
NOCSVFILE: 'Por favor explorar por un archivo CVS para importar' NOCSVFILE: 'Por favor explorar por un archivo CVS para importar'
@ -515,7 +529,20 @@ es_AR:
BtnImport: importar BtnImport: importar
FileFieldLabel: 'Archivo CSV <small>(extensiones permitidas: *.csv)</small>' FileFieldLabel: 'Archivo CSV <small>(extensiones permitidas: *.csv)</small>'
SilverStripeNavigator: SilverStripeNavigator:
Auto: Auto
ChangeViewMode: 'Change view mode'
Desktop: Desktop
DualWindowView: 'Dual Window'
Edit: Edit Edit: Edit
EditView: 'Edit mode'
Mobile: Mobile
PreviewState: 'Preview State'
PreviewView: 'Preview mode'
Responsive: Responsive
SplitView: 'Split mode'
Tablet: Tablet
ViewDeviceWidth: 'Select a preview width'
Width: width
SimpleImageField: SimpleImageField:
NOUPLOAD: 'La Imagen No se Cargó' NOUPLOAD: 'La Imagen No se Cargó'
SiteTree: SiteTree:
@ -551,6 +578,8 @@ es_AR:
ATTACHFILE: 'Attach a file' ATTACHFILE: 'Attach a file'
ATTACHFILES: 'Attach files' ATTACHFILES: 'Attach files'
AttachFile: 'Attach file(s)' AttachFile: 'Attach file(s)'
CHOOSEANOTHERFILE: 'Choose another file'
CHOOSEANOTHERINFO: 'Replace this file with another one from the file store'
DELETE: 'Delete from files' DELETE: 'Delete from files'
DELETEINFO: 'Permanently delete this file from the file store' DELETEINFO: 'Permanently delete this file from the file store'
DOEDIT: Save DOEDIT: Save
@ -565,12 +594,15 @@ es_AR:
FROMFILES: 'From files' FROMFILES: 'From files'
HOTLINKINFO: 'Info: This image will be hotlinked. Please ensure you have permissions from the original site creator to do so.' HOTLINKINFO: 'Info: This image will be hotlinked. Please ensure you have permissions from the original site creator to do so.'
MAXNUMBEROFFILES: 'Max number of {count} file(s) exceeded.' MAXNUMBEROFFILES: 'Max number of {count} file(s) exceeded.'
MAXNUMBEROFFILESONE: 'Can only upload one file'
MAXNUMBEROFFILESSHORT: 'Can only upload {count} files' MAXNUMBEROFFILESSHORT: 'Can only upload {count} files'
OVERWRITEWARNING: 'File with the same name already exists'
REMOVE: Remove REMOVE: Remove
REMOVEERROR: 'Error removing file' REMOVEERROR: 'Error removing file'
REMOVEINFO: 'Remove this file from here, but do not delete it from the file store' REMOVEINFO: 'Remove this file from here, but do not delete it from the file store'
STARTALL: 'Start all' STARTALL: 'Start all'
STARTALLINFO: 'Start all uploads' STARTALLINFO: 'Start all uploads'
Saved: Saved Saved: Saved
UPLOADSINTO: 'saves into /{path}'
Versioned: Versioned:
has_many_Versions: Versiones has_many_Versions: Versiones

View File

@ -2,6 +2,7 @@ es_MX:
AssetAdmin: AssetAdmin:
ALLOWEDEXTS: 'Allowed extensions' ALLOWEDEXTS: 'Allowed extensions'
NEWFOLDER: 'Nueva Carpeta' NEWFOLDER: 'Nueva Carpeta'
SHOWALLOWEDEXTS: 'Show allowed extensions'
AssetTableField: AssetTableField:
CREATED: 'Agregado por primera vez' CREATED: 'Agregado por primera vez'
DIM: Dimensiones DIM: Dimensiones
@ -59,9 +60,9 @@ es_MX:
ERRORNOTADMIN: 'El usuario no es administrador.' ERRORNOTADMIN: 'El usuario no es administrador.'
ERRORNOTREC: 'No se reconoce el nombre de usuario / contraseña' ERRORNOTREC: 'No se reconoce el nombre de usuario / contraseña'
Boolean: Boolean:
0: Falso
ANY: Cualquiera ANY: Cualquiera
1: Verdadero NOANSWER: 'False'
YESANSWER: 'True'
CMSLoadingScreen.ss: CMSLoadingScreen.ss:
LOADING: Cargando... LOADING: Cargando...
REQUIREJS: 'The CMS requires that you have JavaScript enabled.' REQUIREJS: 'The CMS requires that you have JavaScript enabled.'
@ -70,6 +71,8 @@ es_MX:
ACCESSALLINTERFACES: 'Acceder a todas las secciones del CMS' ACCESSALLINTERFACES: 'Acceder a todas las secciones del CMS'
ACCESSALLINTERFACESHELP: 'Anula la configuració de acceso más específica.' ACCESSALLINTERFACESHELP: 'Anula la configuració de acceso más específica.'
SAVE: Guardar SAVE: Guardar
CMSPageHistoryController_versions.ss:
PREVIEW: 'Website preview'
CMSProfileController: CMSProfileController:
MENUTITLE: 'My Profile' MENUTITLE: 'My Profile'
ChangePasswordEmail.ss: ChangePasswordEmail.ss:
@ -79,8 +82,8 @@ es_MX:
HELLO: Hey HELLO: Hey
PASSWORD: Contraseña PASSWORD: Contraseña
CheckboxField: CheckboxField:
- Falso NOANSWER: 'False'
- Verdadero YESANSWER: 'True'
ComplexTableField: ComplexTableField:
CLOSEPOPUP: 'Cerrar Mensaje Emergente' CLOSEPOPUP: 'Cerrar Mensaje Emergente'
SUCCESSADD2: 'Added {name}' SUCCESSADD2: 'Added {name}'
@ -109,20 +112,21 @@ es_MX:
PLURALNAME: 'Datos de objetos' PLURALNAME: 'Datos de objetos'
SINGULARNAME: 'Datos del objeto' SINGULARNAME: 'Datos del objeto'
Date: Date:
DAY: día DAY: day
DAYS: días DAYS: days
HOUR: hora HOUR: hour
HOURS: horas HOURS: hours
MIN: minuto LessThanMinuteAgo: 'less than a minute'
MINS: minutos MIN: min
MONTH: mes MINS: mins
MONTHS: meses MONTH: month
SEC: segundo MONTHS: months
SECS: segundos SEC: sec
SECS: secs
TIMEDIFFAGO: '{difference} atrás' TIMEDIFFAGO: '{difference} atrás'
TIMEDIFFIN: 'en {difference}' TIMEDIFFIN: 'en {difference}'
YEAR: año YEAR: year
YEARS: años YEARS: years
DateField: DateField:
NOTSET: 'no especificada' NOTSET: 'no especificada'
TODAY: ahora TODAY: ahora
@ -198,7 +202,8 @@ es_MX:
TEXT2: 'vínculo para restablecer la contraseña' TEXT2: 'vínculo para restablecer la contraseña'
TEXT3: para TEXT3: para
Form: Form:
FIELDISREQUIRED: '%s es obligatorio' CSRF_FAILED_MESSAGE: 'There seems to have been a technical problem. Please click the back button, refresh your browser, and try again.'
FIELDISREQUIRED: '{name} is required'
SubmitBtnLabel: Go SubmitBtnLabel: Go
VALIDATIONCREDITNUMBER: 'Please ensure you have entered the {number} credit card number correctly' VALIDATIONCREDITNUMBER: 'Please ensure you have entered the {number} credit card number correctly'
VALIDATIONNOTUNIQUE: 'El valor ingresado no es único' VALIDATIONNOTUNIQUE: 'El valor ingresado no es único'
@ -208,6 +213,7 @@ es_MX:
VALIDATOR: Verificador VALIDATOR: Verificador
VALIDCURRENCY: 'Please enter a valid currency' VALIDCURRENCY: 'Please enter a valid currency'
FormField: FormField:
Example: 'e.g. %s'
NONE: Ninguno NONE: Ninguno
GridAction: GridAction:
DELETE_DESCRIPTION: Delete DELETE_DESCRIPTION: Delete
@ -230,6 +236,7 @@ es_MX:
ResetFilter: Resetear ResetFilter: Resetear
GridFieldAction_Delete: GridFieldAction_Delete:
DeletePermissionsFailure: 'No borrar permisos' DeletePermissionsFailure: 'No borrar permisos'
EditPermissionsFailure: 'No permission to unlink record'
GridFieldDetailForm: GridFieldDetailForm:
CancelBtn: Cancel CancelBtn: Cancel
Create: Create Create: Create
@ -237,7 +244,9 @@ es_MX:
DeletePermissionsFailure: 'No delete permissions' DeletePermissionsFailure: 'No delete permissions'
Deleted: 'Deleted %s %s' Deleted: 'Deleted %s %s'
Save: Save Save: Save
Saved: 'Saved %s %s' Saved: 'Saved {name} {link}'
GridFieldEditButton.ss:
EDIT: Edit
GridFieldItemEditView.ss: null GridFieldItemEditView.ss: null
Group: Group:
AddRole: 'Agrega un rol para este grupo' AddRole: 'Agrega un rol para este grupo'
@ -267,6 +276,7 @@ es_MX:
ADDURL: 'Add URL' ADDURL: 'Add URL'
ADJUSTDETAILSDIMENSIONS: 'Details &amp; dimensions' ADJUSTDETAILSDIMENSIONS: 'Details &amp; dimensions'
ANCHORVALUE: Anclar ANCHORVALUE: Anclar
BUTTONADDURL: 'Add url'
BUTTONINSERT: Insertar BUTTONINSERT: Insertar
BUTTONINSERTLINK: 'Insertar enlace' BUTTONINSERTLINK: 'Insertar enlace'
BUTTONREMOVELINK: 'Quitar enlace' BUTTONREMOVELINK: 'Quitar enlace'
@ -331,6 +341,9 @@ es_MX:
PreviewButton: Preview PreviewButton: Preview
REORGANISATIONSUCCESSFUL: 'Reorganised the site tree successfully.' REORGANISATIONSUCCESSFUL: 'Reorganised the site tree successfully.'
SAVEDUP: Saved. SAVEDUP: Saved.
ShowAsList: 'show as list'
TooManyPages: 'Too many pages'
ValidationError: 'Validation error'
VersionUnknown: desconocido VersionUnknown: desconocido
LeftAndMain_Menu.ss: LeftAndMain_Menu.ss:
Hello: Hi Hello: Hi
@ -407,6 +420,7 @@ es_MX:
TWODIGITMONTH: 'Mes de 2 dígitos (01=Enero, etc.)' TWODIGITMONTH: 'Mes de 2 dígitos (01=Enero, etc.)'
TWODIGITSECOND: 'Dos dígitos de los segundos (00 a 59)' TWODIGITSECOND: 'Dos dígitos de los segundos (00 a 59)'
TWODIGITYEAR: 'Año en 2 dígitos' TWODIGITYEAR: 'Año en 2 dígitos'
Toggle: 'Show formatting help'
MemberImportForm: MemberImportForm:
Help1: "<p>Importar usurious en <em>format CSV</em> (valores separados por comas). <small><a href=\"#\" class=\"toggle-advanced\">Mostrar uso avanzado</a></small></p>\\n" Help1: "<p>Importar usurious en <em>format CSV</em> (valores separados por comas). <small><a href=\"#\" class=\"toggle-advanced\">Mostrar uso avanzado</a></small></p>\\n"
Help2: '<div class="advanced"> <h4>Advanced usage</h4> <ul> <li>Allowed columns: <em>%s</em></li> <li>Existing users are matched by their unique <em>Code</em> property, and updated with any new values from the imported file.</li> <li>Groups can be assigned by the <em>Groups</em> column. Groups are identified by their <em>Code</em> property, multiple groups can be separated by comma. Existing group memberships are not cleared.</li> </ul></div>' Help2: '<div class="advanced"> <h4>Advanced usage</h4> <ul> <li>Allowed columns: <em>%s</em></li> <li>Existing users are matched by their unique <em>Code</em> property, and updated with any new values from the imported file.</li> <li>Groups can be assigned by the <em>Groups</em> column. Groups are identified by their <em>Code</em> property, multiple groups can be separated by comma. Existing group memberships are not cleared.</li> </ul></div>'
@ -421,7 +435,7 @@ es_MX:
ModelAdmin: ModelAdmin:
DELETE: Eliminar DELETE: Eliminar
DELETEDRECORDS: 'Borrados {count} registros' DELETEDRECORDS: 'Borrados {count} registros'
EMPTYBEFOREIMPORT: 'Clear Database before import' EMPTYBEFOREIMPORT: 'Replace data'
IMPORT: 'Importar desde CSV' IMPORT: 'Importar desde CSV'
IMPORTEDRECORDS: 'Importados {count} registros' IMPORTEDRECORDS: 'Importados {count} registros'
NOCSVFILE: 'Por favor navegue hasta el archivo CSV a importar' NOCSVFILE: 'Por favor navegue hasta el archivo CSV a importar'
@ -515,7 +529,20 @@ es_MX:
BtnImport: Importar BtnImport: Importar
FileFieldLabel: 'Archivo CSV <small>(Extensiones permitidas: *.csv)' FileFieldLabel: 'Archivo CSV <small>(Extensiones permitidas: *.csv)'
SilverStripeNavigator: SilverStripeNavigator:
Auto: Auto
ChangeViewMode: 'Change view mode'
Desktop: Desktop
DualWindowView: 'Dual Window'
Edit: Edit Edit: Edit
EditView: 'Edit mode'
Mobile: Mobile
PreviewState: 'Preview State'
PreviewView: 'Preview mode'
Responsive: Responsive
SplitView: 'Split mode'
Tablet: Tablet
ViewDeviceWidth: 'Select a preview width'
Width: width
SimpleImageField: SimpleImageField:
NOUPLOAD: 'No subió la Imagen' NOUPLOAD: 'No subió la Imagen'
SiteTree: SiteTree:
@ -551,6 +578,8 @@ es_MX:
ATTACHFILE: 'Adjuntar un archivo' ATTACHFILE: 'Adjuntar un archivo'
ATTACHFILES: 'Adjuntar archivos' ATTACHFILES: 'Adjuntar archivos'
AttachFile: 'Adjuntar archivo(s)' AttachFile: 'Adjuntar archivo(s)'
CHOOSEANOTHERFILE: 'Choose another file'
CHOOSEANOTHERINFO: 'Replace this file with another one from the file store'
DELETE: 'Delete from files' DELETE: 'Delete from files'
DELETEINFO: 'Eliminar permanentemente este archivo desde el almacén' DELETEINFO: 'Eliminar permanentemente este archivo desde el almacén'
DOEDIT: Guardar DOEDIT: Guardar
@ -565,12 +594,15 @@ es_MX:
FROMFILES: 'Desde archivos' FROMFILES: 'Desde archivos'
HOTLINKINFO: 'Info: This image will be hotlinked. Please ensure you have permissions from the original site creator to do so.' HOTLINKINFO: 'Info: This image will be hotlinked. Please ensure you have permissions from the original site creator to do so.'
MAXNUMBEROFFILES: 'Máximo número {count} de archivos sobrepasado' MAXNUMBEROFFILES: 'Máximo número {count} de archivos sobrepasado'
MAXNUMBEROFFILESONE: 'Can only upload one file'
MAXNUMBEROFFILESSHORT: 'Solo puedes subir {count} archivos' MAXNUMBEROFFILESSHORT: 'Solo puedes subir {count} archivos'
OVERWRITEWARNING: 'File with the same name already exists'
REMOVE: Remover REMOVE: Remover
REMOVEERROR: 'Error removiendo archivo' REMOVEERROR: 'Error removiendo archivo'
REMOVEINFO: 'Remover este archivo de aquí, pero no borrarlo del almacén de archivos' REMOVEINFO: 'Remover este archivo de aquí, pero no borrarlo del almacén de archivos'
STARTALL: 'Comenzar todas' STARTALL: 'Comenzar todas'
STARTALLINFO: 'Start all uploads' STARTALLINFO: 'Start all uploads'
Saved: Guardado Saved: Guardado
UPLOADSINTO: 'saves into /{path}'
Versioned: Versioned:
has_many_Versions: Versiones has_many_Versions: Versiones

View File

@ -1,43 +1,44 @@
et_EE: et_EE:
AssetAdmin: AssetAdmin:
ALLOWEDEXTS: 'Allowed extensions' ALLOWEDEXTS: 'Lubatud laiendid'
NEWFOLDER: 'Uus kaust' NEWFOLDER: 'Uus kaust'
SHOWALLOWEDEXTS: 'Show allowed extensions'
AssetTableField: AssetTableField:
CREATED: 'Esmakordselt üles laaditud' CREATED: 'Esmakordselt üles laaditud'
DIM: Mõõtmed DIM: Mõõtmed
FILENAME: Failinimi FILENAME: Failinimi
FOLDER: Folder FOLDER: Kaust
LASTEDIT: 'Viimati muudetud' LASTEDIT: 'Viimati muudetud'
OWNER: Omanik OWNER: Omanik
SIZE: Suurus SIZE: Failisuurus
TITLE: Pealkiri TITLE: Pealkiri
TYPE: Tüüp TYPE: Failitüüp
URL: Aadress URL: URL
AssetUploadField: AssetUploadField:
ChooseFiles: 'Choose files' ChooseFiles: 'Valige failid'
DRAGFILESHERE: 'Lohista failid siia' DRAGFILESHERE: 'Lohistage failid siia'
DROPAREA: 'Drop Area' DROPAREA: Pukseerimisala
EDITALL: 'Edit all' EDITALL: 'Muuda kõiki'
EDITANDORGANIZE: 'Edit & organize' EDITANDORGANIZE: 'Muuda ja korralda'
EDITINFO: 'Edit files' EDITINFO: 'Muuda faile'
FILES: Files FILES: Failid
FROMCOMPUTER: 'Choose files from your computer' FROMCOMPUTER: 'Valige fail arvutist'
FROMCOMPUTERINFO: 'Upload from your computer' FROMCOMPUTERINFO: 'Laadige üles arvutist'
TOTAL: Total TOTAL: Kokku
TOUPLOAD: 'Choose files to upload...' TOUPLOAD: 'Valige üleslaadimiseks failid...'
UPLOADINPROGRESS: 'Please wait… upload in progress' UPLOADINPROGRESS: 'Oodake... Üleslaadimine on pooleli'
UPLOADOR: OR UPLOADOR: VÕI
BBCodeParser: BBCodeParser:
ALIGNEMENT: Joondus ALIGNEMENT: Joondus
ALIGNEMENTEXAMPLE: 'Joondus paremale' ALIGNEMENTEXAMPLE: 'Joondus paremale'
BOLD: 'Paks tekst' BOLD: 'Paks tekst'
BOLDEXAMPLE: Paks BOLDEXAMPLE: Paks
CODE: 'Koodi plokk' CODE: Koodiplokk
CODEDESCRIPTION: 'Kodederimata koodi plokk' CODEDESCRIPTION: 'Kodederimata koodi plokk'
CODEEXAMPLE: 'Koodi plokk' CODEEXAMPLE: 'Koodi plokk'
COLORED: 'Värvitud tekst' COLORED: 'Värviline tekst'
COLOREDEXAMPLE: 'Sinine tekst' COLOREDEXAMPLE: 'Sinine tekst'
EMAILLINK: 'Emaili aadress' EMAILLINK: 'Saada link e-posti teel'
EMAILLINKDESCRIPTION: 'Loo link emaili aadrssile' EMAILLINKDESCRIPTION: 'Loo link emaili aadrssile'
IMAGE: Pilt IMAGE: Pilt
IMAGEDESCRIPTION: 'Näita pilti oma postituses' IMAGEDESCRIPTION: 'Näita pilti oma postituses'
@ -59,19 +60,21 @@ et_EE:
ERRORNOTADMIN: 'Antud kasutaja ei ole administraator.' ERRORNOTADMIN: 'Antud kasutaja ei ole administraator.'
ERRORNOTREC: 'See kasutajanimi / parool ei ole tunnustatud' ERRORNOTREC: 'See kasutajanimi / parool ei ole tunnustatud'
Boolean: Boolean:
0: 'False' ANY: Kõik
ANY: Any NOANSWER: 'False'
1: 'True' YESANSWER: 'True'
CMSLoadingScreen.ss: CMSLoadingScreen.ss:
LOADING: Loading... LOADING: Laadimine...
REQUIREJS: 'The CMS requires that you have JavaScript enabled.' REQUIREJS: 'Sisuhaldussüsteem nõuab, et JavaScript oleks lubatud.'
CMSMain: CMSMain:
ACCESS: 'Juurdepääs jaotisele ''{title}''' ACCESS: 'Juurdepääs jaotisele ''{title}'''
ACCESSALLINTERFACES: 'Ligipääs kõigile Sisuhalduse kasutajaliidestele' ACCESSALLINTERFACES: 'Ligipääs kõigile Sisuhalduse kasutajaliidestele'
ACCESSALLINTERFACESHELP: 'Overrules more specific access settings.' ACCESSALLINTERFACESHELP: 'Alistab täpsemad juurdepääsuseaded.'
SAVE: Salvesta SAVE: Salvesta
CMSPageHistoryController_versions.ss:
PREVIEW: 'Website preview'
CMSProfileController: CMSProfileController:
MENUTITLE: 'My Profile' MENUTITLE: 'Minu profiil'
ChangePasswordEmail.ss: ChangePasswordEmail.ss:
CHANGEPASSWORDTEXT1: 'Vahetasid oma parooli lehel' CHANGEPASSWORDTEXT1: 'Vahetasid oma parooli lehel'
CHANGEPASSWORDTEXT2: 'Nüüd võid kasutada sisse logimiseks järgnevaid andmeid:' CHANGEPASSWORDTEXT2: 'Nüüd võid kasutada sisse logimiseks järgnevaid andmeid:'
@ -79,28 +82,28 @@ et_EE:
HELLO: Tere HELLO: Tere
PASSWORD: Parool PASSWORD: Parool
CheckboxField: CheckboxField:
- 'False' NOANSWER: 'False'
- 'True' YESANSWER: 'True'
ComplexTableField: ComplexTableField:
CLOSEPOPUP: 'Sulge hüpikaken' CLOSEPOPUP: 'Sulge hüpikaken'
SUCCESSADD2: 'Added {name}' SUCCESSADD2: '{name} on lisatud'
SUCCESSEDIT: 'Salvestatud %s %s %s' SUCCESSEDIT: 'Salvestatud %s %s %s'
ComplexTableField.ss: ComplexTableField.ss:
ADDITEM: 'Lisa %s' ADDITEM: 'Lisa %s'
NOITEMSFOUND: 'No items found' NOITEMSFOUND: 'Üksusi ei leitud'
SORTASC: 'Sorteeri kasvavalt' SORTASC: 'Sorteeri kasvavalt'
SORTDESC: 'Sorteeri kahanevalt' SORTDESC: 'Sorteeri kahanevalt'
ComplexTableField_popup.ss: ComplexTableField_popup.ss:
NEXT: Eelmine NEXT: Eelmine
PREVIOUS: Järgmine PREVIOUS: Järgmine
ConfirmedPasswordField: ConfirmedPasswordField:
ATLEAST: 'Passwords must be at least {min} characters long.' ATLEAST: 'Parool peab olema vähemalt {min} märki pikk.'
BETWEEN: 'Passwords must be {min} to {max} characters long.' BETWEEN: 'Parooli pikkus peab olema vahemikus {min}{max} märki.'
MAXIMUM: 'Passwords must be at most {max} characters long.' MAXIMUM: 'Parool võib olla kuni {max} märki pikk.'
SHOWONCLICKTITLE: 'Muuda parool' SHOWONCLICKTITLE: 'Muuda parool'
CreditCardField: CreditCardField:
FIRST: esimene FIRST: esimene
FOURTH: Neljas FOURTH: neljas
SECOND: teine SECOND: teine
THIRD: kolmas THIRD: kolmas
CurrencyField: CurrencyField:
@ -109,192 +112,199 @@ et_EE:
PLURALNAME: 'Andme objektid' PLURALNAME: 'Andme objektid'
SINGULARNAME: 'Andme objekt' SINGULARNAME: 'Andme objekt'
Date: Date:
DAY: Päev DAY: day
DAYS: Päevad DAYS: days
HOUR: Tund HOUR: hour
HOURS: Tunnid HOURS: hours
MIN: Minut LessThanMinuteAgo: 'less than a minute'
MINS: Minutid MIN: min
MONTH: Kuu MINS: mins
MONTHS: Kuud MONTH: month
SEC: Sekund MONTHS: months
SECS: Sekundit SEC: sec
SECS: secs
TIMEDIFFAGO: '{difference} ago' TIMEDIFFAGO: '{difference} ago'
TIMEDIFFIN: 'in {difference}' TIMEDIFFIN: 'in {difference}'
YEAR: Aasta YEAR: year
YEARS: Aastad YEARS: years
DateField: DateField:
NOTSET: 'Pole seadistatud' NOTSET: 'Pole seadistatud'
TODAY: Täna TODAY: Täna
VALIDDATEFORMAT2: 'Please enter a valid date format ({format})' VALIDDATEFORMAT2: 'Sisestage sobivas vormingus kuupäev ({format})'
VALIDDATEMAXDATE: 'Your date has to be older or matching the maximum allowed date ({date})' VALIDDATEMAXDATE: 'Teie kuupäev peab oleme lubatud kuupäevast ({date}) varasem või ühtima sellega.'
VALIDDATEMINDATE: 'Your date has to be newer or matching the minimum allowed date ({date})' VALIDDATEMINDATE: 'Teie kuupäev peab oleme lubatud kuupäevast ({date}) hilisem või ühtima sellega.'
DatetimeField: DatetimeField:
NOTSET: Määramata NOTSET: Määramata
Director: Director:
INVALID_REQUEST: 'Invalid request' INVALID_REQUEST: 'Sobimatu taotlus'
DropdownField: DropdownField:
CHOOSE: (Vali) CHOOSE: (Vali)
EmailField: EmailField:
VALIDATION: 'Please enter an email address' VALIDATION: 'Sisestage e-posti aadress'
Email_BounceRecord: Email_BounceRecord:
PLURALNAME: 'Email Bounce Records' PLURALNAME: 'Tagastatud e-posti kirjed'
SINGULARNAME: 'Email Bounce Record' SINGULARNAME: 'Tagastatud e-posti kirje'
Enum: Enum:
ANY: Any ANY: Kõik
File: File:
AviType: 'AVI videofail' AviType: AVI-videofail
Content: Sisu Content: Sisu
CssType: 'CSS file' CssType: CSS-fail
DmgType: 'Apple disk image' DmgType: 'Apple disk image'
DocType: 'Wordi dokument' DocType: 'Wordi dokument'
Filename: Failinimi Filename: Failinimi
GifType: 'GIF image - good for diagrams' GifType: 'GIF-kujutis hea diagrammide jaoks'
GzType: 'GZIP tihendatud fail' GzType: 'Tihendatud GZIP-fail'
HtlType: 'HTML fail' HtlType: HTML-fail
HtmlType: 'HTML fail' HtmlType: HTML-fail
INVALIDEXTENSION: 'Extension is not allowed (valid: {extensions})' INVALIDEXTENSION: 'Laiend ei ole lubatud (sobimatud: {extensions})'
INVALIDEXTENSIONSHORT: 'Extension is not allowed' INVALIDEXTENSIONSHORT: 'Laiend ei ole lubatud'
IcoType: 'Icon image' IcoType: Ikoonipilt
JpgType: 'JPEG pilt - hea fotode jaoks' JpgType: 'JPEG-kujutis hea fotode jaoks'
JsType: 'Javascripti fail' JsType: 'Javascripti fail'
Mp3Type: 'MP3 helifail' Mp3Type: MP3-helifail
MpgType: 'MPEG videofail' MpgType: MPEG-videofail
NOFILESIZE: 'Faili suurus on null bitti.' NOFILESIZE: 'Faili suurus on null baiti.'
NOVALIDUPLOAD: 'File is not a valid upload' NOVALIDUPLOAD: 'Fail ei ole üleslaadimiseks sobiv'
Name: Nimi Name: Nimi
PLURALNAME: Failid PLURALNAME: Failid
PdfType: 'Adobe Acrobat PDF file' PdfType: 'Adobe Acrobati PDF-fail'
PngType: 'PNG image - good general-purpose format' PngType: 'PNG-kujutis hea üldotstarbelise vormingu jaoks'
SINGULARNAME: Fail SINGULARNAME: Fail
TOOLARGE: 'Filesize is too large, maximum {size} allowed' TOOLARGE: 'Fail on liiga suur, lubatud on maksimaalselt {size}'
TOOLARGESHORT: 'Filesize exceeds {size}' TOOLARGESHORT: 'Fail on suurem kui {size}'
TiffType: 'Tagged image format' TiffType: 'Tagged image format'
Title: Pealkiri Title: Pealkiri
WavType: 'WAV helifail' WavType: WAV-helifail
XlsType: 'Exceli arvutustabel' XlsType: 'Exceli arvutustabel'
ZipType: 'ZIP tihendatud fail' ZipType: 'Tihendatud ZIP-fail'
FileIFrameField: FileIFrameField:
ATTACH: 'Attach {type}' ATTACH: 'Manusta {type}'
ATTACHONCESAVED: '{type}s can be attached once you have saved the record for the first time.' ATTACHONCESAVED: '{type}s can be attached once you have saved the record for the first time.'
ATTACHONCESAVED2: 'Files can be attached once you have saved the record for the first time.' ATTACHONCESAVED2: 'Faile saab manustada pärast seda, kui olete kirje salvestanud.'
DELETE: 'Delete {type}' DELETE: 'Kustuta {type}'
DISALLOWEDFILETYPE: 'This filetype is not allowed to be uploaded' DISALLOWEDFILETYPE: 'Seda failitüüpi ei ole lubatud üles laadida'
FILE: File FILE: Fail
FROMCOMPUTER: 'From your Computer' FROMCOMPUTER: 'Teie arvutist'
FROMFILESTORE: 'From the File Store' FROMFILESTORE: Failihoidlast
NOSOURCE: 'Please select a source file to attach' NOSOURCE: 'Valige manustamiseks lähtefail'
REPLACE: 'Replace {type}' REPLACE: 'Asenda {type}'
FileIFrameField_iframe.ss: FileIFrameField_iframe.ss:
TITLE: 'Image Uploading Iframe' TITLE: 'Kujutise üleslaadimise IFrame'
Filesystem: Filesystem:
SYNCRESULTS: 'Sync complete: {createdcount} items created, {deletedcount} items deleted' SYNCRESULTS: 'Sünkroonimine on lõpetatud: {createdcount} loodud üksust, {deletedcount} kustutatud üksust'
Folder: Folder:
PLURALNAME: Kataloogid PLURALNAME: Kaustad
SINGULARNAME: Folder SINGULARNAME: Kaust
ForgotPasswordEmail.ss: ForgotPasswordEmail.ss:
HELLO: Tere HELLO: Tere
TEXT1: 'Siin on sinu' TEXT1: 'Siin on sinu'
TEXT2: 'Parooli tühistus link' TEXT2: 'Parooli tühistus link'
TEXT3: - TEXT3: -
Form: Form:
FIELDISREQUIRED: '%s on vajalik' CSRF_FAILED_MESSAGE: 'There seems to have been a technical problem. Please click the back button, refresh your browser, and try again.'
SubmitBtnLabel: Go FIELDISREQUIRED: '{name} is required'
VALIDATIONCREDITNUMBER: 'Please ensure you have entered the {number} credit card number correctly' SubmitBtnLabel: Mine
VALIDATIONCREDITNUMBER: 'Veenduge, et sisestasite krediitkaardinumbri {number} õigesti'
VALIDATIONNOTUNIQUE: 'Sisestatud väärtus ei ole unikaalne' VALIDATIONNOTUNIQUE: 'Sisestatud väärtus ei ole unikaalne'
VALIDATIONPASSWORDSDONTMATCH: 'Paroolid ei katu' VALIDATIONPASSWORDSDONTMATCH: 'Paroolid ei katu'
VALIDATIONPASSWORDSNOTEMPTY: 'Paroolid ei saa olla tühjad' VALIDATIONPASSWORDSNOTEMPTY: 'Paroolid ei saa olla tühjad'
VALIDATIONSTRONGPASSWORD: 'Passwords must have at least one digit and one alphanumeric character' VALIDATIONSTRONGPASSWORD: 'Paroolis peab olema vähemalt üks number ja üks tähestikutäht'
VALIDATOR: Kinnitaja VALIDATOR: Kinnitaja
VALIDCURRENCY: 'Please enter a valid currency' VALIDCURRENCY: 'Sisestage kehtiv valuuta'
FormField: FormField:
Example: 'e.g. %s'
NONE: puudub NONE: puudub
GridAction: GridAction:
DELETE_DESCRIPTION: Kustuta DELETE_DESCRIPTION: Kustuta
Delete: Delete Delete: Kustuta
UnlinkRelation: Unlink UnlinkRelation: 'Tühista linkimine'
GridField: GridField:
Add: 'Add {name}' Add: 'Lisa {name}'
Filter: Filter Filter: Filtreeri
FilterBy: 'Filter by ' FilterBy: Filtreerimisalus
Find: Find Find: Otsi
LEVELUP: 'Level up' LEVELUP: 'Level up'
LinkExisting: 'Link Existing' LinkExisting: 'Lingi olemasolev'
NewRecord: 'New %s' NewRecord: 'Uus %s'
NoItemsFound: 'Ei leitud ühtegi kannet' NoItemsFound: 'Üksusi ei leitud'
PRINTEDAT: 'Printed at' PRINTEDAT: 'Printimiskoht:'
PRINTEDBY: 'Printed by' PRINTEDBY: Printis
PlaceHolder: 'Find {type}' PlaceHolder: 'Leia {type}'
PlaceHolderWithLabels: 'Find {type} by {name}' PlaceHolderWithLabels: 'Find {type} by {name}'
RelationSearch: 'Relation search' RelationSearch: 'Seose otsing'
ResetFilter: Reset ResetFilter: Lähtesta
GridFieldAction_Delete: GridFieldAction_Delete:
DeletePermissionsFailure: 'No delete permissions' DeletePermissionsFailure: 'Kustutamisõigused puuduvad'
EditPermissionsFailure: 'No permission to unlink record'
GridFieldDetailForm: GridFieldDetailForm:
CancelBtn: Katkesta CancelBtn: Loobu
Create: Create Create: Loo
Delete: Delete Delete: Kustuta
DeletePermissionsFailure: 'No delete permissions' DeletePermissionsFailure: 'Kustutamisõigused puuduvad'
Deleted: 'Deleted %s %s' Deleted: '%s %s on kustutatud'
Save: Save Save: Salvesta
Saved: 'Saved %s %s' Saved: 'Saved {name} {link}'
GridFieldEditButton.ss:
EDIT: Edit
GridFieldItemEditView.ss: null GridFieldItemEditView.ss: null
Group: Group:
AddRole: 'Add a role for this group' AddRole: 'Lisa selle grupi jaoks rolle'
Code: 'Grupi kood' Code: 'Grupi kood'
DefaultGroupTitleAdministrators: Administrators DefaultGroupTitleAdministrators: Administraatorid
DefaultGroupTitleContentAuthors: 'Content Authors' DefaultGroupTitleContentAuthors: 'Sisu autorid'
Description: Kirjeldus Description: Kirjeldus
GroupReminder: 'If you choose a parent group, this group will take all it''s roles' GroupReminder: 'Kui valite vanemgrupi, kaotab see grupp kõik rollid'
Locked: 'Lukus?' Locked: 'Lukus?'
NoRoles: 'No roles found' NoRoles: 'Ühtegi rolli ei leitud'
PLURALNAME: Groups PLURALNAME: Grupid
Parent: 'Vanem grupp' Parent: 'Vanem grupp'
RolesAddEditLink: 'Manage roles' RolesAddEditLink: 'Halda rolle'
SINGULARNAME: Group SINGULARNAME: Grupp
Sort: Järjesta Sort: Järjesta
has_many_Permissions: Õigused has_many_Permissions: Õigused
many_many_Members: Liikmed many_many_Members: Liikmed
GroupImportForm: GroupImportForm:
Help1: '<p>Import one or more groups in <em>CSV</em> format (comma-separated values). <small><a href="#" class="toggle-advanced">Show advanced usage</a></small></p>' Help1: '<p>Impordi üks või rohkem gruppe <em>CSV</em>-vormingus (komaeraldusega väärtused). <small><a href="#" class="toggle-advanced">Kuva täpsem kasutus</a></small></p>'
Help2: '<div class="advanced"> <h4>Advanced usage</h4> <ul> <li>Allowed columns: <em>%s</em></li> <li>Existing groups are matched by their unique <em>Code</em> value, and updated with any new values from the imported file</li> <li>Group hierarchies can be created by using a <em>ParentCode</em> column.</li> <li>Permission codes can be assigned by the <em>PermissionCode</em> column. Existing permission codes are not cleared.</li> </ul></div>' Help2: '<div class="advanced"> <h4>Advanced usage</h4> <ul> <li>Allowed columns: <em>%s</em></li> <li>Existing groups are matched by their unique <em>Code</em> value, and updated with any new values from the imported file</li> <li>Group hierarchies can be created by using a <em>ParentCode</em> column.</li> <li>Permission codes can be assigned by the <em>PermissionCode</em> column. Existing permission codes are not cleared.</li> </ul></div>'
ResultCreated: 'Created {count} groups' ResultCreated: '{count} gruppi on loodud'
ResultDeleted: 'Deleted %d groups' ResultDeleted: '%d gruppi on kustutatud'
ResultUpdated: 'Updated %d groups' ResultUpdated: '%d gruppi on uuendatud'
Hierarchy: Hierarchy:
InfiniteLoopNotAllowed: 'Infinite loop found within the "{type}" hierarchy. Please change the parent to resolve this' InfiniteLoopNotAllowed: 'Infinite loop found within the "{type}" hierarchy. Please change the parent to resolve this'
HtmlEditorField: HtmlEditorField:
ADDURL: 'Add URL' ADDURL: 'Lisa URL'
ADJUSTDETAILSDIMENSIONS: 'Details &amp; dimensions' ADJUSTDETAILSDIMENSIONS: 'Üksikasjad ja mõõtmed'
ANCHORVALUE: Link ANCHORVALUE: Link
BUTTONINSERT: Insert BUTTONADDURL: 'Add url'
BUTTONINSERT: Sisesta
BUTTONINSERTLINK: 'Sisesta link' BUTTONINSERTLINK: 'Sisesta link'
BUTTONREMOVELINK: 'Eemalda link' BUTTONREMOVELINK: 'Eemalda link'
BUTTONUpdate: Update BUTTONUpdate: Uuenda
CAPTIONTEXT: 'Caption text' CAPTIONTEXT: 'Pealdise tekst'
CSSCLASS: 'Joondus / Stiil' CSSCLASS: 'Joondus / Stiil'
CSSCLASSCENTER: 'Keskel, iseseisvalt.' CSSCLASSCENTER: 'Keskel, iseseisvalt.'
CSSCLASSLEFT: 'Vasakul, tekst voldib ennast ümber.' CSSCLASSLEFT: 'Vasakul, tekst voldib ennast ümber.'
CSSCLASSLEFTALONE: 'Ise vasakule' CSSCLASSLEFTALONE: 'Ise vasakule'
CSSCLASSRIGHT: 'Paremal, tekst voldib ennast ümber.' CSSCLASSRIGHT: 'Paremal, tekst voldib ennast ümber.'
DETAILS: Details DETAILS: Üksikasjad
EMAIL: 'E-posti aadress' EMAIL: 'E-posti aadress'
FILE: Fail FILE: Fail
FOLDER: Kaust FOLDER: Kaust
FROMCMS: 'From the CMS' FROMCMS: Sisuhaldussüsteemist
FROMCOMPUTER: 'From your computer' FROMCOMPUTER: 'Teie arvutist'
FROMWEB: 'From the web' FROMWEB: Veebist
FindInFolder: 'Find in Folder' FindInFolder: 'Otsi kaustast'
IMAGEALT: 'Alternative text (alt)' IMAGEALT: 'Asetekst (alt)'
IMAGEALTTEXT: 'Alternative text (alt) - shown if image cannot be displayed' IMAGEALTTEXT: 'Asetekst (alt) kuvatakse, kui kujutist ei ole võimalik kuvada'
IMAGEALTTEXTDESC: 'Shown to screen readers or if image can not be displayed' IMAGEALTTEXTDESC: 'Kuvatakse ekraanilugeja puhul või kui kujutist ei saa kuvada'
IMAGEDIMENSIONS: Mõõtmed IMAGEDIMENSIONS: Mõõtmed
IMAGEHEIGHTPX: Laius IMAGEHEIGHTPX: Laius
IMAGETITLE: 'Title text (tooltip) - for additional information about the image' IMAGETITLE: 'Pealkirja tekst (kohtspikker) lisateabeks kujutise kohta'
IMAGETITLETEXT: 'Title text (tooltip)' IMAGETITLETEXT: 'Pealkirja tekst (kohtspikker)'
IMAGETITLETEXTDESC: 'For additional information about the image' IMAGETITLETEXTDESC: 'Lisateabe saamiseks kujutise kohta'
IMAGEWIDTHPX: Kõrgus IMAGEWIDTHPX: Kõrgus
INSERTMEDIA: 'Insert Media' INSERTMEDIA: 'Sisesta meedium'
LINK: Link LINK: Link
LINKANCHOR: 'Link sellele lehele' LINKANCHOR: 'Link sellele lehele'
LINKDESCR: 'Lingi kirjeldus' LINKDESCR: 'Lingi kirjeldus'
@ -306,22 +316,22 @@ et_EE:
LINKTO: Lingi LINKTO: Lingi
PAGE: Leht PAGE: Leht
URL: URL URL: URL
URLNOTANOEMBEDRESOURCE: 'The URL ''{url}'' could not be turned into a media resource.' URLNOTANOEMBEDRESOURCE: 'URL-i ''{url}'' ei saanud muuta meediumiressursiks.'
UpdateMEDIA: 'Update Media' UpdateMEDIA: 'Uuenda meediumi'
Image: Image:
PLURALNAME: Files PLURALNAME: Failid
SINGULARNAME: File SINGULARNAME: Fail
ImageField: ImageField:
IMAGE: Image IMAGE: Kujutis
Image_Cached: Image_Cached:
PLURALNAME: Files PLURALNAME: Failid
SINGULARNAME: File SINGULARNAME: Fail
Image_iframe.ss: Image_iframe.ss:
TITLE: 'Pildi üleslaadimise Iframe' TITLE: 'Pildi üleslaadimise Iframe'
LeftAndMain: LeftAndMain:
CANT_REORGANISE: 'You do not have permission to alter Top level pages. Your change was not saved.' CANT_REORGANISE: 'Teil ei ole õigusi kõrgema taseme lehtede muutmiseks. Teie muudatust ei salvestatud.'
DELETED: Kustutatud. DELETED: Kustutatud.
DropdownBatchActionsDefault: Actions DropdownBatchActionsDefault: Tegevused
HELP: Spikker HELP: Spikker
PAGETYPE: 'Lehekülje tüüp:' PAGETYPE: 'Lehekülje tüüp:'
PERMAGAIN: 'Oled Sisuhaldusest välja logitud. Kui soovite uuesti sisse logida sisestage kasutajanimi ja parool.' PERMAGAIN: 'Oled Sisuhaldusest välja logitud. Kui soovite uuesti sisse logida sisestage kasutajanimi ja parool.'
@ -329,32 +339,35 @@ et_EE:
PERMDEFAULT: 'Sisesta oma e-posti aadress ja parool sisuhaldussüsteemi ligipääsemiseks.' PERMDEFAULT: 'Sisesta oma e-posti aadress ja parool sisuhaldussüsteemi ligipääsemiseks.'
PLEASESAVE: 'Palun Salvesta Lehekülg: Antud lehekülge ei uuendatud, kuna seda ei ole veel salvestatud.' PLEASESAVE: 'Palun Salvesta Lehekülg: Antud lehekülge ei uuendatud, kuna seda ei ole veel salvestatud.'
PreviewButton: Eelvaade PreviewButton: Eelvaade
REORGANISATIONSUCCESSFUL: 'Reorganised the site tree successfully.' REORGANISATIONSUCCESSFUL: 'Saidipuu korraldati edukalt ümber.'
SAVEDUP: Salvestatud. SAVEDUP: Salvestatud.
VersionUnknown: unknown ShowAsList: 'show as list'
TooManyPages: 'Too many pages'
ValidationError: 'Validation error'
VersionUnknown: Unknown
LeftAndMain_Menu.ss: LeftAndMain_Menu.ss:
Hello: Hi Hello: Tere!
LOGOUT: 'Logi välja' LOGOUT: 'Logi välja'
LoginAttempt: LoginAttempt:
Email: 'E-posti aadress' Email: 'E-posti aadress'
IP: 'IP Aadress' IP: 'IP Aadress'
PLURALNAME: 'Login Attempts' PLURALNAME: Sisselogimiskatsed
SINGULARNAME: 'Login Attempt' SINGULARNAME: Sisselogimiskatse
Status: Staatus Status: Staatus
Member: Member:
ADDGROUP: 'Add group' ADDGROUP: 'Lisa grupp'
BUTTONCHANGEPASSWORD: 'Muuda parool' BUTTONCHANGEPASSWORD: 'Muuda parool'
BUTTONLOGIN: 'Logi sisse' BUTTONLOGIN: 'Logi sisse'
BUTTONLOGINOTHER: 'Logi sisse kellegi teisena' BUTTONLOGINOTHER: 'Logi sisse kellegi teisena'
BUTTONLOSTPASSWORD: 'Kaotasin oma parooli' BUTTONLOSTPASSWORD: 'Kaotasin oma parooli'
CANTEDIT: 'You don''t have permission to do that' CANTEDIT: 'Teil ei ole selleks tegevuseks õigust'
CONFIRMNEWPASSWORD: 'Kinnita uus parool' CONFIRMNEWPASSWORD: 'Kinnita uus parool'
CONFIRMPASSWORD: 'Kinnita parool' CONFIRMPASSWORD: 'Kinnita parool'
DATEFORMAT: 'Kuupäeva vorming' DATEFORMAT: Kuupäevavorming
DefaultAdminFirstname: 'Default Admin' DefaultAdminFirstname: Vaikeadministraator
DefaultDateTime: default DefaultDateTime: vaikeseadistus
EMAIL: E-post EMAIL: E-post
EMPTYNEWPASSWORD: 'The new password can''t be empty, please try again' EMPTYNEWPASSWORD: 'Uue parooli väli ei saa olla tühi. Proovige uuesti'
ENTEREMAIL: 'Palun sisesta email, et saada paooli tühistamise link' ENTEREMAIL: 'Palun sisesta email, et saada paooli tühistamise link'
ERRORLOCKEDOUT: 'Konto on liiga paljude ebaõnnestunud sisselogimiskatsete tõttu ajutiselt blokeeritud. Palun oota 20 minutit ja proovi siis uuesti.' ERRORLOCKEDOUT: 'Konto on liiga paljude ebaõnnestunud sisselogimiskatsete tõttu ajutiselt blokeeritud. Palun oota 20 minutit ja proovi siis uuesti.'
ERRORNEWPASSWORD: 'Te sisestasite oma parooli erinevalt, proovige uuesti' ERRORNEWPASSWORD: 'Te sisestasite oma parooli erinevalt, proovige uuesti'
@ -363,7 +376,7 @@ et_EE:
FIRSTNAME: Eesnimi FIRSTNAME: Eesnimi
INTERFACELANG: 'Kasutajaliidese keel' INTERFACELANG: 'Kasutajaliidese keel'
INVALIDNEWPASSWORD: 'We couldn''t accept that password: {password}' INVALIDNEWPASSWORD: 'We couldn''t accept that password: {password}'
LOGGEDINAS: 'You''re logged in as {name}.' LOGGEDINAS: 'Olete logitud sisse kui {name}.'
NEWPASSWORD: 'Uus parool' NEWPASSWORD: 'Uus parool'
PASSWORD: Parool PASSWORD: Parool
PLURALNAME: Kasutajad PLURALNAME: Kasutajad
@ -372,10 +385,10 @@ et_EE:
SUBJECTPASSWORDCHANGED: 'Sinu parool on muudetud' SUBJECTPASSWORDCHANGED: 'Sinu parool on muudetud'
SUBJECTPASSWORDRESET: 'Sinu parooli lähtestamise link' SUBJECTPASSWORDRESET: 'Sinu parooli lähtestamise link'
SURNAME: Perekonnanimi SURNAME: Perekonnanimi
TIMEFORMAT: 'Aja vorming' TIMEFORMAT: Kellaajavorming
VALIDATIONMEMBEREXISTS: 'Sellise e-posti aadressiga liige on juba olemas' VALIDATIONMEMBEREXISTS: 'Sellise e-posti aadressiga liige on juba olemas'
ValidationIdentifierFailed: 'Can''t overwrite existing member #{id} with identical identifier ({name} = {value}))' ValidationIdentifierFailed: 'Olemasolevat kasutajat #{id} ei saa sama identifikaatoriga üle kirjutada ({name} = {value})'
WELCOMEBACK: 'Welcome Back, {firstname}' WELCOMEBACK: 'Tere tulemast tagasi, {firstname}!'
YOUROLDPASSWORD: 'Sinu vana parool' YOUROLDPASSWORD: 'Sinu vana parool'
belongs_many_many_Groups: Grupid belongs_many_many_Groups: Grupid
db_LastVisited: 'Viimati külastatud kuupäev' db_LastVisited: 'Viimati külastatud kuupäev'
@ -387,98 +400,99 @@ et_EE:
MemberAuthenticator: MemberAuthenticator:
TITLE: 'E-post ja parool' TITLE: 'E-post ja parool'
MemberDatetimeOptionsetField: MemberDatetimeOptionsetField:
AMORPM: 'AM (Ante meridiem) or PM (Post meridiem)' AMORPM: 'AM (enne keskpäeva) või PM (pärast keskpäeva)'
'APPLY FILTER': 'Apply Filter' 'APPLY FILTER': 'Rakenda filter'
Custom: Custom Custom: Kohandatud
DATEFORMATBAD: 'Date format is invalid' DATEFORMATBAD: 'Kuupäevavorming on sobimatu'
DAYNOLEADING: 'Day of month without leading zero' DAYNOLEADING: 'Kuupäev ilma nullita'
DIGITSDECFRACTIONSECOND: 'One or more digits representing a decimal fraction of a second' DIGITSDECFRACTIONSECOND: 'One or more digits representing a decimal fraction of a second'
FOURDIGITYEAR: 'Four-digit year' FOURDIGITYEAR: 'Aasta nelja numbrina'
FULLNAMEMONTH: 'Full name of month (e.g. June)' FULLNAMEMONTH: 'Kuu täisnimetus (nt august)'
HOURNOLEADING: 'Hour without leading zero' HOURNOLEADING: 'Tunnid ilma nullita'
MINUTENOLEADING: 'Minute without leading zero' MINUTENOLEADING: 'Minutid ilma nullita'
MONTHNOLEADING: 'Month digit without leading zero' MONTHNOLEADING: 'Kuu ilma nullita'
Preview: Eelvaade Preview: Eelvaade
SHORTMONTH: 'Short name of month (e.g. Jun)' SHORTMONTH: 'Kuu lühinimetus (nt aug)'
TOGGLEHELP: 'Toggle formatting help' TOGGLEHELP: 'Toggle formatting help'
TWODIGITDAY: 'Two-digit day of month' TWODIGITDAY: 'Kuupäev kahe numbrina'
TWODIGITHOUR: 'Two digits of hour (00 through 23)' TWODIGITHOUR: 'Tunnid kahe numbrina (0023)'
TWODIGITMINUTE: 'Two digits of minute (00 through 59)' TWODIGITMINUTE: 'Minutid kahe numbrina (0059)'
TWODIGITMONTH: 'Two-digit month (01=January, etc.)' TWODIGITMONTH: 'Kuu kahe numbrina (nt 01=jaanuar jne)'
TWODIGITSECOND: 'Two digits of second (00 through 59)' TWODIGITSECOND: 'Sekundid kahe numbrina (0059)'
TWODIGITYEAR: 'Two-digit year' TWODIGITYEAR: 'Aasta kahe numbrina'
Toggle: 'Show formatting help'
MemberImportForm: MemberImportForm:
Help1: '<p>Import users in <em>CSV format</em> (comma-separated values). <small><a href="#" class="toggle-advanced">Show advanced usage</a></small></p>' Help1: '<p>Impordi kasutajad <em>CSV-vormingus</em> (komaeraldusega väärtused). <small><a href="#" class="toggle-advanced">Kuva täpsem kasutus</a></small></p>'
Help2: '<div class="advanced"> <h4>Advanced usage</h4> <ul> <li>Allowed columns: <em>%s</em></li> <li>Existing users are matched by their unique <em>Code</em> property, and updated with any new values from the imported file.</li> <li>Groups can be assigned by the <em>Groups</em> column. Groups are identified by their <em>Code</em> property, multiple groups can be separated by comma. Existing group memberships are not cleared.</li> </ul></div>' Help2: '<div class="advanced"> <h4>Advanced usage</h4> <ul> <li>Allowed columns: <em>%s</em></li> <li>Existing users are matched by their unique <em>Code</em> property, and updated with any new values from the imported file.</li> <li>Groups can be assigned by the <em>Groups</em> column. Groups are identified by their <em>Code</em> property, multiple groups can be separated by comma. Existing group memberships are not cleared.</li> </ul></div>'
ResultCreated: 'Created {count} members' ResultCreated: '{count} liiget on loodud'
ResultDeleted: 'Deleted %d members' ResultDeleted: '%d liiget on kustutatud'
ResultNone: 'No changes' ResultNone: 'Muudatusi pole'
ResultUpdated: 'Updated {count} members' ResultUpdated: '{count} liiget on uuendatud'
MemberPassword: MemberPassword:
PLURALNAME: 'Member Passwords' PLURALNAME: 'Liikme paroolid'
SINGULARNAME: 'Member Password' SINGULARNAME: 'Liikme parool'
MemberTableField: null MemberTableField: null
ModelAdmin: ModelAdmin:
DELETE: Kustuta DELETE: Kustuta
DELETEDRECORDS: 'Deleted {count} records.' DELETEDRECORDS: '{count} kirjet on kustutatud.'
EMPTYBEFOREIMPORT: 'Clear Database before import' EMPTYBEFOREIMPORT: 'Replace data'
IMPORT: 'Impordi CSV failist' IMPORT: 'Impordi CSV-failist'
IMPORTEDRECORDS: 'Imported {count} records.' IMPORTEDRECORDS: '{count} kirjet on imporditud.'
NOCSVFILE: 'Palun avage CSV fail impordiks' NOCSVFILE: 'Avage importimiseks CSV-fail'
NOIMPORT: 'Midagi pole importida' NOIMPORT: 'Pole midagi importida'
RESET: Reset RESET: Lähtesta
Title: 'Data Models' Title: Andmemudelid
UPDATEDRECORDS: 'Updated {count} records.' UPDATEDRECORDS: '{count} kirjet on uuendatud.'
ModelAdmin_ImportSpec.ss: ModelAdmin_ImportSpec.ss:
IMPORTSPECFIELDS: 'Database columns' IMPORTSPECFIELDS: 'Andmebaasi tulbad'
IMPORTSPECLINK: 'Show Specification for %s' IMPORTSPECLINK: 'Kuva üksuse %s spetsifikatsioonid'
IMPORTSPECRELATIONS: Relations IMPORTSPECRELATIONS: Seosed
IMPORTSPECTITLE: 'Specification for %s' IMPORTSPECTITLE: 'Üksuse %s spetsifikatsioonid'
ModelAdmin_Tools.ss: ModelAdmin_Tools.ss:
FILTER: Filter FILTER: Filtreeri
IMPORT: Import IMPORT: Impordi
ModelSidebar.ss: ModelSidebar.ss:
IMPORT_TAB_HEADER: Import IMPORT_TAB_HEADER: Impordi
SEARCHLISTINGS: Search SEARCHLISTINGS: Otsi
MoneyField: MoneyField:
FIELDLABELAMOUNT: Amount FIELDLABELAMOUNT: Hulk
FIELDLABELCURRENCY: Valuuta FIELDLABELCURRENCY: Valuuta
NullableField: NullableField:
IsNullLabel: 'Is Null' IsNullLabel: 'On tühi'
NumericField: NumericField:
VALIDATION: '''{value}'' is not a number, only numbers can be accepted for this field' VALIDATION: '''{value}'' ei ole number, sellele väljale võib sisestada ainult numbreid'
Pagination: Pagination:
Page: Lehekülg Page: Leht
View: View View: Kuva
Permission: Permission:
AdminGroup: Administrator AdminGroup: Administraator
CMS_ACCESS_CATEGORY: CMS-juurdepääs CMS_ACCESS_CATEGORY: 'Sisuhaldussüsteemi juurdepääs'
FULLADMINRIGHTS: 'Täis administraatori õigused' FULLADMINRIGHTS: 'Täielikud administraatoriõigused'
FULLADMINRIGHTS_HELP: 'Implies and overrules all other assigned permissions.' FULLADMINRIGHTS_HELP: 'Implies and overrules all other assigned permissions.'
PLURALNAME: Õigused PLURALNAME: Õigused
SINGULARNAME: Õigus SINGULARNAME: Õigus
PermissionCheckboxSetField: PermissionCheckboxSetField:
AssignedTo: 'assigned to "{title}"' AssignedTo: 'määratud grupile "{title}"'
FromGroup: 'inherited from group "{title}"' FromGroup: 'päritud grupilt "{title}"'
FromRole: 'inherited from role "{title}"' FromRole: 'päritud rollilt "{title}"'
FromRoleOnGroup: 'inherited from role "%s" on group "%s"' FromRoleOnGroup: 'päritud rollist "%s" grupis "%s"'
PermissionRole: PermissionRole:
OnlyAdminCanApply: 'Only admin can apply' OnlyAdminCanApply: 'Ainult administraator saab rakendada'
PLURALNAME: Roles PLURALNAME: Rollid
SINGULARNAME: Role SINGULARNAME: Roll
Title: Title Title: Pealkiri
PermissionRoleCode: PermissionRoleCode:
PLURALNAME: 'Permission Role Cods' PLURALNAME: 'Permission Role Cods'
SINGULARNAME: 'Permission Role Code' SINGULARNAME: 'Permission Role Code'
Permissions: Permissions:
PERMISSIONS_CATEGORY: 'Rollid ja juurdepääsuõigused' PERMISSIONS_CATEGORY: 'Rollid ja juurdepääsuõigused'
UserPermissionsIntro: 'Assigning groups to this user will adjust the permissions they have. See the groups section for details of permissions on individual groups.' UserPermissionsIntro: 'Sellele kasutajale gruppide määramine kohandab tema õiguseid. Vaadake gruppide jaotist, et näha üksikasju iga grupi õiguste kohta.'
PhoneNumberField: PhoneNumberField:
VALIDATION: 'Palun sisesta kehtiv telefoninumber' VALIDATION: 'Sisestage kehtiv telefoninumber'
RelationComplexTableField.ss: RelationComplexTableField.ss:
ADD: Lisa ADD: Lisa
CSVEXPORT: 'Export to CSV' CSVEXPORT: 'Ekspordi CSV-vormingusse'
NOTFOUND: 'No items found' NOTFOUND: 'Üksusi ei leitud'
Security: Security:
ALREADYLOGGEDIN: 'Sul puudub õigus sellele lehele pääsemiseks. Kui sul on teine konto, millega siia sisse logida, võid <a href="%s">uuesti sisse logida</a>.' ALREADYLOGGEDIN: 'Sul puudub õigus sellele lehele pääsemiseks. Kui sul on teine konto, millega siia sisse logida, võid <a href="%s">uuesti sisse logida</a>.'
BUTTONSEND: 'Saada parooli tühistamise link' BUTTONSEND: 'Saada parooli tühistamise link'
@ -489,33 +503,46 @@ et_EE:
LOGGEDOUT: 'Olete välja loginud. Kui soovite uuesti siseneda, sisestage oma andmed allpool' LOGGEDOUT: 'Olete välja loginud. Kui soovite uuesti siseneda, sisestage oma andmed allpool'
LOGIN: 'Logi sisse' LOGIN: 'Logi sisse'
NOTEPAGESECURED: 'See leht on turvatud. Sisesta enda andmed allpool ja me saadame sind otse edasi' NOTEPAGESECURED: 'See leht on turvatud. Sisesta enda andmed allpool ja me saadame sind otse edasi'
NOTERESETLINKINVALID: '<p>The password reset link is invalid or expired.</p><p>You can request a new one <a href="{link1}">here</a> or change your password after you <a href="{link2}">logged in</a>.</p>' NOTERESETLINKINVALID: '<p>Parooli lähtestamise link on kehtetu või aegunud.</p><p>Saate taotleda uut linki <a href="{link1}">siin</a> või muuta parooli pärast <a href="{link2}">sisselogimist</a>.</p>'
NOTERESETPASSWORD: 'Sisesta oma email ja me saadame sulle lingi kus saad oma parooli tühistada.' NOTERESETPASSWORD: 'Sisesta oma email ja me saadame sulle lingi kus saad oma parooli tühistada.'
PASSWORDSENTHEADER: 'Password reset link sent to ''{email}''' PASSWORDSENTHEADER: 'Parooli lähtestamise link saadeti aadressile ''{email}'''
PASSWORDSENTTEXT: 'Thank you! A reset link has been sent to ''{email}'', provided an account exists for this email address.' PASSWORDSENTTEXT: 'Aitäh! Lähtestamislink saadeti aadressile ''{email}'' eeldusel, et selle e-posti aadressiga seotud konto on olemas.'
SecurityAdmin: SecurityAdmin:
ACCESS_HELP: 'Allow viewing, adding and editing users, as well as assigning permissions and roles to them.' ACCESS_HELP: 'Luba kasutajate vaatamine, lisamine ja muutmine ning nedele lubade ja rollide määramine.'
APPLY_ROLES: 'Apply roles to groups' APPLY_ROLES: 'Määra gruppidele rolle'
APPLY_ROLES_HELP: 'Ability to edit the roles assigned to a group. Requires the "Access to ''Users'' section" permission.' APPLY_ROLES_HELP: 'Võime muuta grupile määratud rolle. Vajab Kasutajate sektsiooni juurdepääsu luba.'
EDITPERMISSIONS: 'Muuda õigusi ja IP aadresse igal grupil' EDITPERMISSIONS: 'Muuda õigusi ja IP aadresse igal grupil'
EDITPERMISSIONS_HELP: 'Ability to edit Permissions and IP Addresses for a group. Requires the "Access to ''Security'' section" permission.' EDITPERMISSIONS_HELP: 'Võime muuta grupi Lubasid ja IP aadresse. Vajab Turvalisusseadetele juurdepääsu luba.'
GROUPNAME: 'Rühma nimi' GROUPNAME: 'Rühma nimi'
IMPORTGROUPS: 'Import groups' IMPORTGROUPS: 'Impordi grupid'
IMPORTUSERS: 'Import users' IMPORTUSERS: 'Impordi kasutajad'
MEMBERS: Kasutajad MEMBERS: Kasutajad
MENUTITLE: Security MENUTITLE: Turvalisus
MemberListCaution: 'Caution: Removing members from this list will remove them from all groups and the database' MemberListCaution: 'Hoiatus. Sellest loendist liikmete eemdaldamisel eemaldatakse need kõikidest gruppidest ja andmebaasidest'
NEWGROUP: 'Uus rühm' NEWGROUP: 'Uus rühm'
PERMISSIONS: Õigused PERMISSIONS: Õigused
ROLES: Roles ROLES: Rollid
ROLESDESCRIPTION: 'Roles are predefined sets of permissions, and can be assigned to groups.<br />They are inherited from parent groups if required.' ROLESDESCRIPTION: 'Rollid on eelmäratud õiguste kogumid, mida on võimalik määrara gruppidele.<br />Need päritakse vajaduse korral vanemgruppidest.'
TABROLES: Roles TABROLES: Rollid
Users: Users Users: Kasutajad
SecurityAdmin_MemberImportForm: SecurityAdmin_MemberImportForm:
BtnImport: 'Import from CSV' BtnImport: 'Impordi CSV-failist'
FileFieldLabel: 'CSV File <small>(Allowed extensions: *.csv)</small>' FileFieldLabel: 'CSV-fail <small>(lubatud laiendid: *.csv)</small>'
SilverStripeNavigator: SilverStripeNavigator:
Auto: Auto
ChangeViewMode: 'Change view mode'
Desktop: Desktop
DualWindowView: 'Dual Window'
Edit: Muuda Edit: Muuda
EditView: 'Edit mode'
Mobile: Mobile
PreviewState: 'Preview State'
PreviewView: 'Preview mode'
Responsive: Responsive
SplitView: 'Split mode'
Tablet: Tablet
ViewDeviceWidth: 'Select a preview width'
Width: width
SimpleImageField: SimpleImageField:
NOUPLOAD: 'Pilte pole üles laaditud' NOUPLOAD: 'Pilte pole üles laaditud'
SiteTree: SiteTree:
@ -524,53 +551,58 @@ et_EE:
ISREQUIRED: 'In %s ''%s'' is required' ISREQUIRED: 'In %s ''%s'' is required'
TableField.ss: TableField.ss:
ADD: 'Lisa uus rida' ADD: 'Lisa uus rida'
ADDITEM: 'Add %s' ADDITEM: 'Lisa %s'
TableListField: TableListField:
CSVEXPORT: 'Ekspordi CSV-sse' CSVEXPORT: 'Ekspordi CSV-vormingusse'
PRINT: Prindi PRINT: Prindi
Print: Print Print: Prindi
SELECT: 'Vali:' SELECT: 'Vali:'
TableListField.ss: TableListField.ss:
NOITEMSFOUND: 'No items found' NOITEMSFOUND: 'Üksusi ei leitud'
SORTASC: 'Sordi kasvavas järjekorras' SORTASC: 'Sordi kasvavas järjekorras'
SORTDESC: 'Sordi kahanevas järjekorras' SORTDESC: 'Sordi kahanevas järjekorras'
TableListField_PageControls.ss: TableListField_PageControls.ss:
DISPLAYING: Displaying DISPLAYING: Kuvatakse
OF: of OF: /
TO: to TO: to
VIEWFIRST: 'Vaata esimest' VIEWFIRST: 'Vaata esimest'
VIEWLAST: 'Vaata viimast' VIEWLAST: 'Vaata viimast'
VIEWNEXT: 'Vaata järgmist' VIEWNEXT: 'Vaata järgmist'
VIEWPREVIOUS: 'Vaata eelmist' VIEWPREVIOUS: 'Vaata eelmist'
TimeField: TimeField:
VALIDATEFORMAT: 'Please enter a valid time format ({format})' VALIDATEFORMAT: 'Sisestage sobivas vormingus kellaaeg ({format})'
ToggleField: ToggleField:
LESS: Vähem LESS: Vähem
MORE: Veel MORE: Veel
UploadField: UploadField:
ATTACHFILE: 'Attach a file' ATTACHFILE: 'Manusta fail'
ATTACHFILES: 'Attach files' ATTACHFILES: 'Manusta failid'
AttachFile: 'Attach file(s)' AttachFile: 'Manusta fail(id)'
DELETE: 'Delete from files' CHOOSEANOTHERFILE: 'Choose another file'
DELETEINFO: 'Permanently delete this file from the file store' CHOOSEANOTHERINFO: 'Replace this file with another one from the file store'
DOEDIT: Save DELETE: 'Kustuta failide hulgast'
DROPFILE: 'drop a file' DELETEINFO: 'Kustuta see fail lõplikult failihoidlast'
DROPFILES: 'drop files' DOEDIT: Salvesta
Dimensions: Dimensions DROPFILE: 'pukseeri failid'
EDIT: Edit DROPFILES: 'pukseeri failid'
EDITINFO: 'Edit this file' Dimensions: Mõõtmed
FIELDNOTSET: 'File information not found' EDIT: Muuda
FROMCOMPUTER: 'From your computer' EDITINFO: 'Muuda seda faili'
FROMCOMPUTERINFO: 'Select from files' FIELDNOTSET: 'Failiteavet ei leitud'
FROMFILES: 'From files' FROMCOMPUTER: 'Teie arvutist'
FROMCOMPUTERINFO: 'Valige failide hulgast'
FROMFILES: Failidest
HOTLINKINFO: 'Info: This image will be hotlinked. Please ensure you have permissions from the original site creator to do so.' HOTLINKINFO: 'Info: This image will be hotlinked. Please ensure you have permissions from the original site creator to do so.'
MAXNUMBEROFFILES: 'Max number of {count} file(s) exceeded.' MAXNUMBEROFFILES: 'Maksimaalne failide arv {count} on ületatud.'
MAXNUMBEROFFILESSHORT: 'Can only upload {count} files' MAXNUMBEROFFILESONE: 'Can only upload one file'
REMOVE: Remove MAXNUMBEROFFILESSHORT: 'Üles saab laadida ainult {count} faili'
REMOVEERROR: 'Error removing file' OVERWRITEWARNING: 'File with the same name already exists'
REMOVEINFO: 'Remove this file from here, but do not delete it from the file store' REMOVE: Eemalda
STARTALL: 'Start all' REMOVEERROR: 'Viga faili eemaldamisel'
STARTALLINFO: 'Start all uploads' REMOVEINFO: 'Eemalda see fail siit, kuid ära kustuta seda failihoidlast'
Saved: Saved STARTALL: 'Alusta kõiki'
STARTALLINFO: 'Alusta kõiki üleslaadimisi'
Saved: Salvestatud
UPLOADSINTO: 'saves into /{path}'
Versioned: Versioned:
has_many_Versions: Versioon has_many_Versions: Versioon

View File

@ -2,6 +2,7 @@ fa_IR:
AssetAdmin: AssetAdmin:
ALLOWEDEXTS: 'Allowed extensions' ALLOWEDEXTS: 'Allowed extensions'
NEWFOLDER: 'پوشه جديد' NEWFOLDER: 'پوشه جديد'
SHOWALLOWEDEXTS: 'Show allowed extensions'
AssetTableField: AssetTableField:
CREATED: 'First uploaded' CREATED: 'First uploaded'
DIM: ابعاد DIM: ابعاد
@ -9,7 +10,7 @@ fa_IR:
FOLDER: Folder FOLDER: Folder
LASTEDIT: 'آخرین تغییرات' LASTEDIT: 'آخرین تغییرات'
OWNER: دارنده OWNER: دارنده
SIZE: حجم SIZE: 'حجم'
TITLE: عنوان TITLE: عنوان
TYPE: نوع TYPE: نوع
URL: نشانی URL: نشانی
@ -59,9 +60,9 @@ fa_IR:
ERRORNOTADMIN: 'That user is not an administrator.' ERRORNOTADMIN: 'That user is not an administrator.'
ERRORNOTREC: 'That username / password isn''t recognised' ERRORNOTREC: 'That username / password isn''t recognised'
Boolean: Boolean:
0: نه
ANY: هر ANY: هر
1: آری NOANSWER: 'False'
YESANSWER: 'True'
CMSLoadingScreen.ss: CMSLoadingScreen.ss:
LOADING: Loading... LOADING: Loading...
REQUIREJS: 'The CMS requires that you have JavaScript enabled.' REQUIREJS: 'The CMS requires that you have JavaScript enabled.'
@ -70,17 +71,19 @@ fa_IR:
ACCESSALLINTERFACES: 'Access to all CMS sections' ACCESSALLINTERFACES: 'Access to all CMS sections'
ACCESSALLINTERFACESHELP: 'Overrules more specific access settings.' ACCESSALLINTERFACESHELP: 'Overrules more specific access settings.'
SAVE: نگاهداری SAVE: نگاهداری
CMSPageHistoryController_versions.ss:
PREVIEW: 'Website preview'
CMSProfileController: CMSProfileController:
MENUTITLE: 'My Profile' MENUTITLE: 'My Profile'
ChangePasswordEmail.ss: ChangePasswordEmail.ss:
CHANGEPASSWORDTEXT1: 'شما گذرواژه تان را دگرگون کردید برای' CHANGEPASSWORDTEXT1: 'شما گذرواژه تان را دگرگون کردید برای'
CHANGEPASSWORDTEXT2: 'You can now use the following credentials to log in:' CHANGEPASSWORDTEXT2: 'You can now use the following credentials to log in:'
EMAIL: ايميل EMAIL: 'ايميل'
HELLO: درود HELLO: درود
PASSWORD: 'كلمه عبور' PASSWORD: 'كلمه عبور'
CheckboxField: CheckboxField:
- نه NOANSWER: 'False'
- آری YESANSWER: 'True'
ComplexTableField: ComplexTableField:
CLOSEPOPUP: 'بستن چنجره' CLOSEPOPUP: 'بستن چنجره'
SUCCESSADD2: 'Added {name}' SUCCESSADD2: 'Added {name}'
@ -100,32 +103,33 @@ fa_IR:
SHOWONCLICKTITLE: 'تغيير كلمه عبور' SHOWONCLICKTITLE: 'تغيير كلمه عبور'
CreditCardField: CreditCardField:
FIRST: نخست FIRST: نخست
FOURTH: چهارم FOURTH: 'چهارم'
SECOND: دوم SECOND: 'دوم'
THIRD: سوم THIRD: 'سوم'
CurrencyField: CurrencyField:
CURRENCYSYMBOL: $ CURRENCYSYMBOL: $
DataObject: DataObject:
PLURALNAME: 'داده های اشیاء' PLURALNAME: 'داده های اشیاء'
SINGULARNAME: 'داده اشیاء' SINGULARNAME: 'داده اشیاء'
Date: Date:
DAY: روز DAY: day
DAYS: روز DAYS: days
HOUR: ساعت HOUR: hour
HOURS: ساعت HOURS: hours
MIN: دقیقه LessThanMinuteAgo: 'less than a minute'
MINS: دقیقه MIN: min
MONTH: ماه MINS: mins
MONTHS: 'ماه ها' MONTH: month
SEC: ثانیه MONTHS: months
SECS: ثانیه SEC: sec
SECS: secs
TIMEDIFFAGO: '{difference} ago' TIMEDIFFAGO: '{difference} ago'
TIMEDIFFIN: 'in {difference}' TIMEDIFFIN: 'in {difference}'
YEAR: سال YEAR: year
YEARS: سال YEARS: years
DateField: DateField:
NOTSET: 'not set' NOTSET: 'not set'
TODAY: امروز TODAY: 'امروز'
VALIDDATEFORMAT2: 'Please enter a valid date format ({format})' VALIDDATEFORMAT2: 'Please enter a valid date format ({format})'
VALIDDATEMAXDATE: 'Your date has to be older or matching the maximum allowed date ({date})' VALIDDATEMAXDATE: 'Your date has to be older or matching the maximum allowed date ({date})'
VALIDDATEMINDATE: 'Your date has to be newer or matching the minimum allowed date ({date})' VALIDDATEMINDATE: 'Your date has to be newer or matching the minimum allowed date ({date})'
@ -144,7 +148,7 @@ fa_IR:
ANY: Any ANY: Any
File: File:
AviType: 'AVI video file' AviType: 'AVI video file'
Content: محتوا Content: 'محتوا'
CssType: 'CSS file' CssType: 'CSS file'
DmgType: 'Apple disk image' DmgType: 'Apple disk image'
DocType: 'Word document' DocType: 'Word document'
@ -162,7 +166,7 @@ fa_IR:
MpgType: 'MPEG video file' MpgType: 'MPEG video file'
NOFILESIZE: 'Filesize is zero bytes.' NOFILESIZE: 'Filesize is zero bytes.'
NOVALIDUPLOAD: 'File is not a valid upload' NOVALIDUPLOAD: 'File is not a valid upload'
Name: نام Name: 'نام'
PLURALNAME: 'فايل ها' PLURALNAME: 'فايل ها'
PdfType: 'Adobe Acrobat PDF file' PdfType: 'Adobe Acrobat PDF file'
PngType: 'PNG image - good general-purpose format' PngType: 'PNG image - good general-purpose format'
@ -198,7 +202,8 @@ fa_IR:
TEXT2: 'password reset link' TEXT2: 'password reset link'
TEXT3: برای TEXT3: برای
Form: Form:
FIELDISREQUIRED: '%s نیاز است.' CSRF_FAILED_MESSAGE: 'There seems to have been a technical problem. Please click the back button, refresh your browser, and try again.'
FIELDISREQUIRED: '{name} is required'
SubmitBtnLabel: Go SubmitBtnLabel: Go
VALIDATIONCREDITNUMBER: 'Please ensure you have entered the {number} credit card number correctly' VALIDATIONCREDITNUMBER: 'Please ensure you have entered the {number} credit card number correctly'
VALIDATIONNOTUNIQUE: 'The value entered is not unique' VALIDATIONNOTUNIQUE: 'The value entered is not unique'
@ -208,6 +213,7 @@ fa_IR:
VALIDATOR: Validator VALIDATOR: Validator
VALIDCURRENCY: 'Please enter a valid currency' VALIDCURRENCY: 'Please enter a valid currency'
FormField: FormField:
Example: 'e.g. %s'
NONE: 'هیچ کدام' NONE: 'هیچ کدام'
GridAction: GridAction:
DELETE_DESCRIPTION: Delete DELETE_DESCRIPTION: Delete
@ -230,6 +236,7 @@ fa_IR:
ResetFilter: Reset ResetFilter: Reset
GridFieldAction_Delete: GridFieldAction_Delete:
DeletePermissionsFailure: 'No delete permissions' DeletePermissionsFailure: 'No delete permissions'
EditPermissionsFailure: 'No permission to unlink record'
GridFieldDetailForm: GridFieldDetailForm:
CancelBtn: Cancel CancelBtn: Cancel
Create: Create Create: Create
@ -237,7 +244,9 @@ fa_IR:
DeletePermissionsFailure: 'No delete permissions' DeletePermissionsFailure: 'No delete permissions'
Deleted: 'Deleted %s %s' Deleted: 'Deleted %s %s'
Save: Save Save: Save
Saved: 'Saved %s %s' Saved: 'Saved {name} {link}'
GridFieldEditButton.ss:
EDIT: Edit
GridFieldItemEditView.ss: null GridFieldItemEditView.ss: null
Group: Group:
AddRole: 'Add a role for this group' AddRole: 'Add a role for this group'
@ -253,7 +262,7 @@ fa_IR:
RolesAddEditLink: 'اضافه/ویرایش وظیفه' RolesAddEditLink: 'اضافه/ویرایش وظیفه'
SINGULARNAME: Group SINGULARNAME: Group
Sort: 'تربیت چیدن' Sort: 'تربیت چیدن'
has_many_Permissions: مجوز‌ها has_many_Permissions: 'مجوز‌ها'
many_many_Members: اعضاء many_many_Members: اعضاء
GroupImportForm: GroupImportForm:
Help1: '<p>Import one or more groups in <em>CSV</em> format (comma-separated values). <small><a href="#" class="toggle-advanced">Show advanced usage</a></small></p>' Help1: '<p>Import one or more groups in <em>CSV</em> format (comma-separated values). <small><a href="#" class="toggle-advanced">Show advanced usage</a></small></p>'
@ -267,6 +276,7 @@ fa_IR:
ADDURL: 'Add URL' ADDURL: 'Add URL'
ADJUSTDETAILSDIMENSIONS: 'Details &amp; dimensions' ADJUSTDETAILSDIMENSIONS: 'Details &amp; dimensions'
ANCHORVALUE: Anchor ANCHORVALUE: Anchor
BUTTONADDURL: 'Add url'
BUTTONINSERT: Insert BUTTONINSERT: Insert
BUTTONINSERTLINK: 'گذاشتن پیوند' BUTTONINSERTLINK: 'گذاشتن پیوند'
BUTTONREMOVELINK: 'برداشتن پیوند' BUTTONREMOVELINK: 'برداشتن پیوند'
@ -322,7 +332,7 @@ fa_IR:
CANT_REORGANISE: 'You do not have permission to alter Top level pages. Your change was not saved.' CANT_REORGANISE: 'You do not have permission to alter Top level pages. Your change was not saved.'
DELETED: Deleted. DELETED: Deleted.
DropdownBatchActionsDefault: Actions DropdownBatchActionsDefault: Actions
HELP: کمک HELP: 'کمک'
PAGETYPE: 'نوع صفحه' PAGETYPE: 'نوع صفحه'
PERMAGAIN: 'شما از سیستم مدیریت محتوا خارج شده اید.اگر میخواهید دوباره وارد شوید نام کاربری و رمز عبور خود را در قسمت زیر وارد کنید' PERMAGAIN: 'شما از سیستم مدیریت محتوا خارج شده اید.اگر میخواهید دوباره وارد شوید نام کاربری و رمز عبور خود را در قسمت زیر وارد کنید'
PERMALREADY: 'من متاسفم، شما نمی توانید به آن قسمت از سیستم مدیریت محتوا دسترسی پیدا کنید. اگر میخواهید به عنوان شخص دیگری وارد شوید از قسمت زیر تلاش کنید' PERMALREADY: 'من متاسفم، شما نمی توانید به آن قسمت از سیستم مدیریت محتوا دسترسی پیدا کنید. اگر میخواهید به عنوان شخص دیگری وارد شوید از قسمت زیر تلاش کنید'
@ -331,7 +341,10 @@ fa_IR:
PreviewButton: Preview PreviewButton: Preview
REORGANISATIONSUCCESSFUL: 'Reorganised the site tree successfully.' REORGANISATIONSUCCESSFUL: 'Reorganised the site tree successfully.'
SAVEDUP: Saved. SAVEDUP: Saved.
VersionUnknown: unknown ShowAsList: 'show as list'
TooManyPages: 'Too many pages'
ValidationError: 'Validation error'
VersionUnknown: Unknown
LeftAndMain_Menu.ss: LeftAndMain_Menu.ss:
Hello: Hi Hello: Hi
LOGOUT: 'Log out' LOGOUT: 'Log out'
@ -360,7 +373,7 @@ fa_IR:
ERRORNEWPASSWORD: 'You have entered your new password differently, try again' ERRORNEWPASSWORD: 'You have entered your new password differently, try again'
ERRORPASSWORDNOTMATCH: 'Your current password does not match, please try again' ERRORPASSWORDNOTMATCH: 'Your current password does not match, please try again'
ERRORWRONGCRED: 'That doesn''t seem to be the right e-mail address or password. Please try again.' ERRORWRONGCRED: 'That doesn''t seem to be the right e-mail address or password. Please try again.'
FIRSTNAME: نام FIRSTNAME: 'نام'
INTERFACELANG: 'زبان برنامه' INTERFACELANG: 'زبان برنامه'
INVALIDNEWPASSWORD: 'We couldn''t accept that password: {password}' INVALIDNEWPASSWORD: 'We couldn''t accept that password: {password}'
LOGGEDINAS: 'You''re logged in as {name}.' LOGGEDINAS: 'You''re logged in as {name}.'
@ -407,6 +420,7 @@ fa_IR:
TWODIGITMONTH: 'Two-digit month (01=January, etc.)' TWODIGITMONTH: 'Two-digit month (01=January, etc.)'
TWODIGITSECOND: 'Two digits of second (00 through 59)' TWODIGITSECOND: 'Two digits of second (00 through 59)'
TWODIGITYEAR: 'Two-digit year' TWODIGITYEAR: 'Two-digit year'
Toggle: 'Show formatting help'
MemberImportForm: MemberImportForm:
Help1: '<p>Import users in <em>CSV format</em> (comma-separated values). <small><a href="#" class="toggle-advanced">Show advanced usage</a></small></p>' Help1: '<p>Import users in <em>CSV format</em> (comma-separated values). <small><a href="#" class="toggle-advanced">Show advanced usage</a></small></p>'
Help2: '<div class="advanced"> <h4>Advanced usage</h4> <ul> <li>Allowed columns: <em>%s</em></li> <li>Existing users are matched by their unique <em>Code</em> property, and updated with any new values from the imported file.</li> <li>Groups can be assigned by the <em>Groups</em> column. Groups are identified by their <em>Code</em> property, multiple groups can be separated by comma. Existing group memberships are not cleared.</li> </ul></div>' Help2: '<div class="advanced"> <h4>Advanced usage</h4> <ul> <li>Allowed columns: <em>%s</em></li> <li>Existing users are matched by their unique <em>Code</em> property, and updated with any new values from the imported file.</li> <li>Groups can be assigned by the <em>Groups</em> column. Groups are identified by their <em>Code</em> property, multiple groups can be separated by comma. Existing group memberships are not cleared.</li> </ul></div>'
@ -421,7 +435,7 @@ fa_IR:
ModelAdmin: ModelAdmin:
DELETE: حذف DELETE: حذف
DELETEDRECORDS: 'Deleted {count} records.' DELETEDRECORDS: 'Deleted {count} records.'
EMPTYBEFOREIMPORT: 'Clear Database before import' EMPTYBEFOREIMPORT: 'Replace data'
IMPORT: 'Import from CSV' IMPORT: 'Import from CSV'
IMPORTEDRECORDS: 'Imported {count} records.' IMPORTEDRECORDS: 'Imported {count} records.'
NOCSVFILE: 'Please browse for a CSV file to import' NOCSVFILE: 'Please browse for a CSV file to import'
@ -515,7 +529,20 @@ fa_IR:
BtnImport: 'وارد کردن' BtnImport: 'وارد کردن'
FileFieldLabel: 'CSV File <small>(Allowed extensions: *.csv)</small>' FileFieldLabel: 'CSV File <small>(Allowed extensions: *.csv)</small>'
SilverStripeNavigator: SilverStripeNavigator:
Auto: Auto
ChangeViewMode: 'Change view mode'
Desktop: Desktop
DualWindowView: 'Dual Window'
Edit: Edit Edit: Edit
EditView: 'Edit mode'
Mobile: Mobile
PreviewState: 'Preview State'
PreviewView: 'Preview mode'
Responsive: Responsive
SplitView: 'Split mode'
Tablet: Tablet
ViewDeviceWidth: 'Select a preview width'
Width: width
SimpleImageField: SimpleImageField:
NOUPLOAD: 'No Image Uploaded' NOUPLOAD: 'No Image Uploaded'
SiteTree: SiteTree:
@ -551,6 +578,8 @@ fa_IR:
ATTACHFILE: 'Attach a file' ATTACHFILE: 'Attach a file'
ATTACHFILES: 'Attach files' ATTACHFILES: 'Attach files'
AttachFile: 'Attach file(s)' AttachFile: 'Attach file(s)'
CHOOSEANOTHERFILE: 'Choose another file'
CHOOSEANOTHERINFO: 'Replace this file with another one from the file store'
DELETE: 'Delete from files' DELETE: 'Delete from files'
DELETEINFO: 'Permanently delete this file from the file store' DELETEINFO: 'Permanently delete this file from the file store'
DOEDIT: Save DOEDIT: Save
@ -565,12 +594,15 @@ fa_IR:
FROMFILES: 'From files' FROMFILES: 'From files'
HOTLINKINFO: 'Info: This image will be hotlinked. Please ensure you have permissions from the original site creator to do so.' HOTLINKINFO: 'Info: This image will be hotlinked. Please ensure you have permissions from the original site creator to do so.'
MAXNUMBEROFFILES: 'Max number of {count} file(s) exceeded.' MAXNUMBEROFFILES: 'Max number of {count} file(s) exceeded.'
MAXNUMBEROFFILESONE: 'Can only upload one file'
MAXNUMBEROFFILESSHORT: 'Can only upload {count} files' MAXNUMBEROFFILESSHORT: 'Can only upload {count} files'
OVERWRITEWARNING: 'File with the same name already exists'
REMOVE: Remove REMOVE: Remove
REMOVEERROR: 'Error removing file' REMOVEERROR: 'Error removing file'
REMOVEINFO: 'Remove this file from here, but do not delete it from the file store' REMOVEINFO: 'Remove this file from here, but do not delete it from the file store'
STARTALL: 'Start all' STARTALL: 'Start all'
STARTALLINFO: 'Start all uploads' STARTALLINFO: 'Start all uploads'
Saved: Saved Saved: Saved
UPLOADSINTO: 'saves into /{path}'
Versioned: Versioned:
has_many_Versions: 'نسخه ها' has_many_Versions: 'نسخه ها'

View File

@ -2,6 +2,7 @@ fi:
AssetAdmin: AssetAdmin:
ALLOWEDEXTS: 'Sallitut laajennukset' ALLOWEDEXTS: 'Sallitut laajennukset'
NEWFOLDER: 'Uusi kansio' NEWFOLDER: 'Uusi kansio'
SHOWALLOWEDEXTS: 'Show allowed extensions'
AssetTableField: AssetTableField:
CREATED: 'Ensimmäisen kerran ladattu palvelimelle' CREATED: 'Ensimmäisen kerran ladattu palvelimelle'
DIM: Mitat DIM: Mitat
@ -59,9 +60,9 @@ fi:
ERRORNOTADMIN: 'Tämä käyttäjä ei ole ylläpitäjä' ERRORNOTADMIN: 'Tämä käyttäjä ei ole ylläpitäjä'
ERRORNOTREC: 'Tätä käyttäjänimeä/salasanaa ei tunnistettu.' ERRORNOTREC: 'Tätä käyttäjänimeä/salasanaa ei tunnistettu.'
Boolean: Boolean:
0: Ei
ANY: Yhtään ANY: Yhtään
1: Kyllä NOANSWER: 'False'
YESANSWER: 'True'
CMSLoadingScreen.ss: CMSLoadingScreen.ss:
LOADING: Ladataan... LOADING: Ladataan...
REQUIREJS: 'CMS-järjestelmä vaatii, että selaimessasi on JavaSkriptit päällä.' REQUIREJS: 'CMS-järjestelmä vaatii, että selaimessasi on JavaSkriptit päällä.'
@ -70,6 +71,8 @@ fi:
ACCESSALLINTERFACES: 'Pääsy kaikkiin CMS-osioihin' ACCESSALLINTERFACES: 'Pääsy kaikkiin CMS-osioihin'
ACCESSALLINTERFACESHELP: 'Ohittaa tarkemmat käyttöoikeudet.' ACCESSALLINTERFACESHELP: 'Ohittaa tarkemmat käyttöoikeudet.'
SAVE: Tallenna SAVE: Tallenna
CMSPageHistoryController_versions.ss:
PREVIEW: 'Website preview'
CMSProfileController: CMSProfileController:
MENUTITLE: Profiilini MENUTITLE: Profiilini
ChangePasswordEmail.ss: ChangePasswordEmail.ss:
@ -79,8 +82,8 @@ fi:
HELLO: Hei HELLO: Hei
PASSWORD: Salasana PASSWORD: Salasana
CheckboxField: CheckboxField:
- Ei NOANSWER: 'False'
- Kyllä YESANSWER: 'True'
ComplexTableField: ComplexTableField:
CLOSEPOPUP: 'Sulje ponnahdusikkuna' CLOSEPOPUP: 'Sulje ponnahdusikkuna'
SUCCESSADD2: 'Lisättiin {name}' SUCCESSADD2: 'Lisättiin {name}'
@ -109,20 +112,21 @@ fi:
PLURALNAME: Dataobjektit PLURALNAME: Dataobjektit
SINGULARNAME: Dataobjekti SINGULARNAME: Dataobjekti
Date: Date:
DAY: päivä DAY: day
DAYS: ' päivää ' DAYS: days
HOUR: ' tunti' HOUR: hour
HOURS: ' tuntia' HOURS: hours
LessThanMinuteAgo: 'less than a minute'
MIN: min MIN: min
MINS: min. MINS: mins
MONTH: kuukausi MONTH: month
MONTHS: kuukaudet MONTHS: months
SEC: sek. SEC: sec
SECS: sek. SECS: secs
TIMEDIFFAGO: '{difference} sitten' TIMEDIFFAGO: '{difference} sitten'
TIMEDIFFIN: '&raquo; {difference}' TIMEDIFFIN: '&raquo; {difference}'
YEAR: vuosi YEAR: year
YEARS: vuodet YEARS: years
DateField: DateField:
NOTSET: 'ei asetettu' NOTSET: 'ei asetettu'
TODAY: tänään TODAY: tänään
@ -198,7 +202,8 @@ fi:
TEXT2: 'salasanan tyhjäys -linkki' TEXT2: 'salasanan tyhjäys -linkki'
TEXT3: henkilölle TEXT3: henkilölle
Form: Form:
FIELDISREQUIRED: '%s on pakollinen.' CSRF_FAILED_MESSAGE: 'There seems to have been a technical problem. Please click the back button, refresh your browser, and try again.'
FIELDISREQUIRED: '{name} is required'
SubmitBtnLabel: Siirrä SubmitBtnLabel: Siirrä
VALIDATIONCREDITNUMBER: 'Tarkista, ovatko antamasi luottokortin numerot ({number}) oikein' VALIDATIONCREDITNUMBER: 'Tarkista, ovatko antamasi luottokortin numerot ({number}) oikein'
VALIDATIONNOTUNIQUE: 'Syötetty arvo ei ole yksilöllinen' VALIDATIONNOTUNIQUE: 'Syötetty arvo ei ole yksilöllinen'
@ -208,6 +213,7 @@ fi:
VALIDATOR: Tarkistin VALIDATOR: Tarkistin
VALIDCURRENCY: 'Ole hyvä ja valitse voimassa oleva valuutta' VALIDCURRENCY: 'Ole hyvä ja valitse voimassa oleva valuutta'
FormField: FormField:
Example: 'e.g. %s'
NONE: 'Ei yhtään' NONE: 'Ei yhtään'
GridAction: GridAction:
DELETE_DESCRIPTION: Poista DELETE_DESCRIPTION: Poista
@ -230,6 +236,7 @@ fi:
ResetFilter: Nollaa ResetFilter: Nollaa
GridFieldAction_Delete: GridFieldAction_Delete:
DeletePermissionsFailure: 'Ei oikeuksia poistamiseen' DeletePermissionsFailure: 'Ei oikeuksia poistamiseen'
EditPermissionsFailure: 'No permission to unlink record'
GridFieldDetailForm: GridFieldDetailForm:
CancelBtn: Peruuta CancelBtn: Peruuta
Create: Luo Create: Luo
@ -237,7 +244,9 @@ fi:
DeletePermissionsFailure: 'Ei oikeuksia poistamiseen' DeletePermissionsFailure: 'Ei oikeuksia poistamiseen'
Deleted: 'Poistettiin %s %s' Deleted: 'Poistettiin %s %s'
Save: Tallenna Save: Tallenna
Saved: 'Tallennettu %s %s' Saved: 'Saved {name} {link}'
GridFieldEditButton.ss:
EDIT: Edit
GridFieldItemEditView.ss: null GridFieldItemEditView.ss: null
Group: Group:
AddRole: 'Lisää ryhmälle rooli' AddRole: 'Lisää ryhmälle rooli'
@ -267,6 +276,7 @@ fi:
ADDURL: 'Lisää URL-osoite' ADDURL: 'Lisää URL-osoite'
ADJUSTDETAILSDIMENSIONS: 'Tarkat tiedot &amp; mitat' ADJUSTDETAILSDIMENSIONS: 'Tarkat tiedot &amp; mitat'
ANCHORVALUE: Ankkuri ANCHORVALUE: Ankkuri
BUTTONADDURL: 'Add url'
BUTTONINSERT: Liitä BUTTONINSERT: Liitä
BUTTONINSERTLINK: 'Lisää linkki' BUTTONINSERTLINK: 'Lisää linkki'
BUTTONREMOVELINK: 'Poista linkki' BUTTONREMOVELINK: 'Poista linkki'
@ -323,7 +333,7 @@ fi:
DELETED: Poistettu. DELETED: Poistettu.
DropdownBatchActionsDefault: Toimenpiteet DropdownBatchActionsDefault: Toimenpiteet
HELP: Ohje HELP: Ohje
PAGETYPE: 'Sivun tyyppi:' PAGETYPE: 'Sivutyyppi:'
PERMAGAIN: 'Olet kirjautunut ulos CMS:stä. Jos haluat kirjautua uudelleen sisään, syötä käyttäjätunnuksesi ja salasanasi alla.' PERMAGAIN: 'Olet kirjautunut ulos CMS:stä. Jos haluat kirjautua uudelleen sisään, syötä käyttäjätunnuksesi ja salasanasi alla.'
PERMALREADY: 'Paihoittelut, mutta et pääse tähän osaan CMS:ää. Jos haluat kirjautua jonain muuna, voit tehdä sen alla.' PERMALREADY: 'Paihoittelut, mutta et pääse tähän osaan CMS:ää. Jos haluat kirjautua jonain muuna, voit tehdä sen alla.'
PERMDEFAULT: 'Valitse tunnistustapa ja syötä tunnistetietosi CMS:ään.' PERMDEFAULT: 'Valitse tunnistustapa ja syötä tunnistetietosi CMS:ään.'
@ -331,6 +341,9 @@ fi:
PreviewButton: Esikatselu PreviewButton: Esikatselu
REORGANISATIONSUCCESSFUL: 'Hakemistopuu järjestettiin uudelleen onnistuneesti.' REORGANISATIONSUCCESSFUL: 'Hakemistopuu järjestettiin uudelleen onnistuneesti.'
SAVEDUP: Tallennettu. SAVEDUP: Tallennettu.
ShowAsList: 'show as list'
TooManyPages: 'Too many pages'
ValidationError: 'Validation error'
VersionUnknown: tuntematon VersionUnknown: tuntematon
LeftAndMain_Menu.ss: LeftAndMain_Menu.ss:
Hello: Hei Hello: Hei
@ -407,6 +420,7 @@ fi:
TWODIGITMONTH: 'Kaksinumeroinen kuukausi (01=tammikuu, jne.)' TWODIGITMONTH: 'Kaksinumeroinen kuukausi (01=tammikuu, jne.)'
TWODIGITSECOND: 'Kaksinumeroinen sekunti (0059)' TWODIGITSECOND: 'Kaksinumeroinen sekunti (0059)'
TWODIGITYEAR: 'Kaksinumeroinen vuosiluku' TWODIGITYEAR: 'Kaksinumeroinen vuosiluku'
Toggle: 'Show formatting help'
MemberImportForm: MemberImportForm:
Help1: '<p>Tuo käyttäjät <em>CSV-muodossa</em> (arvot pilkulla erotettuina). <small><a href="#" class="toggle-advanced">Näytä edistyksellinen käyttö</a></small></p>' Help1: '<p>Tuo käyttäjät <em>CSV-muodossa</em> (arvot pilkulla erotettuina). <small><a href="#" class="toggle-advanced">Näytä edistyksellinen käyttö</a></small></p>'
Help2: "<div class=\"advanced\">\\n<h4>Edistynyt käyttö</h4>\\n<ul>\\n<li>Sallitut palstat: <em>%s</em></li>\\n<li>Olemassa olevat käyttäjät kohdistetaan uniikilla <em>Code</em>-arvolla, ja päivitetään uudet arvot tuodusta tiedostosta.</li>\\n<li>Ryhmät voidaan kohdistaa <em>Ryhmät</em>-palstaan. Ryhmät tunnistetaan <em>Code</em>-arvosta, useat ryhmät voidaan erottaa pilkulla. Olemassa olevat ryhmäjäsenyydet säilytetään.</li>\\n</ul>\\n</div>" Help2: "<div class=\"advanced\">\\n<h4>Edistynyt käyttö</h4>\\n<ul>\\n<li>Sallitut palstat: <em>%s</em></li>\\n<li>Olemassa olevat käyttäjät kohdistetaan uniikilla <em>Code</em>-arvolla, ja päivitetään uudet arvot tuodusta tiedostosta.</li>\\n<li>Ryhmät voidaan kohdistaa <em>Ryhmät</em>-palstaan. Ryhmät tunnistetaan <em>Code</em>-arvosta, useat ryhmät voidaan erottaa pilkulla. Olemassa olevat ryhmäjäsenyydet säilytetään.</li>\\n</ul>\\n</div>"
@ -421,7 +435,7 @@ fi:
ModelAdmin: ModelAdmin:
DELETE: Poista DELETE: Poista
DELETEDRECORDS: 'Poistettiin {count} tietuetta' DELETEDRECORDS: 'Poistettiin {count} tietuetta'
EMPTYBEFOREIMPORT: 'Tyhjennä tietokanta ennen tuonti' EMPTYBEFOREIMPORT: 'Replace data'
IMPORT: 'Tuo CSV:stä' IMPORT: 'Tuo CSV:stä'
IMPORTEDRECORDS: 'Tuotiin {count} tietuetta' IMPORTEDRECORDS: 'Tuotiin {count} tietuetta'
NOCSVFILE: 'Selaa ja tuo CSV-tiedosto' NOCSVFILE: 'Selaa ja tuo CSV-tiedosto'
@ -515,7 +529,20 @@ fi:
BtnImport: Tuonti BtnImport: Tuonti
FileFieldLabel: 'CSV-tiedosto <small>(Sallitut päätteet: *.csv)</small>' FileFieldLabel: 'CSV-tiedosto <small>(Sallitut päätteet: *.csv)</small>'
SilverStripeNavigator: SilverStripeNavigator:
Auto: Auto
ChangeViewMode: 'Change view mode'
Desktop: Desktop
DualWindowView: 'Dual Window'
Edit: Muokkaa Edit: Muokkaa
EditView: 'Edit mode'
Mobile: Mobile
PreviewState: 'Preview State'
PreviewView: 'Preview mode'
Responsive: Responsive
SplitView: 'Split mode'
Tablet: Tablet
ViewDeviceWidth: 'Select a preview width'
Width: width
SimpleImageField: SimpleImageField:
NOUPLOAD: 'Kuvaa ei kopioitu palvelimelle' NOUPLOAD: 'Kuvaa ei kopioitu palvelimelle'
SiteTree: SiteTree:
@ -551,6 +578,8 @@ fi:
ATTACHFILE: 'Liitä tiedosto' ATTACHFILE: 'Liitä tiedosto'
ATTACHFILES: 'Liitä tiedostoja' ATTACHFILES: 'Liitä tiedostoja'
AttachFile: 'Liitä tiedostoja' AttachFile: 'Liitä tiedostoja'
CHOOSEANOTHERFILE: 'Choose another file'
CHOOSEANOTHERINFO: 'Replace this file with another one from the file store'
DELETE: 'Poista tiedostoista' DELETE: 'Poista tiedostoista'
DELETEINFO: 'Poista tiedosto pysyvästi' DELETEINFO: 'Poista tiedosto pysyvästi'
DOEDIT: Tallenna DOEDIT: Tallenna
@ -565,12 +594,15 @@ fi:
FROMFILES: Tiedostoista FROMFILES: Tiedostoista
HOTLINKINFO: 'Info: Kuvalle tulee suora linkki. Varmista sivun omistajalta, että sinulla on oikeus suoraan linkitykseen.' HOTLINKINFO: 'Info: Kuvalle tulee suora linkki. Varmista sivun omistajalta, että sinulla on oikeus suoraan linkitykseen.'
MAXNUMBEROFFILES: 'Suurin sallittu määrä ({count}) tiedostoja ylitetty.' MAXNUMBEROFFILES: 'Suurin sallittu määrä ({count}) tiedostoja ylitetty.'
MAXNUMBEROFFILESONE: 'Can only upload one file'
MAXNUMBEROFFILESSHORT: 'Voidaan siirtää vain {count} tiedostoa' MAXNUMBEROFFILESSHORT: 'Voidaan siirtää vain {count} tiedostoa'
OVERWRITEWARNING: 'File with the same name already exists'
REMOVE: Poista REMOVE: Poista
REMOVEERROR: 'Virhe poistettaessa tiedostoa' REMOVEERROR: 'Virhe poistettaessa tiedostoa'
REMOVEINFO: 'Poista tiedosto, mutta säilytä se tiedostovarastossa' REMOVEINFO: 'Poista tiedosto, mutta säilytä se tiedostovarastossa'
STARTALL: 'Aloita kaikki' STARTALL: 'Aloita kaikki'
STARTALLINFO: 'Aloita kaikkien siirto' STARTALLINFO: 'Aloita kaikkien siirto'
Saved: Tallennettu Saved: Tallennettu
UPLOADSINTO: 'saves into /{path}'
Versioned: Versioned:
has_many_Versions: Versiot has_many_Versions: Versiot

View File

@ -2,6 +2,7 @@ fo:
AssetAdmin: AssetAdmin:
ALLOWEDEXTS: 'Allowed extensions' ALLOWEDEXTS: 'Allowed extensions'
NEWFOLDER: 'Nýggj skjátta' NEWFOLDER: 'Nýggj skjátta'
SHOWALLOWEDEXTS: 'Show allowed extensions'
AssetTableField: AssetTableField:
CREATED: 'First uploaded' CREATED: 'First uploaded'
DIM: Dimensions DIM: Dimensions
@ -59,9 +60,9 @@ fo:
ERRORNOTADMIN: 'Hasin brúkarin er ikki ein fyrisitari.' ERRORNOTADMIN: 'Hasin brúkarin er ikki ein fyrisitari.'
ERRORNOTREC: 'Brúkaranavn / loyniorð er skeivt' ERRORNOTREC: 'Brúkaranavn / loyniorð er skeivt'
Boolean: Boolean:
0: 'False'
ANY: Any ANY: Any
1: 'True' NOANSWER: 'False'
YESANSWER: 'True'
CMSLoadingScreen.ss: CMSLoadingScreen.ss:
LOADING: Loading... LOADING: Loading...
REQUIREJS: 'The CMS requires that you have JavaScript enabled.' REQUIREJS: 'The CMS requires that you have JavaScript enabled.'
@ -70,6 +71,8 @@ fo:
ACCESSALLINTERFACES: 'Access to all CMS sections' ACCESSALLINTERFACES: 'Access to all CMS sections'
ACCESSALLINTERFACESHELP: 'Overrules more specific access settings.' ACCESSALLINTERFACESHELP: 'Overrules more specific access settings.'
SAVE: Goym SAVE: Goym
CMSPageHistoryController_versions.ss:
PREVIEW: 'Website preview'
CMSProfileController: CMSProfileController:
MENUTITLE: 'My Profile' MENUTITLE: 'My Profile'
ChangePasswordEmail.ss: ChangePasswordEmail.ss:
@ -79,8 +82,8 @@ fo:
HELLO: Hey HELLO: Hey
PASSWORD: Loyniorð PASSWORD: Loyniorð
CheckboxField: CheckboxField:
- 'False' NOANSWER: 'False'
- 'True' YESANSWER: 'True'
ComplexTableField: ComplexTableField:
CLOSEPOPUP: 'Lat glugga aftur' CLOSEPOPUP: 'Lat glugga aftur'
SUCCESSADD2: 'Added {name}' SUCCESSADD2: 'Added {name}'
@ -109,20 +112,21 @@ fo:
PLURALNAME: 'Dáta eindir' PLURALNAME: 'Dáta eindir'
SINGULARNAME: 'Dáta eind' SINGULARNAME: 'Dáta eind'
Date: Date:
DAY: dagur DAY: day
DAYS: dagar DAYS: days
HOUR: tími HOUR: hour
HOURS: tímar HOURS: hours
MIN: minuttur LessThanMinuteAgo: 'less than a minute'
MINS: minuttir MIN: min
MONTH: máni MINS: mins
MONTHS: mánaðar MONTH: month
SEC: sekund MONTHS: months
SECS: sekundir SEC: sec
SECS: secs
TIMEDIFFAGO: '{difference} ago' TIMEDIFFAGO: '{difference} ago'
TIMEDIFFIN: 'in {difference}' TIMEDIFFIN: 'in {difference}'
YEAR: ár YEAR: year
YEARS: ár YEARS: years
DateField: DateField:
NOTSET: 'ikki ásett' NOTSET: 'ikki ásett'
TODAY: 'í dag' TODAY: 'í dag'
@ -198,7 +202,8 @@ fo:
TEXT2: 'password reset link' TEXT2: 'password reset link'
TEXT3: for TEXT3: for
Form: Form:
FIELDISREQUIRED: '%s er kravt' CSRF_FAILED_MESSAGE: 'There seems to have been a technical problem. Please click the back button, refresh your browser, and try again.'
FIELDISREQUIRED: '{name} is required'
SubmitBtnLabel: Go SubmitBtnLabel: Go
VALIDATIONCREDITNUMBER: 'Please ensure you have entered the {number} credit card number correctly' VALIDATIONCREDITNUMBER: 'Please ensure you have entered the {number} credit card number correctly'
VALIDATIONNOTUNIQUE: 'Virðið sum bleiv inntøppað er ikki eintýðugt' VALIDATIONNOTUNIQUE: 'Virðið sum bleiv inntøppað er ikki eintýðugt'
@ -208,6 +213,7 @@ fo:
VALIDATOR: Validator VALIDATOR: Validator
VALIDCURRENCY: 'Please enter a valid currency' VALIDCURRENCY: 'Please enter a valid currency'
FormField: FormField:
Example: 'e.g. %s'
NONE: einki NONE: einki
GridAction: GridAction:
DELETE_DESCRIPTION: Delete DELETE_DESCRIPTION: Delete
@ -230,6 +236,7 @@ fo:
ResetFilter: Reset ResetFilter: Reset
GridFieldAction_Delete: GridFieldAction_Delete:
DeletePermissionsFailure: 'No delete permissions' DeletePermissionsFailure: 'No delete permissions'
EditPermissionsFailure: 'No permission to unlink record'
GridFieldDetailForm: GridFieldDetailForm:
CancelBtn: Cancel CancelBtn: Cancel
Create: Create Create: Create
@ -237,7 +244,9 @@ fo:
DeletePermissionsFailure: 'No delete permissions' DeletePermissionsFailure: 'No delete permissions'
Deleted: 'Deleted %s %s' Deleted: 'Deleted %s %s'
Save: Save Save: Save
Saved: 'Saved %s %s' Saved: 'Saved {name} {link}'
GridFieldEditButton.ss:
EDIT: Edit
GridFieldItemEditView.ss: null GridFieldItemEditView.ss: null
Group: Group:
AddRole: 'Add a role for this group' AddRole: 'Add a role for this group'
@ -267,6 +276,7 @@ fo:
ADDURL: 'Add URL' ADDURL: 'Add URL'
ADJUSTDETAILSDIMENSIONS: 'Details &amp; dimensions' ADJUSTDETAILSDIMENSIONS: 'Details &amp; dimensions'
ANCHORVALUE: Anchor ANCHORVALUE: Anchor
BUTTONADDURL: 'Add url'
BUTTONINSERT: Insert BUTTONINSERT: Insert
BUTTONINSERTLINK: 'Stovna leinku' BUTTONINSERTLINK: 'Stovna leinku'
BUTTONREMOVELINK: 'Strika leinku' BUTTONREMOVELINK: 'Strika leinku'
@ -331,7 +341,10 @@ fo:
PreviewButton: Preview PreviewButton: Preview
REORGANISATIONSUCCESSFUL: 'Reorganised the site tree successfully.' REORGANISATIONSUCCESSFUL: 'Reorganised the site tree successfully.'
SAVEDUP: Saved. SAVEDUP: Saved.
VersionUnknown: unknown ShowAsList: 'show as list'
TooManyPages: 'Too many pages'
ValidationError: 'Validation error'
VersionUnknown: Unknown
LeftAndMain_Menu.ss: LeftAndMain_Menu.ss:
Hello: Hi Hello: Hi
LOGOUT: 'Log out' LOGOUT: 'Log out'
@ -407,6 +420,7 @@ fo:
TWODIGITMONTH: 'Two-digit month (01=January, etc.)' TWODIGITMONTH: 'Two-digit month (01=January, etc.)'
TWODIGITSECOND: 'Two digits of second (00 through 59)' TWODIGITSECOND: 'Two digits of second (00 through 59)'
TWODIGITYEAR: 'Two-digit year' TWODIGITYEAR: 'Two-digit year'
Toggle: 'Show formatting help'
MemberImportForm: MemberImportForm:
Help1: '<p>Import users in <em>CSV format</em> (comma-separated values). <small><a href="#" class="toggle-advanced">Show advanced usage</a></small></p>' Help1: '<p>Import users in <em>CSV format</em> (comma-separated values). <small><a href="#" class="toggle-advanced">Show advanced usage</a></small></p>'
Help2: '<div class="advanced"> <h4>Advanced usage</h4> <ul> <li>Allowed columns: <em>%s</em></li> <li>Existing users are matched by their unique <em>Code</em> property, and updated with any new values from the imported file.</li> <li>Groups can be assigned by the <em>Groups</em> column. Groups are identified by their <em>Code</em> property, multiple groups can be separated by comma. Existing group memberships are not cleared.</li> </ul></div>' Help2: '<div class="advanced"> <h4>Advanced usage</h4> <ul> <li>Allowed columns: <em>%s</em></li> <li>Existing users are matched by their unique <em>Code</em> property, and updated with any new values from the imported file.</li> <li>Groups can be assigned by the <em>Groups</em> column. Groups are identified by their <em>Code</em> property, multiple groups can be separated by comma. Existing group memberships are not cleared.</li> </ul></div>'
@ -421,7 +435,7 @@ fo:
ModelAdmin: ModelAdmin:
DELETE: Strika DELETE: Strika
DELETEDRECORDS: 'Deleted {count} records.' DELETEDRECORDS: 'Deleted {count} records.'
EMPTYBEFOREIMPORT: 'Clear Database before import' EMPTYBEFOREIMPORT: 'Replace data'
IMPORT: 'Innles frá CSV' IMPORT: 'Innles frá CSV'
IMPORTEDRECORDS: 'Imported {count} records.' IMPORTEDRECORDS: 'Imported {count} records.'
NOCSVFILE: 'Please browse for a CSV file to import' NOCSVFILE: 'Please browse for a CSV file to import'
@ -515,7 +529,20 @@ fo:
BtnImport: 'Import from CSV' BtnImport: 'Import from CSV'
FileFieldLabel: 'CSV File <small>(Allowed extensions: *.csv)</small>' FileFieldLabel: 'CSV File <small>(Allowed extensions: *.csv)</small>'
SilverStripeNavigator: SilverStripeNavigator:
Auto: Auto
ChangeViewMode: 'Change view mode'
Desktop: Desktop
DualWindowView: 'Dual Window'
Edit: Edit Edit: Edit
EditView: 'Edit mode'
Mobile: Mobile
PreviewState: 'Preview State'
PreviewView: 'Preview mode'
Responsive: Responsive
SplitView: 'Split mode'
Tablet: Tablet
ViewDeviceWidth: 'Select a preview width'
Width: width
SimpleImageField: SimpleImageField:
NOUPLOAD: 'No Image Uploaded' NOUPLOAD: 'No Image Uploaded'
SiteTree: SiteTree:
@ -551,6 +578,8 @@ fo:
ATTACHFILE: 'Attach a file' ATTACHFILE: 'Attach a file'
ATTACHFILES: 'Attach files' ATTACHFILES: 'Attach files'
AttachFile: 'Attach file(s)' AttachFile: 'Attach file(s)'
CHOOSEANOTHERFILE: 'Choose another file'
CHOOSEANOTHERINFO: 'Replace this file with another one from the file store'
DELETE: 'Delete from files' DELETE: 'Delete from files'
DELETEINFO: 'Permanently delete this file from the file store' DELETEINFO: 'Permanently delete this file from the file store'
DOEDIT: Save DOEDIT: Save
@ -565,12 +594,15 @@ fo:
FROMFILES: 'From files' FROMFILES: 'From files'
HOTLINKINFO: 'Info: This image will be hotlinked. Please ensure you have permissions from the original site creator to do so.' HOTLINKINFO: 'Info: This image will be hotlinked. Please ensure you have permissions from the original site creator to do so.'
MAXNUMBEROFFILES: 'Max number of {count} file(s) exceeded.' MAXNUMBEROFFILES: 'Max number of {count} file(s) exceeded.'
MAXNUMBEROFFILESONE: 'Can only upload one file'
MAXNUMBEROFFILESSHORT: 'Can only upload {count} files' MAXNUMBEROFFILESSHORT: 'Can only upload {count} files'
OVERWRITEWARNING: 'File with the same name already exists'
REMOVE: Remove REMOVE: Remove
REMOVEERROR: 'Error removing file' REMOVEERROR: 'Error removing file'
REMOVEINFO: 'Remove this file from here, but do not delete it from the file store' REMOVEINFO: 'Remove this file from here, but do not delete it from the file store'
STARTALL: 'Start all' STARTALL: 'Start all'
STARTALLINFO: 'Start all uploads' STARTALLINFO: 'Start all uploads'
Saved: Saved Saved: Saved
UPLOADSINTO: 'saves into /{path}'
Versioned: Versioned:
has_many_Versions: Útgávur has_many_Versions: Útgávur

View File

@ -2,6 +2,7 @@ fr:
AssetAdmin: AssetAdmin:
ALLOWEDEXTS: 'Allowed extensions' ALLOWEDEXTS: 'Allowed extensions'
NEWFOLDER: 'Nouveau dossier' NEWFOLDER: 'Nouveau dossier'
SHOWALLOWEDEXTS: 'Show allowed extensions'
AssetTableField: AssetTableField:
CREATED: 'Premier chargement' CREATED: 'Premier chargement'
DIM: Dimensions DIM: Dimensions
@ -59,9 +60,9 @@ fr:
ERRORNOTADMIN: 'Cet utilisateur n''est pas un administrateur.' ERRORNOTADMIN: 'Cet utilisateur n''est pas un administrateur.'
ERRORNOTREC: 'Cet identifiant / mot de passe n''est pas reconnu' ERRORNOTREC: 'Cet identifiant / mot de passe n''est pas reconnu'
Boolean: Boolean:
0: Non
ANY: Tout ANY: Tout
1: Oui NOANSWER: 'False'
YESANSWER: 'True'
CMSLoadingScreen.ss: CMSLoadingScreen.ss:
LOADING: Chargement... LOADING: Chargement...
REQUIREJS: 'Vous devez activer JavaScript pour utiliser le CMS.' REQUIREJS: 'Vous devez activer JavaScript pour utiliser le CMS.'
@ -70,6 +71,8 @@ fr:
ACCESSALLINTERFACES: 'Accès à toutes les sections du CMS' ACCESSALLINTERFACES: 'Accès à toutes les sections du CMS'
ACCESSALLINTERFACESHELP: 'Prioritaire sur les droits plus spécifiques d''accès.' ACCESSALLINTERFACESHELP: 'Prioritaire sur les droits plus spécifiques d''accès.'
SAVE: Enregistrer SAVE: Enregistrer
CMSPageHistoryController_versions.ss:
PREVIEW: 'Website preview'
CMSProfileController: CMSProfileController:
MENUTITLE: 'Mon profil' MENUTITLE: 'Mon profil'
ChangePasswordEmail.ss: ChangePasswordEmail.ss:
@ -79,8 +82,8 @@ fr:
HELLO: Salut HELLO: Salut
PASSWORD: 'Mot de passe' PASSWORD: 'Mot de passe'
CheckboxField: CheckboxField:
- Non NOANSWER: 'False'
- Oui YESANSWER: 'True'
ComplexTableField: ComplexTableField:
CLOSEPOPUP: 'Ferme Popup' CLOSEPOPUP: 'Ferme Popup'
SUCCESSADD2: '{name} ajouté' SUCCESSADD2: '{name} ajouté'
@ -109,20 +112,21 @@ fr:
PLURALNAME: 'Data Objects' PLURALNAME: 'Data Objects'
SINGULARNAME: 'Data Object' SINGULARNAME: 'Data Object'
Date: Date:
DAY: jour DAY: day
DAYS: jours DAYS: days
HOUR: heure HOUR: hour
HOURS: heures HOURS: hours
MIN: minutes LessThanMinuteAgo: 'less than a minute'
MINS: minutes MIN: min
MONTH: mois MINS: mins
MONTHS: mois MONTH: month
SEC: seconde MONTHS: months
SECS: secondes SEC: sec
SECS: secs
TIMEDIFFAGO: 'Il y a {difference}' TIMEDIFFAGO: 'Il y a {difference}'
TIMEDIFFIN: 'Dans {difference}' TIMEDIFFIN: 'Dans {difference}'
YEAR: année YEAR: year
YEARS: années YEARS: years
DateField: DateField:
NOTSET: 'pas d''ensemble' NOTSET: 'pas d''ensemble'
TODAY: 'aujourd''hui' TODAY: 'aujourd''hui'
@ -198,7 +202,8 @@ fr:
TEXT2: 'lien de réinitialisation de mot de passe' TEXT2: 'lien de réinitialisation de mot de passe'
TEXT3: pour TEXT3: pour
Form: Form:
FIELDISREQUIRED: '%s est requis' CSRF_FAILED_MESSAGE: 'There seems to have been a technical problem. Please click the back button, refresh your browser, and try again.'
FIELDISREQUIRED: '{name} is required'
SubmitBtnLabel: Envoyer SubmitBtnLabel: Envoyer
VALIDATIONCREDITNUMBER: 'Vérifiez que vous avez bien saisi votre numéro de carte bleue {number}.' VALIDATIONCREDITNUMBER: 'Vérifiez que vous avez bien saisi votre numéro de carte bleue {number}.'
VALIDATIONNOTUNIQUE: 'La valeur entrée n''est pas unique' VALIDATIONNOTUNIQUE: 'La valeur entrée n''est pas unique'
@ -208,6 +213,7 @@ fr:
VALIDATOR: Validateur VALIDATOR: Validateur
VALIDCURRENCY: 'Saisissez une monnaie valide' VALIDCURRENCY: 'Saisissez une monnaie valide'
FormField: FormField:
Example: 'e.g. %s'
NONE: aucun NONE: aucun
GridAction: GridAction:
DELETE_DESCRIPTION: Supprime DELETE_DESCRIPTION: Supprime
@ -230,6 +236,7 @@ fr:
ResetFilter: Réinitialiser ResetFilter: Réinitialiser
GridFieldAction_Delete: GridFieldAction_Delete:
DeletePermissionsFailure: 'Vous navez pas les autorisations pour supprimer' DeletePermissionsFailure: 'Vous navez pas les autorisations pour supprimer'
EditPermissionsFailure: 'No permission to unlink record'
GridFieldDetailForm: GridFieldDetailForm:
CancelBtn: Annuler CancelBtn: Annuler
Create: Créer Create: Créer
@ -237,7 +244,9 @@ fr:
DeletePermissionsFailure: 'Vous navez pas les autorisations pour supprimer' DeletePermissionsFailure: 'Vous navez pas les autorisations pour supprimer'
Deleted: '%s %s supprimés' Deleted: '%s %s supprimés'
Save: Enregistrer Save: Enregistrer
Saved: '%s %s sauvegardés' Saved: 'Saved {name} {link}'
GridFieldEditButton.ss:
EDIT: Edit
GridFieldItemEditView.ss: null GridFieldItemEditView.ss: null
Group: Group:
AddRole: 'Ajouter un rôle à ce groupe ' AddRole: 'Ajouter un rôle à ce groupe '
@ -267,6 +276,7 @@ fr:
ADDURL: 'Ajouter URL' ADDURL: 'Ajouter URL'
ADJUSTDETAILSDIMENSIONS: 'Détails &amp; dimensions' ADJUSTDETAILSDIMENSIONS: 'Détails &amp; dimensions'
ANCHORVALUE: Ancre ANCHORVALUE: Ancre
BUTTONADDURL: 'Add url'
BUTTONINSERT: Insérer BUTTONINSERT: Insérer
BUTTONINSERTLINK: 'Insérer un lien' BUTTONINSERTLINK: 'Insérer un lien'
BUTTONREMOVELINK: 'Supprimer le lien' BUTTONREMOVELINK: 'Supprimer le lien'
@ -331,6 +341,9 @@ fr:
PreviewButton: Aperçu PreviewButton: Aperçu
REORGANISATIONSUCCESSFUL: 'Larbre du site a été bien réorganisé.' REORGANISATIONSUCCESSFUL: 'Larbre du site a été bien réorganisé.'
SAVEDUP: Enregistré. SAVEDUP: Enregistré.
ShowAsList: 'show as list'
TooManyPages: 'Too many pages'
ValidationError: 'Validation error'
VersionUnknown: inconnu VersionUnknown: inconnu
LeftAndMain_Menu.ss: LeftAndMain_Menu.ss:
Hello: Bonjour Hello: Bonjour
@ -407,6 +420,7 @@ fr:
TWODIGITMONTH: 'Le mois sur deux chiffres (p. ex. 01=janvier)' TWODIGITMONTH: 'Le mois sur deux chiffres (p. ex. 01=janvier)'
TWODIGITSECOND: 'La seconde sur deux chiffres (de 00 à 59)' TWODIGITSECOND: 'La seconde sur deux chiffres (de 00 à 59)'
TWODIGITYEAR: 'Lannée sur deux chiffres' TWODIGITYEAR: 'Lannée sur deux chiffres'
Toggle: 'Show formatting help'
MemberImportForm: MemberImportForm:
Help1: '<p>Importer les membres au format<em>CSV format</em> (comma-separated values). <small><a href="#" class="toggle-advanced">Afficher l''usage avancé.</a></small></p>' Help1: '<p>Importer les membres au format<em>CSV format</em> (comma-separated values). <small><a href="#" class="toggle-advanced">Afficher l''usage avancé.</a></small></p>'
Help2: "<div class=\"advanced\">\\n<h4>Utilisation avancée</h4>\\n<ul>\\n<li>Colonnes autorisées&nbsp;: <em>%s</em></li>\\n<li>Les utilisateurs existants sont retrouvés avec leur <em>Code</em> unique et les registres sont mis à jour avec les nouvelles valeurs du fichier importé.</li>\\n<li>Des groupes peuvent être assignés à laide de la colonne <em>Groups</em>. Les groupes sont identifiés par leur <em>Code</em>, plusieurs groupes peuvent être indiqués en les séparant par des virgules. Lappartenance actuelle aux groupes nest pas modifiée.</li>\\n</ul>\\n</div>" Help2: "<div class=\"advanced\">\\n<h4>Utilisation avancée</h4>\\n<ul>\\n<li>Colonnes autorisées&nbsp;: <em>%s</em></li>\\n<li>Les utilisateurs existants sont retrouvés avec leur <em>Code</em> unique et les registres sont mis à jour avec les nouvelles valeurs du fichier importé.</li>\\n<li>Des groupes peuvent être assignés à laide de la colonne <em>Groups</em>. Les groupes sont identifiés par leur <em>Code</em>, plusieurs groupes peuvent être indiqués en les séparant par des virgules. Lappartenance actuelle aux groupes nest pas modifiée.</li>\\n</ul>\\n</div>"
@ -421,7 +435,7 @@ fr:
ModelAdmin: ModelAdmin:
DELETE: Supprime DELETE: Supprime
DELETEDRECORDS: '{count} enregistrements supprimés.' DELETEDRECORDS: '{count} enregistrements supprimés.'
EMPTYBEFOREIMPORT: 'Vider la base de données avant dimporter' EMPTYBEFOREIMPORT: 'Replace data'
IMPORT: 'Importer de CSV' IMPORT: 'Importer de CSV'
IMPORTEDRECORDS: '{count} enregistrements importés.' IMPORTEDRECORDS: '{count} enregistrements importés.'
NOCSVFILE: 'Veuillez choisir un fichier CSV à importer' NOCSVFILE: 'Veuillez choisir un fichier CSV à importer'
@ -515,7 +529,20 @@ fr:
BtnImport: Importer BtnImport: Importer
FileFieldLabel: 'Fichier CSV <small>(extension autorisée&nbsp;: *.csv)</small>' FileFieldLabel: 'Fichier CSV <small>(extension autorisée&nbsp;: *.csv)</small>'
SilverStripeNavigator: SilverStripeNavigator:
Auto: Auto
ChangeViewMode: 'Change view mode'
Desktop: Desktop
DualWindowView: 'Dual Window'
Edit: 'Tout modifier' Edit: 'Tout modifier'
EditView: 'Edit mode'
Mobile: Mobile
PreviewState: 'Preview State'
PreviewView: 'Preview mode'
Responsive: Responsive
SplitView: 'Split mode'
Tablet: Tablet
ViewDeviceWidth: 'Select a preview width'
Width: width
SimpleImageField: SimpleImageField:
NOUPLOAD: 'Aucune image chargée' NOUPLOAD: 'Aucune image chargée'
SiteTree: SiteTree:
@ -537,7 +564,7 @@ fr:
TableListField_PageControls.ss: TableListField_PageControls.ss:
DISPLAYING: 'Affichage de' DISPLAYING: 'Affichage de'
OF: de OF: de
TO: à TO: 'à'
VIEWFIRST: 'Voir premier' VIEWFIRST: 'Voir premier'
VIEWLAST: 'Voir dernier' VIEWLAST: 'Voir dernier'
VIEWNEXT: 'Voir suivant' VIEWNEXT: 'Voir suivant'
@ -551,6 +578,8 @@ fr:
ATTACHFILE: 'Joindre un fichier' ATTACHFILE: 'Joindre un fichier'
ATTACHFILES: 'Joindre des fichiers' ATTACHFILES: 'Joindre des fichiers'
AttachFile: 'Joindre un ou plusieurs fichiers' AttachFile: 'Joindre un ou plusieurs fichiers'
CHOOSEANOTHERFILE: 'Choose another file'
CHOOSEANOTHERINFO: 'Replace this file with another one from the file store'
DELETE: 'Supprimer des fichiers' DELETE: 'Supprimer des fichiers'
DELETEINFO: 'Effacer définitivement ce fichier des archives' DELETEINFO: 'Effacer définitivement ce fichier des archives'
DOEDIT: Enregistrer DOEDIT: Enregistrer
@ -565,12 +594,15 @@ fr:
FROMFILES: 'Depuis les fichiers' FROMFILES: 'Depuis les fichiers'
HOTLINKINFO: 'Note : Cette image sera liée par un « hotlink », assurez-vous davoir lautorisation des ayant-droits du site web dorigine.' HOTLINKINFO: 'Note : Cette image sera liée par un « hotlink », assurez-vous davoir lautorisation des ayant-droits du site web dorigine.'
MAXNUMBEROFFILES: 'Le nombre maximal de {count} fichiers a été dépassé.' MAXNUMBEROFFILES: 'Le nombre maximal de {count} fichiers a été dépassé.'
MAXNUMBEROFFILESONE: 'Can only upload one file'
MAXNUMBEROFFILESSHORT: 'On ne peut pas télécharger plus de {count} fichiers' MAXNUMBEROFFILESSHORT: 'On ne peut pas télécharger plus de {count} fichiers'
OVERWRITEWARNING: 'File with the same name already exists'
REMOVE: Supprimer REMOVE: Supprimer
REMOVEERROR: 'Le fichier na pas pu être supprimé' REMOVEERROR: 'Le fichier na pas pu être supprimé'
REMOVEINFO: 'Supprimer ce fichier ici sans leffacer des archives' REMOVEINFO: 'Supprimer ce fichier ici sans leffacer des archives'
STARTALL: 'Démarrer tout' STARTALL: 'Démarrer tout'
STARTALLINFO: 'Démarrer tous les téléchargements' STARTALLINFO: 'Démarrer tous les téléchargements'
Saved: Enregistré Saved: Enregistré
UPLOADSINTO: 'saves into /{path}'
Versioned: Versioned:
has_many_Versions: Versions has_many_Versions: Versions

View File

@ -2,6 +2,7 @@ gl_ES:
AssetAdmin: AssetAdmin:
ALLOWEDEXTS: 'Allowed extensions' ALLOWEDEXTS: 'Allowed extensions'
NEWFOLDER: NewFolder NEWFOLDER: NewFolder
SHOWALLOWEDEXTS: 'Show allowed extensions'
AssetTableField: AssetTableField:
CREATED: 'Primeiro subido' CREATED: 'Primeiro subido'
DIM: Dimensións DIM: Dimensións
@ -59,9 +60,9 @@ gl_ES:
ERRORNOTADMIN: 'Ese usuario non é un administrador.' ERRORNOTADMIN: 'Ese usuario non é un administrador.'
ERRORNOTREC: 'Ese nome de usuario/contrasinal non é recoñecido' ERRORNOTREC: 'Ese nome de usuario/contrasinal non é recoñecido'
Boolean: Boolean:
0: Falso
ANY: Ningún ANY: Ningún
1: Verdadeiro NOANSWER: 'False'
YESANSWER: 'True'
CMSLoadingScreen.ss: CMSLoadingScreen.ss:
LOADING: Loading... LOADING: Loading...
REQUIREJS: 'The CMS requires that you have JavaScript enabled.' REQUIREJS: 'The CMS requires that you have JavaScript enabled.'
@ -70,6 +71,8 @@ gl_ES:
ACCESSALLINTERFACES: 'Acceder a todas as seccións do CMS' ACCESSALLINTERFACES: 'Acceder a todas as seccións do CMS'
ACCESSALLINTERFACESHELP: 'Anular a configuración de acceso máis específica.' ACCESSALLINTERFACESHELP: 'Anular a configuración de acceso máis específica.'
SAVE: Gardar SAVE: Gardar
CMSPageHistoryController_versions.ss:
PREVIEW: 'Website preview'
CMSProfileController: CMSProfileController:
MENUTITLE: 'My Profile' MENUTITLE: 'My Profile'
ChangePasswordEmail.ss: ChangePasswordEmail.ss:
@ -79,8 +82,8 @@ gl_ES:
HELLO: Ola HELLO: Ola
PASSWORD: Contrasinal PASSWORD: Contrasinal
CheckboxField: CheckboxField:
- Falso NOANSWER: 'False'
- Verdade YESANSWER: 'True'
ComplexTableField: ComplexTableField:
CLOSEPOPUP: 'Pechar Ventá Emerxente' CLOSEPOPUP: 'Pechar Ventá Emerxente'
SUCCESSADD2: 'Added {name}' SUCCESSADD2: 'Added {name}'
@ -109,20 +112,21 @@ gl_ES:
PLURALNAME: 'Obxectos de Datos' PLURALNAME: 'Obxectos de Datos'
SINGULARNAME: 'Obxecto de Dato' SINGULARNAME: 'Obxecto de Dato'
Date: Date:
DAY: día DAY: day
DAYS: días DAYS: days
HOUR: hora HOUR: hour
HOURS: horas HOURS: hours
LessThanMinuteAgo: 'less than a minute'
MIN: min MIN: min
MINS: mins MINS: mins
MONTH: mes MONTH: month
MONTHS: meses MONTHS: months
SEC: seg SEC: sec
SECS: segs SECS: secs
TIMEDIFFAGO: '{difference} ago' TIMEDIFFAGO: '{difference} ago'
TIMEDIFFIN: 'in {difference}' TIMEDIFFIN: 'in {difference}'
YEAR: ano YEAR: year
YEARS: anos YEARS: years
DateField: DateField:
NOTSET: 'sen establecer' NOTSET: 'sen establecer'
TODAY: hoxe TODAY: hoxe
@ -198,7 +202,8 @@ gl_ES:
TEXT2: 'ligazón de reinicio do contrasinal' TEXT2: 'ligazón de reinicio do contrasinal'
TEXT3: para TEXT3: para
Form: Form:
FIELDISREQUIRED: '%s é requirido' CSRF_FAILED_MESSAGE: 'There seems to have been a technical problem. Please click the back button, refresh your browser, and try again.'
FIELDISREQUIRED: '{name} is required'
SubmitBtnLabel: Go SubmitBtnLabel: Go
VALIDATIONCREDITNUMBER: 'Please ensure you have entered the {number} credit card number correctly' VALIDATIONCREDITNUMBER: 'Please ensure you have entered the {number} credit card number correctly'
VALIDATIONNOTUNIQUE: 'O valor inserido non é único' VALIDATIONNOTUNIQUE: 'O valor inserido non é único'
@ -208,6 +213,7 @@ gl_ES:
VALIDATOR: Validador VALIDATOR: Validador
VALIDCURRENCY: 'Please enter a valid currency' VALIDCURRENCY: 'Please enter a valid currency'
FormField: FormField:
Example: 'e.g. %s'
NONE: ningún NONE: ningún
GridAction: GridAction:
DELETE_DESCRIPTION: Delete DELETE_DESCRIPTION: Delete
@ -230,6 +236,7 @@ gl_ES:
ResetFilter: Reiniciar ResetFilter: Reiniciar
GridFieldAction_Delete: GridFieldAction_Delete:
DeletePermissionsFailure: 'Non eliminar permisos' DeletePermissionsFailure: 'Non eliminar permisos'
EditPermissionsFailure: 'No permission to unlink record'
GridFieldDetailForm: GridFieldDetailForm:
CancelBtn: Cancel CancelBtn: Cancel
Create: Create Create: Create
@ -237,7 +244,9 @@ gl_ES:
DeletePermissionsFailure: 'No delete permissions' DeletePermissionsFailure: 'No delete permissions'
Deleted: 'Deleted %s %s' Deleted: 'Deleted %s %s'
Save: Save Save: Save
Saved: 'Saved %s %s' Saved: 'Saved {name} {link}'
GridFieldEditButton.ss:
EDIT: Edit
GridFieldItemEditView.ss: null GridFieldItemEditView.ss: null
Group: Group:
AddRole: 'Engadir un role para este grupo' AddRole: 'Engadir un role para este grupo'
@ -267,6 +276,7 @@ gl_ES:
ADDURL: 'Add URL' ADDURL: 'Add URL'
ADJUSTDETAILSDIMENSIONS: 'Details &amp; dimensions' ADJUSTDETAILSDIMENSIONS: 'Details &amp; dimensions'
ANCHORVALUE: Áncora ANCHORVALUE: Áncora
BUTTONADDURL: 'Add url'
BUTTONINSERT: Inserir BUTTONINSERT: Inserir
BUTTONINSERTLINK: 'Inserir ligazón' BUTTONINSERTLINK: 'Inserir ligazón'
BUTTONREMOVELINK: 'Eliminar ligazón' BUTTONREMOVELINK: 'Eliminar ligazón'
@ -331,6 +341,9 @@ gl_ES:
PreviewButton: Preview PreviewButton: Preview
REORGANISATIONSUCCESSFUL: 'Reorganised the site tree successfully.' REORGANISATIONSUCCESSFUL: 'Reorganised the site tree successfully.'
SAVEDUP: Saved. SAVEDUP: Saved.
ShowAsList: 'show as list'
TooManyPages: 'Too many pages'
ValidationError: 'Validation error'
VersionUnknown: descoñecido VersionUnknown: descoñecido
LeftAndMain_Menu.ss: LeftAndMain_Menu.ss:
Hello: Hi Hello: Hi
@ -407,6 +420,7 @@ gl_ES:
TWODIGITMONTH: 'Dous díxitos para o mes (01=Xaneiro, etc.)' TWODIGITMONTH: 'Dous díxitos para o mes (01=Xaneiro, etc.)'
TWODIGITSECOND: 'Dous díxitos de segundo (00 ata 59)' TWODIGITSECOND: 'Dous díxitos de segundo (00 ata 59)'
TWODIGITYEAR: 'Dous díxitos ano' TWODIGITYEAR: 'Dous díxitos ano'
Toggle: 'Show formatting help'
MemberImportForm: MemberImportForm:
Help1: '<p>Importar usuarios en <em>formato CSV</em> (valores separados por comas). <small><a href="#" class="toggle-advanced">Amosar uso avanzado</a></small></p>' Help1: '<p>Importar usuarios en <em>formato CSV</em> (valores separados por comas). <small><a href="#" class="toggle-advanced">Amosar uso avanzado</a></small></p>'
Help2: '<div class="advanced"> <h4>Advanced usage</h4> <ul> <li>Allowed columns: <em>%s</em></li> <li>Existing users are matched by their unique <em>Code</em> property, and updated with any new values from the imported file.</li> <li>Groups can be assigned by the <em>Groups</em> column. Groups are identified by their <em>Code</em> property, multiple groups can be separated by comma. Existing group memberships are not cleared.</li> </ul></div>' Help2: '<div class="advanced"> <h4>Advanced usage</h4> <ul> <li>Allowed columns: <em>%s</em></li> <li>Existing users are matched by their unique <em>Code</em> property, and updated with any new values from the imported file.</li> <li>Groups can be assigned by the <em>Groups</em> column. Groups are identified by their <em>Code</em> property, multiple groups can be separated by comma. Existing group memberships are not cleared.</li> </ul></div>'
@ -421,7 +435,7 @@ gl_ES:
ModelAdmin: ModelAdmin:
DELETE: Eliminar DELETE: Eliminar
DELETEDRECORDS: 'Deleted {count} records.' DELETEDRECORDS: 'Deleted {count} records.'
EMPTYBEFOREIMPORT: 'Clear Database before import' EMPTYBEFOREIMPORT: 'Replace data'
IMPORT: 'Importar dende CSV' IMPORT: 'Importar dende CSV'
IMPORTEDRECORDS: 'Imported {count} records.' IMPORTEDRECORDS: 'Imported {count} records.'
NOCSVFILE: 'Por favor navega por un ficheiro CSV para importar' NOCSVFILE: 'Por favor navega por un ficheiro CSV para importar'
@ -515,7 +529,20 @@ gl_ES:
BtnImport: 'Importar dende CSV' BtnImport: 'Importar dende CSV'
FileFieldLabel: 'Ficheiro CSV <small>(Extensións permitidas: *.csv)</small>' FileFieldLabel: 'Ficheiro CSV <small>(Extensións permitidas: *.csv)</small>'
SilverStripeNavigator: SilverStripeNavigator:
Auto: Auto
ChangeViewMode: 'Change view mode'
Desktop: Desktop
DualWindowView: 'Dual Window'
Edit: Edit Edit: Edit
EditView: 'Edit mode'
Mobile: Mobile
PreviewState: 'Preview State'
PreviewView: 'Preview mode'
Responsive: Responsive
SplitView: 'Split mode'
Tablet: Tablet
ViewDeviceWidth: 'Select a preview width'
Width: width
SimpleImageField: SimpleImageField:
NOUPLOAD: 'Ningunha Imaxe Subida' NOUPLOAD: 'Ningunha Imaxe Subida'
SiteTree: SiteTree:
@ -551,6 +578,8 @@ gl_ES:
ATTACHFILE: 'Anexar un ficheiro' ATTACHFILE: 'Anexar un ficheiro'
ATTACHFILES: 'Anexar ficheiros' ATTACHFILES: 'Anexar ficheiros'
AttachFile: 'Anexar ficheiro(s)' AttachFile: 'Anexar ficheiro(s)'
CHOOSEANOTHERFILE: 'Choose another file'
CHOOSEANOTHERINFO: 'Replace this file with another one from the file store'
DELETE: 'Delete from files' DELETE: 'Delete from files'
DELETEINFO: 'Eliminar permanentemente este ficheiro do almacén de ficheiros' DELETEINFO: 'Eliminar permanentemente este ficheiro do almacén de ficheiros'
DOEDIT: Gardar DOEDIT: Gardar
@ -565,12 +594,15 @@ gl_ES:
FROMFILES: 'Dende ficheiros' FROMFILES: 'Dende ficheiros'
HOTLINKINFO: 'Info: This image will be hotlinked. Please ensure you have permissions from the original site creator to do so.' HOTLINKINFO: 'Info: This image will be hotlinked. Please ensure you have permissions from the original site creator to do so.'
MAXNUMBEROFFILES: 'Max number of {count} file(s) exceeded.' MAXNUMBEROFFILES: 'Max number of {count} file(s) exceeded.'
MAXNUMBEROFFILESONE: 'Can only upload one file'
MAXNUMBEROFFILESSHORT: 'Can only upload {count} files' MAXNUMBEROFFILESSHORT: 'Can only upload {count} files'
OVERWRITEWARNING: 'File with the same name already exists'
REMOVE: Remove REMOVE: Remove
REMOVEERROR: 'Erro eliminando o ficheiro' REMOVEERROR: 'Erro eliminando o ficheiro'
REMOVEINFO: 'Eliminar este ficheiro daquí, pero non eliminalo do almacén de ficheiros' REMOVEINFO: 'Eliminar este ficheiro daquí, pero non eliminalo do almacén de ficheiros'
STARTALL: 'Comezar todo' STARTALL: 'Comezar todo'
STARTALLINFO: 'Start all uploads' STARTALLINFO: 'Start all uploads'
Saved: Gardado Saved: Gardado
UPLOADSINTO: 'saves into /{path}'
Versioned: Versioned:
has_many_Versions: Versións has_many_Versions: Versións

View File

@ -2,6 +2,7 @@ he_IL:
AssetAdmin: AssetAdmin:
ALLOWEDEXTS: 'Allowed extensions' ALLOWEDEXTS: 'Allowed extensions'
NEWFOLDER: תיקיהחדשה NEWFOLDER: תיקיהחדשה
SHOWALLOWEDEXTS: 'Show allowed extensions'
AssetTableField: AssetTableField:
CREATED: 'הועלה לראשונה' CREATED: 'הועלה לראשונה'
DIM: מידות DIM: מידות
@ -59,9 +60,9 @@ he_IL:
ERRORNOTADMIN: 'משתמש זה אינו מנהל' ERRORNOTADMIN: 'משתמש זה אינו מנהל'
ERRORNOTREC: 'שם המשתמש / סיסמא לא מזוהה' ERRORNOTREC: 'שם המשתמש / סיסמא לא מזוהה'
Boolean: Boolean:
0: 'False'
ANY: Any ANY: Any
1: 'True' NOANSWER: 'False'
YESANSWER: 'True'
CMSLoadingScreen.ss: CMSLoadingScreen.ss:
LOADING: Loading... LOADING: Loading...
REQUIREJS: 'The CMS requires that you have JavaScript enabled.' REQUIREJS: 'The CMS requires that you have JavaScript enabled.'
@ -70,6 +71,8 @@ he_IL:
ACCESSALLINTERFACES: 'גישה לכל ממשקי המערכת' ACCESSALLINTERFACES: 'גישה לכל ממשקי המערכת'
ACCESSALLINTERFACESHELP: 'Overrules more specific access settings.' ACCESSALLINTERFACESHELP: 'Overrules more specific access settings.'
SAVE: שמור SAVE: שמור
CMSPageHistoryController_versions.ss:
PREVIEW: 'Website preview'
CMSProfileController: CMSProfileController:
MENUTITLE: 'My Profile' MENUTITLE: 'My Profile'
ChangePasswordEmail.ss: ChangePasswordEmail.ss:
@ -79,8 +82,8 @@ he_IL:
HELLO: היי HELLO: היי
PASSWORD: Password PASSWORD: Password
CheckboxField: CheckboxField:
- 'False' NOANSWER: 'False'
- 'True' YESANSWER: 'True'
ComplexTableField: ComplexTableField:
CLOSEPOPUP: 'סגור חלון' CLOSEPOPUP: 'סגור חלון'
SUCCESSADD2: 'Added {name}' SUCCESSADD2: 'Added {name}'
@ -109,20 +112,21 @@ he_IL:
PLURALNAME: 'אובייקטי מידע' PLURALNAME: 'אובייקטי מידע'
SINGULARNAME: 'אובייקט מידע' SINGULARNAME: 'אובייקט מידע'
Date: Date:
DAY: יום DAY: day
DAYS: ימים DAYS: days
HOUR: שעה HOUR: hour
HOURS: שעות HOURS: hours
MIN: דקה LessThanMinuteAgo: 'less than a minute'
MINS: דקות MIN: min
MONTH: חודש MINS: mins
MONTHS: חודשים MONTH: month
SEC: שניה MONTHS: months
SECS: שניות SEC: sec
SECS: secs
TIMEDIFFAGO: '{difference} ago' TIMEDIFFAGO: '{difference} ago'
TIMEDIFFIN: 'in {difference}' TIMEDIFFIN: 'in {difference}'
YEAR: שנה YEAR: year
YEARS: שנים YEARS: years
DateField: DateField:
NOTSET: 'not set' NOTSET: 'not set'
TODAY: today TODAY: today
@ -198,7 +202,8 @@ he_IL:
TEXT2: 'password reset link' TEXT2: 'password reset link'
TEXT3: for TEXT3: for
Form: Form:
FIELDISREQUIRED: 'דרוש %s' CSRF_FAILED_MESSAGE: 'There seems to have been a technical problem. Please click the back button, refresh your browser, and try again.'
FIELDISREQUIRED: '{name} is required'
SubmitBtnLabel: Go SubmitBtnLabel: Go
VALIDATIONCREDITNUMBER: 'Please ensure you have entered the {number} credit card number correctly' VALIDATIONCREDITNUMBER: 'Please ensure you have entered the {number} credit card number correctly'
VALIDATIONNOTUNIQUE: 'הערך שהוקש אינו יחודי' VALIDATIONNOTUNIQUE: 'הערך שהוקש אינו יחודי'
@ -208,6 +213,7 @@ he_IL:
VALIDATOR: Validator VALIDATOR: Validator
VALIDCURRENCY: 'Please enter a valid currency' VALIDCURRENCY: 'Please enter a valid currency'
FormField: FormField:
Example: 'e.g. %s'
NONE: none NONE: none
GridAction: GridAction:
DELETE_DESCRIPTION: Delete DELETE_DESCRIPTION: Delete
@ -230,6 +236,7 @@ he_IL:
ResetFilter: Reset ResetFilter: Reset
GridFieldAction_Delete: GridFieldAction_Delete:
DeletePermissionsFailure: 'No delete permissions' DeletePermissionsFailure: 'No delete permissions'
EditPermissionsFailure: 'No permission to unlink record'
GridFieldDetailForm: GridFieldDetailForm:
CancelBtn: Cancel CancelBtn: Cancel
Create: Create Create: Create
@ -237,7 +244,9 @@ he_IL:
DeletePermissionsFailure: 'No delete permissions' DeletePermissionsFailure: 'No delete permissions'
Deleted: 'Deleted %s %s' Deleted: 'Deleted %s %s'
Save: Save Save: Save
Saved: 'Saved %s %s' Saved: 'Saved {name} {link}'
GridFieldEditButton.ss:
EDIT: Edit
GridFieldItemEditView.ss: null GridFieldItemEditView.ss: null
Group: Group:
AddRole: 'Add a role for this group' AddRole: 'Add a role for this group'
@ -267,12 +276,13 @@ he_IL:
ADDURL: 'Add URL' ADDURL: 'Add URL'
ADJUSTDETAILSDIMENSIONS: 'Details &amp; dimensions' ADJUSTDETAILSDIMENSIONS: 'Details &amp; dimensions'
ANCHORVALUE: Anchor ANCHORVALUE: Anchor
BUTTONADDURL: 'Add url'
BUTTONINSERT: Insert BUTTONINSERT: Insert
BUTTONINSERTLINK: 'הכנס קישור' BUTTONINSERTLINK: 'הכנס קישור'
BUTTONREMOVELINK: 'הסר קישור' BUTTONREMOVELINK: 'הסר קישור'
BUTTONUpdate: Update BUTTONUpdate: Update
CAPTIONTEXT: 'Caption text' CAPTIONTEXT: 'Caption text'
CSSCLASS: יישור/סגנון CSSCLASS: 'יישור/סגנון'
CSSCLASSCENTER: 'ממורכז, ללא טקסט בצדדים.' CSSCLASSCENTER: 'ממורכז, ללא טקסט בצדדים.'
CSSCLASSLEFT: 'לשמאל, עם טקסט מסודר מסביב.' CSSCLASSLEFT: 'לשמאל, עם טקסט מסודר מסביב.'
CSSCLASSLEFTALONE: 'On the left, on its own.' CSSCLASSLEFTALONE: 'On the left, on its own.'
@ -331,7 +341,10 @@ he_IL:
PreviewButton: Preview PreviewButton: Preview
REORGANISATIONSUCCESSFUL: 'Reorganised the site tree successfully.' REORGANISATIONSUCCESSFUL: 'Reorganised the site tree successfully.'
SAVEDUP: Saved. SAVEDUP: Saved.
VersionUnknown: unknown ShowAsList: 'show as list'
TooManyPages: 'Too many pages'
ValidationError: 'Validation error'
VersionUnknown: Unknown
LeftAndMain_Menu.ss: LeftAndMain_Menu.ss:
Hello: Hi Hello: Hi
LOGOUT: 'Log out' LOGOUT: 'Log out'
@ -407,6 +420,7 @@ he_IL:
TWODIGITMONTH: 'Two-digit month (01=January, etc.)' TWODIGITMONTH: 'Two-digit month (01=January, etc.)'
TWODIGITSECOND: 'Two digits of second (00 through 59)' TWODIGITSECOND: 'Two digits of second (00 through 59)'
TWODIGITYEAR: 'Two-digit year' TWODIGITYEAR: 'Two-digit year'
Toggle: 'Show formatting help'
MemberImportForm: MemberImportForm:
Help1: '<p>Import users in <em>CSV format</em> (comma-separated values). <small><a href="#" class="toggle-advanced">Show advanced usage</a></small></p>' Help1: '<p>Import users in <em>CSV format</em> (comma-separated values). <small><a href="#" class="toggle-advanced">Show advanced usage</a></small></p>'
Help2: '<div class="advanced"> <h4>Advanced usage</h4> <ul> <li>Allowed columns: <em>%s</em></li> <li>Existing users are matched by their unique <em>Code</em> property, and updated with any new values from the imported file.</li> <li>Groups can be assigned by the <em>Groups</em> column. Groups are identified by their <em>Code</em> property, multiple groups can be separated by comma. Existing group memberships are not cleared.</li> </ul></div>' Help2: '<div class="advanced"> <h4>Advanced usage</h4> <ul> <li>Allowed columns: <em>%s</em></li> <li>Existing users are matched by their unique <em>Code</em> property, and updated with any new values from the imported file.</li> <li>Groups can be assigned by the <em>Groups</em> column. Groups are identified by their <em>Code</em> property, multiple groups can be separated by comma. Existing group memberships are not cleared.</li> </ul></div>'
@ -421,7 +435,7 @@ he_IL:
ModelAdmin: ModelAdmin:
DELETE: מחק DELETE: מחק
DELETEDRECORDS: 'Deleted {count} records.' DELETEDRECORDS: 'Deleted {count} records.'
EMPTYBEFOREIMPORT: 'Clear Database before import' EMPTYBEFOREIMPORT: 'Replace data'
IMPORT: 'ייבא מקובץ CSV' IMPORT: 'ייבא מקובץ CSV'
IMPORTEDRECORDS: 'Imported {count} records.' IMPORTEDRECORDS: 'Imported {count} records.'
NOCSVFILE: 'בחר קובץ CSV לייבוא' NOCSVFILE: 'בחר קובץ CSV לייבוא'
@ -515,7 +529,20 @@ he_IL:
BtnImport: 'Import from CSV' BtnImport: 'Import from CSV'
FileFieldLabel: 'CSV File <small>(Allowed extensions: *.csv)</small>' FileFieldLabel: 'CSV File <small>(Allowed extensions: *.csv)</small>'
SilverStripeNavigator: SilverStripeNavigator:
Auto: Auto
ChangeViewMode: 'Change view mode'
Desktop: Desktop
DualWindowView: 'Dual Window'
Edit: Edit Edit: Edit
EditView: 'Edit mode'
Mobile: Mobile
PreviewState: 'Preview State'
PreviewView: 'Preview mode'
Responsive: Responsive
SplitView: 'Split mode'
Tablet: Tablet
ViewDeviceWidth: 'Select a preview width'
Width: width
SimpleImageField: SimpleImageField:
NOUPLOAD: 'לא הועלתה תמונה' NOUPLOAD: 'לא הועלתה תמונה'
SiteTree: SiteTree:
@ -551,6 +578,8 @@ he_IL:
ATTACHFILE: 'Attach a file' ATTACHFILE: 'Attach a file'
ATTACHFILES: 'Attach files' ATTACHFILES: 'Attach files'
AttachFile: 'Attach file(s)' AttachFile: 'Attach file(s)'
CHOOSEANOTHERFILE: 'Choose another file'
CHOOSEANOTHERINFO: 'Replace this file with another one from the file store'
DELETE: 'Delete from files' DELETE: 'Delete from files'
DELETEINFO: 'Permanently delete this file from the file store' DELETEINFO: 'Permanently delete this file from the file store'
DOEDIT: Save DOEDIT: Save
@ -565,12 +594,15 @@ he_IL:
FROMFILES: 'From files' FROMFILES: 'From files'
HOTLINKINFO: 'Info: This image will be hotlinked. Please ensure you have permissions from the original site creator to do so.' HOTLINKINFO: 'Info: This image will be hotlinked. Please ensure you have permissions from the original site creator to do so.'
MAXNUMBEROFFILES: 'Max number of {count} file(s) exceeded.' MAXNUMBEROFFILES: 'Max number of {count} file(s) exceeded.'
MAXNUMBEROFFILESONE: 'Can only upload one file'
MAXNUMBEROFFILESSHORT: 'Can only upload {count} files' MAXNUMBEROFFILESSHORT: 'Can only upload {count} files'
OVERWRITEWARNING: 'File with the same name already exists'
REMOVE: Remove REMOVE: Remove
REMOVEERROR: 'Error removing file' REMOVEERROR: 'Error removing file'
REMOVEINFO: 'Remove this file from here, but do not delete it from the file store' REMOVEINFO: 'Remove this file from here, but do not delete it from the file store'
STARTALL: 'Start all' STARTALL: 'Start all'
STARTALLINFO: 'Start all uploads' STARTALLINFO: 'Start all uploads'
Saved: Saved Saved: Saved
UPLOADSINTO: 'saves into /{path}'
Versioned: Versioned:
has_many_Versions: גירסאות has_many_Versions: גירסאות

View File

@ -2,6 +2,7 @@ hi:
AssetAdmin: AssetAdmin:
ALLOWEDEXTS: 'Allowed extensions' ALLOWEDEXTS: 'Allowed extensions'
NEWFOLDER: NewFolder NEWFOLDER: NewFolder
SHOWALLOWEDEXTS: 'Show allowed extensions'
AssetTableField: AssetTableField:
CREATED: 'First uploaded' CREATED: 'First uploaded'
DIM: Dimensions DIM: Dimensions
@ -59,9 +60,9 @@ hi:
ERRORNOTADMIN: 'That user is not an administrator.' ERRORNOTADMIN: 'That user is not an administrator.'
ERRORNOTREC: 'That username / password isn''t recognised' ERRORNOTREC: 'That username / password isn''t recognised'
Boolean: Boolean:
0: 'False'
ANY: Any ANY: Any
1: 'True' NOANSWER: 'False'
YESANSWER: 'True'
CMSLoadingScreen.ss: CMSLoadingScreen.ss:
LOADING: Loading... LOADING: Loading...
REQUIREJS: 'The CMS requires that you have JavaScript enabled.' REQUIREJS: 'The CMS requires that you have JavaScript enabled.'
@ -70,6 +71,8 @@ hi:
ACCESSALLINTERFACES: 'Access to all CMS sections' ACCESSALLINTERFACES: 'Access to all CMS sections'
ACCESSALLINTERFACESHELP: 'Overrules more specific access settings.' ACCESSALLINTERFACESHELP: 'Overrules more specific access settings.'
SAVE: Save SAVE: Save
CMSPageHistoryController_versions.ss:
PREVIEW: 'Website preview'
CMSProfileController: CMSProfileController:
MENUTITLE: 'My Profile' MENUTITLE: 'My Profile'
ChangePasswordEmail.ss: ChangePasswordEmail.ss:
@ -79,8 +82,8 @@ hi:
HELLO: Hi HELLO: Hi
PASSWORD: Password PASSWORD: Password
CheckboxField: CheckboxField:
- 'False' NOANSWER: 'False'
- 'True' YESANSWER: 'True'
ComplexTableField: ComplexTableField:
CLOSEPOPUP: 'Close Popup' CLOSEPOPUP: 'Close Popup'
SUCCESSADD2: 'Added {name}' SUCCESSADD2: 'Added {name}'
@ -109,20 +112,21 @@ hi:
PLURALNAME: 'Data Objects' PLURALNAME: 'Data Objects'
SINGULARNAME: 'Data Object' SINGULARNAME: 'Data Object'
Date: Date:
DAY: ' day' DAY: day
DAYS: ' days' DAYS: days
HOUR: ' hour' HOUR: hour
HOURS: ' hours' HOURS: hours
MIN: ' min' LessThanMinuteAgo: 'less than a minute'
MINS: ' mins' MIN: min
MONTH: ' month' MINS: mins
MONTHS: ' months' MONTH: month
SEC: ' sec' MONTHS: months
SECS: ' secs' SEC: sec
SECS: secs
TIMEDIFFAGO: '{difference} ago' TIMEDIFFAGO: '{difference} ago'
TIMEDIFFIN: 'in {difference}' TIMEDIFFIN: 'in {difference}'
YEAR: ' year' YEAR: year
YEARS: ' years' YEARS: years
DateField: DateField:
NOTSET: 'not set' NOTSET: 'not set'
TODAY: आज TODAY: आज
@ -198,7 +202,8 @@ hi:
TEXT2: 'password reset link' TEXT2: 'password reset link'
TEXT3: for TEXT3: for
Form: Form:
FIELDISREQUIRED: '%s is required' CSRF_FAILED_MESSAGE: 'There seems to have been a technical problem. Please click the back button, refresh your browser, and try again.'
FIELDISREQUIRED: '{name} is required'
SubmitBtnLabel: Go SubmitBtnLabel: Go
VALIDATIONCREDITNUMBER: 'Please ensure you have entered the {number} credit card number correctly' VALIDATIONCREDITNUMBER: 'Please ensure you have entered the {number} credit card number correctly'
VALIDATIONNOTUNIQUE: 'The value entered is not unique' VALIDATIONNOTUNIQUE: 'The value entered is not unique'
@ -208,6 +213,7 @@ hi:
VALIDATOR: Validator VALIDATOR: Validator
VALIDCURRENCY: 'Please enter a valid currency' VALIDCURRENCY: 'Please enter a valid currency'
FormField: FormField:
Example: 'e.g. %s'
NONE: none NONE: none
GridAction: GridAction:
DELETE_DESCRIPTION: Delete DELETE_DESCRIPTION: Delete
@ -230,6 +236,7 @@ hi:
ResetFilter: Reset ResetFilter: Reset
GridFieldAction_Delete: GridFieldAction_Delete:
DeletePermissionsFailure: 'No delete permissions' DeletePermissionsFailure: 'No delete permissions'
EditPermissionsFailure: 'No permission to unlink record'
GridFieldDetailForm: GridFieldDetailForm:
CancelBtn: Cancel CancelBtn: Cancel
Create: Create Create: Create
@ -237,7 +244,9 @@ hi:
DeletePermissionsFailure: 'No delete permissions' DeletePermissionsFailure: 'No delete permissions'
Deleted: 'Deleted %s %s' Deleted: 'Deleted %s %s'
Save: Save Save: Save
Saved: 'Saved %s %s' Saved: 'Saved {name} {link}'
GridFieldEditButton.ss:
EDIT: Edit
GridFieldItemEditView.ss: null GridFieldItemEditView.ss: null
Group: Group:
AddRole: 'इस समूह के लिए एक भूमिका जोड़ें' AddRole: 'इस समूह के लिए एक भूमिका जोड़ें'
@ -253,7 +262,7 @@ hi:
RolesAddEditLink: 'भूमिकाओं का प्रबंधन करे ' RolesAddEditLink: 'भूमिकाओं का प्रबंधन करे '
SINGULARNAME: Group SINGULARNAME: Group
Sort: 'Sort Order' Sort: 'Sort Order'
has_many_Permissions: अनुमतियाँ has_many_Permissions: 'अनुमतियाँ'
many_many_Members: सदस्य many_many_Members: सदस्य
GroupImportForm: GroupImportForm:
Help1: '<p>Import one or more groups in <em>CSV</em> format (comma-separated values). <small><a href="#" class="toggle-advanced">Show advanced usage</a></small></p>' Help1: '<p>Import one or more groups in <em>CSV</em> format (comma-separated values). <small><a href="#" class="toggle-advanced">Show advanced usage</a></small></p>'
@ -267,6 +276,7 @@ hi:
ADDURL: 'Add URL' ADDURL: 'Add URL'
ADJUSTDETAILSDIMENSIONS: 'Details &amp; dimensions' ADJUSTDETAILSDIMENSIONS: 'Details &amp; dimensions'
ANCHORVALUE: Anchor ANCHORVALUE: Anchor
BUTTONADDURL: 'Add url'
BUTTONINSERT: Insert BUTTONINSERT: Insert
BUTTONINSERTLINK: 'Insert link' BUTTONINSERTLINK: 'Insert link'
BUTTONREMOVELINK: 'Remove link' BUTTONREMOVELINK: 'Remove link'
@ -331,7 +341,10 @@ hi:
PreviewButton: Preview PreviewButton: Preview
REORGANISATIONSUCCESSFUL: 'Reorganised the site tree successfully.' REORGANISATIONSUCCESSFUL: 'Reorganised the site tree successfully.'
SAVEDUP: Saved. SAVEDUP: Saved.
VersionUnknown: unknown ShowAsList: 'show as list'
TooManyPages: 'Too many pages'
ValidationError: 'Validation error'
VersionUnknown: Unknown
LeftAndMain_Menu.ss: LeftAndMain_Menu.ss:
Hello: Hi Hello: Hi
LOGOUT: 'Log out' LOGOUT: 'Log out'
@ -407,6 +420,7 @@ hi:
TWODIGITMONTH: 'Two-digit month (01=January, etc.)' TWODIGITMONTH: 'Two-digit month (01=January, etc.)'
TWODIGITSECOND: 'Two digits of second (00 through 59)' TWODIGITSECOND: 'Two digits of second (00 through 59)'
TWODIGITYEAR: 'Two-digit year' TWODIGITYEAR: 'Two-digit year'
Toggle: 'Show formatting help'
MemberImportForm: MemberImportForm:
Help1: '<p>Import users in <em>CSV format</em> (comma-separated values). <small><a href="#" class="toggle-advanced">Show advanced usage</a></small></p>' Help1: '<p>Import users in <em>CSV format</em> (comma-separated values). <small><a href="#" class="toggle-advanced">Show advanced usage</a></small></p>'
Help2: '<div class="advanced"> <h4>Advanced usage</h4> <ul> <li>Allowed columns: <em>%s</em></li> <li>Existing users are matched by their unique <em>Code</em> property, and updated with any new values from the imported file.</li> <li>Groups can be assigned by the <em>Groups</em> column. Groups are identified by their <em>Code</em> property, multiple groups can be separated by comma. Existing group memberships are not cleared.</li> </ul></div>' Help2: '<div class="advanced"> <h4>Advanced usage</h4> <ul> <li>Allowed columns: <em>%s</em></li> <li>Existing users are matched by their unique <em>Code</em> property, and updated with any new values from the imported file.</li> <li>Groups can be assigned by the <em>Groups</em> column. Groups are identified by their <em>Code</em> property, multiple groups can be separated by comma. Existing group memberships are not cleared.</li> </ul></div>'
@ -421,7 +435,7 @@ hi:
ModelAdmin: ModelAdmin:
DELETE: Delete DELETE: Delete
DELETEDRECORDS: 'Deleted {count} records.' DELETEDRECORDS: 'Deleted {count} records.'
EMPTYBEFOREIMPORT: 'Clear Database before import' EMPTYBEFOREIMPORT: 'Replace data'
IMPORT: 'Import from CSV' IMPORT: 'Import from CSV'
IMPORTEDRECORDS: 'Imported {count} records.' IMPORTEDRECORDS: 'Imported {count} records.'
NOCSVFILE: 'Please browse for a CSV file to import' NOCSVFILE: 'Please browse for a CSV file to import'
@ -515,7 +529,20 @@ hi:
BtnImport: 'Import from CSV' BtnImport: 'Import from CSV'
FileFieldLabel: 'CSV File <small>(Allowed extensions: *.csv)</small>' FileFieldLabel: 'CSV File <small>(Allowed extensions: *.csv)</small>'
SilverStripeNavigator: SilverStripeNavigator:
Auto: Auto
ChangeViewMode: 'Change view mode'
Desktop: Desktop
DualWindowView: 'Dual Window'
Edit: Edit Edit: Edit
EditView: 'Edit mode'
Mobile: Mobile
PreviewState: 'Preview State'
PreviewView: 'Preview mode'
Responsive: Responsive
SplitView: 'Split mode'
Tablet: Tablet
ViewDeviceWidth: 'Select a preview width'
Width: width
SimpleImageField: SimpleImageField:
NOUPLOAD: 'No Image Uploaded' NOUPLOAD: 'No Image Uploaded'
SiteTree: SiteTree:
@ -551,6 +578,8 @@ hi:
ATTACHFILE: 'Attach a file' ATTACHFILE: 'Attach a file'
ATTACHFILES: 'Attach files' ATTACHFILES: 'Attach files'
AttachFile: 'Attach file(s)' AttachFile: 'Attach file(s)'
CHOOSEANOTHERFILE: 'Choose another file'
CHOOSEANOTHERINFO: 'Replace this file with another one from the file store'
DELETE: 'Delete from files' DELETE: 'Delete from files'
DELETEINFO: 'Permanently delete this file from the file store' DELETEINFO: 'Permanently delete this file from the file store'
DOEDIT: Save DOEDIT: Save
@ -565,12 +594,15 @@ hi:
FROMFILES: 'From files' FROMFILES: 'From files'
HOTLINKINFO: 'Info: This image will be hotlinked. Please ensure you have permissions from the original site creator to do so.' HOTLINKINFO: 'Info: This image will be hotlinked. Please ensure you have permissions from the original site creator to do so.'
MAXNUMBEROFFILES: 'Max number of {count} file(s) exceeded.' MAXNUMBEROFFILES: 'Max number of {count} file(s) exceeded.'
MAXNUMBEROFFILESONE: 'Can only upload one file'
MAXNUMBEROFFILESSHORT: 'Can only upload {count} files' MAXNUMBEROFFILESSHORT: 'Can only upload {count} files'
OVERWRITEWARNING: 'File with the same name already exists'
REMOVE: Remove REMOVE: Remove
REMOVEERROR: 'Error removing file' REMOVEERROR: 'Error removing file'
REMOVEINFO: 'Remove this file from here, but do not delete it from the file store' REMOVEINFO: 'Remove this file from here, but do not delete it from the file store'
STARTALL: 'Start all' STARTALL: 'Start all'
STARTALLINFO: 'Start all uploads' STARTALLINFO: 'Start all uploads'
Saved: Saved Saved: Saved
UPLOADSINTO: 'saves into /{path}'
Versioned: Versioned:
has_many_Versions: Versions has_many_Versions: Versions

View File

@ -2,6 +2,7 @@ hr:
AssetAdmin: AssetAdmin:
ALLOWEDEXTS: 'Allowed extensions' ALLOWEDEXTS: 'Allowed extensions'
NEWFOLDER: 'Novi direktorij' NEWFOLDER: 'Novi direktorij'
SHOWALLOWEDEXTS: 'Show allowed extensions'
AssetTableField: AssetTableField:
CREATED: Uploadano CREATED: Uploadano
DIM: Dimenzije DIM: Dimenzije
@ -59,9 +60,9 @@ hr:
ERRORNOTADMIN: 'Korisnik nije administrator' ERRORNOTADMIN: 'Korisnik nije administrator'
ERRORNOTREC: 'Korisničko ime / lozinka nije prepoznata' ERRORNOTREC: 'Korisničko ime / lozinka nije prepoznata'
Boolean: Boolean:
0: 'False'
ANY: Any ANY: Any
1: 'True' NOANSWER: 'False'
YESANSWER: 'True'
CMSLoadingScreen.ss: CMSLoadingScreen.ss:
LOADING: Loading... LOADING: Loading...
REQUIREJS: 'The CMS requires that you have JavaScript enabled.' REQUIREJS: 'The CMS requires that you have JavaScript enabled.'
@ -70,6 +71,8 @@ hr:
ACCESSALLINTERFACES: 'Access to all CMS sections' ACCESSALLINTERFACES: 'Access to all CMS sections'
ACCESSALLINTERFACESHELP: 'Overrules more specific access settings.' ACCESSALLINTERFACESHELP: 'Overrules more specific access settings.'
SAVE: Snimi SAVE: Snimi
CMSPageHistoryController_versions.ss:
PREVIEW: 'Website preview'
CMSProfileController: CMSProfileController:
MENUTITLE: 'My Profile' MENUTITLE: 'My Profile'
ChangePasswordEmail.ss: ChangePasswordEmail.ss:
@ -79,8 +82,8 @@ hr:
HELLO: Pozdrav HELLO: Pozdrav
PASSWORD: Password PASSWORD: Password
CheckboxField: CheckboxField:
- 'False' NOANSWER: 'False'
- 'True' YESANSWER: 'True'
ComplexTableField: ComplexTableField:
CLOSEPOPUP: 'Close Popup' CLOSEPOPUP: 'Close Popup'
SUCCESSADD2: 'Added {name}' SUCCESSADD2: 'Added {name}'
@ -109,20 +112,21 @@ hr:
PLURALNAME: 'Podatkovni Objekti' PLURALNAME: 'Podatkovni Objekti'
SINGULARNAME: 'Podatkovni Objekt' SINGULARNAME: 'Podatkovni Objekt'
Date: Date:
DAY: dan DAY: day
DAYS: dani DAYS: days
HOUR: sat HOUR: hour
HOURS: sati HOURS: hours
MIN: minute LessThanMinuteAgo: 'less than a minute'
MINS: minute MIN: min
MONTH: mjesec MINS: mins
MONTHS: mjeseci MONTH: month
SEC: sekunde MONTHS: months
SECS: sekundi SEC: sec
SECS: secs
TIMEDIFFAGO: '{difference} ago' TIMEDIFFAGO: '{difference} ago'
TIMEDIFFIN: 'in {difference}' TIMEDIFFIN: 'in {difference}'
YEAR: godina YEAR: year
YEARS: godine YEARS: years
DateField: DateField:
NOTSET: 'not set' NOTSET: 'not set'
TODAY: today TODAY: today
@ -198,7 +202,8 @@ hr:
TEXT2: 'link za resetiranje zaporke' TEXT2: 'link za resetiranje zaporke'
TEXT3: za TEXT3: za
Form: Form:
FIELDISREQUIRED: '%s je obavezan' CSRF_FAILED_MESSAGE: 'There seems to have been a technical problem. Please click the back button, refresh your browser, and try again.'
FIELDISREQUIRED: '{name} is required'
SubmitBtnLabel: Go SubmitBtnLabel: Go
VALIDATIONCREDITNUMBER: 'Please ensure you have entered the {number} credit card number correctly' VALIDATIONCREDITNUMBER: 'Please ensure you have entered the {number} credit card number correctly'
VALIDATIONNOTUNIQUE: 'Unesena vrijednost nije unikatna' VALIDATIONNOTUNIQUE: 'Unesena vrijednost nije unikatna'
@ -208,6 +213,7 @@ hr:
VALIDATOR: Validator VALIDATOR: Validator
VALIDCURRENCY: 'Please enter a valid currency' VALIDCURRENCY: 'Please enter a valid currency'
FormField: FormField:
Example: 'e.g. %s'
NONE: none NONE: none
GridAction: GridAction:
DELETE_DESCRIPTION: Delete DELETE_DESCRIPTION: Delete
@ -230,6 +236,7 @@ hr:
ResetFilter: Reset ResetFilter: Reset
GridFieldAction_Delete: GridFieldAction_Delete:
DeletePermissionsFailure: 'No delete permissions' DeletePermissionsFailure: 'No delete permissions'
EditPermissionsFailure: 'No permission to unlink record'
GridFieldDetailForm: GridFieldDetailForm:
CancelBtn: Cancel CancelBtn: Cancel
Create: Create Create: Create
@ -237,7 +244,9 @@ hr:
DeletePermissionsFailure: 'No delete permissions' DeletePermissionsFailure: 'No delete permissions'
Deleted: 'Deleted %s %s' Deleted: 'Deleted %s %s'
Save: Save Save: Save
Saved: 'Saved %s %s' Saved: 'Saved {name} {link}'
GridFieldEditButton.ss:
EDIT: Edit
GridFieldItemEditView.ss: null GridFieldItemEditView.ss: null
Group: Group:
AddRole: 'Add a role for this group' AddRole: 'Add a role for this group'
@ -267,6 +276,7 @@ hr:
ADDURL: 'Add URL' ADDURL: 'Add URL'
ADJUSTDETAILSDIMENSIONS: 'Details &amp; dimensions' ADJUSTDETAILSDIMENSIONS: 'Details &amp; dimensions'
ANCHORVALUE: Anchor ANCHORVALUE: Anchor
BUTTONADDURL: 'Add url'
BUTTONINSERT: Insert BUTTONINSERT: Insert
BUTTONINSERTLINK: 'Ubaci vezu' BUTTONINSERTLINK: 'Ubaci vezu'
BUTTONREMOVELINK: 'Obriši vezu' BUTTONREMOVELINK: 'Obriši vezu'
@ -293,7 +303,7 @@ hr:
IMAGETITLE: 'Title text (tooltip) - for additional information about the image' IMAGETITLE: 'Title text (tooltip) - for additional information about the image'
IMAGETITLETEXT: 'Title text (tooltip)' IMAGETITLETEXT: 'Title text (tooltip)'
IMAGETITLETEXTDESC: 'For additional information about the image' IMAGETITLETEXTDESC: 'For additional information about the image'
IMAGEWIDTHPX: Širina IMAGEWIDTHPX: 'Širina'
INSERTMEDIA: 'Insert Media' INSERTMEDIA: 'Insert Media'
LINK: 'Ubaci/editiraj link za označeni tekst' LINK: 'Ubaci/editiraj link za označeni tekst'
LINKANCHOR: 'Anchor on this page' LINKANCHOR: 'Anchor on this page'
@ -331,7 +341,10 @@ hr:
PreviewButton: Preview PreviewButton: Preview
REORGANISATIONSUCCESSFUL: 'Reorganised the site tree successfully.' REORGANISATIONSUCCESSFUL: 'Reorganised the site tree successfully.'
SAVEDUP: Saved. SAVEDUP: Saved.
VersionUnknown: unknown ShowAsList: 'show as list'
TooManyPages: 'Too many pages'
ValidationError: 'Validation error'
VersionUnknown: Unknown
LeftAndMain_Menu.ss: LeftAndMain_Menu.ss:
Hello: Hi Hello: Hi
LOGOUT: 'Log out' LOGOUT: 'Log out'
@ -407,6 +420,7 @@ hr:
TWODIGITMONTH: 'Two-digit month (01=January, etc.)' TWODIGITMONTH: 'Two-digit month (01=January, etc.)'
TWODIGITSECOND: 'Two digits of second (00 through 59)' TWODIGITSECOND: 'Two digits of second (00 through 59)'
TWODIGITYEAR: 'Two-digit year' TWODIGITYEAR: 'Two-digit year'
Toggle: 'Show formatting help'
MemberImportForm: MemberImportForm:
Help1: '<p>Import users in <em>CSV format</em> (comma-separated values). <small><a href="#" class="toggle-advanced">Show advanced usage</a></small></p>' Help1: '<p>Import users in <em>CSV format</em> (comma-separated values). <small><a href="#" class="toggle-advanced">Show advanced usage</a></small></p>'
Help2: '<div class="advanced"> <h4>Advanced usage</h4> <ul> <li>Allowed columns: <em>%s</em></li> <li>Existing users are matched by their unique <em>Code</em> property, and updated with any new values from the imported file.</li> <li>Groups can be assigned by the <em>Groups</em> column. Groups are identified by their <em>Code</em> property, multiple groups can be separated by comma. Existing group memberships are not cleared.</li> </ul></div>' Help2: '<div class="advanced"> <h4>Advanced usage</h4> <ul> <li>Allowed columns: <em>%s</em></li> <li>Existing users are matched by their unique <em>Code</em> property, and updated with any new values from the imported file.</li> <li>Groups can be assigned by the <em>Groups</em> column. Groups are identified by their <em>Code</em> property, multiple groups can be separated by comma. Existing group memberships are not cleared.</li> </ul></div>'
@ -421,7 +435,7 @@ hr:
ModelAdmin: ModelAdmin:
DELETE: Delete DELETE: Delete
DELETEDRECORDS: 'Deleted {count} records.' DELETEDRECORDS: 'Deleted {count} records.'
EMPTYBEFOREIMPORT: 'Clear Database before import' EMPTYBEFOREIMPORT: 'Replace data'
IMPORT: 'Import from CSV' IMPORT: 'Import from CSV'
IMPORTEDRECORDS: 'Imported {count} records.' IMPORTEDRECORDS: 'Imported {count} records.'
NOCSVFILE: 'Please browse for a CSV file to import' NOCSVFILE: 'Please browse for a CSV file to import'
@ -515,7 +529,20 @@ hr:
BtnImport: 'Import from CSV' BtnImport: 'Import from CSV'
FileFieldLabel: 'CSV File <small>(Allowed extensions: *.csv)</small>' FileFieldLabel: 'CSV File <small>(Allowed extensions: *.csv)</small>'
SilverStripeNavigator: SilverStripeNavigator:
Auto: Auto
ChangeViewMode: 'Change view mode'
Desktop: Desktop
DualWindowView: 'Dual Window'
Edit: Edit Edit: Edit
EditView: 'Edit mode'
Mobile: Mobile
PreviewState: 'Preview State'
PreviewView: 'Preview mode'
Responsive: Responsive
SplitView: 'Split mode'
Tablet: Tablet
ViewDeviceWidth: 'Select a preview width'
Width: width
SimpleImageField: SimpleImageField:
NOUPLOAD: 'Nema uploadanih slika' NOUPLOAD: 'Nema uploadanih slika'
SiteTree: SiteTree:
@ -551,6 +578,8 @@ hr:
ATTACHFILE: 'Attach a file' ATTACHFILE: 'Attach a file'
ATTACHFILES: 'Attach files' ATTACHFILES: 'Attach files'
AttachFile: 'Attach file(s)' AttachFile: 'Attach file(s)'
CHOOSEANOTHERFILE: 'Choose another file'
CHOOSEANOTHERINFO: 'Replace this file with another one from the file store'
DELETE: 'Delete from files' DELETE: 'Delete from files'
DELETEINFO: 'Permanently delete this file from the file store' DELETEINFO: 'Permanently delete this file from the file store'
DOEDIT: Save DOEDIT: Save
@ -565,12 +594,15 @@ hr:
FROMFILES: 'From files' FROMFILES: 'From files'
HOTLINKINFO: 'Info: This image will be hotlinked. Please ensure you have permissions from the original site creator to do so.' HOTLINKINFO: 'Info: This image will be hotlinked. Please ensure you have permissions from the original site creator to do so.'
MAXNUMBEROFFILES: 'Max number of {count} file(s) exceeded.' MAXNUMBEROFFILES: 'Max number of {count} file(s) exceeded.'
MAXNUMBEROFFILESONE: 'Can only upload one file'
MAXNUMBEROFFILESSHORT: 'Can only upload {count} files' MAXNUMBEROFFILESSHORT: 'Can only upload {count} files'
OVERWRITEWARNING: 'File with the same name already exists'
REMOVE: Remove REMOVE: Remove
REMOVEERROR: 'Error removing file' REMOVEERROR: 'Error removing file'
REMOVEINFO: 'Remove this file from here, but do not delete it from the file store' REMOVEINFO: 'Remove this file from here, but do not delete it from the file store'
STARTALL: 'Start all' STARTALL: 'Start all'
STARTALLINFO: 'Start all uploads' STARTALLINFO: 'Start all uploads'
Saved: Saved Saved: Saved
UPLOADSINTO: 'saves into /{path}'
Versioned: Versioned:
has_many_Versions: Verzije has_many_Versions: Verzije

View File

@ -2,6 +2,7 @@ hu:
AssetAdmin: AssetAdmin:
ALLOWEDEXTS: 'Allowed extensions' ALLOWEDEXTS: 'Allowed extensions'
NEWFOLDER: 'Új mappa' NEWFOLDER: 'Új mappa'
SHOWALLOWEDEXTS: 'Show allowed extensions'
AssetTableField: AssetTableField:
CREATED: 'Először feltöltve' CREATED: 'Először feltöltve'
DIM: Képméret DIM: Képméret
@ -59,9 +60,9 @@ hu:
ERRORNOTADMIN: 'Ez a felhasználó nem adminisztrátor. ' ERRORNOTADMIN: 'Ez a felhasználó nem adminisztrátor. '
ERRORNOTREC: 'Ez a felhasználónév / jelszó nem létezik' ERRORNOTREC: 'Ez a felhasználónév / jelszó nem létezik'
Boolean: Boolean:
0: 'False'
ANY: Any ANY: Any
1: 'True' NOANSWER: 'False'
YESANSWER: 'True'
CMSLoadingScreen.ss: CMSLoadingScreen.ss:
LOADING: Loading... LOADING: Loading...
REQUIREJS: 'The CMS requires that you have JavaScript enabled.' REQUIREJS: 'The CMS requires that you have JavaScript enabled.'
@ -70,6 +71,8 @@ hu:
ACCESSALLINTERFACES: 'Elérés minden CMS interfészhez' ACCESSALLINTERFACES: 'Elérés minden CMS interfészhez'
ACCESSALLINTERFACESHELP: 'Overrules more specific access settings.' ACCESSALLINTERFACESHELP: 'Overrules more specific access settings.'
SAVE: Mentés SAVE: Mentés
CMSPageHistoryController_versions.ss:
PREVIEW: 'Website preview'
CMSProfileController: CMSProfileController:
MENUTITLE: 'My Profile' MENUTITLE: 'My Profile'
ChangePasswordEmail.ss: ChangePasswordEmail.ss:
@ -79,8 +82,8 @@ hu:
HELLO: Szia! HELLO: Szia!
PASSWORD: Password PASSWORD: Password
CheckboxField: CheckboxField:
- 'False' NOANSWER: 'False'
- 'True' YESANSWER: 'True'
ComplexTableField: ComplexTableField:
CLOSEPOPUP: 'Ablak bezárása' CLOSEPOPUP: 'Ablak bezárása'
SUCCESSADD2: 'Added {name}' SUCCESSADD2: 'Added {name}'
@ -109,20 +112,21 @@ hu:
PLURALNAME: 'Data Objects' PLURALNAME: 'Data Objects'
SINGULARNAME: 'Data Object' SINGULARNAME: 'Data Object'
Date: Date:
DAY: nap DAY: day
DAYS: nappal DAYS: days
HOUR: órája HOUR: hour
HOURS: órával HOURS: hours
MIN: perce LessThanMinuteAgo: 'less than a minute'
MINS: perccel MIN: min
MONTH: hónap MINS: mins
MONTHS: hónappal MONTH: month
SEC: másodperce MONTHS: months
SECS: másodperccel SEC: sec
SECS: secs
TIMEDIFFAGO: '{difference} ago' TIMEDIFFAGO: '{difference} ago'
TIMEDIFFIN: 'in {difference}' TIMEDIFFIN: 'in {difference}'
YEAR: éve YEAR: year
YEARS: évvel YEARS: years
DateField: DateField:
NOTSET: 'not set' NOTSET: 'not set'
TODAY: today TODAY: today
@ -198,7 +202,8 @@ hu:
TEXT2: 'password reset link' TEXT2: 'password reset link'
TEXT3: for TEXT3: for
Form: Form:
FIELDISREQUIRED: 'A %s szükséges' CSRF_FAILED_MESSAGE: 'There seems to have been a technical problem. Please click the back button, refresh your browser, and try again.'
FIELDISREQUIRED: '{name} is required'
SubmitBtnLabel: Go SubmitBtnLabel: Go
VALIDATIONCREDITNUMBER: 'Please ensure you have entered the {number} credit card number correctly' VALIDATIONCREDITNUMBER: 'Please ensure you have entered the {number} credit card number correctly'
VALIDATIONNOTUNIQUE: 'A beírt érték nem egyedi' VALIDATIONNOTUNIQUE: 'A beírt érték nem egyedi'
@ -208,6 +213,7 @@ hu:
VALIDATOR: Validator VALIDATOR: Validator
VALIDCURRENCY: 'Please enter a valid currency' VALIDCURRENCY: 'Please enter a valid currency'
FormField: FormField:
Example: 'e.g. %s'
NONE: none NONE: none
GridAction: GridAction:
DELETE_DESCRIPTION: Delete DELETE_DESCRIPTION: Delete
@ -230,6 +236,7 @@ hu:
ResetFilter: Reset ResetFilter: Reset
GridFieldAction_Delete: GridFieldAction_Delete:
DeletePermissionsFailure: 'No delete permissions' DeletePermissionsFailure: 'No delete permissions'
EditPermissionsFailure: 'No permission to unlink record'
GridFieldDetailForm: GridFieldDetailForm:
CancelBtn: Cancel CancelBtn: Cancel
Create: Create Create: Create
@ -237,7 +244,9 @@ hu:
DeletePermissionsFailure: 'No delete permissions' DeletePermissionsFailure: 'No delete permissions'
Deleted: 'Deleted %s %s' Deleted: 'Deleted %s %s'
Save: Save Save: Save
Saved: 'Saved %s %s' Saved: 'Saved {name} {link}'
GridFieldEditButton.ss:
EDIT: Edit
GridFieldItemEditView.ss: null GridFieldItemEditView.ss: null
Group: Group:
AddRole: 'Add a role for this group' AddRole: 'Add a role for this group'
@ -267,6 +276,7 @@ hu:
ADDURL: 'Add URL' ADDURL: 'Add URL'
ADJUSTDETAILSDIMENSIONS: 'Details &amp; dimensions' ADJUSTDETAILSDIMENSIONS: 'Details &amp; dimensions'
ANCHORVALUE: Anchor ANCHORVALUE: Anchor
BUTTONADDURL: 'Add url'
BUTTONINSERT: Insert BUTTONINSERT: Insert
BUTTONINSERTLINK: 'Link beszúrása' BUTTONINSERTLINK: 'Link beszúrása'
BUTTONREMOVELINK: 'Link eltávolítása' BUTTONREMOVELINK: 'Link eltávolítása'
@ -331,7 +341,10 @@ hu:
PreviewButton: Preview PreviewButton: Preview
REORGANISATIONSUCCESSFUL: 'Reorganised the site tree successfully.' REORGANISATIONSUCCESSFUL: 'Reorganised the site tree successfully.'
SAVEDUP: Saved. SAVEDUP: Saved.
VersionUnknown: unknown ShowAsList: 'show as list'
TooManyPages: 'Too many pages'
ValidationError: 'Validation error'
VersionUnknown: Unknown
LeftAndMain_Menu.ss: LeftAndMain_Menu.ss:
Hello: Hi Hello: Hi
LOGOUT: 'Log out' LOGOUT: 'Log out'
@ -407,6 +420,7 @@ hu:
TWODIGITMONTH: 'Two-digit month (01=January, etc.)' TWODIGITMONTH: 'Two-digit month (01=January, etc.)'
TWODIGITSECOND: 'Two digits of second (00 through 59)' TWODIGITSECOND: 'Two digits of second (00 through 59)'
TWODIGITYEAR: 'Two-digit year' TWODIGITYEAR: 'Two-digit year'
Toggle: 'Show formatting help'
MemberImportForm: MemberImportForm:
Help1: '<p>Import users in <em>CSV format</em> (comma-separated values). <small><a href="#" class="toggle-advanced">Show advanced usage</a></small></p>' Help1: '<p>Import users in <em>CSV format</em> (comma-separated values). <small><a href="#" class="toggle-advanced">Show advanced usage</a></small></p>'
Help2: '<div class="advanced"> <h4>Advanced usage</h4> <ul> <li>Allowed columns: <em>%s</em></li> <li>Existing users are matched by their unique <em>Code</em> property, and updated with any new values from the imported file.</li> <li>Groups can be assigned by the <em>Groups</em> column. Groups are identified by their <em>Code</em> property, multiple groups can be separated by comma. Existing group memberships are not cleared.</li> </ul></div>' Help2: '<div class="advanced"> <h4>Advanced usage</h4> <ul> <li>Allowed columns: <em>%s</em></li> <li>Existing users are matched by their unique <em>Code</em> property, and updated with any new values from the imported file.</li> <li>Groups can be assigned by the <em>Groups</em> column. Groups are identified by their <em>Code</em> property, multiple groups can be separated by comma. Existing group memberships are not cleared.</li> </ul></div>'
@ -421,7 +435,7 @@ hu:
ModelAdmin: ModelAdmin:
DELETE: Törlés DELETE: Törlés
DELETEDRECORDS: 'Deleted {count} records.' DELETEDRECORDS: 'Deleted {count} records.'
EMPTYBEFOREIMPORT: 'Clear Database before import' EMPTYBEFOREIMPORT: 'Replace data'
IMPORT: 'Betöltés CSV-ből' IMPORT: 'Betöltés CSV-ből'
IMPORTEDRECORDS: 'Imported {count} records.' IMPORTEDRECORDS: 'Imported {count} records.'
NOCSVFILE: 'Kérünk, válaszd ki a betöltendő CSV fájlt' NOCSVFILE: 'Kérünk, válaszd ki a betöltendő CSV fájlt'
@ -515,7 +529,20 @@ hu:
BtnImport: 'Import from CSV' BtnImport: 'Import from CSV'
FileFieldLabel: 'CSV File <small>(Allowed extensions: *.csv)</small>' FileFieldLabel: 'CSV File <small>(Allowed extensions: *.csv)</small>'
SilverStripeNavigator: SilverStripeNavigator:
Auto: Auto
ChangeViewMode: 'Change view mode'
Desktop: Desktop
DualWindowView: 'Dual Window'
Edit: Edit Edit: Edit
EditView: 'Edit mode'
Mobile: Mobile
PreviewState: 'Preview State'
PreviewView: 'Preview mode'
Responsive: Responsive
SplitView: 'Split mode'
Tablet: Tablet
ViewDeviceWidth: 'Select a preview width'
Width: width
SimpleImageField: SimpleImageField:
NOUPLOAD: 'Nincs feltöltött kép' NOUPLOAD: 'Nincs feltöltött kép'
SiteTree: SiteTree:
@ -551,6 +578,8 @@ hu:
ATTACHFILE: 'Attach a file' ATTACHFILE: 'Attach a file'
ATTACHFILES: 'Attach files' ATTACHFILES: 'Attach files'
AttachFile: 'Attach file(s)' AttachFile: 'Attach file(s)'
CHOOSEANOTHERFILE: 'Choose another file'
CHOOSEANOTHERINFO: 'Replace this file with another one from the file store'
DELETE: 'Delete from files' DELETE: 'Delete from files'
DELETEINFO: 'Permanently delete this file from the file store' DELETEINFO: 'Permanently delete this file from the file store'
DOEDIT: Save DOEDIT: Save
@ -565,12 +594,15 @@ hu:
FROMFILES: 'From files' FROMFILES: 'From files'
HOTLINKINFO: 'Info: This image will be hotlinked. Please ensure you have permissions from the original site creator to do so.' HOTLINKINFO: 'Info: This image will be hotlinked. Please ensure you have permissions from the original site creator to do so.'
MAXNUMBEROFFILES: 'Max number of {count} file(s) exceeded.' MAXNUMBEROFFILES: 'Max number of {count} file(s) exceeded.'
MAXNUMBEROFFILESONE: 'Can only upload one file'
MAXNUMBEROFFILESSHORT: 'Can only upload {count} files' MAXNUMBEROFFILESSHORT: 'Can only upload {count} files'
OVERWRITEWARNING: 'File with the same name already exists'
REMOVE: Remove REMOVE: Remove
REMOVEERROR: 'Error removing file' REMOVEERROR: 'Error removing file'
REMOVEINFO: 'Remove this file from here, but do not delete it from the file store' REMOVEINFO: 'Remove this file from here, but do not delete it from the file store'
STARTALL: 'Start all' STARTALL: 'Start all'
STARTALLINFO: 'Start all uploads' STARTALLINFO: 'Start all uploads'
Saved: Saved Saved: Saved
UPLOADSINTO: 'saves into /{path}'
Versioned: Versioned:
has_many_Versions: Verziók has_many_Versions: Verziók

View File

@ -2,6 +2,7 @@ hy_AM:
AssetAdmin: AssetAdmin:
ALLOWEDEXTS: 'Allowed extensions' ALLOWEDEXTS: 'Allowed extensions'
NEWFOLDER: NewFolder NEWFOLDER: NewFolder
SHOWALLOWEDEXTS: 'Show allowed extensions'
AssetTableField: AssetTableField:
CREATED: 'First uploaded' CREATED: 'First uploaded'
DIM: Dimensions DIM: Dimensions
@ -59,9 +60,9 @@ hy_AM:
ERRORNOTADMIN: 'That user is not an administrator.' ERRORNOTADMIN: 'That user is not an administrator.'
ERRORNOTREC: 'That username / password isn''t recognised' ERRORNOTREC: 'That username / password isn''t recognised'
Boolean: Boolean:
0: 'False'
ANY: Any ANY: Any
1: 'True' NOANSWER: 'False'
YESANSWER: 'True'
CMSLoadingScreen.ss: CMSLoadingScreen.ss:
LOADING: Loading... LOADING: Loading...
REQUIREJS: 'The CMS requires that you have JavaScript enabled.' REQUIREJS: 'The CMS requires that you have JavaScript enabled.'
@ -70,6 +71,8 @@ hy_AM:
ACCESSALLINTERFACES: 'Access to all CMS sections' ACCESSALLINTERFACES: 'Access to all CMS sections'
ACCESSALLINTERFACESHELP: 'Overrules more specific access settings.' ACCESSALLINTERFACESHELP: 'Overrules more specific access settings.'
SAVE: Save SAVE: Save
CMSPageHistoryController_versions.ss:
PREVIEW: 'Website preview'
CMSProfileController: CMSProfileController:
MENUTITLE: 'My Profile' MENUTITLE: 'My Profile'
ChangePasswordEmail.ss: ChangePasswordEmail.ss:
@ -79,8 +82,8 @@ hy_AM:
HELLO: Hi HELLO: Hi
PASSWORD: Password PASSWORD: Password
CheckboxField: CheckboxField:
- 'False' NOANSWER: 'False'
- 'True' YESANSWER: 'True'
ComplexTableField: ComplexTableField:
CLOSEPOPUP: 'Close Popup' CLOSEPOPUP: 'Close Popup'
SUCCESSADD2: 'Added {name}' SUCCESSADD2: 'Added {name}'
@ -109,20 +112,21 @@ hy_AM:
PLURALNAME: 'Data Objects' PLURALNAME: 'Data Objects'
SINGULARNAME: 'Data Object' SINGULARNAME: 'Data Object'
Date: Date:
DAY: ' day' DAY: day
DAYS: ' days' DAYS: days
HOUR: ' hour' HOUR: hour
HOURS: ' hours' HOURS: hours
MIN: ' min' LessThanMinuteAgo: 'less than a minute'
MINS: ' mins' MIN: min
MONTH: ' month' MINS: mins
MONTHS: ' months' MONTH: month
SEC: ' sec' MONTHS: months
SECS: ' secs' SEC: sec
SECS: secs
TIMEDIFFAGO: '{difference} ago' TIMEDIFFAGO: '{difference} ago'
TIMEDIFFIN: 'in {difference}' TIMEDIFFIN: 'in {difference}'
YEAR: ' year' YEAR: year
YEARS: ' years' YEARS: years
DateField: DateField:
NOTSET: 'not set' NOTSET: 'not set'
TODAY: today TODAY: today
@ -198,7 +202,8 @@ hy_AM:
TEXT2: 'password reset link' TEXT2: 'password reset link'
TEXT3: for TEXT3: for
Form: Form:
FIELDISREQUIRED: '%s is required' CSRF_FAILED_MESSAGE: 'There seems to have been a technical problem. Please click the back button, refresh your browser, and try again.'
FIELDISREQUIRED: '{name} is required'
SubmitBtnLabel: Go SubmitBtnLabel: Go
VALIDATIONCREDITNUMBER: 'Please ensure you have entered the {number} credit card number correctly' VALIDATIONCREDITNUMBER: 'Please ensure you have entered the {number} credit card number correctly'
VALIDATIONNOTUNIQUE: 'The value entered is not unique' VALIDATIONNOTUNIQUE: 'The value entered is not unique'
@ -208,6 +213,7 @@ hy_AM:
VALIDATOR: Validator VALIDATOR: Validator
VALIDCURRENCY: 'Please enter a valid currency' VALIDCURRENCY: 'Please enter a valid currency'
FormField: FormField:
Example: 'e.g. %s'
NONE: none NONE: none
GridAction: GridAction:
DELETE_DESCRIPTION: Delete DELETE_DESCRIPTION: Delete
@ -230,6 +236,7 @@ hy_AM:
ResetFilter: Reset ResetFilter: Reset
GridFieldAction_Delete: GridFieldAction_Delete:
DeletePermissionsFailure: 'No delete permissions' DeletePermissionsFailure: 'No delete permissions'
EditPermissionsFailure: 'No permission to unlink record'
GridFieldDetailForm: GridFieldDetailForm:
CancelBtn: Cancel CancelBtn: Cancel
Create: Create Create: Create
@ -237,7 +244,9 @@ hy_AM:
DeletePermissionsFailure: 'No delete permissions' DeletePermissionsFailure: 'No delete permissions'
Deleted: 'Deleted %s %s' Deleted: 'Deleted %s %s'
Save: Save Save: Save
Saved: 'Saved %s %s' Saved: 'Saved {name} {link}'
GridFieldEditButton.ss:
EDIT: Edit
GridFieldItemEditView.ss: null GridFieldItemEditView.ss: null
Group: Group:
AddRole: 'Add a role for this group' AddRole: 'Add a role for this group'
@ -267,6 +276,7 @@ hy_AM:
ADDURL: 'Add URL' ADDURL: 'Add URL'
ADJUSTDETAILSDIMENSIONS: 'Details &amp; dimensions' ADJUSTDETAILSDIMENSIONS: 'Details &amp; dimensions'
ANCHORVALUE: Anchor ANCHORVALUE: Anchor
BUTTONADDURL: 'Add url'
BUTTONINSERT: Insert BUTTONINSERT: Insert
BUTTONINSERTLINK: 'Insert link' BUTTONINSERTLINK: 'Insert link'
BUTTONREMOVELINK: 'Remove link' BUTTONREMOVELINK: 'Remove link'
@ -331,7 +341,10 @@ hy_AM:
PreviewButton: Preview PreviewButton: Preview
REORGANISATIONSUCCESSFUL: 'Reorganised the site tree successfully.' REORGANISATIONSUCCESSFUL: 'Reorganised the site tree successfully.'
SAVEDUP: Saved. SAVEDUP: Saved.
VersionUnknown: unknown ShowAsList: 'show as list'
TooManyPages: 'Too many pages'
ValidationError: 'Validation error'
VersionUnknown: Unknown
LeftAndMain_Menu.ss: LeftAndMain_Menu.ss:
Hello: Hi Hello: Hi
LOGOUT: 'Log out' LOGOUT: 'Log out'
@ -407,6 +420,7 @@ hy_AM:
TWODIGITMONTH: 'Two-digit month (01=January, etc.)' TWODIGITMONTH: 'Two-digit month (01=January, etc.)'
TWODIGITSECOND: 'Two digits of second (00 through 59)' TWODIGITSECOND: 'Two digits of second (00 through 59)'
TWODIGITYEAR: 'Two-digit year' TWODIGITYEAR: 'Two-digit year'
Toggle: 'Show formatting help'
MemberImportForm: MemberImportForm:
Help1: '<p>Import users in <em>CSV format</em> (comma-separated values). <small><a href="#" class="toggle-advanced">Show advanced usage</a></small></p>' Help1: '<p>Import users in <em>CSV format</em> (comma-separated values). <small><a href="#" class="toggle-advanced">Show advanced usage</a></small></p>'
Help2: '<div class="advanced"> <h4>Advanced usage</h4> <ul> <li>Allowed columns: <em>%s</em></li> <li>Existing users are matched by their unique <em>Code</em> property, and updated with any new values from the imported file.</li> <li>Groups can be assigned by the <em>Groups</em> column. Groups are identified by their <em>Code</em> property, multiple groups can be separated by comma. Existing group memberships are not cleared.</li> </ul></div>' Help2: '<div class="advanced"> <h4>Advanced usage</h4> <ul> <li>Allowed columns: <em>%s</em></li> <li>Existing users are matched by their unique <em>Code</em> property, and updated with any new values from the imported file.</li> <li>Groups can be assigned by the <em>Groups</em> column. Groups are identified by their <em>Code</em> property, multiple groups can be separated by comma. Existing group memberships are not cleared.</li> </ul></div>'
@ -421,7 +435,7 @@ hy_AM:
ModelAdmin: ModelAdmin:
DELETE: Delete DELETE: Delete
DELETEDRECORDS: 'Deleted {count} records.' DELETEDRECORDS: 'Deleted {count} records.'
EMPTYBEFOREIMPORT: 'Clear Database before import' EMPTYBEFOREIMPORT: 'Replace data'
IMPORT: 'Import from CSV' IMPORT: 'Import from CSV'
IMPORTEDRECORDS: 'Imported {count} records.' IMPORTEDRECORDS: 'Imported {count} records.'
NOCSVFILE: 'Please browse for a CSV file to import' NOCSVFILE: 'Please browse for a CSV file to import'
@ -515,7 +529,20 @@ hy_AM:
BtnImport: 'Import from CSV' BtnImport: 'Import from CSV'
FileFieldLabel: 'CSV File <small>(Allowed extensions: *.csv)</small>' FileFieldLabel: 'CSV File <small>(Allowed extensions: *.csv)</small>'
SilverStripeNavigator: SilverStripeNavigator:
Auto: Auto
ChangeViewMode: 'Change view mode'
Desktop: Desktop
DualWindowView: 'Dual Window'
Edit: Edit Edit: Edit
EditView: 'Edit mode'
Mobile: Mobile
PreviewState: 'Preview State'
PreviewView: 'Preview mode'
Responsive: Responsive
SplitView: 'Split mode'
Tablet: Tablet
ViewDeviceWidth: 'Select a preview width'
Width: width
SimpleImageField: SimpleImageField:
NOUPLOAD: 'No Image Uploaded' NOUPLOAD: 'No Image Uploaded'
SiteTree: SiteTree:
@ -551,6 +578,8 @@ hy_AM:
ATTACHFILE: 'Attach a file' ATTACHFILE: 'Attach a file'
ATTACHFILES: 'Attach files' ATTACHFILES: 'Attach files'
AttachFile: 'Attach file(s)' AttachFile: 'Attach file(s)'
CHOOSEANOTHERFILE: 'Choose another file'
CHOOSEANOTHERINFO: 'Replace this file with another one from the file store'
DELETE: 'Delete from files' DELETE: 'Delete from files'
DELETEINFO: 'Permanently delete this file from the file store' DELETEINFO: 'Permanently delete this file from the file store'
DOEDIT: Save DOEDIT: Save
@ -565,12 +594,15 @@ hy_AM:
FROMFILES: 'From files' FROMFILES: 'From files'
HOTLINKINFO: 'Info: This image will be hotlinked. Please ensure you have permissions from the original site creator to do so.' HOTLINKINFO: 'Info: This image will be hotlinked. Please ensure you have permissions from the original site creator to do so.'
MAXNUMBEROFFILES: 'Max number of {count} file(s) exceeded.' MAXNUMBEROFFILES: 'Max number of {count} file(s) exceeded.'
MAXNUMBEROFFILESONE: 'Can only upload one file'
MAXNUMBEROFFILESSHORT: 'Can only upload {count} files' MAXNUMBEROFFILESSHORT: 'Can only upload {count} files'
OVERWRITEWARNING: 'File with the same name already exists'
REMOVE: Remove REMOVE: Remove
REMOVEERROR: 'Error removing file' REMOVEERROR: 'Error removing file'
REMOVEINFO: 'Remove this file from here, but do not delete it from the file store' REMOVEINFO: 'Remove this file from here, but do not delete it from the file store'
STARTALL: 'Start all' STARTALL: 'Start all'
STARTALLINFO: 'Start all uploads' STARTALLINFO: 'Start all uploads'
Saved: Saved Saved: Saved
UPLOADSINTO: 'saves into /{path}'
Versioned: Versioned:
has_many_Versions: Versions has_many_Versions: Versions

View File

@ -2,6 +2,7 @@ id:
AssetAdmin: AssetAdmin:
ALLOWEDEXTS: 'Allowed extensions' ALLOWEDEXTS: 'Allowed extensions'
NEWFOLDER: NewFolder NEWFOLDER: NewFolder
SHOWALLOWEDEXTS: 'Show allowed extensions'
AssetTableField: AssetTableField:
CREATED: 'First uploaded' CREATED: 'First uploaded'
DIM: Dimensions DIM: Dimensions
@ -59,9 +60,9 @@ id:
ERRORNOTADMIN: 'User tersebut bukan administrator.' ERRORNOTADMIN: 'User tersebut bukan administrator.'
ERRORNOTREC: 'Username/password tidak dikenali' ERRORNOTREC: 'Username/password tidak dikenali'
Boolean: Boolean:
0: 'False'
ANY: Any ANY: Any
1: 'True' NOANSWER: 'False'
YESANSWER: 'True'
CMSLoadingScreen.ss: CMSLoadingScreen.ss:
LOADING: Loading... LOADING: Loading...
REQUIREJS: 'The CMS requires that you have JavaScript enabled.' REQUIREJS: 'The CMS requires that you have JavaScript enabled.'
@ -70,6 +71,8 @@ id:
ACCESSALLINTERFACES: 'Access to all CMS sections' ACCESSALLINTERFACES: 'Access to all CMS sections'
ACCESSALLINTERFACESHELP: 'Overrules more specific access settings.' ACCESSALLINTERFACESHELP: 'Overrules more specific access settings.'
SAVE: Simpan SAVE: Simpan
CMSPageHistoryController_versions.ss:
PREVIEW: 'Website preview'
CMSProfileController: CMSProfileController:
MENUTITLE: 'My Profile' MENUTITLE: 'My Profile'
ChangePasswordEmail.ss: ChangePasswordEmail.ss:
@ -79,8 +82,8 @@ id:
HELLO: Hai HELLO: Hai
PASSWORD: Password PASSWORD: Password
CheckboxField: CheckboxField:
- 'False' NOANSWER: 'False'
- 'True' YESANSWER: 'True'
ComplexTableField: ComplexTableField:
CLOSEPOPUP: 'Tutup popup' CLOSEPOPUP: 'Tutup popup'
SUCCESSADD2: 'Added {name}' SUCCESSADD2: 'Added {name}'
@ -109,20 +112,21 @@ id:
PLURALNAME: 'Objek-objek Data' PLURALNAME: 'Objek-objek Data'
SINGULARNAME: 'Objek Data' SINGULARNAME: 'Objek Data'
Date: Date:
DAY: hari DAY: day
DAYS: hari DAYS: days
HOUR: jam HOUR: hour
HOURS: jam HOURS: hours
MIN: menit LessThanMinuteAgo: 'less than a minute'
MINS: menit MIN: min
MONTH: bulan MINS: mins
MONTHS: bulan MONTH: month
SEC: detik MONTHS: months
SECS: detik SEC: sec
SECS: secs
TIMEDIFFAGO: '{difference} ago' TIMEDIFFAGO: '{difference} ago'
TIMEDIFFIN: 'in {difference}' TIMEDIFFIN: 'in {difference}'
YEAR: tahun YEAR: year
YEARS: tahun YEARS: years
DateField: DateField:
NOTSET: 'tidak diset' NOTSET: 'tidak diset'
TODAY: 'hari ini' TODAY: 'hari ini'
@ -198,7 +202,8 @@ id:
TEXT2: 'link untuk mereset kata sandi' TEXT2: 'link untuk mereset kata sandi'
TEXT3: untuk TEXT3: untuk
Form: Form:
FIELDISREQUIRED: '%s dibutuhkan' CSRF_FAILED_MESSAGE: 'There seems to have been a technical problem. Please click the back button, refresh your browser, and try again.'
FIELDISREQUIRED: '{name} is required'
SubmitBtnLabel: Go SubmitBtnLabel: Go
VALIDATIONCREDITNUMBER: 'Please ensure you have entered the {number} credit card number correctly' VALIDATIONCREDITNUMBER: 'Please ensure you have entered the {number} credit card number correctly'
VALIDATIONNOTUNIQUE: 'Harga yang dimasukkan tidak unik' VALIDATIONNOTUNIQUE: 'Harga yang dimasukkan tidak unik'
@ -208,6 +213,7 @@ id:
VALIDATOR: Pengesah VALIDATOR: Pengesah
VALIDCURRENCY: 'Please enter a valid currency' VALIDCURRENCY: 'Please enter a valid currency'
FormField: FormField:
Example: 'e.g. %s'
NONE: 'tidak ada' NONE: 'tidak ada'
GridAction: GridAction:
DELETE_DESCRIPTION: Delete DELETE_DESCRIPTION: Delete
@ -230,6 +236,7 @@ id:
ResetFilter: Reset ResetFilter: Reset
GridFieldAction_Delete: GridFieldAction_Delete:
DeletePermissionsFailure: 'No delete permissions' DeletePermissionsFailure: 'No delete permissions'
EditPermissionsFailure: 'No permission to unlink record'
GridFieldDetailForm: GridFieldDetailForm:
CancelBtn: Cancel CancelBtn: Cancel
Create: Create Create: Create
@ -237,7 +244,9 @@ id:
DeletePermissionsFailure: 'No delete permissions' DeletePermissionsFailure: 'No delete permissions'
Deleted: 'Deleted %s %s' Deleted: 'Deleted %s %s'
Save: Save Save: Save
Saved: 'Saved %s %s' Saved: 'Saved {name} {link}'
GridFieldEditButton.ss:
EDIT: Edit
GridFieldItemEditView.ss: null GridFieldItemEditView.ss: null
Group: Group:
AddRole: 'Add a role for this group' AddRole: 'Add a role for this group'
@ -267,6 +276,7 @@ id:
ADDURL: 'Add URL' ADDURL: 'Add URL'
ADJUSTDETAILSDIMENSIONS: 'Details &amp; dimensions' ADJUSTDETAILSDIMENSIONS: 'Details &amp; dimensions'
ANCHORVALUE: Anchor ANCHORVALUE: Anchor
BUTTONADDURL: 'Add url'
BUTTONINSERT: Insert BUTTONINSERT: Insert
BUTTONINSERTLINK: 'Beri link' BUTTONINSERTLINK: 'Beri link'
BUTTONREMOVELINK: 'Pindahkan link' BUTTONREMOVELINK: 'Pindahkan link'
@ -331,7 +341,10 @@ id:
PreviewButton: Preview PreviewButton: Preview
REORGANISATIONSUCCESSFUL: 'Reorganised the site tree successfully.' REORGANISATIONSUCCESSFUL: 'Reorganised the site tree successfully.'
SAVEDUP: Saved. SAVEDUP: Saved.
VersionUnknown: unknown ShowAsList: 'show as list'
TooManyPages: 'Too many pages'
ValidationError: 'Validation error'
VersionUnknown: Unknown
LeftAndMain_Menu.ss: LeftAndMain_Menu.ss:
Hello: Hi Hello: Hi
LOGOUT: 'Log out' LOGOUT: 'Log out'
@ -407,6 +420,7 @@ id:
TWODIGITMONTH: 'Two-digit month (01=January, etc.)' TWODIGITMONTH: 'Two-digit month (01=January, etc.)'
TWODIGITSECOND: 'Two digits of second (00 through 59)' TWODIGITSECOND: 'Two digits of second (00 through 59)'
TWODIGITYEAR: 'Two-digit year' TWODIGITYEAR: 'Two-digit year'
Toggle: 'Show formatting help'
MemberImportForm: MemberImportForm:
Help1: '<p>Import users in <em>CSV format</em> (comma-separated values). <small><a href="#" class="toggle-advanced">Show advanced usage</a></small></p>' Help1: '<p>Import users in <em>CSV format</em> (comma-separated values). <small><a href="#" class="toggle-advanced">Show advanced usage</a></small></p>'
Help2: '<div class="advanced"> <h4>Advanced usage</h4> <ul> <li>Allowed columns: <em>%s</em></li> <li>Existing users are matched by their unique <em>Code</em> property, and updated with any new values from the imported file.</li> <li>Groups can be assigned by the <em>Groups</em> column. Groups are identified by their <em>Code</em> property, multiple groups can be separated by comma. Existing group memberships are not cleared.</li> </ul></div>' Help2: '<div class="advanced"> <h4>Advanced usage</h4> <ul> <li>Allowed columns: <em>%s</em></li> <li>Existing users are matched by their unique <em>Code</em> property, and updated with any new values from the imported file.</li> <li>Groups can be assigned by the <em>Groups</em> column. Groups are identified by their <em>Code</em> property, multiple groups can be separated by comma. Existing group memberships are not cleared.</li> </ul></div>'
@ -421,7 +435,7 @@ id:
ModelAdmin: ModelAdmin:
DELETE: Delete DELETE: Delete
DELETEDRECORDS: 'Deleted {count} records.' DELETEDRECORDS: 'Deleted {count} records.'
EMPTYBEFOREIMPORT: 'Clear Database before import' EMPTYBEFOREIMPORT: 'Replace data'
IMPORT: 'Import from CSV' IMPORT: 'Import from CSV'
IMPORTEDRECORDS: 'Imported {count} records.' IMPORTEDRECORDS: 'Imported {count} records.'
NOCSVFILE: 'Please browse for a CSV file to import' NOCSVFILE: 'Please browse for a CSV file to import'
@ -515,7 +529,20 @@ id:
BtnImport: 'Import from CSV' BtnImport: 'Import from CSV'
FileFieldLabel: 'CSV File <small>(Allowed extensions: *.csv)</small>' FileFieldLabel: 'CSV File <small>(Allowed extensions: *.csv)</small>'
SilverStripeNavigator: SilverStripeNavigator:
Auto: Auto
ChangeViewMode: 'Change view mode'
Desktop: Desktop
DualWindowView: 'Dual Window'
Edit: Edit Edit: Edit
EditView: 'Edit mode'
Mobile: Mobile
PreviewState: 'Preview State'
PreviewView: 'Preview mode'
Responsive: Responsive
SplitView: 'Split mode'
Tablet: Tablet
ViewDeviceWidth: 'Select a preview width'
Width: width
SimpleImageField: SimpleImageField:
NOUPLOAD: 'Tidak Ada Gambar yang Di-upload' NOUPLOAD: 'Tidak Ada Gambar yang Di-upload'
SiteTree: SiteTree:
@ -551,6 +578,8 @@ id:
ATTACHFILE: 'Attach a file' ATTACHFILE: 'Attach a file'
ATTACHFILES: 'Attach files' ATTACHFILES: 'Attach files'
AttachFile: 'Attach file(s)' AttachFile: 'Attach file(s)'
CHOOSEANOTHERFILE: 'Choose another file'
CHOOSEANOTHERINFO: 'Replace this file with another one from the file store'
DELETE: 'Delete from files' DELETE: 'Delete from files'
DELETEINFO: 'Permanently delete this file from the file store' DELETEINFO: 'Permanently delete this file from the file store'
DOEDIT: Save DOEDIT: Save
@ -565,12 +594,15 @@ id:
FROMFILES: 'From files' FROMFILES: 'From files'
HOTLINKINFO: 'Info: This image will be hotlinked. Please ensure you have permissions from the original site creator to do so.' HOTLINKINFO: 'Info: This image will be hotlinked. Please ensure you have permissions from the original site creator to do so.'
MAXNUMBEROFFILES: 'Max number of {count} file(s) exceeded.' MAXNUMBEROFFILES: 'Max number of {count} file(s) exceeded.'
MAXNUMBEROFFILESONE: 'Can only upload one file'
MAXNUMBEROFFILESSHORT: 'Can only upload {count} files' MAXNUMBEROFFILESSHORT: 'Can only upload {count} files'
OVERWRITEWARNING: 'File with the same name already exists'
REMOVE: Remove REMOVE: Remove
REMOVEERROR: 'Error removing file' REMOVEERROR: 'Error removing file'
REMOVEINFO: 'Remove this file from here, but do not delete it from the file store' REMOVEINFO: 'Remove this file from here, but do not delete it from the file store'
STARTALL: 'Start all' STARTALL: 'Start all'
STARTALLINFO: 'Start all uploads' STARTALLINFO: 'Start all uploads'
Saved: Saved Saved: Saved
UPLOADSINTO: 'saves into /{path}'
Versioned: Versioned:
has_many_Versions: Versi-versi has_many_Versions: Versi-versi

View File

@ -2,6 +2,7 @@ is:
AssetAdmin: AssetAdmin:
ALLOWEDEXTS: 'Allowed extensions' ALLOWEDEXTS: 'Allowed extensions'
NEWFOLDER: NewFolder NEWFOLDER: NewFolder
SHOWALLOWEDEXTS: 'Show allowed extensions'
AssetTableField: AssetTableField:
CREATED: 'First uploaded' CREATED: 'First uploaded'
DIM: Dimensions DIM: Dimensions
@ -59,9 +60,9 @@ is:
ERRORNOTADMIN: 'Þessi notandi er ekki stjórnandi' ERRORNOTADMIN: 'Þessi notandi er ekki stjórnandi'
ERRORNOTREC: 'Þetta notendanafn / lykilorð er ekki til' ERRORNOTREC: 'Þetta notendanafn / lykilorð er ekki til'
Boolean: Boolean:
0: Nei
ANY: Einhver ANY: Einhver
1: NOANSWER: 'False'
YESANSWER: 'True'
CMSLoadingScreen.ss: CMSLoadingScreen.ss:
LOADING: Loading... LOADING: Loading...
REQUIREJS: 'The CMS requires that you have JavaScript enabled.' REQUIREJS: 'The CMS requires that you have JavaScript enabled.'
@ -70,6 +71,8 @@ is:
ACCESSALLINTERFACES: 'Access to all CMS sections' ACCESSALLINTERFACES: 'Access to all CMS sections'
ACCESSALLINTERFACESHELP: 'Overrules more specific access settings.' ACCESSALLINTERFACESHELP: 'Overrules more specific access settings.'
SAVE: Vista SAVE: Vista
CMSPageHistoryController_versions.ss:
PREVIEW: 'Website preview'
CMSProfileController: CMSProfileController:
MENUTITLE: 'My Profile' MENUTITLE: 'My Profile'
ChangePasswordEmail.ss: ChangePasswordEmail.ss:
@ -79,8 +82,8 @@ is:
HELLO: HELLO:
PASSWORD: Lykilorð PASSWORD: Lykilorð
CheckboxField: CheckboxField:
- Nei NOANSWER: 'False'
- YESANSWER: 'True'
ComplexTableField: ComplexTableField:
CLOSEPOPUP: 'Loka glugga' CLOSEPOPUP: 'Loka glugga'
SUCCESSADD2: 'Added {name}' SUCCESSADD2: 'Added {name}'
@ -109,20 +112,21 @@ is:
PLURALNAME: 'Gagna hlutir' PLURALNAME: 'Gagna hlutir'
SINGULARNAME: 'Gagna hlutir' SINGULARNAME: 'Gagna hlutir'
Date: Date:
DAY: dagur DAY: day
DAYS: dagar DAYS: days
HOUR: klukkustund HOUR: hour
HOURS: klukkustundir HOURS: hours
MIN: mín LessThanMinuteAgo: 'less than a minute'
MINS: mín MIN: min
MONTH: mánuð MINS: mins
MONTHS: mánuði MONTH: month
SEC: sek MONTHS: months
SECS: sek SEC: sec
SECS: secs
TIMEDIFFAGO: '{difference} ago' TIMEDIFFAGO: '{difference} ago'
TIMEDIFFIN: 'in {difference}' TIMEDIFFIN: 'in {difference}'
YEAR: ár YEAR: year
YEARS: ár YEARS: years
DateField: DateField:
NOTSET: 'ekki valið' NOTSET: 'ekki valið'
TODAY: 'í dag' TODAY: 'í dag'
@ -198,7 +202,8 @@ is:
TEXT2: 'endursetja lykilorð' TEXT2: 'endursetja lykilorð'
TEXT3: fyrir TEXT3: fyrir
Form: Form:
FIELDISREQUIRED: '%s er krafist' CSRF_FAILED_MESSAGE: 'There seems to have been a technical problem. Please click the back button, refresh your browser, and try again.'
FIELDISREQUIRED: '{name} is required'
SubmitBtnLabel: Go SubmitBtnLabel: Go
VALIDATIONCREDITNUMBER: 'Please ensure you have entered the {number} credit card number correctly' VALIDATIONCREDITNUMBER: 'Please ensure you have entered the {number} credit card number correctly'
VALIDATIONNOTUNIQUE: 'Gildið sem þú slóst inn er ekki einkvæmt' VALIDATIONNOTUNIQUE: 'Gildið sem þú slóst inn er ekki einkvæmt'
@ -208,6 +213,7 @@ is:
VALIDATOR: Staðfesta VALIDATOR: Staðfesta
VALIDCURRENCY: 'Please enter a valid currency' VALIDCURRENCY: 'Please enter a valid currency'
FormField: FormField:
Example: 'e.g. %s'
NONE: ekkert NONE: ekkert
GridAction: GridAction:
DELETE_DESCRIPTION: Delete DELETE_DESCRIPTION: Delete
@ -230,6 +236,7 @@ is:
ResetFilter: Reset ResetFilter: Reset
GridFieldAction_Delete: GridFieldAction_Delete:
DeletePermissionsFailure: 'No delete permissions' DeletePermissionsFailure: 'No delete permissions'
EditPermissionsFailure: 'No permission to unlink record'
GridFieldDetailForm: GridFieldDetailForm:
CancelBtn: Cancel CancelBtn: Cancel
Create: Create Create: Create
@ -237,7 +244,9 @@ is:
DeletePermissionsFailure: 'No delete permissions' DeletePermissionsFailure: 'No delete permissions'
Deleted: 'Deleted %s %s' Deleted: 'Deleted %s %s'
Save: Save Save: Save
Saved: 'Saved %s %s' Saved: 'Saved {name} {link}'
GridFieldEditButton.ss:
EDIT: Edit
GridFieldItemEditView.ss: null GridFieldItemEditView.ss: null
Group: Group:
AddRole: 'Add a role for this group' AddRole: 'Add a role for this group'
@ -267,6 +276,7 @@ is:
ADDURL: 'Add URL' ADDURL: 'Add URL'
ADJUSTDETAILSDIMENSIONS: 'Details &amp; dimensions' ADJUSTDETAILSDIMENSIONS: 'Details &amp; dimensions'
ANCHORVALUE: Markstikla ANCHORVALUE: Markstikla
BUTTONADDURL: 'Add url'
BUTTONINSERT: Insert BUTTONINSERT: Insert
BUTTONINSERTLINK: 'Bæta við hlekk' BUTTONINSERTLINK: 'Bæta við hlekk'
BUTTONREMOVELINK: 'Fjarlægja hlekk' BUTTONREMOVELINK: 'Fjarlægja hlekk'
@ -331,7 +341,10 @@ is:
PreviewButton: Preview PreviewButton: Preview
REORGANISATIONSUCCESSFUL: 'Reorganised the site tree successfully.' REORGANISATIONSUCCESSFUL: 'Reorganised the site tree successfully.'
SAVEDUP: Saved. SAVEDUP: Saved.
VersionUnknown: unknown ShowAsList: 'show as list'
TooManyPages: 'Too many pages'
ValidationError: 'Validation error'
VersionUnknown: Unknown
LeftAndMain_Menu.ss: LeftAndMain_Menu.ss:
Hello: Hi Hello: Hi
LOGOUT: 'Log out' LOGOUT: 'Log out'
@ -407,6 +420,7 @@ is:
TWODIGITMONTH: 'Two-digit month (01=January, etc.)' TWODIGITMONTH: 'Two-digit month (01=January, etc.)'
TWODIGITSECOND: 'Two digits of second (00 through 59)' TWODIGITSECOND: 'Two digits of second (00 through 59)'
TWODIGITYEAR: 'Two-digit year' TWODIGITYEAR: 'Two-digit year'
Toggle: 'Show formatting help'
MemberImportForm: MemberImportForm:
Help1: '<p>Import users in <em>CSV format</em> (comma-separated values). <small><a href="#" class="toggle-advanced">Show advanced usage</a></small></p>' Help1: '<p>Import users in <em>CSV format</em> (comma-separated values). <small><a href="#" class="toggle-advanced">Show advanced usage</a></small></p>'
Help2: '<div class="advanced"> <h4>Advanced usage</h4> <ul> <li>Allowed columns: <em>%s</em></li> <li>Existing users are matched by their unique <em>Code</em> property, and updated with any new values from the imported file.</li> <li>Groups can be assigned by the <em>Groups</em> column. Groups are identified by their <em>Code</em> property, multiple groups can be separated by comma. Existing group memberships are not cleared.</li> </ul></div>' Help2: '<div class="advanced"> <h4>Advanced usage</h4> <ul> <li>Allowed columns: <em>%s</em></li> <li>Existing users are matched by their unique <em>Code</em> property, and updated with any new values from the imported file.</li> <li>Groups can be assigned by the <em>Groups</em> column. Groups are identified by their <em>Code</em> property, multiple groups can be separated by comma. Existing group memberships are not cleared.</li> </ul></div>'
@ -421,7 +435,7 @@ is:
ModelAdmin: ModelAdmin:
DELETE: Delete DELETE: Delete
DELETEDRECORDS: 'Deleted {count} records.' DELETEDRECORDS: 'Deleted {count} records.'
EMPTYBEFOREIMPORT: 'Clear Database before import' EMPTYBEFOREIMPORT: 'Replace data'
IMPORT: 'Import from CSV' IMPORT: 'Import from CSV'
IMPORTEDRECORDS: 'Imported {count} records.' IMPORTEDRECORDS: 'Imported {count} records.'
NOCSVFILE: 'Please browse for a CSV file to import' NOCSVFILE: 'Please browse for a CSV file to import'
@ -515,7 +529,20 @@ is:
BtnImport: 'Import from CSV' BtnImport: 'Import from CSV'
FileFieldLabel: 'CSV File <small>(Allowed extensions: *.csv)</small>' FileFieldLabel: 'CSV File <small>(Allowed extensions: *.csv)</small>'
SilverStripeNavigator: SilverStripeNavigator:
Auto: Auto
ChangeViewMode: 'Change view mode'
Desktop: Desktop
DualWindowView: 'Dual Window'
Edit: Edit Edit: Edit
EditView: 'Edit mode'
Mobile: Mobile
PreviewState: 'Preview State'
PreviewView: 'Preview mode'
Responsive: Responsive
SplitView: 'Split mode'
Tablet: Tablet
ViewDeviceWidth: 'Select a preview width'
Width: width
SimpleImageField: SimpleImageField:
NOUPLOAD: 'Engin mynd sótt' NOUPLOAD: 'Engin mynd sótt'
SiteTree: SiteTree:
@ -551,6 +578,8 @@ is:
ATTACHFILE: 'Attach a file' ATTACHFILE: 'Attach a file'
ATTACHFILES: 'Attach files' ATTACHFILES: 'Attach files'
AttachFile: 'Attach file(s)' AttachFile: 'Attach file(s)'
CHOOSEANOTHERFILE: 'Choose another file'
CHOOSEANOTHERINFO: 'Replace this file with another one from the file store'
DELETE: 'Delete from files' DELETE: 'Delete from files'
DELETEINFO: 'Permanently delete this file from the file store' DELETEINFO: 'Permanently delete this file from the file store'
DOEDIT: Save DOEDIT: Save
@ -565,12 +594,15 @@ is:
FROMFILES: 'From files' FROMFILES: 'From files'
HOTLINKINFO: 'Info: This image will be hotlinked. Please ensure you have permissions from the original site creator to do so.' HOTLINKINFO: 'Info: This image will be hotlinked. Please ensure you have permissions from the original site creator to do so.'
MAXNUMBEROFFILES: 'Max number of {count} file(s) exceeded.' MAXNUMBEROFFILES: 'Max number of {count} file(s) exceeded.'
MAXNUMBEROFFILESONE: 'Can only upload one file'
MAXNUMBEROFFILESSHORT: 'Can only upload {count} files' MAXNUMBEROFFILESSHORT: 'Can only upload {count} files'
OVERWRITEWARNING: 'File with the same name already exists'
REMOVE: Remove REMOVE: Remove
REMOVEERROR: 'Error removing file' REMOVEERROR: 'Error removing file'
REMOVEINFO: 'Remove this file from here, but do not delete it from the file store' REMOVEINFO: 'Remove this file from here, but do not delete it from the file store'
STARTALL: 'Start all' STARTALL: 'Start all'
STARTALLINFO: 'Start all uploads' STARTALLINFO: 'Start all uploads'
Saved: Saved Saved: Saved
UPLOADSINTO: 'saves into /{path}'
Versioned: Versioned:
has_many_Versions: útgáfur has_many_Versions: útgáfur

View File

@ -2,6 +2,7 @@ it:
AssetAdmin: AssetAdmin:
ALLOWEDEXTS: 'Estensioni consentite' ALLOWEDEXTS: 'Estensioni consentite'
NEWFOLDER: NuovaCartella NEWFOLDER: NuovaCartella
SHOWALLOWEDEXTS: 'Show allowed extensions'
AssetTableField: AssetTableField:
CREATED: 'Inizialmente caricato' CREATED: 'Inizialmente caricato'
DIM: Dimensioni DIM: Dimensioni
@ -59,9 +60,9 @@ it:
ERRORNOTADMIN: 'Questo utente non è amministratore.' ERRORNOTADMIN: 'Questo utente non è amministratore.'
ERRORNOTREC: 'Nome utente / password non riconosciuti' ERRORNOTREC: 'Nome utente / password non riconosciuti'
Boolean: Boolean:
0: NO
ANY: Qualsiasi ANY: Qualsiasi
1: SI NOANSWER: 'False'
YESANSWER: 'True'
CMSLoadingScreen.ss: CMSLoadingScreen.ss:
LOADING: 'Caricamento in corso...' LOADING: 'Caricamento in corso...'
REQUIREJS: 'Il CMS richiede JavaScript abilitato.' REQUIREJS: 'Il CMS richiede JavaScript abilitato.'
@ -70,6 +71,8 @@ it:
ACCESSALLINTERFACES: 'Accesso a tutte le sezioni del CMS' ACCESSALLINTERFACES: 'Accesso a tutte le sezioni del CMS'
ACCESSALLINTERFACESHELP: 'Annulla le impostazioni di accesso più specifiche.' ACCESSALLINTERFACESHELP: 'Annulla le impostazioni di accesso più specifiche.'
SAVE: Salva SAVE: Salva
CMSPageHistoryController_versions.ss:
PREVIEW: 'Website preview'
CMSProfileController: CMSProfileController:
MENUTITLE: 'Il mio Profilo' MENUTITLE: 'Il mio Profilo'
ChangePasswordEmail.ss: ChangePasswordEmail.ss:
@ -79,8 +82,8 @@ it:
HELLO: Ciao HELLO: Ciao
PASSWORD: Password PASSWORD: Password
CheckboxField: CheckboxField:
- No NOANSWER: 'False'
- Si YESANSWER: 'True'
ComplexTableField: ComplexTableField:
CLOSEPOPUP: 'Chiudi Finestra' CLOSEPOPUP: 'Chiudi Finestra'
SUCCESSADD2: 'Aggiunto {name}' SUCCESSADD2: 'Aggiunto {name}'
@ -109,20 +112,21 @@ it:
PLURALNAME: 'Data Objects' PLURALNAME: 'Data Objects'
SINGULARNAME: 'Data Object' SINGULARNAME: 'Data Object'
Date: Date:
DAY: giorno DAY: day
DAYS: giorni DAYS: days
HOUR: ora HOUR: hour
HOURS: ore HOURS: hours
LessThanMinuteAgo: 'less than a minute'
MIN: min MIN: min
MINS: min MINS: mins
MONTH: mese MONTH: month
MONTHS: mesi MONTHS: months
SEC: sec SEC: sec
SECS: sec SECS: secs
TIMEDIFFAGO: '{difference} fa' TIMEDIFFAGO: '{difference} fa'
TIMEDIFFIN: 'in {difference}' TIMEDIFFIN: 'in {difference}'
YEAR: anno YEAR: year
YEARS: anni YEARS: years
DateField: DateField:
NOTSET: 'non impostato' NOTSET: 'non impostato'
TODAY: oggi TODAY: oggi
@ -198,7 +202,8 @@ it:
TEXT2: 'Link per l''azzeramento della password' TEXT2: 'Link per l''azzeramento della password'
TEXT3: per TEXT3: per
Form: Form:
FIELDISREQUIRED: '%s è richiesto' CSRF_FAILED_MESSAGE: 'There seems to have been a technical problem. Please click the back button, refresh your browser, and try again.'
FIELDISREQUIRED: '{name} is required'
SubmitBtnLabel: Vai SubmitBtnLabel: Vai
VALIDATIONCREDITNUMBER: 'Assicurati che il numero di carta di credito {number} sia inserito correttamente' VALIDATIONCREDITNUMBER: 'Assicurati che il numero di carta di credito {number} sia inserito correttamente'
VALIDATIONNOTUNIQUE: 'Il valore inserito non è unico' VALIDATIONNOTUNIQUE: 'Il valore inserito non è unico'
@ -208,6 +213,7 @@ it:
VALIDATOR: Valiidatore VALIDATOR: Valiidatore
VALIDCURRENCY: 'Inserisci una valuta valida' VALIDCURRENCY: 'Inserisci una valuta valida'
FormField: FormField:
Example: 'e.g. %s'
NONE: nessuno NONE: nessuno
GridAction: GridAction:
DELETE_DESCRIPTION: Elimina DELETE_DESCRIPTION: Elimina
@ -230,6 +236,7 @@ it:
ResetFilter: Azzera ResetFilter: Azzera
GridFieldAction_Delete: GridFieldAction_Delete:
DeletePermissionsFailure: 'Non hai i permessi per eliminare' DeletePermissionsFailure: 'Non hai i permessi per eliminare'
EditPermissionsFailure: 'No permission to unlink record'
GridFieldDetailForm: GridFieldDetailForm:
CancelBtn: Annulla CancelBtn: Annulla
Create: Crea Create: Crea
@ -237,7 +244,9 @@ it:
DeletePermissionsFailure: 'Non hai i permessi per eliminare' DeletePermissionsFailure: 'Non hai i permessi per eliminare'
Deleted: 'Eliminato %s %s' Deleted: 'Eliminato %s %s'
Save: Salva Save: Salva
Saved: 'Salvato %s %s' Saved: 'Saved {name} {link}'
GridFieldEditButton.ss:
EDIT: Edit
GridFieldItemEditView.ss: null GridFieldItemEditView.ss: null
Group: Group:
AddRole: 'Aggiungi un ruolo per questo gruppo' AddRole: 'Aggiungi un ruolo per questo gruppo'
@ -267,6 +276,7 @@ it:
ADDURL: 'Aggiungi URL' ADDURL: 'Aggiungi URL'
ADJUSTDETAILSDIMENSIONS: 'Dettagli e dimensioni' ADJUSTDETAILSDIMENSIONS: 'Dettagli e dimensioni'
ANCHORVALUE: Ancora ANCHORVALUE: Ancora
BUTTONADDURL: 'Add url'
BUTTONINSERT: Inserisci BUTTONINSERT: Inserisci
BUTTONINSERTLINK: 'Inserisci link' BUTTONINSERTLINK: 'Inserisci link'
BUTTONREMOVELINK: 'Rimuovi link' BUTTONREMOVELINK: 'Rimuovi link'
@ -331,6 +341,9 @@ it:
PreviewButton: Anteprima PreviewButton: Anteprima
REORGANISATIONSUCCESSFUL: 'Albero del sito riorganizzato con successo.' REORGANISATIONSUCCESSFUL: 'Albero del sito riorganizzato con successo.'
SAVEDUP: Salvato. SAVEDUP: Salvato.
ShowAsList: 'show as list'
TooManyPages: 'Too many pages'
ValidationError: 'Validation error'
VersionUnknown: sconosciuto VersionUnknown: sconosciuto
LeftAndMain_Menu.ss: LeftAndMain_Menu.ss:
Hello: Ciao Hello: Ciao
@ -407,6 +420,7 @@ it:
TWODIGITMONTH: 'Mese a due cifre (01=Gennaio, ecc.)' TWODIGITMONTH: 'Mese a due cifre (01=Gennaio, ecc.)'
TWODIGITSECOND: 'Secondi a due cifre (00 a 59)' TWODIGITSECOND: 'Secondi a due cifre (00 a 59)'
TWODIGITYEAR: 'Anno a due cifre' TWODIGITYEAR: 'Anno a due cifre'
Toggle: 'Show formatting help'
MemberImportForm: MemberImportForm:
Help1: '<p>Importa utenti in <em>formato CSV</em> (valori separati da virgole). <small><a href="#" class="toggle-advanced">Mostra utilizzo avanzato</a></small></p>' Help1: '<p>Importa utenti in <em>formato CSV</em> (valori separati da virgole). <small><a href="#" class="toggle-advanced">Mostra utilizzo avanzato</a></small></p>'
Help2: "<div class=\"advanced\">\\n<h4>Utilizzo avanzato</h4>\\n<ul>\\n<li>Colonne consentite: <em>%s</em></li>\\n<li>Utenti esistenti sono individuati attraverso la proprietà univoca <em>Code</em> e aggiornati con i nuovi valori \\ndal file importato.</li>\\n<li>I gruppi possono essere assegnati attraverso la colonna <em>Groups</em>. I gruppi sono identificati attraverso la loro colonna <em>Code</em>, \\npiù gruppi devono essere separati da virgola. L''appartenenza esistente a gruppi non viene cancellata.</li>\\n</ul>\\n</div>" Help2: "<div class=\"advanced\">\\n<h4>Utilizzo avanzato</h4>\\n<ul>\\n<li>Colonne consentite: <em>%s</em></li>\\n<li>Utenti esistenti sono individuati attraverso la proprietà univoca <em>Code</em> e aggiornati con i nuovi valori \\ndal file importato.</li>\\n<li>I gruppi possono essere assegnati attraverso la colonna <em>Groups</em>. I gruppi sono identificati attraverso la loro colonna <em>Code</em>, \\npiù gruppi devono essere separati da virgola. L''appartenenza esistente a gruppi non viene cancellata.</li>\\n</ul>\\n</div>"
@ -421,7 +435,7 @@ it:
ModelAdmin: ModelAdmin:
DELETE: Elimina DELETE: Elimina
DELETEDRECORDS: 'Eliminati {count} record.' DELETEDRECORDS: 'Eliminati {count} record.'
EMPTYBEFOREIMPORT: 'Cancella database prima dell''import' EMPTYBEFOREIMPORT: 'Replace data'
IMPORT: 'Importa da CSV' IMPORT: 'Importa da CSV'
IMPORTEDRECORDS: 'Importati {count} record.' IMPORTEDRECORDS: 'Importati {count} record.'
NOCSVFILE: 'Scegli un file CSV da importare' NOCSVFILE: 'Scegli un file CSV da importare'
@ -515,7 +529,20 @@ it:
BtnImport: 'Importa da CSV' BtnImport: 'Importa da CSV'
FileFieldLabel: 'File CSV <small>(Estensioni consentite: *.csv)</small>' FileFieldLabel: 'File CSV <small>(Estensioni consentite: *.csv)</small>'
SilverStripeNavigator: SilverStripeNavigator:
Auto: Auto
ChangeViewMode: 'Change view mode'
Desktop: Desktop
DualWindowView: 'Dual Window'
Edit: Modifica Edit: Modifica
EditView: 'Edit mode'
Mobile: Mobile
PreviewState: 'Preview State'
PreviewView: 'Preview mode'
Responsive: Responsive
SplitView: 'Split mode'
Tablet: Tablet
ViewDeviceWidth: 'Select a preview width'
Width: width
SimpleImageField: SimpleImageField:
NOUPLOAD: 'Nessuna immagine caricata' NOUPLOAD: 'Nessuna immagine caricata'
SiteTree: SiteTree:
@ -551,6 +578,8 @@ it:
ATTACHFILE: 'Allega un file' ATTACHFILE: 'Allega un file'
ATTACHFILES: 'Allega file' ATTACHFILES: 'Allega file'
AttachFile: 'Allega file' AttachFile: 'Allega file'
CHOOSEANOTHERFILE: 'Choose another file'
CHOOSEANOTHERINFO: 'Replace this file with another one from the file store'
DELETE: Elimina DELETE: Elimina
DELETEINFO: 'Elimina permanentemente questo file dal CMS' DELETEINFO: 'Elimina permanentemente questo file dal CMS'
DOEDIT: Salva DOEDIT: Salva
@ -565,12 +594,15 @@ it:
FROMFILES: 'Dal CMS' FROMFILES: 'Dal CMS'
HOTLINKINFO: 'Info: Questa immagine sarà collegata. Assicurati di avere il permesso di farlo.' HOTLINKINFO: 'Info: Questa immagine sarà collegata. Assicurati di avere il permesso di farlo.'
MAXNUMBEROFFILES: 'Numero massimo di {count} file ecceduto.' MAXNUMBEROFFILES: 'Numero massimo di {count} file ecceduto.'
MAXNUMBEROFFILESONE: 'Can only upload one file'
MAXNUMBEROFFILESSHORT: 'Puoi caricare solo {count} file' MAXNUMBEROFFILESSHORT: 'Puoi caricare solo {count} file'
OVERWRITEWARNING: 'File with the same name already exists'
REMOVE: Rimuovi REMOVE: Rimuovi
REMOVEERROR: 'Errore eliminando il file' REMOVEERROR: 'Errore eliminando il file'
REMOVEINFO: 'Rimuove il file da qui, ma non lo elimina dal CMS' REMOVEINFO: 'Rimuove il file da qui, ma non lo elimina dal CMS'
STARTALL: 'Avvia tutti' STARTALL: 'Avvia tutti'
STARTALLINFO: 'Avvia tutti i caricamenti' STARTALLINFO: 'Avvia tutti i caricamenti'
Saved: Salvato Saved: Salvato
UPLOADSINTO: 'saves into /{path}'
Versioned: Versioned:
has_many_Versions: Versioni has_many_Versions: Versioni

View File

@ -2,13 +2,14 @@ ja_JP:
AssetAdmin: AssetAdmin:
ALLOWEDEXTS: 'Allowed extensions' ALLOWEDEXTS: 'Allowed extensions'
NEWFOLDER: 新しいフォルダ NEWFOLDER: 新しいフォルダ
SHOWALLOWEDEXTS: 'Show allowed extensions'
AssetTableField: AssetTableField:
CREATED: 初回アップロード日時 CREATED: 初回アップロード日時
DIM: Dimensions DIM: Dimensions
FILENAME: ファイル名 FILENAME: ファイル名
FOLDER: フォルダ FOLDER: フォルダ
LASTEDIT: 最終更新日 LASTEDIT: 最終更新日
OWNER: 所有者 OWNER: '所有者'
SIZE: ファイルサイズ SIZE: ファイルサイズ
TITLE: タイトル TITLE: タイトル
TYPE: ファイルの種類 TYPE: ファイルの種類
@ -16,7 +17,7 @@ ja_JP:
AssetUploadField: AssetUploadField:
ChooseFiles: ファイルを選択 ChooseFiles: ファイルを選択
DRAGFILESHERE: ここにファイルをドラッグ DRAGFILESHERE: ここにファイルをドラッグ
DROPAREA: ドロップ領域 DROPAREA: 'ドロップ領域'
EDITALL: すべて編集 EDITALL: すべて編集
EDITANDORGANIZE: 編集と管理 EDITANDORGANIZE: 編集と管理
EDITINFO: ファイルを編集 EDITINFO: ファイルを編集
@ -25,7 +26,7 @@ ja_JP:
FROMCOMPUTERINFO: コンピュータからアップロード FROMCOMPUTERINFO: コンピュータからアップロード
TOTAL: 合計 TOTAL: 合計
TOUPLOAD: 'Choose files to upload...' TOUPLOAD: 'Choose files to upload...'
UPLOADINPROGRESS: しばらくお待ちください...アップロードは進行中です UPLOADINPROGRESS: 'しばらくお待ちください...アップロードは進行中です'
UPLOADOR: もしくは UPLOADOR: もしくは
BBCodeParser: BBCodeParser:
ALIGNEMENT: 整列 ALIGNEMENT: 整列
@ -44,7 +45,7 @@ ja_JP:
ITALIC: テキストを斜体にする ITALIC: テキストを斜体にする
ITALICEXAMPLE: 斜体 ITALICEXAMPLE: 斜体
LINK: ウェブサイトのリンク LINK: ウェブサイトのリンク
LINKDESCRIPTION: 別のウェブサイトかURLにリンクしてください LINKDESCRIPTION: '別のウェブサイトかURLにリンクしてください'
STRUCK: テキストに取り消し線を引く STRUCK: テキストに取り消し線を引く
STRUCKEXAMPLE: 取り消し線 STRUCKEXAMPLE: 取り消し線
UNDERLINE: テキストに下線を引く UNDERLINE: テキストに下線を引く
@ -55,21 +56,23 @@ ja_JP:
BackLink_Button.ss: BackLink_Button.ss:
Back: 戻る Back: 戻る
BasicAuth: BasicAuth:
ENTERINFO: ユーザー名とパスワードを入力してください ENTERINFO: 'ユーザー名とパスワードを入力してください'
ERRORNOTADMIN: このユーザーは管理者(アドミニストレーター)ではありません ERRORNOTADMIN: 'このユーザーは管理者(アドミニストレーター)ではありません'
ERRORNOTREC: 'ユーザー名 / パスワードは認識されませんでした' ERRORNOTREC: 'ユーザー名 / パスワードは認識されませんでした'
Boolean: Boolean:
0:
ANY: 何でも ANY: 何でも
1: NOANSWER: 'False'
YESANSWER: 'True'
CMSLoadingScreen.ss: CMSLoadingScreen.ss:
LOADING: 読み込み中... LOADING: 読み込み中...
REQUIREJS: CMSを利用するにはJavascriptが有効化されている必要があります。 REQUIREJS: 'CMSを利用するにはJavascriptが有効化されている必要があります。'
CMSMain: CMSMain:
ACCESS: 'Access to ''{title}'' section' ACCESS: 'Access to ''{title}'' section'
ACCESSALLINTERFACES: すべてのCMSのセクションへアクセス ACCESSALLINTERFACES: すべてのCMSのセクションへアクセス
ACCESSALLINTERFACESHELP: 'Overrules more specific access settings.' ACCESSALLINTERFACESHELP: 'Overrules more specific access settings.'
SAVE: 保存 SAVE: 保存
CMSPageHistoryController_versions.ss:
PREVIEW: 'Website preview'
CMSProfileController: CMSProfileController:
MENUTITLE: 'My Profile' MENUTITLE: 'My Profile'
ChangePasswordEmail.ss: ChangePasswordEmail.ss:
@ -79,17 +82,17 @@ ja_JP:
HELLO: こんにちわ! HELLO: こんにちわ!
PASSWORD: パスワード PASSWORD: パスワード
CheckboxField: CheckboxField:
- いいえ NOANSWER: 'False'
- はい YESANSWER: 'True'
ComplexTableField: ComplexTableField:
CLOSEPOPUP: ポップアップを閉じる CLOSEPOPUP: ポップアップを閉じる
SUCCESSADD2: '{name}を追加しました' SUCCESSADD2: '{name}を追加しました'
SUCCESSEDIT: '更新日時 %s %s %s' SUCCESSEDIT: '更新日時 %s %s %s'
ComplexTableField.ss: ComplexTableField.ss:
ADDITEM: '%sを追加する' ADDITEM: '%sを追加する'
NOITEMSFOUND: 項目が見つかりませんでした NOITEMSFOUND: '項目が見つかりませんでした'
SORTASC: 昇順 SORTASC: '昇順'
SORTDESC: ソート(下順) SORTDESC: 'ソート(下順)'
ComplexTableField_popup.ss: ComplexTableField_popup.ss:
NEXT: 次へ NEXT: 次へ
PREVIOUS: 前へ PREVIOUS: 前へ
@ -109,20 +112,21 @@ ja_JP:
PLURALNAME: データオブジェクト PLURALNAME: データオブジェクト
SINGULARNAME: データオブジェクト SINGULARNAME: データオブジェクト
Date: Date:
DAY: ' 日' DAY: day
DAYS: DAYS: days
HOUR: HOUR: hour
HOURS: HOURS: hours
MIN: LessThanMinuteAgo: 'less than a minute'
MINS: MIN: min
MONTH: ' 月' MINS: mins
MONTHS: ' 月' MONTH: month
SEC: MONTHS: months
SECS: SEC: sec
SECS: secs
TIMEDIFFAGO: '{difference}前' TIMEDIFFAGO: '{difference}前'
TIMEDIFFIN: '{difference}以内' TIMEDIFFIN: '{difference}以内'
YEAR: YEAR: year
YEARS: YEARS: years
DateField: DateField:
NOTSET: セットされていません NOTSET: セットされていません
TODAY: 今日 TODAY: 今日
@ -136,7 +140,7 @@ ja_JP:
DropdownField: DropdownField:
CHOOSE: (選択) CHOOSE: (選択)
EmailField: EmailField:
VALIDATION: メールアドレスを入力してください VALIDATION: 'メールアドレスを入力してください'
Email_BounceRecord: Email_BounceRecord:
PLURALNAME: 'Eメール 反応記録' PLURALNAME: 'Eメール 反応記録'
SINGULARNAME: 'Eメール 反応記録' SINGULARNAME: 'Eメール 反応記録'
@ -144,7 +148,7 @@ ja_JP:
ANY: 何でも ANY: 何でも
File: File:
AviType: 'AVI video file' AviType: 'AVI video file'
Content: 内容 Content: '内容'
CssType: 'CSS file' CssType: 'CSS file'
DmgType: 'Apple disk image' DmgType: 'Apple disk image'
DocType: 'Word document' DocType: 'Word document'
@ -198,16 +202,18 @@ ja_JP:
TEXT2: パスワードリセットのリンク TEXT2: パスワードリセットのリンク
TEXT3: TEXT3:
Form: Form:
FIELDISREQUIRED: '%s が必要です' CSRF_FAILED_MESSAGE: 'There seems to have been a technical problem. Please click the back button, refresh your browser, and try again.'
FIELDISREQUIRED: '{name} is required'
SubmitBtnLabel: Go SubmitBtnLabel: Go
VALIDATIONCREDITNUMBER: 'Please ensure you have entered the {number} credit card number correctly' VALIDATIONCREDITNUMBER: 'Please ensure you have entered the {number} credit card number correctly'
VALIDATIONNOTUNIQUE: 入力された値はユニークではありません VALIDATIONNOTUNIQUE: '入力された値はユニークではありません'
VALIDATIONPASSWORDSDONTMATCH: パスワードが一致しません VALIDATIONPASSWORDSDONTMATCH: パスワードが一致しません
VALIDATIONPASSWORDSNOTEMPTY: パスワードが空欄です VALIDATIONPASSWORDSNOTEMPTY: パスワードが空欄です
VALIDATIONSTRONGPASSWORD: 'Passwords must have at least one digit and one alphanumeric character' VALIDATIONSTRONGPASSWORD: 'Passwords must have at least one digit and one alphanumeric character'
VALIDATOR: 検証 VALIDATOR: 検証
VALIDCURRENCY: 'Please enter a valid currency' VALIDCURRENCY: 'Please enter a valid currency'
FormField: FormField:
Example: 'e.g. %s'
NONE: 何もありません NONE: 何もありません
GridAction: GridAction:
DELETE_DESCRIPTION: Delete DELETE_DESCRIPTION: Delete
@ -221,7 +227,7 @@ ja_JP:
LEVELUP: 'Level up' LEVELUP: 'Level up'
LinkExisting: 'Link Existing' LinkExisting: 'Link Existing'
NewRecord: 新しい%s NewRecord: 新しい%s
NoItemsFound: 項目が見つかりませんでした NoItemsFound: '項目が見つかりませんでした'
PRINTEDAT: 'Printed at' PRINTEDAT: 'Printed at'
PRINTEDBY: 'Printed by' PRINTEDBY: 'Printed by'
PlaceHolder: '{type}を探す' PlaceHolder: '{type}を探す'
@ -230,6 +236,7 @@ ja_JP:
ResetFilter: リセット ResetFilter: リセット
GridFieldAction_Delete: GridFieldAction_Delete:
DeletePermissionsFailure: 削除権限がありません DeletePermissionsFailure: 削除権限がありません
EditPermissionsFailure: 'No permission to unlink record'
GridFieldDetailForm: GridFieldDetailForm:
CancelBtn: Cancel CancelBtn: Cancel
Create: 作成 Create: 作成
@ -237,22 +244,24 @@ ja_JP:
DeletePermissionsFailure: 削除権限がありません DeletePermissionsFailure: 削除権限がありません
Deleted: '削除済み %s %s' Deleted: '削除済み %s %s'
Save: 保存 Save: 保存
Saved: '保存済み %s %s' Saved: 'Saved {name} {link}'
GridFieldEditButton.ss:
EDIT: Edit
GridFieldItemEditView.ss: null GridFieldItemEditView.ss: null
Group: Group:
AddRole: このグループに役割を追加する AddRole: 'このグループに役割を追加する'
Code: グループコード Code: グループコード
DefaultGroupTitleAdministrators: 管理者 DefaultGroupTitleAdministrators: '管理者'
DefaultGroupTitleContentAuthors: コンテンツの著者 DefaultGroupTitleContentAuthors: 'コンテンツの著者'
Description: 説明文 Description: 説明文
GroupReminder: 元グループを選択された場合、このグループはその役割をすべて受け継ぎます。 GroupReminder: '元グループを選択された場合、このグループはその役割をすべて受け継ぎます。'
Locked: ロックしますか? Locked: ロックしますか?
NoRoles: 役割が見つかりませんでした NoRoles: 役割が見つかりませんでした
PLURALNAME: Groups PLURALNAME: Groups
Parent: 元グループ Parent: '元グループ'
RolesAddEditLink: 役割の管理 RolesAddEditLink: 役割の管理
SINGULARNAME: Group SINGULARNAME: Group
Sort: 並び順 Sort: '並び順'
has_many_Permissions: 承認 has_many_Permissions: 承認
many_many_Members: メンバー many_many_Members: メンバー
GroupImportForm: GroupImportForm:
@ -264,19 +273,20 @@ ja_JP:
Hierarchy: Hierarchy:
InfiniteLoopNotAllowed: 'Infinite loop found within the "{type}" hierarchy. Please change the parent to resolve this' InfiniteLoopNotAllowed: 'Infinite loop found within the "{type}" hierarchy. Please change the parent to resolve this'
HtmlEditorField: HtmlEditorField:
ADDURL: URLを追加 ADDURL: 'URLを追加'
ADJUSTDETAILSDIMENSIONS: 'Details &amp; dimensions' ADJUSTDETAILSDIMENSIONS: 'Details &amp; dimensions'
ANCHORVALUE: アンカー ANCHORVALUE: アンカー
BUTTONINSERT: 追加 BUTTONADDURL: 'Add url'
BUTTONINSERTLINK: リンクを追加 BUTTONINSERT: '追加'
BUTTONINSERTLINK: 'リンクを追加'
BUTTONREMOVELINK: リンクを削除 BUTTONREMOVELINK: リンクを削除
BUTTONUpdate: 更新 BUTTONUpdate: 更新
CAPTIONTEXT: タイトル CAPTIONTEXT: タイトル
CSSCLASS: '調整 / スタイル' CSSCLASS: '調整 / スタイル'
CSSCLASSCENTER: 中央はテキストのみ CSSCLASSCENTER: 中央はテキストのみ
CSSCLASSLEFT: 左側にテキストと一緒に処理してください CSSCLASSLEFT: '左側にテキストと一緒に処理してください'
CSSCLASSLEFTALONE: 中央はテキストのみ CSSCLASSLEFTALONE: 中央はテキストのみ
CSSCLASSRIGHT: 右側にテキストと一緒に処理してください CSSCLASSRIGHT: '右側にテキストと一緒に処理してください'
DETAILS: 詳細 DETAILS: 詳細
EMAIL: メールアドレス EMAIL: メールアドレス
FILE: ファイル FILE: ファイル
@ -284,18 +294,18 @@ ja_JP:
FROMCMS: CMSから FROMCMS: CMSから
FROMCOMPUTER: コンピュータから FROMCOMPUTER: コンピュータから
FROMWEB: Webから FROMWEB: Webから
FindInFolder: フォルダ内を探す FindInFolder: 'フォルダ内を探す'
IMAGEALT: 代替テキスト(Alt) IMAGEALT: 代替テキスト(Alt)
IMAGEALTTEXT: '代替(Alt)テキスト - 画像が表示されなかった場合に表示されます' IMAGEALTTEXT: '代替(Alt)テキスト - 画像が表示されなかった場合に表示されます'
IMAGEALTTEXTDESC: スクリーンリーダー利用者やイメージが表示されなかった場合に表示されます IMAGEALTTEXTDESC: 'スクリーンリーダー利用者やイメージが表示されなかった場合に表示されます'
IMAGEDIMENSIONS: サイズ IMAGEDIMENSIONS: サイズ
IMAGEHEIGHTPX: Height IMAGEHEIGHTPX: Height
IMAGETITLE: 'タイトル(ツールチップ)テキスト - 画像に対する追加的情報' IMAGETITLE: 'タイトル(ツールチップ)テキスト - 画像に対する追加的情報'
IMAGETITLETEXT: タイトルテキスト(ツールチップ) IMAGETITLETEXT: タイトルテキスト(ツールチップ)
IMAGETITLETEXTDESC: 画像に関する追加情報 IMAGETITLETEXTDESC: '画像に関する追加情報'
IMAGEWIDTHPX: Width IMAGEWIDTHPX: Width
INSERTMEDIA: メディアを追加 INSERTMEDIA: 'メディアを追加'
LINK: ハイライトテキストへのリンクの挿入/削除 LINK: 'ハイライトテキストへのリンクの挿入/削除'
LINKANCHOR: このページにアンカーを置く LINKANCHOR: このページにアンカーを置く
LINKDESCR: リンクの説明 LINKDESCR: リンクの説明
LINKEMAIL: メールアドレス LINKEMAIL: メールアドレス
@ -324,13 +334,16 @@ ja_JP:
DropdownBatchActionsDefault: アクション DropdownBatchActionsDefault: アクション
HELP: ヘルプ HELP: ヘルプ
PAGETYPE: 'ページの種類:' PAGETYPE: 'ページの種類:'
PERMAGAIN: ログアウトしました。再度ログインする場合は下にユーザー名とパスワードを入力してください。 PERMAGAIN: 'ログアウトしました。再度ログインする場合は下にユーザー名とパスワードを入力してください。'
PERMALREADY: 申し訳ございません。ご指定になられたCMSの箇所にはアクセスいただけません。別ユーザーとしてログインをされたい場合は、下記より行えます。 PERMALREADY: '申し訳ございません。ご指定になられたCMSの箇所にはアクセスいただけません。別ユーザーとしてログインをされたい場合は、下記より行えます。'
PERMDEFAULT: 認証方法を選択し、CMSにアクセスするために利用する認証情報を入力してください。 PERMDEFAULT: '認証方法を選択し、CMSにアクセスするために利用する認証情報を入力してください。'
PLEASESAVE: '保存してください: 保存してないため更新できません。' PLEASESAVE: '保存してください: 保存してないため更新できません。'
PreviewButton: プレビュー PreviewButton: プレビュー
REORGANISATIONSUCCESSFUL: サイトツリーの再編集に成功しました。 REORGANISATIONSUCCESSFUL: サイトツリーの再編集に成功しました。
SAVEDUP: 保存済み SAVEDUP: 保存済み
ShowAsList: 'show as list'
TooManyPages: 'Too many pages'
ValidationError: 'Validation error'
VersionUnknown: 不明 VersionUnknown: 不明
LeftAndMain_Menu.ss: LeftAndMain_Menu.ss:
Hello: こんにちは! Hello: こんにちは!
@ -342,7 +355,7 @@ ja_JP:
SINGULARNAME: 'Login Attempt' SINGULARNAME: 'Login Attempt'
Status: ステータス Status: ステータス
Member: Member:
ADDGROUP: グループを追加 ADDGROUP: 'グループを追加'
BUTTONCHANGEPASSWORD: パスワードの変更 BUTTONCHANGEPASSWORD: パスワードの変更
BUTTONLOGIN: ログイン BUTTONLOGIN: ログイン
BUTTONLOGINOTHER: 他の誰かとしてログイン BUTTONLOGINOTHER: 他の誰かとしてログイン
@ -351,15 +364,15 @@ ja_JP:
CONFIRMNEWPASSWORD: 新しいパスワードを確認します CONFIRMNEWPASSWORD: 新しいパスワードを確認します
CONFIRMPASSWORD: パスワード(確認のためもう一度) CONFIRMPASSWORD: パスワード(確認のためもう一度)
DATEFORMAT: 'Date format' DATEFORMAT: 'Date format'
DefaultAdminFirstname: 初期管理者 DefaultAdminFirstname: '初期管理者'
DefaultDateTime: 初期設定 DefaultDateTime: 初期設定
EMAIL: メールアドレス EMAIL: メールアドレス
EMPTYNEWPASSWORD: パスワードが空です。もう一度入力して下さい。 EMPTYNEWPASSWORD: 'パスワードが空です。もう一度入力して下さい。'
ENTEREMAIL: パスワードをリセットするためにメールアドレスを入力してください。 ENTEREMAIL: 'パスワードをリセットするためにメールアドレスを入力してください。'
ERRORLOCKEDOUT: あなたのアカウントは何度もログインに失敗したため一時的に利用できなくなっています。20分後に試してください。 ERRORLOCKEDOUT: 'あなたのアカウントは何度もログインに失敗したため一時的に利用できなくなっています。20分後に試してください。'
ERRORNEWPASSWORD: 入力されたパスワードが一致しません。再度お試しください ERRORNEWPASSWORD: '入力されたパスワードが一致しません。再度お試しください'
ERRORPASSWORDNOTMATCH: 登録されているパスワードと一致しません、もう一度入力し直してください ERRORPASSWORDNOTMATCH: '登録されているパスワードと一致しません、もう一度入力し直してください'
ERRORWRONGCRED: メールアドレスまたはパスワードが正しくありません、もう一度入力し直してください ERRORWRONGCRED: 'メールアドレスまたはパスワードが正しくありません、もう一度入力し直してください'
FIRSTNAME: FIRSTNAME:
INTERFACELANG: 画面言語 INTERFACELANG: 画面言語
INVALIDNEWPASSWORD: '次のパスワードは受け付けることができません: {password}' INVALIDNEWPASSWORD: '次のパスワードは受け付けることができません: {password}'
@ -373,7 +386,7 @@ ja_JP:
SUBJECTPASSWORDRESET: パスワード再発行 SUBJECTPASSWORDRESET: パスワード再発行
SURNAME: SURNAME:
TIMEFORMAT: 'Time format' TIMEFORMAT: 'Time format'
VALIDATIONMEMBEREXISTS: 入力したメールアドレス(%sは、他のメンバーにすでに使用されています。 VALIDATIONMEMBEREXISTS: '入力したメールアドレス(%sは、他のメンバーにすでに使用されています。'
ValidationIdentifierFailed: 'Can''t overwrite existing member #{id} with identical identifier ({name} = {value}))' ValidationIdentifierFailed: 'Can''t overwrite existing member #{id} with identical identifier ({name} = {value}))'
WELCOMEBACK: '{firstname}さん、おかえりなさい' WELCOMEBACK: '{firstname}さん、おかえりなさい'
YOUROLDPASSWORD: 古いパスワード YOUROLDPASSWORD: 古いパスワード
@ -381,7 +394,7 @@ ja_JP:
db_LastVisited: 最終訪問日 db_LastVisited: 最終訪問日
db_Locale: インターフェースの言語地域 db_Locale: インターフェースの言語地域
db_LockedOutUntil: DBロックがされています。 db_LockedOutUntil: DBロックがされています。
db_NumVisit: 訪問者数 db_NumVisit: '訪問者数'
db_Password: パスワード db_Password: パスワード
db_PasswordExpiry: パスワードの有効期限 db_PasswordExpiry: パスワードの有効期限
MemberAuthenticator: MemberAuthenticator:
@ -407,6 +420,7 @@ ja_JP:
TWODIGITMONTH: 'Two-digit month (01=January, etc.)' TWODIGITMONTH: 'Two-digit month (01=January, etc.)'
TWODIGITSECOND: 'Two digits of second (00 through 59)' TWODIGITSECOND: 'Two digits of second (00 through 59)'
TWODIGITYEAR: 'Two-digit year' TWODIGITYEAR: 'Two-digit year'
Toggle: 'Show formatting help'
MemberImportForm: MemberImportForm:
Help1: '<p><em>CSVフォーマット</em>(コンマ区切り)でユーザーを取り込みます。 <small><a href="#" class="toggle-advanced">高度な利用方法を表示</a></small></p>' Help1: '<p><em>CSVフォーマット</em>(コンマ区切り)でユーザーを取り込みます。 <small><a href="#" class="toggle-advanced">高度な利用方法を表示</a></small></p>'
Help2: '<div class="advanced"> <h4>Advanced usage</h4> <ul> <li>Allowed columns: <em>%s</em></li> <li>Existing users are matched by their unique <em>Code</em> property, and updated with any new values from the imported file.</li> <li>Groups can be assigned by the <em>Groups</em> column. Groups are identified by their <em>Code</em> property, multiple groups can be separated by comma. Existing group memberships are not cleared.</li> </ul></div>' Help2: '<div class="advanced"> <h4>Advanced usage</h4> <ul> <li>Allowed columns: <em>%s</em></li> <li>Existing users are matched by their unique <em>Code</em> property, and updated with any new values from the imported file.</li> <li>Groups can be assigned by the <em>Groups</em> column. Groups are identified by their <em>Code</em> property, multiple groups can be separated by comma. Existing group memberships are not cleared.</li> </ul></div>'
@ -421,16 +435,16 @@ ja_JP:
ModelAdmin: ModelAdmin:
DELETE: 削除 DELETE: 削除
DELETEDRECORDS: '{count}レコードを削除しました。' DELETEDRECORDS: '{count}レコードを削除しました。'
EMPTYBEFOREIMPORT: 'Clear Database before import' EMPTYBEFOREIMPORT: 'Replace data'
IMPORT: CSVからインポート IMPORT: CSVからインポート
IMPORTEDRECORDS: '{count}レコードを取り込みました。' IMPORTEDRECORDS: '{count}レコードを取り込みました。'
NOCSVFILE: インポートするためのCSVファイルを参照してください NOCSVFILE: 'インポートするためのCSVファイルを参照してください'
NOIMPORT: インポートするものがありません。 NOIMPORT: インポートするものがありません。
RESET: リセット RESET: リセット
Title: 'Data Models' Title: 'Data Models'
UPDATEDRECORDS: '{count}レコードを更新しました。' UPDATEDRECORDS: '{count}レコードを更新しました。'
ModelAdmin_ImportSpec.ss: ModelAdmin_ImportSpec.ss:
IMPORTSPECFIELDS: データベースカラム IMPORTSPECFIELDS: 'データベースカラム'
IMPORTSPECLINK: 'Show Specification for %s' IMPORTSPECLINK: 'Show Specification for %s'
IMPORTSPECRELATIONS: 関連 IMPORTSPECRELATIONS: 関連
IMPORTSPECTITLE: 'Specification for %s' IMPORTSPECTITLE: 'Specification for %s'
@ -451,9 +465,9 @@ ja_JP:
Page: Page Page: Page
View: View View: View
Permission: Permission:
AdminGroup: 管理者 AdminGroup: '管理者'
CMS_ACCESS_CATEGORY: 'CMS Access' CMS_ACCESS_CATEGORY: 'CMS Access'
FULLADMINRIGHTS: 完全な管理権 FULLADMINRIGHTS: '完全な管理権'
FULLADMINRIGHTS_HELP: 'Implies and overrules all other assigned permissions.' FULLADMINRIGHTS_HELP: 'Implies and overrules all other assigned permissions.'
PLURALNAME: Permissions PLURALNAME: Permissions
SINGULARNAME: Permission SINGULARNAME: Permission
@ -474,27 +488,27 @@ ja_JP:
PERMISSIONS_CATEGORY: 役割とアクセス権限 PERMISSIONS_CATEGORY: 役割とアクセス権限
UserPermissionsIntro: 'Assigning groups to this user will adjust the permissions they have. See the groups section for details of permissions on individual groups.' UserPermissionsIntro: 'Assigning groups to this user will adjust the permissions they have. See the groups section for details of permissions on individual groups.'
PhoneNumberField: PhoneNumberField:
VALIDATION: 電話番号を入力してください VALIDATION: '電話番号を入力してください'
RelationComplexTableField.ss: RelationComplexTableField.ss:
ADD: 追加 ADD: '追加'
CSVEXPORT: CSVへ書き出し CSVEXPORT: CSVへ書き出し
NOTFOUND: 項目が見つかりませんでした NOTFOUND: '項目が見つかりませんでした'
Security: Security:
ALREADYLOGGEDIN: 'あなたはこのページにアクセスできません。別のアカウントを持っていたら <a href="%s">再ログイン</a>を行ってください。' ALREADYLOGGEDIN: 'あなたはこのページにアクセスできません。別のアカウントを持っていたら <a href="%s">再ログイン</a>を行ってください。'
BUTTONSEND: パスワードリセットのリンクを送信してください BUTTONSEND: 'パスワードリセットのリンクを送信してください'
CHANGEPASSWORDBELOW: 以下のパスワードを変更できます CHANGEPASSWORDBELOW: 以下のパスワードを変更できます
CHANGEPASSWORDHEADER: パスワードを変更しました CHANGEPASSWORDHEADER: パスワードを変更しました
ENTERNEWPASSWORD: 新しいパスワードを入力してください ENTERNEWPASSWORD: '新しいパスワードを入力してください'
ERRORPASSWORDPERMISSION: パスワードを変更する為に、ログインしなければなりません! ERRORPASSWORDPERMISSION: パスワードを変更する為に、ログインしなければなりません!
LOGGEDOUT: ログアウトしました。再度ログインする場合は証明書キーを入力してください LOGGEDOUT: 'ログアウトしました。再度ログインする場合は証明書キーを入力してください'
LOGIN: ログイン LOGIN: ログイン
NOTEPAGESECURED: このページはセキュリティで保護されております証明書キーを下記に入力してください。こちらからすぐに送信します NOTEPAGESECURED: 'このページはセキュリティで保護されております証明書キーを下記に入力してください。こちらからすぐに送信します'
NOTERESETLINKINVALID: '<p>The password reset link is invalid or expired.</p><p>You can request a new one <a href="{link1}">here</a> or change your password after you <a href="{link2}">logged in</a>.</p>' NOTERESETLINKINVALID: '<p>The password reset link is invalid or expired.</p><p>You can request a new one <a href="{link1}">here</a> or change your password after you <a href="{link2}">logged in</a>.</p>'
NOTERESETPASSWORD: メールアドレスを入力してください、パスワードをリセットするURLを送信致します NOTERESETPASSWORD: 'メールアドレスを入力してください、パスワードをリセットするURLを送信致します'
PASSWORDSENTHEADER: 'Password reset link sent to ''{email}''' PASSWORDSENTHEADER: 'Password reset link sent to ''{email}'''
PASSWORDSENTTEXT: 'Thank you! A reset link has been sent to ''{email}'', provided an account exists for this email address.' PASSWORDSENTTEXT: 'Thank you! A reset link has been sent to ''{email}'', provided an account exists for this email address.'
SecurityAdmin: SecurityAdmin:
ACCESS_HELP: ユーザを閲覧、追加、編集すること、及び、そのユーザに対して権限や役割を割り当てることを許可 ACCESS_HELP: 'ユーザを閲覧、追加、編集すること、及び、そのユーザに対して権限や役割を割り当てることを許可'
APPLY_ROLES: 役割をグループへ適用 APPLY_ROLES: 役割をグループへ適用
APPLY_ROLES_HELP: 'Ability to edit the roles assigned to a group. Requires the "Access to ''Users'' section" permission.' APPLY_ROLES_HELP: 'Ability to edit the roles assigned to a group. Requires the "Access to ''Users'' section" permission.'
EDITPERMISSIONS: グループの権限を編集 EDITPERMISSIONS: グループの権限を編集
@ -515,7 +529,20 @@ ja_JP:
BtnImport: CSVから取り込み BtnImport: CSVから取り込み
FileFieldLabel: 'CSVファイル <small>(利用可能な拡張子: *.csv)</small>' FileFieldLabel: 'CSVファイル <small>(利用可能な拡張子: *.csv)</small>'
SilverStripeNavigator: SilverStripeNavigator:
Auto: Auto
ChangeViewMode: 'Change view mode'
Desktop: Desktop
DualWindowView: 'Dual Window'
Edit: 編集 Edit: 編集
EditView: 'Edit mode'
Mobile: Mobile
PreviewState: 'Preview State'
PreviewView: 'Preview mode'
Responsive: Responsive
SplitView: 'Split mode'
Tablet: Tablet
ViewDeviceWidth: 'Select a preview width'
Width: width
SimpleImageField: SimpleImageField:
NOUPLOAD: 何も画像がアップロードされていません NOUPLOAD: 何も画像がアップロードされていません
SiteTree: SiteTree:
@ -523,7 +550,7 @@ ja_JP:
TableField: TableField:
ISREQUIRED: 'In %s ''%s'' is required' ISREQUIRED: 'In %s ''%s'' is required'
TableField.ss: TableField.ss:
ADD: 新しい行を追加 ADD: '新しい行を追加'
ADDITEM: '%sを追加' ADDITEM: '%sを追加'
TableListField: TableListField:
CSVEXPORT: CSVにエクスポート CSVEXPORT: CSVにエクスポート
@ -531,9 +558,9 @@ ja_JP:
Print: Print Print: Print
SELECT: 選択: SELECT: 選択:
TableListField.ss: TableListField.ss:
NOITEMSFOUND: 項目が見つかりませんでした NOITEMSFOUND: '項目が見つかりませんでした'
SORTASC: 昇順で並べ替え SORTASC: '昇順で並べ替え'
SORTDESC: 降順で並べ替え SORTDESC: '降順で並べ替え'
TableListField_PageControls.ss: TableListField_PageControls.ss:
DISPLAYING: Displaying DISPLAYING: Displaying
OF: of OF: of
@ -546,31 +573,36 @@ ja_JP:
VALIDATEFORMAT: '正しい時間フォーマット{{format}}を入力してください' VALIDATEFORMAT: '正しい時間フォーマット{{format}}を入力してください'
ToggleField: ToggleField:
LESS: 減少 LESS: 減少
MORE: 増加 MORE: '増加'
UploadField: UploadField:
ATTACHFILE: ファイルを添付 ATTACHFILE: ファイルを添付
ATTACHFILES: ファイルを添付 ATTACHFILES: ファイルを添付
AttachFile: ファイルを添付 AttachFile: ファイルを添付
CHOOSEANOTHERFILE: 'Choose another file'
CHOOSEANOTHERINFO: 'Replace this file with another one from the file store'
DELETE: 'Delete from files' DELETE: 'Delete from files'
DELETEINFO: ファイルストレージから永久にこのファイルは削除されました DELETEINFO: 'ファイルストレージから永久にこのファイルは削除されました'
DOEDIT: 保存 DOEDIT: 保存
DROPFILE: ファイルをドロップ DROPFILE: ファイルをドロップ
DROPFILES: ファイルをドロップ DROPFILES: ファイルをドロップ
Dimensions: Dimensions Dimensions: Dimensions
EDIT: 編集 EDIT: 編集
EDITINFO: このファイルを編集 EDITINFO: このファイルを編集
FIELDNOTSET: ファイル情報が見つかりませんでした FIELDNOTSET: 'ファイル情報が見つかりませんでした'
FROMCOMPUTER: コンピュータから FROMCOMPUTER: コンピュータから
FROMCOMPUTERINFO: ファイルから選択 FROMCOMPUTERINFO: ファイルから選択
FROMFILES: ファイルから FROMFILES: ファイルから
HOTLINKINFO: 'Info: This image will be hotlinked. Please ensure you have permissions from the original site creator to do so.' HOTLINKINFO: 'Info: This image will be hotlinked. Please ensure you have permissions from the original site creator to do so.'
MAXNUMBEROFFILES: '最大数の{count}ファイルを超えました。' MAXNUMBEROFFILES: '最大数の{count}ファイルを超えました。'
MAXNUMBEROFFILESONE: 'Can only upload one file'
MAXNUMBEROFFILESSHORT: '{count}ファイルしかアップロードすることができません' MAXNUMBEROFFILESSHORT: '{count}ファイルしかアップロードすることができません'
OVERWRITEWARNING: 'File with the same name already exists'
REMOVE: 削除 REMOVE: 削除
REMOVEERROR: ファイルの削除におけるエラー REMOVEERROR: ファイルの削除におけるエラー
REMOVEINFO: ここからこのファイルを削除。ただし、ファイルのストレージからこのファイルの削除はしない。 REMOVEINFO: 'ここからこのファイルを削除。ただし、ファイルのストレージからこのファイルの削除はしない。'
STARTALL: すべて開始 STARTALL: すべて開始
STARTALLINFO: すべてのアップロードを開始 STARTALLINFO: すべてのアップロードを開始
Saved: 保存しました Saved: 保存しました
UPLOADSINTO: 'saves into /{path}'
Versioned: Versioned:
has_many_Versions: バージョン has_many_Versions: バージョン

View File

@ -2,6 +2,7 @@ km:
AssetAdmin: AssetAdmin:
ALLOWEDEXTS: 'Allowed extensions' ALLOWEDEXTS: 'Allowed extensions'
NEWFOLDER: NewFolder NEWFOLDER: NewFolder
SHOWALLOWEDEXTS: 'Show allowed extensions'
AssetTableField: AssetTableField:
CREATED: 'First uploaded' CREATED: 'First uploaded'
DIM: Dimensions DIM: Dimensions
@ -59,9 +60,9 @@ km:
ERRORNOTADMIN: 'That user is not an administrator.' ERRORNOTADMIN: 'That user is not an administrator.'
ERRORNOTREC: 'That username / password isn''t recognised' ERRORNOTREC: 'That username / password isn''t recognised'
Boolean: Boolean:
0: 'False'
ANY: Any ANY: Any
1: 'True' NOANSWER: 'False'
YESANSWER: 'True'
CMSLoadingScreen.ss: CMSLoadingScreen.ss:
LOADING: Loading... LOADING: Loading...
REQUIREJS: 'The CMS requires that you have JavaScript enabled.' REQUIREJS: 'The CMS requires that you have JavaScript enabled.'
@ -70,6 +71,8 @@ km:
ACCESSALLINTERFACES: 'Access to all CMS sections' ACCESSALLINTERFACES: 'Access to all CMS sections'
ACCESSALLINTERFACESHELP: 'Overrules more specific access settings.' ACCESSALLINTERFACESHELP: 'Overrules more specific access settings.'
SAVE: Save SAVE: Save
CMSPageHistoryController_versions.ss:
PREVIEW: 'Website preview'
CMSProfileController: CMSProfileController:
MENUTITLE: 'My Profile' MENUTITLE: 'My Profile'
ChangePasswordEmail.ss: ChangePasswordEmail.ss:
@ -79,8 +82,8 @@ km:
HELLO: Hi HELLO: Hi
PASSWORD: Password PASSWORD: Password
CheckboxField: CheckboxField:
- 'False' NOANSWER: 'False'
- 'True' YESANSWER: 'True'
ComplexTableField: ComplexTableField:
CLOSEPOPUP: 'Close Popup' CLOSEPOPUP: 'Close Popup'
SUCCESSADD2: 'Added {name}' SUCCESSADD2: 'Added {name}'
@ -109,20 +112,21 @@ km:
PLURALNAME: 'Data Objects' PLURALNAME: 'Data Objects'
SINGULARNAME: 'Data Objects' SINGULARNAME: 'Data Objects'
Date: Date:
DAY: ថ្ងៃ DAY: day
DAYS: ថ្ងៃ DAYS: days
HOUR: ម៉ោង HOUR: hour
HOURS: ម៉ោង HOURS: hours
MIN: នាទី LessThanMinuteAgo: 'less than a minute'
MINS: នាទី MIN: min
MONTH: ខែ MINS: mins
MONTHS: ខែ MONTH: month
SEC: វិនាទី MONTHS: months
SECS: វិនាទី SEC: sec
SECS: secs
TIMEDIFFAGO: '{difference} ago' TIMEDIFFAGO: '{difference} ago'
TIMEDIFFIN: 'in {difference}' TIMEDIFFIN: 'in {difference}'
YEAR: ឆ្នាំ YEAR: year
YEARS: ឆ្នាំ YEARS: years
DateField: DateField:
NOTSET: 'not set' NOTSET: 'not set'
TODAY: today TODAY: today
@ -198,7 +202,8 @@ km:
TEXT2: 'password reset link' TEXT2: 'password reset link'
TEXT3: for TEXT3: for
Form: Form:
FIELDISREQUIRED: '%s is required' CSRF_FAILED_MESSAGE: 'There seems to have been a technical problem. Please click the back button, refresh your browser, and try again.'
FIELDISREQUIRED: '{name} is required'
SubmitBtnLabel: Go SubmitBtnLabel: Go
VALIDATIONCREDITNUMBER: 'Please ensure you have entered the {number} credit card number correctly' VALIDATIONCREDITNUMBER: 'Please ensure you have entered the {number} credit card number correctly'
VALIDATIONNOTUNIQUE: 'The value entered is not unique' VALIDATIONNOTUNIQUE: 'The value entered is not unique'
@ -208,6 +213,7 @@ km:
VALIDATOR: Validator VALIDATOR: Validator
VALIDCURRENCY: 'Please enter a valid currency' VALIDCURRENCY: 'Please enter a valid currency'
FormField: FormField:
Example: 'e.g. %s'
NONE: none NONE: none
GridAction: GridAction:
DELETE_DESCRIPTION: Delete DELETE_DESCRIPTION: Delete
@ -230,6 +236,7 @@ km:
ResetFilter: Reset ResetFilter: Reset
GridFieldAction_Delete: GridFieldAction_Delete:
DeletePermissionsFailure: 'No delete permissions' DeletePermissionsFailure: 'No delete permissions'
EditPermissionsFailure: 'No permission to unlink record'
GridFieldDetailForm: GridFieldDetailForm:
CancelBtn: Cancel CancelBtn: Cancel
Create: Create Create: Create
@ -237,7 +244,9 @@ km:
DeletePermissionsFailure: 'No delete permissions' DeletePermissionsFailure: 'No delete permissions'
Deleted: 'Deleted %s %s' Deleted: 'Deleted %s %s'
Save: Save Save: Save
Saved: 'Saved %s %s' Saved: 'Saved {name} {link}'
GridFieldEditButton.ss:
EDIT: Edit
GridFieldItemEditView.ss: null GridFieldItemEditView.ss: null
Group: Group:
AddRole: 'Add a role for this group' AddRole: 'Add a role for this group'
@ -246,10 +255,10 @@ km:
DefaultGroupTitleContentAuthors: 'Content Authors' DefaultGroupTitleContentAuthors: 'Content Authors'
Description: Description Description: Description
GroupReminder: 'If you choose a parent group, this group will take all it''s roles' GroupReminder: 'If you choose a parent group, this group will take all it''s roles'
Locked: មិនអាចប្រើ Locked: 'មិនអាចប្រើ'
NoRoles: 'No roles found' NoRoles: 'No roles found'
PLURALNAME: Groups PLURALNAME: Groups
Parent: ចំណាត់ក្រុមដើម Parent: 'ចំណាត់ក្រុមដើម'
RolesAddEditLink: 'Manage roles' RolesAddEditLink: 'Manage roles'
SINGULARNAME: Group SINGULARNAME: Group
Sort: 'Sort Order' Sort: 'Sort Order'
@ -267,6 +276,7 @@ km:
ADDURL: 'Add URL' ADDURL: 'Add URL'
ADJUSTDETAILSDIMENSIONS: 'Details &amp; dimensions' ADJUSTDETAILSDIMENSIONS: 'Details &amp; dimensions'
ANCHORVALUE: Anchor ANCHORVALUE: Anchor
BUTTONADDURL: 'Add url'
BUTTONINSERT: Insert BUTTONINSERT: Insert
BUTTONINSERTLINK: 'Insert link' BUTTONINSERTLINK: 'Insert link'
BUTTONREMOVELINK: 'Remove link' BUTTONREMOVELINK: 'Remove link'
@ -331,7 +341,10 @@ km:
PreviewButton: Preview PreviewButton: Preview
REORGANISATIONSUCCESSFUL: 'Reorganised the site tree successfully.' REORGANISATIONSUCCESSFUL: 'Reorganised the site tree successfully.'
SAVEDUP: Saved. SAVEDUP: Saved.
VersionUnknown: unknown ShowAsList: 'show as list'
TooManyPages: 'Too many pages'
ValidationError: 'Validation error'
VersionUnknown: Unknown
LeftAndMain_Menu.ss: LeftAndMain_Menu.ss:
Hello: Hi Hello: Hi
LOGOUT: 'Log out' LOGOUT: 'Log out'
@ -377,13 +390,13 @@ km:
ValidationIdentifierFailed: 'Can''t overwrite existing member #{id} with identical identifier ({name} = {value}))' ValidationIdentifierFailed: 'Can''t overwrite existing member #{id} with identical identifier ({name} = {value}))'
WELCOMEBACK: 'Welcome Back, {firstname}' WELCOMEBACK: 'Welcome Back, {firstname}'
YOUROLDPASSWORD: 'Your old password' YOUROLDPASSWORD: 'Your old password'
belongs_many_many_Groups: ចំណាត់ក្រុម belongs_many_many_Groups: 'ចំណាត់ក្រុម'
db_LastVisited: 'Last Visited Date' db_LastVisited: 'Last Visited Date'
db_Locale: 'Interface Locale' db_Locale: 'Interface Locale'
db_LockedOutUntil: ដោះចេញរហូតដល់ db_LockedOutUntil: 'ដោះចេញរហូតដល់'
db_NumVisit: 'Number of Visits' db_NumVisit: 'Number of Visits'
db_Password: Password db_Password: Password
db_PasswordExpiry: កាលបរិច្ឆេទផុតកំណត់ពាក្យសំងាត់ db_PasswordExpiry: 'កាលបរិច្ឆេទផុតកំណត់ពាក្យសំងាត់'
MemberAuthenticator: MemberAuthenticator:
TITLE: 'E-mail &amp; Password' TITLE: 'E-mail &amp; Password'
MemberDatetimeOptionsetField: MemberDatetimeOptionsetField:
@ -407,6 +420,7 @@ km:
TWODIGITMONTH: 'Two-digit month (01=January, etc.)' TWODIGITMONTH: 'Two-digit month (01=January, etc.)'
TWODIGITSECOND: 'Two digits of second (00 through 59)' TWODIGITSECOND: 'Two digits of second (00 through 59)'
TWODIGITYEAR: 'Two-digit year' TWODIGITYEAR: 'Two-digit year'
Toggle: 'Show formatting help'
MemberImportForm: MemberImportForm:
Help1: '<p>Import users in <em>CSV format</em> (comma-separated values). <small><a href="#" class="toggle-advanced">Show advanced usage</a></small></p>' Help1: '<p>Import users in <em>CSV format</em> (comma-separated values). <small><a href="#" class="toggle-advanced">Show advanced usage</a></small></p>'
Help2: '<div class="advanced"> <h4>Advanced usage</h4> <ul> <li>Allowed columns: <em>%s</em></li> <li>Existing users are matched by their unique <em>Code</em> property, and updated with any new values from the imported file.</li> <li>Groups can be assigned by the <em>Groups</em> column. Groups are identified by their <em>Code</em> property, multiple groups can be separated by comma. Existing group memberships are not cleared.</li> </ul></div>' Help2: '<div class="advanced"> <h4>Advanced usage</h4> <ul> <li>Allowed columns: <em>%s</em></li> <li>Existing users are matched by their unique <em>Code</em> property, and updated with any new values from the imported file.</li> <li>Groups can be assigned by the <em>Groups</em> column. Groups are identified by their <em>Code</em> property, multiple groups can be separated by comma. Existing group memberships are not cleared.</li> </ul></div>'
@ -421,7 +435,7 @@ km:
ModelAdmin: ModelAdmin:
DELETE: Delete DELETE: Delete
DELETEDRECORDS: 'Deleted {count} records.' DELETEDRECORDS: 'Deleted {count} records.'
EMPTYBEFOREIMPORT: 'Clear Database before import' EMPTYBEFOREIMPORT: 'Replace data'
IMPORT: 'Import from CSV' IMPORT: 'Import from CSV'
IMPORTEDRECORDS: 'Imported {count} records.' IMPORTEDRECORDS: 'Imported {count} records.'
NOCSVFILE: 'Please browse for a CSV file to import' NOCSVFILE: 'Please browse for a CSV file to import'
@ -515,7 +529,20 @@ km:
BtnImport: 'Import from CSV' BtnImport: 'Import from CSV'
FileFieldLabel: 'CSV File <small>(Allowed extensions: *.csv)</small>' FileFieldLabel: 'CSV File <small>(Allowed extensions: *.csv)</small>'
SilverStripeNavigator: SilverStripeNavigator:
Auto: Auto
ChangeViewMode: 'Change view mode'
Desktop: Desktop
DualWindowView: 'Dual Window'
Edit: Edit Edit: Edit
EditView: 'Edit mode'
Mobile: Mobile
PreviewState: 'Preview State'
PreviewView: 'Preview mode'
Responsive: Responsive
SplitView: 'Split mode'
Tablet: Tablet
ViewDeviceWidth: 'Select a preview width'
Width: width
SimpleImageField: SimpleImageField:
NOUPLOAD: 'No Image Uploaded' NOUPLOAD: 'No Image Uploaded'
SiteTree: SiteTree:
@ -551,6 +578,8 @@ km:
ATTACHFILE: 'Attach a file' ATTACHFILE: 'Attach a file'
ATTACHFILES: 'Attach files' ATTACHFILES: 'Attach files'
AttachFile: 'Attach file(s)' AttachFile: 'Attach file(s)'
CHOOSEANOTHERFILE: 'Choose another file'
CHOOSEANOTHERINFO: 'Replace this file with another one from the file store'
DELETE: 'Delete from files' DELETE: 'Delete from files'
DELETEINFO: 'Permanently delete this file from the file store' DELETEINFO: 'Permanently delete this file from the file store'
DOEDIT: Save DOEDIT: Save
@ -565,12 +594,15 @@ km:
FROMFILES: 'From files' FROMFILES: 'From files'
HOTLINKINFO: 'Info: This image will be hotlinked. Please ensure you have permissions from the original site creator to do so.' HOTLINKINFO: 'Info: This image will be hotlinked. Please ensure you have permissions from the original site creator to do so.'
MAXNUMBEROFFILES: 'Max number of {count} file(s) exceeded.' MAXNUMBEROFFILES: 'Max number of {count} file(s) exceeded.'
MAXNUMBEROFFILESONE: 'Can only upload one file'
MAXNUMBEROFFILESSHORT: 'Can only upload {count} files' MAXNUMBEROFFILESSHORT: 'Can only upload {count} files'
OVERWRITEWARNING: 'File with the same name already exists'
REMOVE: Remove REMOVE: Remove
REMOVEERROR: 'Error removing file' REMOVEERROR: 'Error removing file'
REMOVEINFO: 'Remove this file from here, but do not delete it from the file store' REMOVEINFO: 'Remove this file from here, but do not delete it from the file store'
STARTALL: 'Start all' STARTALL: 'Start all'
STARTALLINFO: 'Start all uploads' STARTALLINFO: 'Start all uploads'
Saved: Saved Saved: Saved
UPLOADSINTO: 'saves into /{path}'
Versioned: Versioned:
has_many_Versions: ជំនាន់ has_many_Versions: ជំនាន់

View File

@ -2,6 +2,7 @@ lt:
AssetAdmin: AssetAdmin:
ALLOWEDEXTS: 'Allowed extensions' ALLOWEDEXTS: 'Allowed extensions'
NEWFOLDER: NewFolder NEWFOLDER: NewFolder
SHOWALLOWEDEXTS: 'Show allowed extensions'
AssetTableField: AssetTableField:
CREATED: 'First uploaded' CREATED: 'First uploaded'
DIM: Dimensions DIM: Dimensions
@ -59,9 +60,9 @@ lt:
ERRORNOTADMIN: 'Vartotojas nėra administratorius' ERRORNOTADMIN: 'Vartotojas nėra administratorius'
ERRORNOTREC: 'Toks vartotojo vardas / slaptažodis neatpažintas' ERRORNOTREC: 'Toks vartotojo vardas / slaptažodis neatpažintas'
Boolean: Boolean:
0: Ne
ANY: 'Bet koks' ANY: 'Bet koks'
1: Taip NOANSWER: 'False'
YESANSWER: 'True'
CMSLoadingScreen.ss: CMSLoadingScreen.ss:
LOADING: Loading... LOADING: Loading...
REQUIREJS: 'The CMS requires that you have JavaScript enabled.' REQUIREJS: 'The CMS requires that you have JavaScript enabled.'
@ -70,6 +71,8 @@ lt:
ACCESSALLINTERFACES: 'Access to all CMS sections' ACCESSALLINTERFACES: 'Access to all CMS sections'
ACCESSALLINTERFACESHELP: 'Overrules more specific access settings.' ACCESSALLINTERFACESHELP: 'Overrules more specific access settings.'
SAVE: Išsaugoti SAVE: Išsaugoti
CMSPageHistoryController_versions.ss:
PREVIEW: 'Website preview'
CMSProfileController: CMSProfileController:
MENUTITLE: 'My Profile' MENUTITLE: 'My Profile'
ChangePasswordEmail.ss: ChangePasswordEmail.ss:
@ -79,8 +82,8 @@ lt:
HELLO: Sveiki HELLO: Sveiki
PASSWORD: Slaptažodis PASSWORD: Slaptažodis
CheckboxField: CheckboxField:
- Ne NOANSWER: 'False'
- Taip YESANSWER: 'True'
ComplexTableField: ComplexTableField:
CLOSEPOPUP: Uždaryti CLOSEPOPUP: Uždaryti
SUCCESSADD2: 'Added {name}' SUCCESSADD2: 'Added {name}'
@ -109,20 +112,21 @@ lt:
PLURALNAME: 'Duomenų objektai' PLURALNAME: 'Duomenų objektai'
SINGULARNAME: 'Duomenų objektas' SINGULARNAME: 'Duomenų objektas'
Date: Date:
DAY: diena DAY: day
DAYS: dienas DAYS: days
HOUR: valandą HOUR: hour
HOURS: valandas HOURS: hours
MIN: minutę LessThanMinuteAgo: 'less than a minute'
MINS: minutes MIN: min
MONTH: mėnuo MINS: mins
MONTHS: mėnesiai MONTH: month
SEC: sek. MONTHS: months
SECS: sekundes SEC: sec
SECS: secs
TIMEDIFFAGO: '{difference} ago' TIMEDIFFAGO: '{difference} ago'
TIMEDIFFIN: 'in {difference}' TIMEDIFFIN: 'in {difference}'
YEAR: metai YEAR: year
YEARS: metus YEARS: years
DateField: DateField:
NOTSET: nenustatyta NOTSET: nenustatyta
TODAY: šiandien TODAY: šiandien
@ -198,7 +202,8 @@ lt:
TEXT2: 'slaptažodžio atstatymo nuoroda' TEXT2: 'slaptažodžio atstatymo nuoroda'
TEXT3: kam TEXT3: kam
Form: Form:
FIELDISREQUIRED: '%s yra būtinas' CSRF_FAILED_MESSAGE: 'There seems to have been a technical problem. Please click the back button, refresh your browser, and try again.'
FIELDISREQUIRED: '{name} is required'
SubmitBtnLabel: Go SubmitBtnLabel: Go
VALIDATIONCREDITNUMBER: 'Please ensure you have entered the {number} credit card number correctly' VALIDATIONCREDITNUMBER: 'Please ensure you have entered the {number} credit card number correctly'
VALIDATIONNOTUNIQUE: 'Įvesta reikšmė nėra unikali' VALIDATIONNOTUNIQUE: 'Įvesta reikšmė nėra unikali'
@ -208,6 +213,7 @@ lt:
VALIDATOR: Tikrintojas VALIDATOR: Tikrintojas
VALIDCURRENCY: 'Please enter a valid currency' VALIDCURRENCY: 'Please enter a valid currency'
FormField: FormField:
Example: 'e.g. %s'
NONE: niekas NONE: niekas
GridAction: GridAction:
DELETE_DESCRIPTION: Delete DELETE_DESCRIPTION: Delete
@ -230,6 +236,7 @@ lt:
ResetFilter: Reset ResetFilter: Reset
GridFieldAction_Delete: GridFieldAction_Delete:
DeletePermissionsFailure: 'No delete permissions' DeletePermissionsFailure: 'No delete permissions'
EditPermissionsFailure: 'No permission to unlink record'
GridFieldDetailForm: GridFieldDetailForm:
CancelBtn: Cancel CancelBtn: Cancel
Create: Create Create: Create
@ -237,7 +244,9 @@ lt:
DeletePermissionsFailure: 'No delete permissions' DeletePermissionsFailure: 'No delete permissions'
Deleted: 'Deleted %s %s' Deleted: 'Deleted %s %s'
Save: Save Save: Save
Saved: 'Saved %s %s' Saved: 'Saved {name} {link}'
GridFieldEditButton.ss:
EDIT: Edit
GridFieldItemEditView.ss: null GridFieldItemEditView.ss: null
Group: Group:
AddRole: 'Add a role for this group' AddRole: 'Add a role for this group'
@ -267,6 +276,7 @@ lt:
ADDURL: 'Add URL' ADDURL: 'Add URL'
ADJUSTDETAILSDIMENSIONS: 'Details &amp; dimensions' ADJUSTDETAILSDIMENSIONS: 'Details &amp; dimensions'
ANCHORVALUE: Pagrindinis ANCHORVALUE: Pagrindinis
BUTTONADDURL: 'Add url'
BUTTONINSERT: Insert BUTTONINSERT: Insert
BUTTONINSERTLINK: 'Įterpti nuorodą' BUTTONINSERTLINK: 'Įterpti nuorodą'
BUTTONREMOVELINK: 'Pašalinti nuorodą' BUTTONREMOVELINK: 'Pašalinti nuorodą'
@ -331,7 +341,10 @@ lt:
PreviewButton: Preview PreviewButton: Preview
REORGANISATIONSUCCESSFUL: 'Reorganised the site tree successfully.' REORGANISATIONSUCCESSFUL: 'Reorganised the site tree successfully.'
SAVEDUP: Saved. SAVEDUP: Saved.
VersionUnknown: unknown ShowAsList: 'show as list'
TooManyPages: 'Too many pages'
ValidationError: 'Validation error'
VersionUnknown: Unknown
LeftAndMain_Menu.ss: LeftAndMain_Menu.ss:
Hello: Hi Hello: Hi
LOGOUT: 'Log out' LOGOUT: 'Log out'
@ -407,6 +420,7 @@ lt:
TWODIGITMONTH: 'Two-digit month (01=January, etc.)' TWODIGITMONTH: 'Two-digit month (01=January, etc.)'
TWODIGITSECOND: 'Two digits of second (00 through 59)' TWODIGITSECOND: 'Two digits of second (00 through 59)'
TWODIGITYEAR: 'Two-digit year' TWODIGITYEAR: 'Two-digit year'
Toggle: 'Show formatting help'
MemberImportForm: MemberImportForm:
Help1: '<p>Import users in <em>CSV format</em> (comma-separated values). <small><a href="#" class="toggle-advanced">Show advanced usage</a></small></p>' Help1: '<p>Import users in <em>CSV format</em> (comma-separated values). <small><a href="#" class="toggle-advanced">Show advanced usage</a></small></p>'
Help2: '<div class="advanced"> <h4>Advanced usage</h4> <ul> <li>Allowed columns: <em>%s</em></li> <li>Existing users are matched by their unique <em>Code</em> property, and updated with any new values from the imported file.</li> <li>Groups can be assigned by the <em>Groups</em> column. Groups are identified by their <em>Code</em> property, multiple groups can be separated by comma. Existing group memberships are not cleared.</li> </ul></div>' Help2: '<div class="advanced"> <h4>Advanced usage</h4> <ul> <li>Allowed columns: <em>%s</em></li> <li>Existing users are matched by their unique <em>Code</em> property, and updated with any new values from the imported file.</li> <li>Groups can be assigned by the <em>Groups</em> column. Groups are identified by their <em>Code</em> property, multiple groups can be separated by comma. Existing group memberships are not cleared.</li> </ul></div>'
@ -421,7 +435,7 @@ lt:
ModelAdmin: ModelAdmin:
DELETE: Delete DELETE: Delete
DELETEDRECORDS: 'Deleted {count} records.' DELETEDRECORDS: 'Deleted {count} records.'
EMPTYBEFOREIMPORT: 'Clear Database before import' EMPTYBEFOREIMPORT: 'Replace data'
IMPORT: 'Import from CSV' IMPORT: 'Import from CSV'
IMPORTEDRECORDS: 'Imported {count} records.' IMPORTEDRECORDS: 'Imported {count} records.'
NOCSVFILE: 'Please browse for a CSV file to import' NOCSVFILE: 'Please browse for a CSV file to import'
@ -515,7 +529,20 @@ lt:
BtnImport: 'Import from CSV' BtnImport: 'Import from CSV'
FileFieldLabel: 'CSV File <small>(Allowed extensions: *.csv)</small>' FileFieldLabel: 'CSV File <small>(Allowed extensions: *.csv)</small>'
SilverStripeNavigator: SilverStripeNavigator:
Auto: Auto
ChangeViewMode: 'Change view mode'
Desktop: Desktop
DualWindowView: 'Dual Window'
Edit: Edit Edit: Edit
EditView: 'Edit mode'
Mobile: Mobile
PreviewState: 'Preview State'
PreviewView: 'Preview mode'
Responsive: Responsive
SplitView: 'Split mode'
Tablet: Tablet
ViewDeviceWidth: 'Select a preview width'
Width: width
SimpleImageField: SimpleImageField:
NOUPLOAD: 'Neįkrauta jokių paveikslėlių' NOUPLOAD: 'Neįkrauta jokių paveikslėlių'
SiteTree: SiteTree:
@ -551,6 +578,8 @@ lt:
ATTACHFILE: 'Attach a file' ATTACHFILE: 'Attach a file'
ATTACHFILES: 'Attach files' ATTACHFILES: 'Attach files'
AttachFile: 'Attach file(s)' AttachFile: 'Attach file(s)'
CHOOSEANOTHERFILE: 'Choose another file'
CHOOSEANOTHERINFO: 'Replace this file with another one from the file store'
DELETE: 'Delete from files' DELETE: 'Delete from files'
DELETEINFO: 'Permanently delete this file from the file store' DELETEINFO: 'Permanently delete this file from the file store'
DOEDIT: Save DOEDIT: Save
@ -565,12 +594,15 @@ lt:
FROMFILES: 'From files' FROMFILES: 'From files'
HOTLINKINFO: 'Info: This image will be hotlinked. Please ensure you have permissions from the original site creator to do so.' HOTLINKINFO: 'Info: This image will be hotlinked. Please ensure you have permissions from the original site creator to do so.'
MAXNUMBEROFFILES: 'Max number of {count} file(s) exceeded.' MAXNUMBEROFFILES: 'Max number of {count} file(s) exceeded.'
MAXNUMBEROFFILESONE: 'Can only upload one file'
MAXNUMBEROFFILESSHORT: 'Can only upload {count} files' MAXNUMBEROFFILESSHORT: 'Can only upload {count} files'
OVERWRITEWARNING: 'File with the same name already exists'
REMOVE: Remove REMOVE: Remove
REMOVEERROR: 'Error removing file' REMOVEERROR: 'Error removing file'
REMOVEINFO: 'Remove this file from here, but do not delete it from the file store' REMOVEINFO: 'Remove this file from here, but do not delete it from the file store'
STARTALL: 'Start all' STARTALL: 'Start all'
STARTALLINFO: 'Start all uploads' STARTALLINFO: 'Start all uploads'
Saved: Saved Saved: Saved
UPLOADSINTO: 'saves into /{path}'
Versioned: Versioned:
has_many_Versions: Versijos has_many_Versions: Versijos

View File

@ -2,6 +2,7 @@ lv:
AssetAdmin: AssetAdmin:
ALLOWEDEXTS: 'Allowed extensions' ALLOWEDEXTS: 'Allowed extensions'
NEWFOLDER: NewFolder NEWFOLDER: NewFolder
SHOWALLOWEDEXTS: 'Show allowed extensions'
AssetTableField: AssetTableField:
CREATED: 'First uploaded' CREATED: 'First uploaded'
DIM: Dimensions DIM: Dimensions
@ -59,9 +60,9 @@ lv:
ERRORNOTADMIN: 'Šis lietotājs nav administrators.' ERRORNOTADMIN: 'Šis lietotājs nav administrators.'
ERRORNOTREC: 'Šis lietotājvārds / parole nav atpazīts' ERRORNOTREC: 'Šis lietotājvārds / parole nav atpazīts'
Boolean: Boolean:
0:
ANY: Jebkurš ANY: Jebkurš
1: NOANSWER: 'False'
YESANSWER: 'True'
CMSLoadingScreen.ss: CMSLoadingScreen.ss:
LOADING: Loading... LOADING: Loading...
REQUIREJS: 'The CMS requires that you have JavaScript enabled.' REQUIREJS: 'The CMS requires that you have JavaScript enabled.'
@ -70,6 +71,8 @@ lv:
ACCESSALLINTERFACES: 'Access to all CMS sections' ACCESSALLINTERFACES: 'Access to all CMS sections'
ACCESSALLINTERFACESHELP: 'Overrules more specific access settings.' ACCESSALLINTERFACESHELP: 'Overrules more specific access settings.'
SAVE: Saglabāt SAVE: Saglabāt
CMSPageHistoryController_versions.ss:
PREVIEW: 'Website preview'
CMSProfileController: CMSProfileController:
MENUTITLE: 'My Profile' MENUTITLE: 'My Profile'
ChangePasswordEmail.ss: ChangePasswordEmail.ss:
@ -79,8 +82,8 @@ lv:
HELLO: Sveiki HELLO: Sveiki
PASSWORD: Parole PASSWORD: Parole
CheckboxField: CheckboxField:
- NOANSWER: 'False'
- YESANSWER: 'True'
ComplexTableField: ComplexTableField:
CLOSEPOPUP: 'Aizvērt izlēcošo logu' CLOSEPOPUP: 'Aizvērt izlēcošo logu'
SUCCESSADD2: 'Added {name}' SUCCESSADD2: 'Added {name}'
@ -109,20 +112,21 @@ lv:
PLURALNAME: 'Datu Objekti' PLURALNAME: 'Datu Objekti'
SINGULARNAME: 'Datu Objekts' SINGULARNAME: 'Datu Objekts'
Date: Date:
DAY: diena DAY: day
DAYS: dienas DAYS: days
HOUR: stunda HOUR: hour
HOURS: stundas HOURS: hours
MIN: minūte LessThanMinuteAgo: 'less than a minute'
MINS: minūtes MIN: min
MONTH: mēnesis MINS: mins
MONTHS: mēneši MONTH: month
SEC: sekunde MONTHS: months
SECS: sekundes SEC: sec
SECS: secs
TIMEDIFFAGO: '{difference} ago' TIMEDIFFAGO: '{difference} ago'
TIMEDIFFIN: 'in {difference}' TIMEDIFFIN: 'in {difference}'
YEAR: gads YEAR: year
YEARS: gadi YEARS: years
DateField: DateField:
NOTSET: 'nav uzstādīts' NOTSET: 'nav uzstādīts'
TODAY: šodien TODAY: šodien
@ -198,7 +202,8 @@ lv:
TEXT2: 'paroles atiestatīšanas saite' TEXT2: 'paroles atiestatīšanas saite'
TEXT3: ' ' TEXT3: ' '
Form: Form:
FIELDISREQUIRED: '%s ir obligāti aizpildāms.' CSRF_FAILED_MESSAGE: 'There seems to have been a technical problem. Please click the back button, refresh your browser, and try again.'
FIELDISREQUIRED: '{name} is required'
SubmitBtnLabel: Go SubmitBtnLabel: Go
VALIDATIONCREDITNUMBER: 'Please ensure you have entered the {number} credit card number correctly' VALIDATIONCREDITNUMBER: 'Please ensure you have entered the {number} credit card number correctly'
VALIDATIONNOTUNIQUE: 'Ievadītā vērtība nav unikāla' VALIDATIONNOTUNIQUE: 'Ievadītā vērtība nav unikāla'
@ -208,6 +213,7 @@ lv:
VALIDATOR: Validators VALIDATOR: Validators
VALIDCURRENCY: 'Please enter a valid currency' VALIDCURRENCY: 'Please enter a valid currency'
FormField: FormField:
Example: 'e.g. %s'
NONE: neviens NONE: neviens
GridAction: GridAction:
DELETE_DESCRIPTION: Delete DELETE_DESCRIPTION: Delete
@ -230,6 +236,7 @@ lv:
ResetFilter: Reset ResetFilter: Reset
GridFieldAction_Delete: GridFieldAction_Delete:
DeletePermissionsFailure: 'No delete permissions' DeletePermissionsFailure: 'No delete permissions'
EditPermissionsFailure: 'No permission to unlink record'
GridFieldDetailForm: GridFieldDetailForm:
CancelBtn: Cancel CancelBtn: Cancel
Create: Create Create: Create
@ -237,7 +244,9 @@ lv:
DeletePermissionsFailure: 'No delete permissions' DeletePermissionsFailure: 'No delete permissions'
Deleted: 'Deleted %s %s' Deleted: 'Deleted %s %s'
Save: Save Save: Save
Saved: 'Saved %s %s' Saved: 'Saved {name} {link}'
GridFieldEditButton.ss:
EDIT: Edit
GridFieldItemEditView.ss: null GridFieldItemEditView.ss: null
Group: Group:
AddRole: 'Add a role for this group' AddRole: 'Add a role for this group'
@ -267,6 +276,7 @@ lv:
ADDURL: 'Add URL' ADDURL: 'Add URL'
ADJUSTDETAILSDIMENSIONS: 'Details &amp; dimensions' ADJUSTDETAILSDIMENSIONS: 'Details &amp; dimensions'
ANCHORVALUE: Enkurs ANCHORVALUE: Enkurs
BUTTONADDURL: 'Add url'
BUTTONINSERT: Insert BUTTONINSERT: Insert
BUTTONINSERTLINK: 'Ievietot saiti' BUTTONINSERTLINK: 'Ievietot saiti'
BUTTONREMOVELINK: 'Noņemt saiti' BUTTONREMOVELINK: 'Noņemt saiti'
@ -331,7 +341,10 @@ lv:
PreviewButton: Preview PreviewButton: Preview
REORGANISATIONSUCCESSFUL: 'Reorganised the site tree successfully.' REORGANISATIONSUCCESSFUL: 'Reorganised the site tree successfully.'
SAVEDUP: Saved. SAVEDUP: Saved.
VersionUnknown: unknown ShowAsList: 'show as list'
TooManyPages: 'Too many pages'
ValidationError: 'Validation error'
VersionUnknown: Unknown
LeftAndMain_Menu.ss: LeftAndMain_Menu.ss:
Hello: Hi Hello: Hi
LOGOUT: 'Log out' LOGOUT: 'Log out'
@ -407,6 +420,7 @@ lv:
TWODIGITMONTH: 'Two-digit month (01=January, etc.)' TWODIGITMONTH: 'Two-digit month (01=January, etc.)'
TWODIGITSECOND: 'Two digits of second (00 through 59)' TWODIGITSECOND: 'Two digits of second (00 through 59)'
TWODIGITYEAR: 'Two-digit year' TWODIGITYEAR: 'Two-digit year'
Toggle: 'Show formatting help'
MemberImportForm: MemberImportForm:
Help1: '<p>Import users in <em>CSV format</em> (comma-separated values). <small><a href="#" class="toggle-advanced">Show advanced usage</a></small></p>' Help1: '<p>Import users in <em>CSV format</em> (comma-separated values). <small><a href="#" class="toggle-advanced">Show advanced usage</a></small></p>'
Help2: '<div class="advanced"> <h4>Advanced usage</h4> <ul> <li>Allowed columns: <em>%s</em></li> <li>Existing users are matched by their unique <em>Code</em> property, and updated with any new values from the imported file.</li> <li>Groups can be assigned by the <em>Groups</em> column. Groups are identified by their <em>Code</em> property, multiple groups can be separated by comma. Existing group memberships are not cleared.</li> </ul></div>' Help2: '<div class="advanced"> <h4>Advanced usage</h4> <ul> <li>Allowed columns: <em>%s</em></li> <li>Existing users are matched by their unique <em>Code</em> property, and updated with any new values from the imported file.</li> <li>Groups can be assigned by the <em>Groups</em> column. Groups are identified by their <em>Code</em> property, multiple groups can be separated by comma. Existing group memberships are not cleared.</li> </ul></div>'
@ -421,7 +435,7 @@ lv:
ModelAdmin: ModelAdmin:
DELETE: Delete DELETE: Delete
DELETEDRECORDS: 'Deleted {count} records.' DELETEDRECORDS: 'Deleted {count} records.'
EMPTYBEFOREIMPORT: 'Clear Database before import' EMPTYBEFOREIMPORT: 'Replace data'
IMPORT: 'Import from CSV' IMPORT: 'Import from CSV'
IMPORTEDRECORDS: 'Imported {count} records.' IMPORTEDRECORDS: 'Imported {count} records.'
NOCSVFILE: 'Please browse for a CSV file to import' NOCSVFILE: 'Please browse for a CSV file to import'
@ -515,7 +529,20 @@ lv:
BtnImport: 'Import from CSV' BtnImport: 'Import from CSV'
FileFieldLabel: 'CSV File <small>(Allowed extensions: *.csv)</small>' FileFieldLabel: 'CSV File <small>(Allowed extensions: *.csv)</small>'
SilverStripeNavigator: SilverStripeNavigator:
Auto: Auto
ChangeViewMode: 'Change view mode'
Desktop: Desktop
DualWindowView: 'Dual Window'
Edit: Edit Edit: Edit
EditView: 'Edit mode'
Mobile: Mobile
PreviewState: 'Preview State'
PreviewView: 'Preview mode'
Responsive: Responsive
SplitView: 'Split mode'
Tablet: Tablet
ViewDeviceWidth: 'Select a preview width'
Width: width
SimpleImageField: SimpleImageField:
NOUPLOAD: 'Netika augšupielādēts neviens attēls' NOUPLOAD: 'Netika augšupielādēts neviens attēls'
SiteTree: SiteTree:
@ -551,6 +578,8 @@ lv:
ATTACHFILE: 'Attach a file' ATTACHFILE: 'Attach a file'
ATTACHFILES: 'Attach files' ATTACHFILES: 'Attach files'
AttachFile: 'Attach file(s)' AttachFile: 'Attach file(s)'
CHOOSEANOTHERFILE: 'Choose another file'
CHOOSEANOTHERINFO: 'Replace this file with another one from the file store'
DELETE: 'Delete from files' DELETE: 'Delete from files'
DELETEINFO: 'Permanently delete this file from the file store' DELETEINFO: 'Permanently delete this file from the file store'
DOEDIT: Save DOEDIT: Save
@ -565,12 +594,15 @@ lv:
FROMFILES: 'From files' FROMFILES: 'From files'
HOTLINKINFO: 'Info: This image will be hotlinked. Please ensure you have permissions from the original site creator to do so.' HOTLINKINFO: 'Info: This image will be hotlinked. Please ensure you have permissions from the original site creator to do so.'
MAXNUMBEROFFILES: 'Max number of {count} file(s) exceeded.' MAXNUMBEROFFILES: 'Max number of {count} file(s) exceeded.'
MAXNUMBEROFFILESONE: 'Can only upload one file'
MAXNUMBEROFFILESSHORT: 'Can only upload {count} files' MAXNUMBEROFFILESSHORT: 'Can only upload {count} files'
OVERWRITEWARNING: 'File with the same name already exists'
REMOVE: Remove REMOVE: Remove
REMOVEERROR: 'Error removing file' REMOVEERROR: 'Error removing file'
REMOVEINFO: 'Remove this file from here, but do not delete it from the file store' REMOVEINFO: 'Remove this file from here, but do not delete it from the file store'
STARTALL: 'Start all' STARTALL: 'Start all'
STARTALLINFO: 'Start all uploads' STARTALLINFO: 'Start all uploads'
Saved: Saved Saved: Saved
UPLOADSINTO: 'saves into /{path}'
Versioned: Versioned:
has_many_Versions: Versijas has_many_Versions: Versijas

View File

@ -2,6 +2,7 @@ mi_NZ:
AssetAdmin: AssetAdmin:
ALLOWEDEXTS: 'Ngā toronga ka whakaaetia' ALLOWEDEXTS: 'Ngā toronga ka whakaaetia'
NEWFOLDER: KōpakiHōu NEWFOLDER: KōpakiHōu
SHOWALLOWEDEXTS: 'Show allowed extensions'
AssetTableField: AssetTableField:
CREATED: 'Tukuatu tuatahi' CREATED: 'Tukuatu tuatahi'
DIM: 'Ngā Rahinga' DIM: 'Ngā Rahinga'
@ -59,9 +60,9 @@ mi_NZ:
ERRORNOTADMIN: 'Ehara tēnā kaiwhakamahi i te kaiwhakahaere' ERRORNOTADMIN: 'Ehara tēnā kaiwhakamahi i te kaiwhakahaere'
ERRORNOTREC: 'Kāore i te mōhiotia tēnā ingoa kaiwhakamahi / kupuhipa' ERRORNOTREC: 'Kāore i te mōhiotia tēnā ingoa kaiwhakamahi / kupuhipa'
Boolean: Boolean:
0:
ANY: 'Ko tētahi' ANY: 'Ko tētahi'
1: Pono NOANSWER: 'False'
YESANSWER: 'True'
CMSLoadingScreen.ss: CMSLoadingScreen.ss:
LOADING: 'Uta ana...' LOADING: 'Uta ana...'
REQUIREJS: 'Ka hiahia te CMS kia whakahohea te JavaScript' REQUIREJS: 'Ka hiahia te CMS kia whakahohea te JavaScript'
@ -70,6 +71,8 @@ mi_NZ:
ACCESSALLINTERFACES: 'Uru ki ngā wāhanga CMS katoa' ACCESSALLINTERFACES: 'Uru ki ngā wāhanga CMS katoa'
ACCESSALLINTERFACESHELP: 'Ka takahi i ngā tautuhinga uru tauwhāiti ake' ACCESSALLINTERFACESHELP: 'Ka takahi i ngā tautuhinga uru tauwhāiti ake'
SAVE: Tiaki SAVE: Tiaki
CMSPageHistoryController_versions.ss:
PREVIEW: 'Website preview'
CMSProfileController: CMSProfileController:
MENUTITLE: 'My Profile' MENUTITLE: 'My Profile'
ChangePasswordEmail.ss: ChangePasswordEmail.ss:
@ -79,8 +82,8 @@ mi_NZ:
HELLO: 'Kia ora' HELLO: 'Kia ora'
PASSWORD: Kupuhipa PASSWORD: Kupuhipa
CheckboxField: CheckboxField:
- NOANSWER: 'False'
- Pono YESANSWER: 'True'
ComplexTableField: ComplexTableField:
CLOSEPOPUP: 'Kati Pakū-Ake' CLOSEPOPUP: 'Kati Pakū-Ake'
SUCCESSADD2: 'Kua tāpiritia a {name}' SUCCESSADD2: 'Kua tāpiritia a {name}'
@ -109,20 +112,21 @@ mi_NZ:
PLURALNAME: 'Ngā Ahanoa Raraunga' PLURALNAME: 'Ngā Ahanoa Raraunga'
SINGULARNAME: 'Ahanoa Raraunga' SINGULARNAME: 'Ahanoa Raraunga'
Date: Date:
DAY: DAY: day
DAYS: 'ngā rā' DAYS: days
HOUR: haora HOUR: hour
HOURS: 'ngā haora' HOURS: hours
MIN: meneti LessThanMinuteAgo: 'less than a minute'
MINS: 'ngā meneti' MIN: min
MONTH: marama MINS: mins
MONTHS: 'ngā marama' MONTH: month
SEC: hēkona MONTHS: months
SECS: 'ngā hēkona' SEC: sec
SECS: secs
TIMEDIFFAGO: '{difference} i mua' TIMEDIFFAGO: '{difference} i mua'
TIMEDIFFIN: 'i roto i te {difference}' TIMEDIFFIN: 'i roto i te {difference}'
YEAR: tau YEAR: year
YEARS: 'ngā tau' YEARS: years
DateField: DateField:
NOTSET: 'kāore i tautuhia' NOTSET: 'kāore i tautuhia'
TODAY: 'i tēnei rā' TODAY: 'i tēnei rā'
@ -198,7 +202,8 @@ mi_NZ:
TEXT2: 'hono tautuhi kupuhipa anō' TEXT2: 'hono tautuhi kupuhipa anō'
TEXT3: TEXT3:
Form: Form:
FIELDISREQUIRED: 'Ka hiahiatia a %s' CSRF_FAILED_MESSAGE: 'There seems to have been a technical problem. Please click the back button, refresh your browser, and try again.'
FIELDISREQUIRED: '{name} is required'
SubmitBtnLabel: Go SubmitBtnLabel: Go
VALIDATIONCREDITNUMBER: 'Tirohia kua tika tō tāuru i te tau kāri nama {number}' VALIDATIONCREDITNUMBER: 'Tirohia kua tika tō tāuru i te tau kāri nama {number}'
VALIDATIONNOTUNIQUE: 'Ehara te uara i tāurua i te ahurei' VALIDATIONNOTUNIQUE: 'Ehara te uara i tāurua i te ahurei'
@ -208,6 +213,7 @@ mi_NZ:
VALIDATOR: Pūwhakamana VALIDATOR: Pūwhakamana
VALIDCURRENCY: 'Tāurua he moni tika' VALIDCURRENCY: 'Tāurua he moni tika'
FormField: FormField:
Example: 'e.g. %s'
NONE: Kore NONE: Kore
GridAction: GridAction:
DELETE_DESCRIPTION: Muku DELETE_DESCRIPTION: Muku
@ -230,6 +236,7 @@ mi_NZ:
ResetFilter: 'Tautuhi anō' ResetFilter: 'Tautuhi anō'
GridFieldAction_Delete: GridFieldAction_Delete:
DeletePermissionsFailure: 'Kāore he muku whakaaetanga' DeletePermissionsFailure: 'Kāore he muku whakaaetanga'
EditPermissionsFailure: 'No permission to unlink record'
GridFieldDetailForm: GridFieldDetailForm:
CancelBtn: Whakakore CancelBtn: Whakakore
Create: Hanga Create: Hanga
@ -237,7 +244,9 @@ mi_NZ:
DeletePermissionsFailure: 'Kāore he whakaaetanga muku' DeletePermissionsFailure: 'Kāore he whakaaetanga muku'
Deleted: 'Kua mukua %s %s' Deleted: 'Kua mukua %s %s'
Save: Tiaki Save: Tiaki
Saved: 'I tiakina a %s %s' Saved: 'Saved {name} {link}'
GridFieldEditButton.ss:
EDIT: Edit
GridFieldItemEditView.ss: null GridFieldItemEditView.ss: null
Group: Group:
AddRole: 'Tāpiritia he tūnga mō tēnei rōpū' AddRole: 'Tāpiritia he tūnga mō tēnei rōpū'
@ -267,6 +276,7 @@ mi_NZ:
ADDURL: 'Tāpiri PRO' ADDURL: 'Tāpiri PRO'
ADJUSTDETAILSDIMENSIONS: 'Ngā taipitopito &amp; ngā rahinga' ADJUSTDETAILSDIMENSIONS: 'Ngā taipitopito &amp; ngā rahinga'
ANCHORVALUE: Punga ANCHORVALUE: Punga
BUTTONADDURL: 'Add url'
BUTTONINSERT: Kōkohu BUTTONINSERT: Kōkohu
BUTTONINSERTLINK: 'Kōkuhu hono' BUTTONINSERTLINK: 'Kōkuhu hono'
BUTTONREMOVELINK: 'Tango hono' BUTTONREMOVELINK: 'Tango hono'
@ -331,6 +341,9 @@ mi_NZ:
PreviewButton: Arokite PreviewButton: Arokite
REORGANISATIONSUCCESSFUL: 'Kua momoho te whakaraupapa anō i te rākau pae' REORGANISATIONSUCCESSFUL: 'Kua momoho te whakaraupapa anō i te rākau pae'
SAVEDUP: 'Kua Tiakina' SAVEDUP: 'Kua Tiakina'
ShowAsList: 'show as list'
TooManyPages: 'Too many pages'
ValidationError: 'Validation error'
VersionUnknown: 'tē mōhiotia' VersionUnknown: 'tē mōhiotia'
LeftAndMain_Menu.ss: LeftAndMain_Menu.ss:
Hello: 'Kia ora' Hello: 'Kia ora'
@ -407,6 +420,7 @@ mi_NZ:
TWODIGITMONTH: 'Marama matirua (01=Kohitātea)' TWODIGITMONTH: 'Marama matirua (01=Kohitātea)'
TWODIGITSECOND: 'Ngā mati hēkona e rua (00 ki te 59)' TWODIGITSECOND: 'Ngā mati hēkona e rua (00 ki te 59)'
TWODIGITYEAR: 'Tau matirua' TWODIGITYEAR: 'Tau matirua'
Toggle: 'Show formatting help'
MemberImportForm: MemberImportForm:
Help1: '<p>Kawea mai ngā kaiwhakamahi i te <em>hōputu CSV </em> (ngā uara ka wehea ki te piko). <small><a href="#" class="toggle-advanced">Whakaatu whakamahinga ara atu anō</a></small></p>' Help1: '<p>Kawea mai ngā kaiwhakamahi i te <em>hōputu CSV </em> (ngā uara ka wehea ki te piko). <small><a href="#" class="toggle-advanced">Whakaatu whakamahinga ara atu anō</a></small></p>'
Help2: '<div class="advanced"> <h4>Advanced usage</h4> <ul> <li>Allowed columns: <em>%s</em></li> <li>Existing users are matched by their unique <em>Code</em> property, and updated with any new values from the imported file.</li> <li>Groups can be assigned by the <em>Groups</em> column. Groups are identified by their <em>Code</em> property, multiple groups can be separated by comma. Existing group memberships are not cleared.</li> </ul></div>' Help2: '<div class="advanced"> <h4>Advanced usage</h4> <ul> <li>Allowed columns: <em>%s</em></li> <li>Existing users are matched by their unique <em>Code</em> property, and updated with any new values from the imported file.</li> <li>Groups can be assigned by the <em>Groups</em> column. Groups are identified by their <em>Code</em> property, multiple groups can be separated by comma. Existing group memberships are not cleared.</li> </ul></div>'
@ -421,7 +435,7 @@ mi_NZ:
ModelAdmin: ModelAdmin:
DELETE: Muku DELETE: Muku
DELETEDRECORDS: 'I mukua e {count} ngā pūkete.' DELETEDRECORDS: 'I mukua e {count} ngā pūkete.'
EMPTYBEFOREIMPORT: 'Clear Database before import' EMPTYBEFOREIMPORT: 'Replace data'
IMPORT: 'Kawemai i CSV' IMPORT: 'Kawemai i CSV'
IMPORTEDRECORDS: 'I kawea mai e {count} ngā pūkete.' IMPORTEDRECORDS: 'I kawea mai e {count} ngā pūkete.'
NOCSVFILE: 'Pūtirotiro kia kitea he kōnae CSV hei kawemai' NOCSVFILE: 'Pūtirotiro kia kitea he kōnae CSV hei kawemai'
@ -515,7 +529,20 @@ mi_NZ:
BtnImport: 'Kawemai i CSV' BtnImport: 'Kawemai i CSV'
FileFieldLabel: 'Kōnae CSV <small>(Ngā toronga ka whakaaetia: *.csv)</small>' FileFieldLabel: 'Kōnae CSV <small>(Ngā toronga ka whakaaetia: *.csv)</small>'
SilverStripeNavigator: SilverStripeNavigator:
Auto: Auto
ChangeViewMode: 'Change view mode'
Desktop: Desktop
DualWindowView: 'Dual Window'
Edit: Whakatika Edit: Whakatika
EditView: 'Edit mode'
Mobile: Mobile
PreviewState: 'Preview State'
PreviewView: 'Preview mode'
Responsive: Responsive
SplitView: 'Split mode'
Tablet: Tablet
ViewDeviceWidth: 'Select a preview width'
Width: width
SimpleImageField: SimpleImageField:
NOUPLOAD: 'Kāore He Atahanga Tukuatu' NOUPLOAD: 'Kāore He Atahanga Tukuatu'
SiteTree: SiteTree:
@ -551,6 +578,8 @@ mi_NZ:
ATTACHFILE: 'Tāpiritia tētahi kōnae' ATTACHFILE: 'Tāpiritia tētahi kōnae'
ATTACHFILES: 'Tāpiri kōnae' ATTACHFILES: 'Tāpiri kōnae'
AttachFile: 'Tāpiritia t/ētahi kōnae' AttachFile: 'Tāpiritia t/ētahi kōnae'
CHOOSEANOTHERFILE: 'Choose another file'
CHOOSEANOTHERINFO: 'Replace this file with another one from the file store'
DELETE: 'Muku i ngā kōnae' DELETE: 'Muku i ngā kōnae'
DELETEINFO: 'Muku pūmautia tēnei kōnae i te pātaka kōnae' DELETEINFO: 'Muku pūmautia tēnei kōnae i te pātaka kōnae'
DOEDIT: Tiaki DOEDIT: Tiaki
@ -565,12 +594,15 @@ mi_NZ:
FROMFILES: 'I ngā kōnae' FROMFILES: 'I ngā kōnae'
HOTLINKINFO: 'Info: This image will be hotlinked. Please ensure you have permissions from the original site creator to do so.' HOTLINKINFO: 'Info: This image will be hotlinked. Please ensure you have permissions from the original site creator to do so.'
MAXNUMBEROFFILES: 'Kua hipa te mōrahi o ngā kōnae {count}.' MAXNUMBEROFFILES: 'Kua hipa te mōrahi o ngā kōnae {count}.'
MAXNUMBEROFFILESONE: 'Can only upload one file'
MAXNUMBEROFFILESSHORT: 'Ka taea te tukuatu i ngā kōnae {count} anake ' MAXNUMBEROFFILESSHORT: 'Ka taea te tukuatu i ngā kōnae {count} anake '
OVERWRITEWARNING: 'File with the same name already exists'
REMOVE: Tango REMOVE: Tango
REMOVEERROR: 'Kua rarua te tango kōnae' REMOVEERROR: 'Kua rarua te tango kōnae'
REMOVEINFO: 'Tangohia tēnei kōane i konei, engari kaua e muku i te pātaka kōnae' REMOVEINFO: 'Tangohia tēnei kōane i konei, engari kaua e muku i te pātaka kōnae'
STARTALL: 'Tīmata katoa' STARTALL: 'Tīmata katoa'
STARTALLINFO: 'Tīmataria ngā tukuatu katoa' STARTALLINFO: 'Tīmataria ngā tukuatu katoa'
Saved: 'Kua Tiakina' Saved: 'Kua Tiakina'
UPLOADSINTO: 'saves into /{path}'
Versioned: Versioned:
has_many_Versions: 'Ngā Putanga' has_many_Versions: 'Ngā Putanga'

View File

@ -2,6 +2,7 @@ ms:
AssetAdmin: AssetAdmin:
ALLOWEDEXTS: 'Allowed extensions' ALLOWEDEXTS: 'Allowed extensions'
NEWFOLDER: NewFolder NEWFOLDER: NewFolder
SHOWALLOWEDEXTS: 'Show allowed extensions'
AssetTableField: AssetTableField:
CREATED: 'First uploaded' CREATED: 'First uploaded'
DIM: Dimensions DIM: Dimensions
@ -59,9 +60,9 @@ ms:
ERRORNOTADMIN: 'Pengguna ini bukan pentadbir.' ERRORNOTADMIN: 'Pengguna ini bukan pentadbir.'
ERRORNOTREC: 'ID pengguna dan katalaluan tidak dikenali' ERRORNOTREC: 'ID pengguna dan katalaluan tidak dikenali'
Boolean: Boolean:
0: 'False'
ANY: Any ANY: Any
1: 'True' NOANSWER: 'False'
YESANSWER: 'True'
CMSLoadingScreen.ss: CMSLoadingScreen.ss:
LOADING: Loading... LOADING: Loading...
REQUIREJS: 'The CMS requires that you have JavaScript enabled.' REQUIREJS: 'The CMS requires that you have JavaScript enabled.'
@ -70,6 +71,8 @@ ms:
ACCESSALLINTERFACES: 'Access to all CMS sections' ACCESSALLINTERFACES: 'Access to all CMS sections'
ACCESSALLINTERFACESHELP: 'Overrules more specific access settings.' ACCESSALLINTERFACESHELP: 'Overrules more specific access settings.'
SAVE: Save SAVE: Save
CMSPageHistoryController_versions.ss:
PREVIEW: 'Website preview'
CMSProfileController: CMSProfileController:
MENUTITLE: 'My Profile' MENUTITLE: 'My Profile'
ChangePasswordEmail.ss: ChangePasswordEmail.ss:
@ -79,8 +82,8 @@ ms:
HELLO: Hi HELLO: Hi
PASSWORD: 'Kata Laluan' PASSWORD: 'Kata Laluan'
CheckboxField: CheckboxField:
- 'False' NOANSWER: 'False'
- 'True' YESANSWER: 'True'
ComplexTableField: ComplexTableField:
CLOSEPOPUP: 'Close Popup' CLOSEPOPUP: 'Close Popup'
SUCCESSADD2: 'Added {name}' SUCCESSADD2: 'Added {name}'
@ -109,20 +112,21 @@ ms:
PLURALNAME: 'Objek-objek Data' PLURALNAME: 'Objek-objek Data'
SINGULARNAME: 'Objek Data' SINGULARNAME: 'Objek Data'
Date: Date:
DAY: hari DAY: day
DAYS: hari-hari DAYS: days
HOUR: jam HOUR: hour
HOURS: jam-jam HOURS: hours
MIN: minit LessThanMinuteAgo: 'less than a minute'
MINS: minit-minit MIN: min
MONTH: bulan MINS: mins
MONTHS: bulan-bulan MONTH: month
SEC: saat MONTHS: months
SECS: saat-saat SEC: sec
SECS: secs
TIMEDIFFAGO: '{difference} ago' TIMEDIFFAGO: '{difference} ago'
TIMEDIFFIN: 'in {difference}' TIMEDIFFIN: 'in {difference}'
YEAR: tahun YEAR: year
YEARS: tahun-tahun YEARS: years
DateField: DateField:
NOTSET: 'not set' NOTSET: 'not set'
TODAY: today TODAY: today
@ -198,7 +202,8 @@ ms:
TEXT2: 'password reset link' TEXT2: 'password reset link'
TEXT3: for TEXT3: for
Form: Form:
FIELDISREQUIRED: '%s dipelukan' CSRF_FAILED_MESSAGE: 'There seems to have been a technical problem. Please click the back button, refresh your browser, and try again.'
FIELDISREQUIRED: '{name} is required'
SubmitBtnLabel: Go SubmitBtnLabel: Go
VALIDATIONCREDITNUMBER: 'Please ensure you have entered the {number} credit card number correctly' VALIDATIONCREDITNUMBER: 'Please ensure you have entered the {number} credit card number correctly'
VALIDATIONNOTUNIQUE: 'Nilai yang dimasukkan tidak unik' VALIDATIONNOTUNIQUE: 'Nilai yang dimasukkan tidak unik'
@ -208,6 +213,7 @@ ms:
VALIDATOR: Pengesah VALIDATOR: Pengesah
VALIDCURRENCY: 'Please enter a valid currency' VALIDCURRENCY: 'Please enter a valid currency'
FormField: FormField:
Example: 'e.g. %s'
NONE: none NONE: none
GridAction: GridAction:
DELETE_DESCRIPTION: Delete DELETE_DESCRIPTION: Delete
@ -230,6 +236,7 @@ ms:
ResetFilter: Reset ResetFilter: Reset
GridFieldAction_Delete: GridFieldAction_Delete:
DeletePermissionsFailure: 'No delete permissions' DeletePermissionsFailure: 'No delete permissions'
EditPermissionsFailure: 'No permission to unlink record'
GridFieldDetailForm: GridFieldDetailForm:
CancelBtn: Cancel CancelBtn: Cancel
Create: Create Create: Create
@ -237,7 +244,9 @@ ms:
DeletePermissionsFailure: 'No delete permissions' DeletePermissionsFailure: 'No delete permissions'
Deleted: 'Deleted %s %s' Deleted: 'Deleted %s %s'
Save: Save Save: Save
Saved: 'Saved %s %s' Saved: 'Saved {name} {link}'
GridFieldEditButton.ss:
EDIT: Edit
GridFieldItemEditView.ss: null GridFieldItemEditView.ss: null
Group: Group:
AddRole: 'Add a role for this group' AddRole: 'Add a role for this group'
@ -267,6 +276,7 @@ ms:
ADDURL: 'Add URL' ADDURL: 'Add URL'
ADJUSTDETAILSDIMENSIONS: 'Details &amp; dimensions' ADJUSTDETAILSDIMENSIONS: 'Details &amp; dimensions'
ANCHORVALUE: Anchor ANCHORVALUE: Anchor
BUTTONADDURL: 'Add url'
BUTTONINSERT: Insert BUTTONINSERT: Insert
BUTTONINSERTLINK: 'Masukkan pautan' BUTTONINSERTLINK: 'Masukkan pautan'
BUTTONREMOVELINK: 'Hapuskan pautan' BUTTONREMOVELINK: 'Hapuskan pautan'
@ -331,7 +341,10 @@ ms:
PreviewButton: Preview PreviewButton: Preview
REORGANISATIONSUCCESSFUL: 'Reorganised the site tree successfully.' REORGANISATIONSUCCESSFUL: 'Reorganised the site tree successfully.'
SAVEDUP: Saved. SAVEDUP: Saved.
VersionUnknown: unknown ShowAsList: 'show as list'
TooManyPages: 'Too many pages'
ValidationError: 'Validation error'
VersionUnknown: Unknown
LeftAndMain_Menu.ss: LeftAndMain_Menu.ss:
Hello: Hi Hello: Hi
LOGOUT: 'Log out' LOGOUT: 'Log out'
@ -407,6 +420,7 @@ ms:
TWODIGITMONTH: 'Two-digit month (01=January, etc.)' TWODIGITMONTH: 'Two-digit month (01=January, etc.)'
TWODIGITSECOND: 'Two digits of second (00 through 59)' TWODIGITSECOND: 'Two digits of second (00 through 59)'
TWODIGITYEAR: 'Two-digit year' TWODIGITYEAR: 'Two-digit year'
Toggle: 'Show formatting help'
MemberImportForm: MemberImportForm:
Help1: '<p>Import users in <em>CSV format</em> (comma-separated values). <small><a href="#" class="toggle-advanced">Show advanced usage</a></small></p>' Help1: '<p>Import users in <em>CSV format</em> (comma-separated values). <small><a href="#" class="toggle-advanced">Show advanced usage</a></small></p>'
Help2: '<div class="advanced"> <h4>Advanced usage</h4> <ul> <li>Allowed columns: <em>%s</em></li> <li>Existing users are matched by their unique <em>Code</em> property, and updated with any new values from the imported file.</li> <li>Groups can be assigned by the <em>Groups</em> column. Groups are identified by their <em>Code</em> property, multiple groups can be separated by comma. Existing group memberships are not cleared.</li> </ul></div>' Help2: '<div class="advanced"> <h4>Advanced usage</h4> <ul> <li>Allowed columns: <em>%s</em></li> <li>Existing users are matched by their unique <em>Code</em> property, and updated with any new values from the imported file.</li> <li>Groups can be assigned by the <em>Groups</em> column. Groups are identified by their <em>Code</em> property, multiple groups can be separated by comma. Existing group memberships are not cleared.</li> </ul></div>'
@ -421,7 +435,7 @@ ms:
ModelAdmin: ModelAdmin:
DELETE: Delete DELETE: Delete
DELETEDRECORDS: 'Deleted {count} records.' DELETEDRECORDS: 'Deleted {count} records.'
EMPTYBEFOREIMPORT: 'Clear Database before import' EMPTYBEFOREIMPORT: 'Replace data'
IMPORT: 'Import from CSV' IMPORT: 'Import from CSV'
IMPORTEDRECORDS: 'Imported {count} records.' IMPORTEDRECORDS: 'Imported {count} records.'
NOCSVFILE: 'Please browse for a CSV file to import' NOCSVFILE: 'Please browse for a CSV file to import'
@ -515,7 +529,20 @@ ms:
BtnImport: 'Import from CSV' BtnImport: 'Import from CSV'
FileFieldLabel: 'CSV File <small>(Allowed extensions: *.csv)</small>' FileFieldLabel: 'CSV File <small>(Allowed extensions: *.csv)</small>'
SilverStripeNavigator: SilverStripeNavigator:
Auto: Auto
ChangeViewMode: 'Change view mode'
Desktop: Desktop
DualWindowView: 'Dual Window'
Edit: Edit Edit: Edit
EditView: 'Edit mode'
Mobile: Mobile
PreviewState: 'Preview State'
PreviewView: 'Preview mode'
Responsive: Responsive
SplitView: 'Split mode'
Tablet: Tablet
ViewDeviceWidth: 'Select a preview width'
Width: width
SimpleImageField: SimpleImageField:
NOUPLOAD: 'Tiada imej dimuat naikkan' NOUPLOAD: 'Tiada imej dimuat naikkan'
SiteTree: SiteTree:
@ -551,6 +578,8 @@ ms:
ATTACHFILE: 'Attach a file' ATTACHFILE: 'Attach a file'
ATTACHFILES: 'Attach files' ATTACHFILES: 'Attach files'
AttachFile: 'Attach file(s)' AttachFile: 'Attach file(s)'
CHOOSEANOTHERFILE: 'Choose another file'
CHOOSEANOTHERINFO: 'Replace this file with another one from the file store'
DELETE: 'Delete from files' DELETE: 'Delete from files'
DELETEINFO: 'Permanently delete this file from the file store' DELETEINFO: 'Permanently delete this file from the file store'
DOEDIT: Save DOEDIT: Save
@ -565,12 +594,15 @@ ms:
FROMFILES: 'From files' FROMFILES: 'From files'
HOTLINKINFO: 'Info: This image will be hotlinked. Please ensure you have permissions from the original site creator to do so.' HOTLINKINFO: 'Info: This image will be hotlinked. Please ensure you have permissions from the original site creator to do so.'
MAXNUMBEROFFILES: 'Max number of {count} file(s) exceeded.' MAXNUMBEROFFILES: 'Max number of {count} file(s) exceeded.'
MAXNUMBEROFFILESONE: 'Can only upload one file'
MAXNUMBEROFFILESSHORT: 'Can only upload {count} files' MAXNUMBEROFFILESSHORT: 'Can only upload {count} files'
OVERWRITEWARNING: 'File with the same name already exists'
REMOVE: Remove REMOVE: Remove
REMOVEERROR: 'Error removing file' REMOVEERROR: 'Error removing file'
REMOVEINFO: 'Remove this file from here, but do not delete it from the file store' REMOVEINFO: 'Remove this file from here, but do not delete it from the file store'
STARTALL: 'Start all' STARTALL: 'Start all'
STARTALLINFO: 'Start all uploads' STARTALLINFO: 'Start all uploads'
Saved: Saved Saved: Saved
UPLOADSINTO: 'saves into /{path}'
Versioned: Versioned:
has_many_Versions: Versi-versi has_many_Versions: Versi-versi

View File

@ -2,6 +2,7 @@ nb:
AssetAdmin: AssetAdmin:
ALLOWEDEXTS: 'Allowed extensions' ALLOWEDEXTS: 'Allowed extensions'
NEWFOLDER: 'Ny Mappe' NEWFOLDER: 'Ny Mappe'
SHOWALLOWEDEXTS: 'Show allowed extensions'
AssetTableField: AssetTableField:
CREATED: 'Først opplastet' CREATED: 'Først opplastet'
DIM: Dimensjoner DIM: Dimensjoner
@ -59,9 +60,9 @@ nb:
ERRORNOTADMIN: 'Denne brukeren er ikke administrator.' ERRORNOTADMIN: 'Denne brukeren er ikke administrator.'
ERRORNOTREC: 'Det brukernavnet / Passord er ikke gjenkjent' ERRORNOTREC: 'Det brukernavnet / Passord er ikke gjenkjent'
Boolean: Boolean:
0: Usant
ANY: Any ANY: Any
1: Sant NOANSWER: 'False'
YESANSWER: 'True'
CMSLoadingScreen.ss: CMSLoadingScreen.ss:
LOADING: 'Laster ...' LOADING: 'Laster ...'
REQUIREJS: 'The CMS requires that you have JavaScript enabled.' REQUIREJS: 'The CMS requires that you have JavaScript enabled.'
@ -70,6 +71,8 @@ nb:
ACCESSALLINTERFACES: 'Adgang til alle CMS-seksjoner' ACCESSALLINTERFACES: 'Adgang til alle CMS-seksjoner'
ACCESSALLINTERFACESHELP: 'Overstyrer mer spesifikke adgangsinnstillinger' ACCESSALLINTERFACESHELP: 'Overstyrer mer spesifikke adgangsinnstillinger'
SAVE: Lagre SAVE: Lagre
CMSPageHistoryController_versions.ss:
PREVIEW: 'Website preview'
CMSProfileController: CMSProfileController:
MENUTITLE: 'My Profile' MENUTITLE: 'My Profile'
ChangePasswordEmail.ss: ChangePasswordEmail.ss:
@ -79,8 +82,8 @@ nb:
HELLO: Hei HELLO: Hei
PASSWORD: Passord PASSWORD: Passord
CheckboxField: CheckboxField:
- Usant NOANSWER: 'False'
- Sant YESANSWER: 'True'
ComplexTableField: ComplexTableField:
CLOSEPOPUP: 'Lukk Popup' CLOSEPOPUP: 'Lukk Popup'
SUCCESSADD2: 'Lagt til {name}' SUCCESSADD2: 'Lagt til {name}'
@ -109,20 +112,21 @@ nb:
PLURALNAME: 'Data Objekter' PLURALNAME: 'Data Objekter'
SINGULARNAME: 'Data Objekt' SINGULARNAME: 'Data Objekt'
Date: Date:
DAY: dag DAY: day
DAYS: dager DAYS: days
HOUR: time HOUR: hour
HOURS: timer HOURS: hours
MIN: minutter LessThanMinuteAgo: 'less than a minute'
MINS: minutter MIN: min
MONTH: måned MINS: mins
MONTHS: måneder MONTH: month
SEC: sekund MONTHS: months
SECS: sekunder SEC: sec
SECS: secs
TIMEDIFFAGO: '{difference} siden' TIMEDIFFAGO: '{difference} siden'
TIMEDIFFIN: 'i {difference}' TIMEDIFFIN: 'i {difference}'
YEAR: år YEAR: year
YEARS: år YEARS: years
DateField: DateField:
NOTSET: mangler NOTSET: mangler
TODAY: 'i dag' TODAY: 'i dag'
@ -198,7 +202,8 @@ nb:
TEXT2: 'passord resett link' TEXT2: 'passord resett link'
TEXT3: for TEXT3: for
Form: Form:
FIELDISREQUIRED: 'mangler %s' CSRF_FAILED_MESSAGE: 'There seems to have been a technical problem. Please click the back button, refresh your browser, and try again.'
FIELDISREQUIRED: '{name} is required'
SubmitBtnLabel: Utfør SubmitBtnLabel: Utfør
VALIDATIONCREDITNUMBER: 'Vennligst sjekk at du har skrevet inn {number} korrekt kortnummer' VALIDATIONCREDITNUMBER: 'Vennligst sjekk at du har skrevet inn {number} korrekt kortnummer'
VALIDATIONNOTUNIQUE: 'Den spesifiserte verdien er ikke unik' VALIDATIONNOTUNIQUE: 'Den spesifiserte verdien er ikke unik'
@ -208,6 +213,7 @@ nb:
VALIDATOR: Validator VALIDATOR: Validator
VALIDCURRENCY: 'Vennligst skriv inn gyldig valuta' VALIDCURRENCY: 'Vennligst skriv inn gyldig valuta'
FormField: FormField:
Example: 'e.g. %s'
NONE: ingen NONE: ingen
GridAction: GridAction:
DELETE_DESCRIPTION: Slett DELETE_DESCRIPTION: Slett
@ -230,6 +236,7 @@ nb:
ResetFilter: Tilbakestille ResetFilter: Tilbakestille
GridFieldAction_Delete: GridFieldAction_Delete:
DeletePermissionsFailure: 'Ikke tillatt å slette' DeletePermissionsFailure: 'Ikke tillatt å slette'
EditPermissionsFailure: 'No permission to unlink record'
GridFieldDetailForm: GridFieldDetailForm:
CancelBtn: Avbryt CancelBtn: Avbryt
Create: Create Create: Create
@ -237,7 +244,9 @@ nb:
DeletePermissionsFailure: 'Ikke tillatt å slette' DeletePermissionsFailure: 'Ikke tillatt å slette'
Deleted: 'Slettet %s %s' Deleted: 'Slettet %s %s'
Save: Lagre Save: Lagre
Saved: 'Lagret %s %s' Saved: 'Saved {name} {link}'
GridFieldEditButton.ss:
EDIT: Edit
GridFieldItemEditView.ss: null GridFieldItemEditView.ss: null
Group: Group:
AddRole: 'Legg en rolle til denne gruppen' AddRole: 'Legg en rolle til denne gruppen'
@ -267,6 +276,7 @@ nb:
ADDURL: 'Legg til URL' ADDURL: 'Legg til URL'
ADJUSTDETAILSDIMENSIONS: 'Details &amp; dimensions' ADJUSTDETAILSDIMENSIONS: 'Details &amp; dimensions'
ANCHORVALUE: Lenke ANCHORVALUE: Lenke
BUTTONADDURL: 'Add url'
BUTTONINSERT: 'Sett inn' BUTTONINSERT: 'Sett inn'
BUTTONINSERTLINK: 'Sett inn lenke' BUTTONINSERTLINK: 'Sett inn lenke'
BUTTONREMOVELINK: 'Fjern lenke' BUTTONREMOVELINK: 'Fjern lenke'
@ -331,6 +341,9 @@ nb:
PreviewButton: Forhåndsvisning PreviewButton: Forhåndsvisning
REORGANISATIONSUCCESSFUL: 'Omorganisering av sidetreet vellykket' REORGANISATIONSUCCESSFUL: 'Omorganisering av sidetreet vellykket'
SAVEDUP: Lagret. SAVEDUP: Lagret.
ShowAsList: 'show as list'
TooManyPages: 'Too many pages'
ValidationError: 'Validation error'
VersionUnknown: Ukjent VersionUnknown: Ukjent
LeftAndMain_Menu.ss: LeftAndMain_Menu.ss:
Hello: Hei Hello: Hei
@ -407,6 +420,7 @@ nb:
TWODIGITMONTH: 'Tosifret måned (01=Januar, etc.)' TWODIGITMONTH: 'Tosifret måned (01=Januar, etc.)'
TWODIGITSECOND: 'Tosifret sekundtall (00 til 59)' TWODIGITSECOND: 'Tosifret sekundtall (00 til 59)'
TWODIGITYEAR: 'Tosifret årstall' TWODIGITYEAR: 'Tosifret årstall'
Toggle: 'Show formatting help'
MemberImportForm: MemberImportForm:
Help1: '<p>Import users in <em>CSV format</em> (comma-separated values). <small><a href="#" class="toggle-advanced">Show advanced usage</a></small></p>' Help1: '<p>Import users in <em>CSV format</em> (comma-separated values). <small><a href="#" class="toggle-advanced">Show advanced usage</a></small></p>'
Help2: '<div class="advanced"> <h4>Advanced usage</h4> <ul> <li>Allowed columns: <em>%s</em></li> <li>Existing users are matched by their unique <em>Code</em> property, and updated with any new values from the imported file.</li> <li>Groups can be assigned by the <em>Groups</em> column. Groups are identified by their <em>Code</em> property, multiple groups can be separated by comma. Existing group memberships are not cleared.</li> </ul></div>' Help2: '<div class="advanced"> <h4>Advanced usage</h4> <ul> <li>Allowed columns: <em>%s</em></li> <li>Existing users are matched by their unique <em>Code</em> property, and updated with any new values from the imported file.</li> <li>Groups can be assigned by the <em>Groups</em> column. Groups are identified by their <em>Code</em> property, multiple groups can be separated by comma. Existing group memberships are not cleared.</li> </ul></div>'
@ -421,7 +435,7 @@ nb:
ModelAdmin: ModelAdmin:
DELETE: Slett DELETE: Slett
DELETEDRECORDS: 'Deleted {count} records.' DELETEDRECORDS: 'Deleted {count} records.'
EMPTYBEFOREIMPORT: 'Clear Database before import' EMPTYBEFOREIMPORT: 'Replace data'
IMPORT: 'Importer fra CSV' IMPORT: 'Importer fra CSV'
IMPORTEDRECORDS: 'Imported {count} records.' IMPORTEDRECORDS: 'Imported {count} records.'
NOCSVFILE: 'Please browse for a CSV file to import' NOCSVFILE: 'Please browse for a CSV file to import'
@ -515,7 +529,20 @@ nb:
BtnImport: 'Importer fra CSV' BtnImport: 'Importer fra CSV'
FileFieldLabel: 'CSV File <small>(Allowed extensions: *.csv)</small>' FileFieldLabel: 'CSV File <small>(Allowed extensions: *.csv)</small>'
SilverStripeNavigator: SilverStripeNavigator:
Auto: Auto
ChangeViewMode: 'Change view mode'
Desktop: Desktop
DualWindowView: 'Dual Window'
Edit: Rediger Edit: Rediger
EditView: 'Edit mode'
Mobile: Mobile
PreviewState: 'Preview State'
PreviewView: 'Preview mode'
Responsive: Responsive
SplitView: 'Split mode'
Tablet: Tablet
ViewDeviceWidth: 'Select a preview width'
Width: width
SimpleImageField: SimpleImageField:
NOUPLOAD: 'Ingen Bilder Lastet Opp' NOUPLOAD: 'Ingen Bilder Lastet Opp'
SiteTree: SiteTree:
@ -551,6 +578,8 @@ nb:
ATTACHFILE: 'Legg ved fil' ATTACHFILE: 'Legg ved fil'
ATTACHFILES: 'Legg ved filer' ATTACHFILES: 'Legg ved filer'
AttachFile: 'Legg ved fil(er)' AttachFile: 'Legg ved fil(er)'
CHOOSEANOTHERFILE: 'Choose another file'
CHOOSEANOTHERINFO: 'Replace this file with another one from the file store'
DELETE: 'Slett fra filer' DELETE: 'Slett fra filer'
DELETEINFO: 'Slett filen permament fra filarkivet' DELETEINFO: 'Slett filen permament fra filarkivet'
DOEDIT: Lagre DOEDIT: Lagre
@ -565,12 +594,15 @@ nb:
FROMFILES: 'Fra filer' FROMFILES: 'Fra filer'
HOTLINKINFO: 'Info: Dette bildet vil bli lenket direkte til opprinnelig kilde. Vennligst forsikre deg om at du har tillatelse fra den opprinnelige rettighetshaveren til å gjøre dette.' HOTLINKINFO: 'Info: Dette bildet vil bli lenket direkte til opprinnelig kilde. Vennligst forsikre deg om at du har tillatelse fra den opprinnelige rettighetshaveren til å gjøre dette.'
MAXNUMBEROFFILES: 'Maks antall {count} fil(er) overskredet' MAXNUMBEROFFILES: 'Maks antall {count} fil(er) overskredet'
MAXNUMBEROFFILESONE: 'Can only upload one file'
MAXNUMBEROFFILESSHORT: 'Kan kun laste opp {count} filer' MAXNUMBEROFFILESSHORT: 'Kan kun laste opp {count} filer'
OVERWRITEWARNING: 'File with the same name already exists'
REMOVE: Fjern REMOVE: Fjern
REMOVEERROR: 'Feil ved fjerning av fil' REMOVEERROR: 'Feil ved fjerning av fil'
REMOVEINFO: 'Fjern filen herfra, men ikke slett den fra filarkivet' REMOVEINFO: 'Fjern filen herfra, men ikke slett den fra filarkivet'
STARTALL: 'Start alle' STARTALL: 'Start alle'
STARTALLINFO: 'Start alle opplastinger' STARTALLINFO: 'Start alle opplastinger'
Saved: Lagret Saved: Lagret
UPLOADSINTO: 'saves into /{path}'
Versioned: Versioned:
has_many_Versions: Versjoner has_many_Versions: Versjoner

View File

@ -2,6 +2,7 @@ ne:
AssetAdmin: AssetAdmin:
ALLOWEDEXTS: 'Allowed extensions' ALLOWEDEXTS: 'Allowed extensions'
NEWFOLDER: NewFolder NEWFOLDER: NewFolder
SHOWALLOWEDEXTS: 'Show allowed extensions'
AssetTableField: AssetTableField:
CREATED: 'First uploaded' CREATED: 'First uploaded'
DIM: Dimensions DIM: Dimensions
@ -59,9 +60,9 @@ ne:
ERRORNOTADMIN: 'यो प्रयोगकता मुख्य प्रयोगकता होइन' ERRORNOTADMIN: 'यो प्रयोगकता मुख्य प्रयोगकता होइन'
ERRORNOTREC: 'त्यो प्रयोगकता / पासओड बुझन् सकिएन' ERRORNOTREC: 'त्यो प्रयोगकता / पासओड बुझन् सकिएन'
Boolean: Boolean:
0: 'False'
ANY: Any ANY: Any
1: 'True' NOANSWER: 'False'
YESANSWER: 'True'
CMSLoadingScreen.ss: CMSLoadingScreen.ss:
LOADING: Loading... LOADING: Loading...
REQUIREJS: 'The CMS requires that you have JavaScript enabled.' REQUIREJS: 'The CMS requires that you have JavaScript enabled.'
@ -70,6 +71,8 @@ ne:
ACCESSALLINTERFACES: 'Access to all CMS sections' ACCESSALLINTERFACES: 'Access to all CMS sections'
ACCESSALLINTERFACESHELP: 'Overrules more specific access settings.' ACCESSALLINTERFACESHELP: 'Overrules more specific access settings.'
SAVE: Save SAVE: Save
CMSPageHistoryController_versions.ss:
PREVIEW: 'Website preview'
CMSProfileController: CMSProfileController:
MENUTITLE: 'My Profile' MENUTITLE: 'My Profile'
ChangePasswordEmail.ss: ChangePasswordEmail.ss:
@ -79,8 +82,8 @@ ne:
HELLO: हाई HELLO: हाई
PASSWORD: Password PASSWORD: Password
CheckboxField: CheckboxField:
- 'False' NOANSWER: 'False'
- 'True' YESANSWER: 'True'
ComplexTableField: ComplexTableField:
CLOSEPOPUP: 'Close Popup' CLOSEPOPUP: 'Close Popup'
SUCCESSADD2: 'Added {name}' SUCCESSADD2: 'Added {name}'
@ -109,20 +112,21 @@ ne:
PLURALNAME: 'Data Objects' PLURALNAME: 'Data Objects'
SINGULARNAME: 'Data Object' SINGULARNAME: 'Data Object'
Date: Date:
DAY: दिन DAY: day
DAYS: दिनहरु DAYS: days
HOUR: घण्टा HOUR: hour
HOURS: घण्टाहरु HOURS: hours
MIN: मिनेट LessThanMinuteAgo: 'less than a minute'
MINS: मिनेटहरु MIN: min
MONTH: महिना MINS: mins
MONTHS: महिनाहरु MONTH: month
SEC: सेकेन्ड MONTHS: months
SECS: सेकेन्डहरु SEC: sec
SECS: secs
TIMEDIFFAGO: '{difference} ago' TIMEDIFFAGO: '{difference} ago'
TIMEDIFFIN: 'in {difference}' TIMEDIFFIN: 'in {difference}'
YEAR: बर्ष YEAR: year
YEARS: बर्षाहरु YEARS: years
DateField: DateField:
NOTSET: 'not set' NOTSET: 'not set'
TODAY: today TODAY: today
@ -198,7 +202,8 @@ ne:
TEXT2: 'password reset link' TEXT2: 'password reset link'
TEXT3: for TEXT3: for
Form: Form:
FIELDISREQUIRED: '%s चाहिन्छ' CSRF_FAILED_MESSAGE: 'There seems to have been a technical problem. Please click the back button, refresh your browser, and try again.'
FIELDISREQUIRED: '{name} is required'
SubmitBtnLabel: Go SubmitBtnLabel: Go
VALIDATIONCREDITNUMBER: 'Please ensure you have entered the {number} credit card number correctly' VALIDATIONCREDITNUMBER: 'Please ensure you have entered the {number} credit card number correctly'
VALIDATIONNOTUNIQUE: 'लेखिएको मान भिन्न छैन ' VALIDATIONNOTUNIQUE: 'लेखिएको मान भिन्न छैन '
@ -208,6 +213,7 @@ ne:
VALIDATOR: Validator VALIDATOR: Validator
VALIDCURRENCY: 'Please enter a valid currency' VALIDCURRENCY: 'Please enter a valid currency'
FormField: FormField:
Example: 'e.g. %s'
NONE: none NONE: none
GridAction: GridAction:
DELETE_DESCRIPTION: Delete DELETE_DESCRIPTION: Delete
@ -230,6 +236,7 @@ ne:
ResetFilter: Reset ResetFilter: Reset
GridFieldAction_Delete: GridFieldAction_Delete:
DeletePermissionsFailure: 'No delete permissions' DeletePermissionsFailure: 'No delete permissions'
EditPermissionsFailure: 'No permission to unlink record'
GridFieldDetailForm: GridFieldDetailForm:
CancelBtn: Cancel CancelBtn: Cancel
Create: Create Create: Create
@ -237,7 +244,9 @@ ne:
DeletePermissionsFailure: 'No delete permissions' DeletePermissionsFailure: 'No delete permissions'
Deleted: 'Deleted %s %s' Deleted: 'Deleted %s %s'
Save: Save Save: Save
Saved: 'Saved %s %s' Saved: 'Saved {name} {link}'
GridFieldEditButton.ss:
EDIT: Edit
GridFieldItemEditView.ss: null GridFieldItemEditView.ss: null
Group: Group:
AddRole: 'Add a role for this group' AddRole: 'Add a role for this group'
@ -267,6 +276,7 @@ ne:
ADDURL: 'Add URL' ADDURL: 'Add URL'
ADJUSTDETAILSDIMENSIONS: 'Details &amp; dimensions' ADJUSTDETAILSDIMENSIONS: 'Details &amp; dimensions'
ANCHORVALUE: Anchor ANCHORVALUE: Anchor
BUTTONADDURL: 'Add url'
BUTTONINSERT: Insert BUTTONINSERT: Insert
BUTTONINSERTLINK: 'लिन्क राखनुहोस्' BUTTONINSERTLINK: 'लिन्क राखनुहोस्'
BUTTONREMOVELINK: 'लिन्क हटाउनुहोस्' BUTTONREMOVELINK: 'लिन्क हटाउनुहोस्'
@ -331,7 +341,10 @@ ne:
PreviewButton: Preview PreviewButton: Preview
REORGANISATIONSUCCESSFUL: 'Reorganised the site tree successfully.' REORGANISATIONSUCCESSFUL: 'Reorganised the site tree successfully.'
SAVEDUP: Saved. SAVEDUP: Saved.
VersionUnknown: unknown ShowAsList: 'show as list'
TooManyPages: 'Too many pages'
ValidationError: 'Validation error'
VersionUnknown: Unknown
LeftAndMain_Menu.ss: LeftAndMain_Menu.ss:
Hello: Hi Hello: Hi
LOGOUT: 'Log out' LOGOUT: 'Log out'
@ -407,6 +420,7 @@ ne:
TWODIGITMONTH: 'Two-digit month (01=January, etc.)' TWODIGITMONTH: 'Two-digit month (01=January, etc.)'
TWODIGITSECOND: 'Two digits of second (00 through 59)' TWODIGITSECOND: 'Two digits of second (00 through 59)'
TWODIGITYEAR: 'Two-digit year' TWODIGITYEAR: 'Two-digit year'
Toggle: 'Show formatting help'
MemberImportForm: MemberImportForm:
Help1: '<p>Import users in <em>CSV format</em> (comma-separated values). <small><a href="#" class="toggle-advanced">Show advanced usage</a></small></p>' Help1: '<p>Import users in <em>CSV format</em> (comma-separated values). <small><a href="#" class="toggle-advanced">Show advanced usage</a></small></p>'
Help2: '<div class="advanced"> <h4>Advanced usage</h4> <ul> <li>Allowed columns: <em>%s</em></li> <li>Existing users are matched by their unique <em>Code</em> property, and updated with any new values from the imported file.</li> <li>Groups can be assigned by the <em>Groups</em> column. Groups are identified by their <em>Code</em> property, multiple groups can be separated by comma. Existing group memberships are not cleared.</li> </ul></div>' Help2: '<div class="advanced"> <h4>Advanced usage</h4> <ul> <li>Allowed columns: <em>%s</em></li> <li>Existing users are matched by their unique <em>Code</em> property, and updated with any new values from the imported file.</li> <li>Groups can be assigned by the <em>Groups</em> column. Groups are identified by their <em>Code</em> property, multiple groups can be separated by comma. Existing group memberships are not cleared.</li> </ul></div>'
@ -421,7 +435,7 @@ ne:
ModelAdmin: ModelAdmin:
DELETE: Delete DELETE: Delete
DELETEDRECORDS: 'Deleted {count} records.' DELETEDRECORDS: 'Deleted {count} records.'
EMPTYBEFOREIMPORT: 'Clear Database before import' EMPTYBEFOREIMPORT: 'Replace data'
IMPORT: 'Import from CSV' IMPORT: 'Import from CSV'
IMPORTEDRECORDS: 'Imported {count} records.' IMPORTEDRECORDS: 'Imported {count} records.'
NOCSVFILE: 'Please browse for a CSV file to import' NOCSVFILE: 'Please browse for a CSV file to import'
@ -515,7 +529,20 @@ ne:
BtnImport: 'Import from CSV' BtnImport: 'Import from CSV'
FileFieldLabel: 'CSV File <small>(Allowed extensions: *.csv)</small>' FileFieldLabel: 'CSV File <small>(Allowed extensions: *.csv)</small>'
SilverStripeNavigator: SilverStripeNavigator:
Auto: Auto
ChangeViewMode: 'Change view mode'
Desktop: Desktop
DualWindowView: 'Dual Window'
Edit: Edit Edit: Edit
EditView: 'Edit mode'
Mobile: Mobile
PreviewState: 'Preview State'
PreviewView: 'Preview mode'
Responsive: Responsive
SplitView: 'Split mode'
Tablet: Tablet
ViewDeviceWidth: 'Select a preview width'
Width: width
SimpleImageField: SimpleImageField:
NOUPLOAD: 'कुनै पनि तस्बिर उप्लोओद गरिएको छैन ' NOUPLOAD: 'कुनै पनि तस्बिर उप्लोओद गरिएको छैन '
SiteTree: SiteTree:
@ -551,6 +578,8 @@ ne:
ATTACHFILE: 'Attach a file' ATTACHFILE: 'Attach a file'
ATTACHFILES: 'Attach files' ATTACHFILES: 'Attach files'
AttachFile: 'Attach file(s)' AttachFile: 'Attach file(s)'
CHOOSEANOTHERFILE: 'Choose another file'
CHOOSEANOTHERINFO: 'Replace this file with another one from the file store'
DELETE: 'Delete from files' DELETE: 'Delete from files'
DELETEINFO: 'Permanently delete this file from the file store' DELETEINFO: 'Permanently delete this file from the file store'
DOEDIT: Save DOEDIT: Save
@ -565,12 +594,15 @@ ne:
FROMFILES: 'From files' FROMFILES: 'From files'
HOTLINKINFO: 'Info: This image will be hotlinked. Please ensure you have permissions from the original site creator to do so.' HOTLINKINFO: 'Info: This image will be hotlinked. Please ensure you have permissions from the original site creator to do so.'
MAXNUMBEROFFILES: 'Max number of {count} file(s) exceeded.' MAXNUMBEROFFILES: 'Max number of {count} file(s) exceeded.'
MAXNUMBEROFFILESONE: 'Can only upload one file'
MAXNUMBEROFFILESSHORT: 'Can only upload {count} files' MAXNUMBEROFFILESSHORT: 'Can only upload {count} files'
OVERWRITEWARNING: 'File with the same name already exists'
REMOVE: Remove REMOVE: Remove
REMOVEERROR: 'Error removing file' REMOVEERROR: 'Error removing file'
REMOVEINFO: 'Remove this file from here, but do not delete it from the file store' REMOVEINFO: 'Remove this file from here, but do not delete it from the file store'
STARTALL: 'Start all' STARTALL: 'Start all'
STARTALLINFO: 'Start all uploads' STARTALLINFO: 'Start all uploads'
Saved: Saved Saved: Saved
UPLOADSINTO: 'saves into /{path}'
Versioned: Versioned:
has_many_Versions: Versions has_many_Versions: Versions

View File

@ -2,6 +2,7 @@ nl:
AssetAdmin: AssetAdmin:
ALLOWEDEXTS: 'Toegestane extensies' ALLOWEDEXTS: 'Toegestane extensies'
NEWFOLDER: 'Nieuwe Map' NEWFOLDER: 'Nieuwe Map'
SHOWALLOWEDEXTS: 'Toon toegestane extensies'
AssetTableField: AssetTableField:
CREATED: 'Eerste upload' CREATED: 'Eerste upload'
DIM: Dimensies DIM: Dimensies
@ -59,9 +60,9 @@ nl:
ERRORNOTADMIN: 'Die gebruiker is geen beheerder.' ERRORNOTADMIN: 'Die gebruiker is geen beheerder.'
ERRORNOTREC: 'De gebruikersnaam en/of wachtwoord wordt niet herkend' ERRORNOTREC: 'De gebruikersnaam en/of wachtwoord wordt niet herkend'
Boolean: Boolean:
0: Nee
ANY: Elke ANY: Elke
1: Ja NOANSWER: Nee
YESANSWER: Ja
CMSLoadingScreen.ss: CMSLoadingScreen.ss:
LOADING: 'Bezig met laden...' LOADING: 'Bezig met laden...'
REQUIREJS: 'Het CMS heeft JavaScript nodig om te werken.' REQUIREJS: 'Het CMS heeft JavaScript nodig om te werken.'
@ -70,6 +71,8 @@ nl:
ACCESSALLINTERFACES: 'Toegang tot alle CMS onderdelen' ACCESSALLINTERFACES: 'Toegang tot alle CMS onderdelen'
ACCESSALLINTERFACESHELP: 'Overstemt meer specifieke toegangsinstellingen' ACCESSALLINTERFACESHELP: 'Overstemt meer specifieke toegangsinstellingen'
SAVE: Bewaar SAVE: Bewaar
CMSPageHistoryController_versions.ss:
PREVIEW: 'Website voorbeeld'
CMSProfileController: CMSProfileController:
MENUTITLE: 'Mijn Profiel' MENUTITLE: 'Mijn Profiel'
ChangePasswordEmail.ss: ChangePasswordEmail.ss:
@ -79,8 +82,8 @@ nl:
HELLO: Hallo HELLO: Hallo
PASSWORD: Wachtwoord PASSWORD: Wachtwoord
CheckboxField: CheckboxField:
- Nee NOANSWER: Nee
- Ja YESANSWER: Ja
ComplexTableField: ComplexTableField:
CLOSEPOPUP: 'Sluit Popup' CLOSEPOPUP: 'Sluit Popup'
SUCCESSADD2: 'Toegevoegd {name}' SUCCESSADD2: 'Toegevoegd {name}'
@ -113,11 +116,12 @@ nl:
DAYS: dagen DAYS: dagen
HOUR: uur HOUR: uur
HOURS: uren HOURS: uren
LessThanMinuteAgo: 'minder dan één minuut'
MIN: minuut MIN: minuut
MINS: minuten MINS: minuten
MONTH: maand MONTH: maand
MONTHS: maanden MONTHS: maanden
SEC: seconde SEC: second
SECS: seconden SECS: seconden
TIMEDIFFAGO: '{difference} geleden' TIMEDIFFAGO: '{difference} geleden'
TIMEDIFFIN: '{difference} geleden' TIMEDIFFIN: '{difference} geleden'
@ -198,7 +202,8 @@ nl:
TEXT2: 'wachtwoord reset link' TEXT2: 'wachtwoord reset link'
TEXT3: voor TEXT3: voor
Form: Form:
FIELDISREQUIRED: '%s is verplicht' CSRF_FAILED_MESSAGE: 'Er lijkt een technisch probleem te zijn. Klikt u op de knop terug, vernieuw uw browser, en probeer het opnieuw.'
FIELDISREQUIRED: '{name} is verplicht'
SubmitBtnLabel: Gaan SubmitBtnLabel: Gaan
VALIDATIONCREDITNUMBER: 'Gelieve uw credit card number {number} juist in te vullen' VALIDATIONCREDITNUMBER: 'Gelieve uw credit card number {number} juist in te vullen'
VALIDATIONNOTUNIQUE: 'De ingevoerde waarde is niet uniek' VALIDATIONNOTUNIQUE: 'De ingevoerde waarde is niet uniek'
@ -208,6 +213,7 @@ nl:
VALIDATOR: Controleur VALIDATOR: Controleur
VALIDCURRENCY: 'Vul een geldige valuta in' VALIDCURRENCY: 'Vul een geldige valuta in'
FormField: FormField:
Example: 'e.g. %s'
NONE: geen NONE: geen
GridAction: GridAction:
DELETE_DESCRIPTION: Verwijderen DELETE_DESCRIPTION: Verwijderen
@ -230,6 +236,7 @@ nl:
ResetFilter: Herstellen ResetFilter: Herstellen
GridFieldAction_Delete: GridFieldAction_Delete:
DeletePermissionsFailure: 'Onvoldoende rechten om te verwijderen' DeletePermissionsFailure: 'Onvoldoende rechten om te verwijderen'
EditPermissionsFailure: 'No permission to unlink record'
GridFieldDetailForm: GridFieldDetailForm:
CancelBtn: Annuleren CancelBtn: Annuleren
Create: Creëren Create: Creëren
@ -237,7 +244,9 @@ nl:
DeletePermissionsFailure: 'Onvoldoende rechten om te verwijderen' DeletePermissionsFailure: 'Onvoldoende rechten om te verwijderen'
Deleted: '%s %s verwijderd' Deleted: '%s %s verwijderd'
Save: Opslaan Save: Opslaan
Saved: '%s %s opgeslagen' Saved: '{name} {link} opgeslagen'
GridFieldEditButton.ss:
EDIT: Bewerken
GridFieldItemEditView.ss: null GridFieldItemEditView.ss: null
Group: Group:
AddRole: 'Voeg een rol toe aan deze groep' AddRole: 'Voeg een rol toe aan deze groep'
@ -257,7 +266,7 @@ nl:
many_many_Members: Leden many_many_Members: Leden
GroupImportForm: GroupImportForm:
Help1: '<p>Importeer en of meerdere groepen in <em>CSV</em> formaat (Kommagescheiden bestandsformaat). <small><a href="#" class="toggle-advanced">Toon geavanceerd gebruik</a></small></p>' Help1: '<p>Importeer en of meerdere groepen in <em>CSV</em> formaat (Kommagescheiden bestandsformaat). <small><a href="#" class="toggle-advanced">Toon geavanceerd gebruik</a></small></p>'
Help2: '<div class="advanced"> <h4>Advanced usage</h4> <ul> <li>Allowed columns: <em>%s</em></li> <li>Existing groups are matched by their unique <em>Code</em> value, and updated with any new values from the imported file</li> <li>Group hierarchies can be created by using a <em>ParentCode</em> column.</li> <li>Permission codes can be assigned by the <em>PermissionCode</em> column. Existing permission codes are not cleared.</li> </ul></div>' Help2: "<div class=\"advanced\">\\n<h4>Geavanceerd gebruik</h4>\\n<ul>\\n<li>Toegestane kolommen: <em>%s</em></li>\\n<li>Bestaande leden worden geïdentificeerd door middel van hun unieke <em>Code</em> waarde en aangepast met de nieuwe waarden van het geïmporteerde bestand</li>\\n<li>Groepen kunnen toegewezen worden met de <em>Groups</em> kolom. Groepen worden geïdentificeerd met hun <em>Code</em> waarde en meerdere groepen kunnen worden gescheiden met een komma. Bestaande groep lidmaatschappen worden niet gewist.</li>\\n</ul>\\n</div>\\n</ul>\\n</div>\\n"
ResultCreated: '{count} groepen aangemaakt' ResultCreated: '{count} groepen aangemaakt'
ResultDeleted: '%d groepen verwijderd' ResultDeleted: '%d groepen verwijderd'
ResultUpdated: '%d groepen aangepast' ResultUpdated: '%d groepen aangepast'
@ -267,6 +276,7 @@ nl:
ADDURL: 'Voeg URL toe' ADDURL: 'Voeg URL toe'
ADJUSTDETAILSDIMENSIONS: 'Details $amp; afmeting' ADJUSTDETAILSDIMENSIONS: 'Details $amp; afmeting'
ANCHORVALUE: Anker ANCHORVALUE: Anker
BUTTONADDURL: 'Voeg URL toe'
BUTTONINSERT: Invoegen BUTTONINSERT: Invoegen
BUTTONINSERTLINK: 'Link invoegen' BUTTONINSERTLINK: 'Link invoegen'
BUTTONREMOVELINK: 'Link verwijderen' BUTTONREMOVELINK: 'Link verwijderen'
@ -287,7 +297,7 @@ nl:
FindInFolder: 'Zoek in map' FindInFolder: 'Zoek in map'
IMAGEALT: 'Alternatieve tekst (alt tekst) - wordt getoond als de afbeelding niet kan worden geladen' IMAGEALT: 'Alternatieve tekst (alt tekst) - wordt getoond als de afbeelding niet kan worden geladen'
IMAGEALTTEXT: 'Alternatieve tekst (alt tekst) - wordt getoond als de afbeelding niet kan worden geladen' IMAGEALTTEXT: 'Alternatieve tekst (alt tekst) - wordt getoond als de afbeelding niet kan worden geladen'
IMAGEALTTEXTDESC: 'Shown to screen readers or if image can not be displayed' IMAGEALTTEXTDESC: 'Getoond voor schermlezers of als afbeelding niet kan worden weergegeven'
IMAGEDIMENSIONS: Dimensies IMAGEDIMENSIONS: Dimensies
IMAGEHEIGHTPX: Hoogte IMAGEHEIGHTPX: Hoogte
IMAGETITLE: 'Titel tekst (tooltip) - Toon extra informatie over de afbeelding' IMAGETITLE: 'Titel tekst (tooltip) - Toon extra informatie over de afbeelding'
@ -331,6 +341,9 @@ nl:
PreviewButton: Preview PreviewButton: Preview
REORGANISATIONSUCCESSFUL: 'Menu-indeling is aangepast' REORGANISATIONSUCCESSFUL: 'Menu-indeling is aangepast'
SAVEDUP: 'Succesvol opgeslagen' SAVEDUP: 'Succesvol opgeslagen'
ShowAsList: 'Laat als lijst zien'
TooManyPages: 'Te veel pagina''s'
ValidationError: Validatiefout
VersionUnknown: onbekend VersionUnknown: onbekend
LeftAndMain_Menu.ss: LeftAndMain_Menu.ss:
Hello: Hallo Hello: Hallo
@ -374,7 +387,7 @@ nl:
SURNAME: Achternaam SURNAME: Achternaam
TIMEFORMAT: 'Tijd formaat' TIMEFORMAT: 'Tijd formaat'
VALIDATIONMEMBEREXISTS: 'Er bestaat al een lid met dit emailadres, %s' VALIDATIONMEMBEREXISTS: 'Er bestaat al een lid met dit emailadres, %s'
ValidationIdentifierFailed: 'Can''t overwrite existing member #{id} with identical identifier ({name} = {value}))' ValidationIdentifierFailed: 'Een bestaande gebruiker #{id} kan niet dezelfde unieke velden hebben ({name} = {value}))'
WELCOMEBACK: 'Welkom terug {firstname}' WELCOMEBACK: 'Welkom terug {firstname}'
YOUROLDPASSWORD: 'Uw oude wachtwoord' YOUROLDPASSWORD: 'Uw oude wachtwoord'
belongs_many_many_Groups: Groepen belongs_many_many_Groups: Groepen
@ -392,7 +405,7 @@ nl:
Custom: Aangepast Custom: Aangepast
DATEFORMATBAD: 'Datum is niet correct opgegeven' DATEFORMATBAD: 'Datum is niet correct opgegeven'
DAYNOLEADING: 'Dag van de maand zonder voorloop-nul' DAYNOLEADING: 'Dag van de maand zonder voorloop-nul'
DIGITSDECFRACTIONSECOND: 'One or more digits representing a decimal fraction of a second' DIGITSDECFRACTIONSECOND: 'Een of meer cijfers die een decimale fractie van een seconde'
FOURDIGITYEAR: 'jaar (yyyy)' FOURDIGITYEAR: 'jaar (yyyy)'
FULLNAMEMONTH: 'Volledige naam van de maand (Bijv. Juni)' FULLNAMEMONTH: 'Volledige naam van de maand (Bijv. Juni)'
HOURNOLEADING: 'Uur zonder voorloopnul' HOURNOLEADING: 'Uur zonder voorloopnul'
@ -407,9 +420,10 @@ nl:
TWODIGITMONTH: 'Maand in twee cijfers (01 = januari, enz.)' TWODIGITMONTH: 'Maand in twee cijfers (01 = januari, enz.)'
TWODIGITSECOND: 'Twee cijfer van het uur (00 tot 23)' TWODIGITSECOND: 'Twee cijfer van het uur (00 tot 23)'
TWODIGITYEAR: 'Twee-cijferig jaar' TWODIGITYEAR: 'Twee-cijferig jaar'
Toggle: 'Toon opmaak hulp'
MemberImportForm: MemberImportForm:
Help1: '<p>Importeer leden in <em>CSV</em> formaat (Kommagescheiden bestandsformaat). <small><a href="#" class="toggle-advanced">Toon geavanceerd gebruik</a></small></p>' Help1: '<p>Importeer leden in <em>CSV</em> formaat (Kommagescheiden bestandsformaat). <small><a href="#" class="toggle-advanced">Toon geavanceerd gebruik</a></small></p>'
Help2: '<div class="advanced"> <h4>Advanced usage</h4> <ul> <li>Allowed columns: <em>%s</em></li> <li>Existing users are matched by their unique <em>Code</em> property, and updated with any new values from the imported file.</li> <li>Groups can be assigned by the <em>Groups</em> column. Groups are identified by their <em>Code</em> property, multiple groups can be separated by comma. Existing group memberships are not cleared.</li> </ul></div>' Help2: "<div class=\"advanced\">\\n<h4>Geavanceerd gebruik</h4>\\n<ul>\\n<li>Toegestane kolommen: <em>%s</em></li>\\n<li>Bestaande leden worden geïdentificeerd door middel van hun unieke <em>Code</em> waarde en aangepast met de nieuwe waarden van het geïmporteerde bestand</li>\\n<li>Groepen kunnen toegewezen worden met de <em>Groups</em> kolom. Groepen worden geïdentificeerd met hun <em>Code</em> waarde en meerdere groepen kunnen worden gescheiden met een komma. Bestaande groep lidmaatschappen worden niet gewist.</li>\\n</ul>\\n</div>\\n</ul>\\n</div>\\n"
ResultCreated: '{count} leden aangemaakt' ResultCreated: '{count} leden aangemaakt'
ResultDeleted: '%d leden verwijderd' ResultDeleted: '%d leden verwijderd'
ResultNone: 'Geen wijzingen' ResultNone: 'Geen wijzingen'
@ -421,7 +435,7 @@ nl:
ModelAdmin: ModelAdmin:
DELETE: Verwijderen DELETE: Verwijderen
DELETEDRECORDS: '{count} records verwijderd' DELETEDRECORDS: '{count} records verwijderd'
EMPTYBEFOREIMPORT: 'Database legen voor importeren' EMPTYBEFOREIMPORT: 'Vervang gegevens'
IMPORT: 'Importeren vanuit CSV' IMPORT: 'Importeren vanuit CSV'
IMPORTEDRECORDS: '{count} records geïmporteerd' IMPORTEDRECORDS: '{count} records geïmporteerd'
NOCSVFILE: 'Selecteer een CSV bestand op uw computer om te importeren' NOCSVFILE: 'Selecteer een CSV bestand op uw computer om te importeren'
@ -459,8 +473,8 @@ nl:
SINGULARNAME: Machtiging SINGULARNAME: Machtiging
PermissionCheckboxSetField: PermissionCheckboxSetField:
AssignedTo: 'toegewezen aan "{title}"' AssignedTo: 'toegewezen aan "{title}"'
FromGroup: 'inherited from group "{title}"' FromGroup: 'geërfd van de groep "{title}"'
FromRole: 'inherited from role "{title}"' FromRole: 'geërfd van de rol "{title}"'
FromRoleOnGroup: 'geërfd van rol "%s" in groep "%s"' FromRoleOnGroup: 'geërfd van rol "%s" in groep "%s"'
PermissionRole: PermissionRole:
OnlyAdminCanApply: 'Alleen admin kan doorvoeren' OnlyAdminCanApply: 'Alleen admin kan doorvoeren'
@ -472,7 +486,7 @@ nl:
SINGULARNAME: 'Machtigingen rol code' SINGULARNAME: 'Machtigingen rol code'
Permissions: Permissions:
PERMISSIONS_CATEGORY: 'Rollen en toegangsrechten' PERMISSIONS_CATEGORY: 'Rollen en toegangsrechten'
UserPermissionsIntro: 'Assigning groups to this user will adjust the permissions they have. See the groups section for details of permissions on individual groups.' UserPermissionsIntro: 'Groepen aan deze gebruiker toewijzen zullen de permissies aanpassen. Zie de sectie groepen voor meer informatie over machtigingen voor afzonderlijke groepen.'
PhoneNumberField: PhoneNumberField:
VALIDATION: 'Voer een geldig telefoonnummer in' VALIDATION: 'Voer een geldig telefoonnummer in'
RelationComplexTableField.ss: RelationComplexTableField.ss:
@ -515,7 +529,20 @@ nl:
BtnImport: Importeer BtnImport: Importeer
FileFieldLabel: 'CSV Bestand <small>(Toegestane extensies: *.csv)</small>' FileFieldLabel: 'CSV Bestand <small>(Toegestane extensies: *.csv)</small>'
SilverStripeNavigator: SilverStripeNavigator:
Auto: Automatisch
ChangeViewMode: 'Wijzig weergavemodus'
Desktop: Desktop
DualWindowView: Dubbelvenster
Edit: Bewerken Edit: Bewerken
EditView: Bewerkmodus
Mobile: Mobiel
PreviewState: Voorbeeldstatus
PreviewView: Voorbeeldmodus
Responsive: Responsive
SplitView: Split-modus
Tablet: Tablet
ViewDeviceWidth: 'Selecteer een voorbeeldbreedte'
Width: breedte
SimpleImageField: SimpleImageField:
NOUPLOAD: 'Geen afbeeldingen ontvangen' NOUPLOAD: 'Geen afbeeldingen ontvangen'
SiteTree: SiteTree:
@ -551,6 +578,8 @@ nl:
ATTACHFILE: 'Voeg een bestand toe' ATTACHFILE: 'Voeg een bestand toe'
ATTACHFILES: 'Voeg bestanden toe' ATTACHFILES: 'Voeg bestanden toe'
AttachFile: 'Voeg bestand(en) toe' AttachFile: 'Voeg bestand(en) toe'
CHOOSEANOTHERFILE: 'Kies een ander bestand'
CHOOSEANOTHERINFO: 'Vervang dit bestand met een ander uit de bestandsopslag'
DELETE: 'Volledig verwijderen' DELETE: 'Volledig verwijderen'
DELETEINFO: 'Verwijder dit bestand uit bestandsopslag van de website.' DELETEINFO: 'Verwijder dit bestand uit bestandsopslag van de website.'
DOEDIT: Opslaan DOEDIT: Opslaan
@ -565,12 +594,15 @@ nl:
FROMFILES: 'Bestaande bestanden' FROMFILES: 'Bestaande bestanden'
HOTLINKINFO: 'Info: Deze afbeelding wordt hotlinked. Zorg ervoor dat u de machtigingen van de oorspronkelijke site maker om dit te doen.' HOTLINKINFO: 'Info: Deze afbeelding wordt hotlinked. Zorg ervoor dat u de machtigingen van de oorspronkelijke site maker om dit te doen.'
MAXNUMBEROFFILES: 'Maximale aantal van {count} bestand(en) overschreden.' MAXNUMBEROFFILES: 'Maximale aantal van {count} bestand(en) overschreden.'
MAXNUMBEROFFILESONE: 'Kan slechts één bestand uploaden'
MAXNUMBEROFFILESSHORT: 'Kan alleen {count} bestanden uploaden' MAXNUMBEROFFILESSHORT: 'Kan alleen {count} bestanden uploaden'
OVERWRITEWARNING: 'Bestand met dezelfde naam bestaat al'
REMOVE: Verwijder REMOVE: Verwijder
REMOVEERROR: 'Fout bij verwijderen' REMOVEERROR: 'Fout bij verwijderen'
REMOVEINFO: 'Verwijder (ontkoppel) dit bestand, maar behoud het in bestandsopslag van de website.' REMOVEINFO: 'Verwijder (ontkoppel) dit bestand, maar behoud het in bestandsopslag van de website.'
STARTALL: 'Start alle' STARTALL: 'Start alle'
STARTALLINFO: 'Start alle' STARTALLINFO: 'Start alle'
Saved: Opgeslagen Saved: Opgeslagen
UPLOADSINTO: 'Word opgeslagen in /{path}'
Versioned: Versioned:
has_many_Versions: Versies has_many_Versions: Versies

View File

@ -2,6 +2,7 @@ pa:
AssetAdmin: AssetAdmin:
ALLOWEDEXTS: 'Allowed extensions' ALLOWEDEXTS: 'Allowed extensions'
NEWFOLDER: NewFolder NEWFOLDER: NewFolder
SHOWALLOWEDEXTS: 'Show allowed extensions'
AssetTableField: AssetTableField:
CREATED: 'First uploaded' CREATED: 'First uploaded'
DIM: Dimensions DIM: Dimensions
@ -59,9 +60,9 @@ pa:
ERRORNOTADMIN: 'ਇਹ user ਪ੍ਰਬੰਧਕ ਨਹੀ ਹੈ।' ERRORNOTADMIN: 'ਇਹ user ਪ੍ਰਬੰਧਕ ਨਹੀ ਹੈ।'
ERRORNOTREC: 'That username / password isn''t recognised' ERRORNOTREC: 'That username / password isn''t recognised'
Boolean: Boolean:
0: 'False'
ANY: Any ANY: Any
1: 'True' NOANSWER: 'False'
YESANSWER: 'True'
CMSLoadingScreen.ss: CMSLoadingScreen.ss:
LOADING: Loading... LOADING: Loading...
REQUIREJS: 'The CMS requires that you have JavaScript enabled.' REQUIREJS: 'The CMS requires that you have JavaScript enabled.'
@ -70,6 +71,8 @@ pa:
ACCESSALLINTERFACES: 'Access to all CMS sections' ACCESSALLINTERFACES: 'Access to all CMS sections'
ACCESSALLINTERFACESHELP: 'Overrules more specific access settings.' ACCESSALLINTERFACESHELP: 'Overrules more specific access settings.'
SAVE: Save SAVE: Save
CMSPageHistoryController_versions.ss:
PREVIEW: 'Website preview'
CMSProfileController: CMSProfileController:
MENUTITLE: 'My Profile' MENUTITLE: 'My Profile'
ChangePasswordEmail.ss: ChangePasswordEmail.ss:
@ -79,8 +82,8 @@ pa:
HELLO: ਹਾਏ HELLO: ਹਾਏ
PASSWORD: Password PASSWORD: Password
CheckboxField: CheckboxField:
- 'False' NOANSWER: 'False'
- 'True' YESANSWER: 'True'
ComplexTableField: ComplexTableField:
CLOSEPOPUP: 'Close Popup' CLOSEPOPUP: 'Close Popup'
SUCCESSADD2: 'Added {name}' SUCCESSADD2: 'Added {name}'
@ -91,7 +94,7 @@ pa:
SORTASC: 'Sort ascending' SORTASC: 'Sort ascending'
SORTDESC: 'Sort descending' SORTDESC: 'Sort descending'
ComplexTableField_popup.ss: ComplexTableField_popup.ss:
NEXT: ਅਗਲਾ NEXT: 'ਅਗਲਾ'
PREVIOUS: ਪਿਛਲਾ PREVIOUS: ਪਿਛਲਾ
ConfirmedPasswordField: ConfirmedPasswordField:
ATLEAST: 'Passwords must be at least {min} characters long.' ATLEAST: 'Passwords must be at least {min} characters long.'
@ -109,20 +112,21 @@ pa:
PLURALNAME: 'Data Objects' PLURALNAME: 'Data Objects'
SINGULARNAME: 'Data Object' SINGULARNAME: 'Data Object'
Date: Date:
DAY: 'ਿਦਨ ' DAY: day
DAYS: ਿਦਨ DAYS: days
HOUR: 'ਘੰਟਾ ' HOUR: hour
HOURS: 'ਘੰਟੇ ' HOURS: hours
MIN: 'ਿਮੰਟ ' LessThanMinuteAgo: 'less than a minute'
MINS: 'ਿਮੰਟ ' MIN: min
MONTH: ਮਹੀਨਾ MINS: mins
MONTHS: 'ਮਹੀਨੇੇੇੇੇ ' MONTH: month
SEC: 'ਸਿਕ ੰਟ' MONTHS: months
SECS: 'ਸਿਕ ੰਟ' SEC: sec
SECS: secs
TIMEDIFFAGO: '{difference} ago' TIMEDIFFAGO: '{difference} ago'
TIMEDIFFIN: 'in {difference}' TIMEDIFFIN: 'in {difference}'
YEAR: ਸਾਲ YEAR: year
YEARS: ਸਾਲ YEARS: years
DateField: DateField:
NOTSET: 'not set' NOTSET: 'not set'
TODAY: today TODAY: today
@ -198,7 +202,8 @@ pa:
TEXT2: 'password reset link' TEXT2: 'password reset link'
TEXT3: for TEXT3: for
Form: Form:
FIELDISREQUIRED: '%s ਚਾਹੀਦਾ ਹੈ' CSRF_FAILED_MESSAGE: 'There seems to have been a technical problem. Please click the back button, refresh your browser, and try again.'
FIELDISREQUIRED: '{name} is required'
SubmitBtnLabel: Go SubmitBtnLabel: Go
VALIDATIONCREDITNUMBER: 'Please ensure you have entered the {number} credit card number correctly' VALIDATIONCREDITNUMBER: 'Please ensure you have entered the {number} credit card number correctly'
VALIDATIONNOTUNIQUE: 'The value entered is not unique' VALIDATIONNOTUNIQUE: 'The value entered is not unique'
@ -208,6 +213,7 @@ pa:
VALIDATOR: Validator VALIDATOR: Validator
VALIDCURRENCY: 'Please enter a valid currency' VALIDCURRENCY: 'Please enter a valid currency'
FormField: FormField:
Example: 'e.g. %s'
NONE: none NONE: none
GridAction: GridAction:
DELETE_DESCRIPTION: Delete DELETE_DESCRIPTION: Delete
@ -230,6 +236,7 @@ pa:
ResetFilter: Reset ResetFilter: Reset
GridFieldAction_Delete: GridFieldAction_Delete:
DeletePermissionsFailure: 'No delete permissions' DeletePermissionsFailure: 'No delete permissions'
EditPermissionsFailure: 'No permission to unlink record'
GridFieldDetailForm: GridFieldDetailForm:
CancelBtn: Cancel CancelBtn: Cancel
Create: Create Create: Create
@ -237,7 +244,9 @@ pa:
DeletePermissionsFailure: 'No delete permissions' DeletePermissionsFailure: 'No delete permissions'
Deleted: 'Deleted %s %s' Deleted: 'Deleted %s %s'
Save: Save Save: Save
Saved: 'Saved %s %s' Saved: 'Saved {name} {link}'
GridFieldEditButton.ss:
EDIT: Edit
GridFieldItemEditView.ss: null GridFieldItemEditView.ss: null
Group: Group:
AddRole: 'Add a role for this group' AddRole: 'Add a role for this group'
@ -267,6 +276,7 @@ pa:
ADDURL: 'Add URL' ADDURL: 'Add URL'
ADJUSTDETAILSDIMENSIONS: 'Details &amp; dimensions' ADJUSTDETAILSDIMENSIONS: 'Details &amp; dimensions'
ANCHORVALUE: Anchor ANCHORVALUE: Anchor
BUTTONADDURL: 'Add url'
BUTTONINSERT: Insert BUTTONINSERT: Insert
BUTTONINSERTLINK: 'ਿਲੰਕ ਪਾਉ' BUTTONINSERTLINK: 'ਿਲੰਕ ਪਾਉ'
BUTTONREMOVELINK: 'ਿਲੰਕ ਕੱਟੋਂ' BUTTONREMOVELINK: 'ਿਲੰਕ ਕੱਟੋਂ'
@ -331,7 +341,10 @@ pa:
PreviewButton: Preview PreviewButton: Preview
REORGANISATIONSUCCESSFUL: 'Reorganised the site tree successfully.' REORGANISATIONSUCCESSFUL: 'Reorganised the site tree successfully.'
SAVEDUP: Saved. SAVEDUP: Saved.
VersionUnknown: unknown ShowAsList: 'show as list'
TooManyPages: 'Too many pages'
ValidationError: 'Validation error'
VersionUnknown: Unknown
LeftAndMain_Menu.ss: LeftAndMain_Menu.ss:
Hello: Hi Hello: Hi
LOGOUT: 'Log out' LOGOUT: 'Log out'
@ -407,6 +420,7 @@ pa:
TWODIGITMONTH: 'Two-digit month (01=January, etc.)' TWODIGITMONTH: 'Two-digit month (01=January, etc.)'
TWODIGITSECOND: 'Two digits of second (00 through 59)' TWODIGITSECOND: 'Two digits of second (00 through 59)'
TWODIGITYEAR: 'Two-digit year' TWODIGITYEAR: 'Two-digit year'
Toggle: 'Show formatting help'
MemberImportForm: MemberImportForm:
Help1: '<p>Import users in <em>CSV format</em> (comma-separated values). <small><a href="#" class="toggle-advanced">Show advanced usage</a></small></p>' Help1: '<p>Import users in <em>CSV format</em> (comma-separated values). <small><a href="#" class="toggle-advanced">Show advanced usage</a></small></p>'
Help2: '<div class="advanced"> <h4>Advanced usage</h4> <ul> <li>Allowed columns: <em>%s</em></li> <li>Existing users are matched by their unique <em>Code</em> property, and updated with any new values from the imported file.</li> <li>Groups can be assigned by the <em>Groups</em> column. Groups are identified by their <em>Code</em> property, multiple groups can be separated by comma. Existing group memberships are not cleared.</li> </ul></div>' Help2: '<div class="advanced"> <h4>Advanced usage</h4> <ul> <li>Allowed columns: <em>%s</em></li> <li>Existing users are matched by their unique <em>Code</em> property, and updated with any new values from the imported file.</li> <li>Groups can be assigned by the <em>Groups</em> column. Groups are identified by their <em>Code</em> property, multiple groups can be separated by comma. Existing group memberships are not cleared.</li> </ul></div>'
@ -421,7 +435,7 @@ pa:
ModelAdmin: ModelAdmin:
DELETE: Delete DELETE: Delete
DELETEDRECORDS: 'Deleted {count} records.' DELETEDRECORDS: 'Deleted {count} records.'
EMPTYBEFOREIMPORT: 'Clear Database before import' EMPTYBEFOREIMPORT: 'Replace data'
IMPORT: 'Import from CSV' IMPORT: 'Import from CSV'
IMPORTEDRECORDS: 'Imported {count} records.' IMPORTEDRECORDS: 'Imported {count} records.'
NOCSVFILE: 'Please browse for a CSV file to import' NOCSVFILE: 'Please browse for a CSV file to import'
@ -515,7 +529,20 @@ pa:
BtnImport: 'Import from CSV' BtnImport: 'Import from CSV'
FileFieldLabel: 'CSV File <small>(Allowed extensions: *.csv)</small>' FileFieldLabel: 'CSV File <small>(Allowed extensions: *.csv)</small>'
SilverStripeNavigator: SilverStripeNavigator:
Auto: Auto
ChangeViewMode: 'Change view mode'
Desktop: Desktop
DualWindowView: 'Dual Window'
Edit: Edit Edit: Edit
EditView: 'Edit mode'
Mobile: Mobile
PreviewState: 'Preview State'
PreviewView: 'Preview mode'
Responsive: Responsive
SplitView: 'Split mode'
Tablet: Tablet
ViewDeviceWidth: 'Select a preview width'
Width: width
SimpleImageField: SimpleImageField:
NOUPLOAD: 'ਕੋਈ ਫੋਟੋ ਅੱਪਲੋਡ ਨਹੀ ਹੋਈ' NOUPLOAD: 'ਕੋਈ ਫੋਟੋ ਅੱਪਲੋਡ ਨਹੀ ਹੋਈ'
SiteTree: SiteTree:
@ -551,6 +578,8 @@ pa:
ATTACHFILE: 'Attach a file' ATTACHFILE: 'Attach a file'
ATTACHFILES: 'Attach files' ATTACHFILES: 'Attach files'
AttachFile: 'Attach file(s)' AttachFile: 'Attach file(s)'
CHOOSEANOTHERFILE: 'Choose another file'
CHOOSEANOTHERINFO: 'Replace this file with another one from the file store'
DELETE: 'Delete from files' DELETE: 'Delete from files'
DELETEINFO: 'Permanently delete this file from the file store' DELETEINFO: 'Permanently delete this file from the file store'
DOEDIT: Save DOEDIT: Save
@ -565,12 +594,15 @@ pa:
FROMFILES: 'From files' FROMFILES: 'From files'
HOTLINKINFO: 'Info: This image will be hotlinked. Please ensure you have permissions from the original site creator to do so.' HOTLINKINFO: 'Info: This image will be hotlinked. Please ensure you have permissions from the original site creator to do so.'
MAXNUMBEROFFILES: 'Max number of {count} file(s) exceeded.' MAXNUMBEROFFILES: 'Max number of {count} file(s) exceeded.'
MAXNUMBEROFFILESONE: 'Can only upload one file'
MAXNUMBEROFFILESSHORT: 'Can only upload {count} files' MAXNUMBEROFFILESSHORT: 'Can only upload {count} files'
OVERWRITEWARNING: 'File with the same name already exists'
REMOVE: Remove REMOVE: Remove
REMOVEERROR: 'Error removing file' REMOVEERROR: 'Error removing file'
REMOVEINFO: 'Remove this file from here, but do not delete it from the file store' REMOVEINFO: 'Remove this file from here, but do not delete it from the file store'
STARTALL: 'Start all' STARTALL: 'Start all'
STARTALLINFO: 'Start all uploads' STARTALLINFO: 'Start all uploads'
Saved: Saved Saved: Saved
UPLOADSINTO: 'saves into /{path}'
Versioned: Versioned:
has_many_Versions: Versions has_many_Versions: Versions

View File

@ -2,6 +2,7 @@ pl:
AssetAdmin: AssetAdmin:
ALLOWEDEXTS: 'Dopuszczalne rozszerzenia' ALLOWEDEXTS: 'Dopuszczalne rozszerzenia'
NEWFOLDER: NowyFolder NEWFOLDER: NowyFolder
SHOWALLOWEDEXTS: 'Show allowed extensions'
AssetTableField: AssetTableField:
CREATED: 'Po raz pierwszy wgrany' CREATED: 'Po raz pierwszy wgrany'
DIM: Rozmiar DIM: Rozmiar
@ -59,9 +60,9 @@ pl:
ERRORNOTADMIN: 'Ten użytkownik nie jest administratorem' ERRORNOTADMIN: 'Ten użytkownik nie jest administratorem'
ERRORNOTREC: 'Nie istnieje taki username/hasło' ERRORNOTREC: 'Nie istnieje taki username/hasło'
Boolean: Boolean:
0: Nie
ANY: Jakikolwiek ANY: Jakikolwiek
1: Tak NOANSWER: 'False'
YESANSWER: 'True'
CMSLoadingScreen.ss: CMSLoadingScreen.ss:
LOADING: Wczytywanie... LOADING: Wczytywanie...
REQUIREJS: 'CMS wymaga włączonej obsługi JavaScript.' REQUIREJS: 'CMS wymaga włączonej obsługi JavaScript.'
@ -70,6 +71,8 @@ pl:
ACCESSALLINTERFACES: 'Dostęp do wszystkich sekcji CMSa' ACCESSALLINTERFACES: 'Dostęp do wszystkich sekcji CMSa'
ACCESSALLINTERFACESHELP: 'Nadpisuje bardziej specyficzne ustawienia dostępu.' ACCESSALLINTERFACESHELP: 'Nadpisuje bardziej specyficzne ustawienia dostępu.'
SAVE: Zapisz SAVE: Zapisz
CMSPageHistoryController_versions.ss:
PREVIEW: 'Website preview'
CMSProfileController: CMSProfileController:
MENUTITLE: 'Mój profil' MENUTITLE: 'Mój profil'
ChangePasswordEmail.ss: ChangePasswordEmail.ss:
@ -79,8 +82,8 @@ pl:
HELLO: Cześć HELLO: Cześć
PASSWORD: Hasło PASSWORD: Hasło
CheckboxField: CheckboxField:
- Nie NOANSWER: 'False'
- Tak YESANSWER: 'True'
ComplexTableField: ComplexTableField:
CLOSEPOPUP: 'Zamknij Okienko' CLOSEPOPUP: 'Zamknij Okienko'
SUCCESSADD2: 'Dodano {name}' SUCCESSADD2: 'Dodano {name}'
@ -109,20 +112,21 @@ pl:
PLURALNAME: 'Obiekty danych' PLURALNAME: 'Obiekty danych'
SINGULARNAME: 'Obiekt danych' SINGULARNAME: 'Obiekt danych'
Date: Date:
DAY: dzień DAY: day
DAYS: dni DAYS: days
HOUR: godzina HOUR: hour
HOURS: godziny HOURS: hours
LessThanMinuteAgo: 'less than a minute'
MIN: min MIN: min
MINS: minuty MINS: mins
MONTH: miesiąc MONTH: month
MONTHS: miesiące MONTHS: months
SEC: sekunda SEC: sec
SECS: sekundy SECS: secs
TIMEDIFFAGO: '{difference} temu' TIMEDIFFAGO: '{difference} temu'
TIMEDIFFIN: 'w {difference}' TIMEDIFFIN: 'w {difference}'
YEAR: rok YEAR: year
YEARS: lata YEARS: years
DateField: DateField:
NOTSET: 'nie ustawiono' NOTSET: 'nie ustawiono'
TODAY: dzisiaj TODAY: dzisiaj
@ -198,7 +202,8 @@ pl:
TEXT2: 'link zmiany hasła' TEXT2: 'link zmiany hasła'
TEXT3: dla TEXT3: dla
Form: Form:
FIELDISREQUIRED: '%s jest wymagane' CSRF_FAILED_MESSAGE: 'There seems to have been a technical problem. Please click the back button, refresh your browser, and try again.'
FIELDISREQUIRED: '{name} is required'
SubmitBtnLabel: Przejdź SubmitBtnLabel: Przejdź
VALIDATIONCREDITNUMBER: 'Proszę upewnij się, że wprowadzony numer karty kredytowej {number} jest prawidłowy' VALIDATIONCREDITNUMBER: 'Proszę upewnij się, że wprowadzony numer karty kredytowej {number} jest prawidłowy'
VALIDATIONNOTUNIQUE: 'Wprowadzona wartość nie jest unikalna' VALIDATIONNOTUNIQUE: 'Wprowadzona wartość nie jest unikalna'
@ -208,6 +213,7 @@ pl:
VALIDATOR: Walidator VALIDATOR: Walidator
VALIDCURRENCY: 'Proszę podaj prawidłową walutę' VALIDCURRENCY: 'Proszę podaj prawidłową walutę'
FormField: FormField:
Example: 'e.g. %s'
NONE: brak NONE: brak
GridAction: GridAction:
DELETE_DESCRIPTION: Usuń DELETE_DESCRIPTION: Usuń
@ -230,6 +236,7 @@ pl:
ResetFilter: Resetuj ResetFilter: Resetuj
GridFieldAction_Delete: GridFieldAction_Delete:
DeletePermissionsFailure: 'Brak uprawnień do usuwania' DeletePermissionsFailure: 'Brak uprawnień do usuwania'
EditPermissionsFailure: 'No permission to unlink record'
GridFieldDetailForm: GridFieldDetailForm:
CancelBtn: Anuluj CancelBtn: Anuluj
Create: Stwórz Create: Stwórz
@ -237,7 +244,9 @@ pl:
DeletePermissionsFailure: 'Brak uprawnień do usuwania' DeletePermissionsFailure: 'Brak uprawnień do usuwania'
Deleted: 'Usunięto %s %s' Deleted: 'Usunięto %s %s'
Save: Zapisz Save: Zapisz
Saved: 'Zapisano %s %s' Saved: 'Saved {name} {link}'
GridFieldEditButton.ss:
EDIT: Edit
GridFieldItemEditView.ss: null GridFieldItemEditView.ss: null
Group: Group:
AddRole: 'Dodaj rolę dla tej grupy' AddRole: 'Dodaj rolę dla tej grupy'
@ -267,6 +276,7 @@ pl:
ADDURL: 'Dodaj adres URL' ADDURL: 'Dodaj adres URL'
ADJUSTDETAILSDIMENSIONS: 'Szczegóły i rozmiar' ADJUSTDETAILSDIMENSIONS: 'Szczegóły i rozmiar'
ANCHORVALUE: Odnośnik ANCHORVALUE: Odnośnik
BUTTONADDURL: 'Add url'
BUTTONINSERT: Wstaw BUTTONINSERT: Wstaw
BUTTONINSERTLINK: 'Wstaw link' BUTTONINSERTLINK: 'Wstaw link'
BUTTONREMOVELINK: 'Zmień link' BUTTONREMOVELINK: 'Zmień link'
@ -328,9 +338,12 @@ pl:
PERMALREADY: 'Niestety nie masz dostępu do tej części CMS. Jeśli chcesz zalogować się jako ktoś inny, zrób to poniżej' PERMALREADY: 'Niestety nie masz dostępu do tej części CMS. Jeśli chcesz zalogować się jako ktoś inny, zrób to poniżej'
PERMDEFAULT: 'Proszę wybrać metodę identyfikacji i wpisać swoje dane, aby uruchomić CMSa.' PERMDEFAULT: 'Proszę wybrać metodę identyfikacji i wpisać swoje dane, aby uruchomić CMSa.'
PLEASESAVE: 'Proszę zapisać stronę. Ta strona nie mogła zostać uaktualniona, ponieważ nie została jeszcze zapisana.' PLEASESAVE: 'Proszę zapisać stronę. Ta strona nie mogła zostać uaktualniona, ponieważ nie została jeszcze zapisana.'
PreviewButton: Podgląd PreviewButton: 'Podgląd'
REORGANISATIONSUCCESSFUL: 'Pomyślnie zreorganizowano drzewo serwisu.' REORGANISATIONSUCCESSFUL: 'Pomyślnie zreorganizowano drzewo serwisu.'
SAVEDUP: Zapisano. SAVEDUP: Zapisano.
ShowAsList: 'show as list'
TooManyPages: 'Too many pages'
ValidationError: 'Validation error'
VersionUnknown: nieznany VersionUnknown: nieznany
LeftAndMain_Menu.ss: LeftAndMain_Menu.ss:
Hello: Witaj Hello: Witaj
@ -398,7 +411,7 @@ pl:
HOURNOLEADING: 'Godzina bez wiodącego zera' HOURNOLEADING: 'Godzina bez wiodącego zera'
MINUTENOLEADING: 'Minuta bez wiodącego zera' MINUTENOLEADING: 'Minuta bez wiodącego zera'
MONTHNOLEADING: 'Miesiąc bez wiodącego zera' MONTHNOLEADING: 'Miesiąc bez wiodącego zera'
Preview: Podgląd Preview: 'Podgląd'
SHORTMONTH: 'Skrócona nazwa miesiąca (np. Cze)' SHORTMONTH: 'Skrócona nazwa miesiąca (np. Cze)'
TOGGLEHELP: 'Przełącz pomoc formatowania' TOGGLEHELP: 'Przełącz pomoc formatowania'
TWODIGITDAY: 'Dwucyfrowy dzień miesiąca' TWODIGITDAY: 'Dwucyfrowy dzień miesiąca'
@ -407,6 +420,7 @@ pl:
TWODIGITMONTH: 'Dwucyfrowy miesiąc (01=Styczeń, itd.)' TWODIGITMONTH: 'Dwucyfrowy miesiąc (01=Styczeń, itd.)'
TWODIGITSECOND: 'Dwucyfrowa sekunda (od 00 do 59)' TWODIGITSECOND: 'Dwucyfrowa sekunda (od 00 do 59)'
TWODIGITYEAR: 'Dwucyfrowy rok' TWODIGITYEAR: 'Dwucyfrowy rok'
Toggle: 'Show formatting help'
MemberImportForm: MemberImportForm:
Help1: '<p>Zaimportuj użytkowników w <em>formacie CSV</em> (tekst rozdzielany przecinkami). <small><a href="#" class="toggle-advanced">Zaawansowane</a></small></p>' Help1: '<p>Zaimportuj użytkowników w <em>formacie CSV</em> (tekst rozdzielany przecinkami). <small><a href="#" class="toggle-advanced">Zaawansowane</a></small></p>'
Help2: '<div class="advanced"> <h4>Advanced usage</h4> <ul> <li>Allowed columns: <em>%s</em></li> <li>Existing users are matched by their unique <em>Code</em> property, and updated with any new values from the imported file.</li> <li>Groups can be assigned by the <em>Groups</em> column. Groups are identified by their <em>Code</em> property, multiple groups can be separated by comma. Existing group memberships are not cleared.</li> </ul></div>' Help2: '<div class="advanced"> <h4>Advanced usage</h4> <ul> <li>Allowed columns: <em>%s</em></li> <li>Existing users are matched by their unique <em>Code</em> property, and updated with any new values from the imported file.</li> <li>Groups can be assigned by the <em>Groups</em> column. Groups are identified by their <em>Code</em> property, multiple groups can be separated by comma. Existing group memberships are not cleared.</li> </ul></div>'
@ -421,7 +435,7 @@ pl:
ModelAdmin: ModelAdmin:
DELETE: Usuń DELETE: Usuń
DELETEDRECORDS: 'Usunięto rekordów: {count}' DELETEDRECORDS: 'Usunięto rekordów: {count}'
EMPTYBEFOREIMPORT: 'Wyczyść bazę danych przed importowaniem' EMPTYBEFOREIMPORT: 'Replace data'
IMPORT: 'Import z CSV' IMPORT: 'Import z CSV'
IMPORTEDRECORDS: 'Zaimportowano rekordów: {count}' IMPORTEDRECORDS: 'Zaimportowano rekordów: {count}'
NOCSVFILE: 'Wybierz plik CSV do zaimportowania' NOCSVFILE: 'Wybierz plik CSV do zaimportowania'
@ -515,7 +529,20 @@ pl:
BtnImport: 'Import z CSV' BtnImport: 'Import z CSV'
FileFieldLabel: 'Plik CSV <small>(Dozwolone rozszerzenia: *.csv)</small>' FileFieldLabel: 'Plik CSV <small>(Dozwolone rozszerzenia: *.csv)</small>'
SilverStripeNavigator: SilverStripeNavigator:
Auto: Auto
ChangeViewMode: 'Change view mode'
Desktop: Desktop
DualWindowView: 'Dual Window'
Edit: Edycja Edit: Edycja
EditView: 'Edit mode'
Mobile: Mobile
PreviewState: 'Preview State'
PreviewView: 'Preview mode'
Responsive: Responsive
SplitView: 'Split mode'
Tablet: Tablet
ViewDeviceWidth: 'Select a preview width'
Width: width
SimpleImageField: SimpleImageField:
NOUPLOAD: 'Nie wgrano zdjęć' NOUPLOAD: 'Nie wgrano zdjęć'
SiteTree: SiteTree:
@ -551,6 +578,8 @@ pl:
ATTACHFILE: 'Załącz plik' ATTACHFILE: 'Załącz plik'
ATTACHFILES: 'Załącz pliki' ATTACHFILES: 'Załącz pliki'
AttachFile: 'Załącz plik(i)' AttachFile: 'Załącz plik(i)'
CHOOSEANOTHERFILE: 'Choose another file'
CHOOSEANOTHERINFO: 'Replace this file with another one from the file store'
DELETE: 'Usuń z plików' DELETE: 'Usuń z plików'
DELETEINFO: 'Usuń ten plik z magazynu' DELETEINFO: 'Usuń ten plik z magazynu'
DOEDIT: Zapisz DOEDIT: Zapisz
@ -565,12 +594,15 @@ pl:
FROMFILES: 'Z plików' FROMFILES: 'Z plików'
HOTLINKINFO: 'Informacja: Ten obrazek pochodzi z zewnętrznego serwisu. Upewnij się, że jego twórca pozwala korzystać z niego.' HOTLINKINFO: 'Informacja: Ten obrazek pochodzi z zewnętrznego serwisu. Upewnij się, że jego twórca pozwala korzystać z niego.'
MAXNUMBEROFFILES: 'Osiągnięto maksymalną liczbę {count} plików.' MAXNUMBEROFFILES: 'Osiągnięto maksymalną liczbę {count} plików.'
MAXNUMBEROFFILESONE: 'Can only upload one file'
MAXNUMBEROFFILESSHORT: 'Można wgrać tylko {count} plik(ów/i)' MAXNUMBEROFFILESSHORT: 'Można wgrać tylko {count} plik(ów/i)'
OVERWRITEWARNING: 'File with the same name already exists'
REMOVE: Usuń REMOVE: Usuń
REMOVEERROR: 'Błąd podczas usuwania pliku' REMOVEERROR: 'Błąd podczas usuwania pliku'
REMOVEINFO: 'Usuń pliki z tego miejsca, ale nie usuwaj ich z magazynu' REMOVEINFO: 'Usuń pliki z tego miejsca, ale nie usuwaj ich z magazynu'
STARTALL: 'Rozpocznij wszystko' STARTALL: 'Rozpocznij wszystko'
STARTALLINFO: 'Rozpocznij ładowanie wszystkich' STARTALLINFO: 'Rozpocznij ładowanie wszystkich'
Saved: Zapisano Saved: Zapisano
UPLOADSINTO: 'saves into /{path}'
Versioned: Versioned:
has_many_Versions: Wersje has_many_Versions: Wersje

View File

@ -2,6 +2,7 @@ pt:
AssetAdmin: AssetAdmin:
ALLOWEDEXTS: 'Allowed extensions' ALLOWEDEXTS: 'Allowed extensions'
NEWFOLDER: 'Nova pasta' NEWFOLDER: 'Nova pasta'
SHOWALLOWEDEXTS: 'Show allowed extensions'
AssetTableField: AssetTableField:
CREATED: 'First uploaded' CREATED: 'First uploaded'
DIM: Dimensions DIM: Dimensions
@ -59,9 +60,9 @@ pt:
ERRORNOTADMIN: 'Esse utilizador não é um administrador.' ERRORNOTADMIN: 'Esse utilizador não é um administrador.'
ERRORNOTREC: 'Esse nome de utilizador / password não é válido' ERRORNOTREC: 'Esse nome de utilizador / password não é válido'
Boolean: Boolean:
0: Não
ANY: Qualquer ANY: Qualquer
1: Sim NOANSWER: 'False'
YESANSWER: 'True'
CMSLoadingScreen.ss: CMSLoadingScreen.ss:
LOADING: Loading... LOADING: Loading...
REQUIREJS: 'The CMS requires that you have JavaScript enabled.' REQUIREJS: 'The CMS requires that you have JavaScript enabled.'
@ -70,6 +71,8 @@ pt:
ACCESSALLINTERFACES: 'Access to all CMS sections' ACCESSALLINTERFACES: 'Access to all CMS sections'
ACCESSALLINTERFACESHELP: 'Overrules more specific access settings.' ACCESSALLINTERFACESHELP: 'Overrules more specific access settings.'
SAVE: Guardar SAVE: Guardar
CMSPageHistoryController_versions.ss:
PREVIEW: 'Website preview'
CMSProfileController: CMSProfileController:
MENUTITLE: 'My Profile' MENUTITLE: 'My Profile'
ChangePasswordEmail.ss: ChangePasswordEmail.ss:
@ -79,8 +82,8 @@ pt:
HELLO: Olá HELLO: Olá
PASSWORD: Palavra-chave PASSWORD: Palavra-chave
CheckboxField: CheckboxField:
- Não NOANSWER: 'False'
- Sim YESANSWER: 'True'
ComplexTableField: ComplexTableField:
CLOSEPOPUP: 'Fechar Janela' CLOSEPOPUP: 'Fechar Janela'
SUCCESSADD2: 'Added {name}' SUCCESSADD2: 'Added {name}'
@ -109,20 +112,21 @@ pt:
PLURALNAME: 'Objectos de Dados' PLURALNAME: 'Objectos de Dados'
SINGULARNAME: 'Objecto de Dados' SINGULARNAME: 'Objecto de Dados'
Date: Date:
DAY: dia DAY: day
DAYS: dias DAYS: days
HOUR: hora HOUR: hour
HOURS: horas HOURS: hours
LessThanMinuteAgo: 'less than a minute'
MIN: min MIN: min
MINS: mins MINS: mins
MONTH: mês MONTH: month
MONTHS: meses MONTHS: months
SEC: seg SEC: sec
SECS: segs SECS: secs
TIMEDIFFAGO: '{difference} ago' TIMEDIFFAGO: '{difference} ago'
TIMEDIFFIN: 'in {difference}' TIMEDIFFIN: 'in {difference}'
YEAR: ano YEAR: year
YEARS: anos YEARS: years
DateField: DateField:
NOTSET: 'Não inserido' NOTSET: 'Não inserido'
TODAY: Hoje TODAY: Hoje
@ -198,7 +202,8 @@ pt:
TEXT2: 'link para alterar password' TEXT2: 'link para alterar password'
TEXT3: para TEXT3: para
Form: Form:
FIELDISREQUIRED: '%s é de preenchimento obrigatório' CSRF_FAILED_MESSAGE: 'There seems to have been a technical problem. Please click the back button, refresh your browser, and try again.'
FIELDISREQUIRED: '{name} is required'
SubmitBtnLabel: Go SubmitBtnLabel: Go
VALIDATIONCREDITNUMBER: 'Please ensure you have entered the {number} credit card number correctly' VALIDATIONCREDITNUMBER: 'Please ensure you have entered the {number} credit card number correctly'
VALIDATIONNOTUNIQUE: 'O valor inserido não é único' VALIDATIONNOTUNIQUE: 'O valor inserido não é único'
@ -208,6 +213,7 @@ pt:
VALIDATOR: Validator VALIDATOR: Validator
VALIDCURRENCY: 'Please enter a valid currency' VALIDCURRENCY: 'Please enter a valid currency'
FormField: FormField:
Example: 'e.g. %s'
NONE: nenhum NONE: nenhum
GridAction: GridAction:
DELETE_DESCRIPTION: Delete DELETE_DESCRIPTION: Delete
@ -230,6 +236,7 @@ pt:
ResetFilter: Redefinir ResetFilter: Redefinir
GridFieldAction_Delete: GridFieldAction_Delete:
DeletePermissionsFailure: 'Não tem permissões para apagar' DeletePermissionsFailure: 'Não tem permissões para apagar'
EditPermissionsFailure: 'No permission to unlink record'
GridFieldDetailForm: GridFieldDetailForm:
CancelBtn: Cancelar CancelBtn: Cancelar
Create: Create Create: Create
@ -237,7 +244,9 @@ pt:
DeletePermissionsFailure: 'No delete permissions' DeletePermissionsFailure: 'No delete permissions'
Deleted: 'Deleted %s %s' Deleted: 'Deleted %s %s'
Save: Save Save: Save
Saved: 'Saved %s %s' Saved: 'Saved {name} {link}'
GridFieldEditButton.ss:
EDIT: Edit
GridFieldItemEditView.ss: null GridFieldItemEditView.ss: null
Group: Group:
AddRole: 'Adicionar regra a este grupo' AddRole: 'Adicionar regra a este grupo'
@ -267,6 +276,7 @@ pt:
ADDURL: 'Add URL' ADDURL: 'Add URL'
ADJUSTDETAILSDIMENSIONS: 'Details &amp; dimensions' ADJUSTDETAILSDIMENSIONS: 'Details &amp; dimensions'
ANCHORVALUE: Âncora ANCHORVALUE: Âncora
BUTTONADDURL: 'Add url'
BUTTONINSERT: Inserir BUTTONINSERT: Inserir
BUTTONINSERTLINK: 'Inserir link' BUTTONINSERTLINK: 'Inserir link'
BUTTONREMOVELINK: 'Remover link' BUTTONREMOVELINK: 'Remover link'
@ -331,7 +341,10 @@ pt:
PreviewButton: Preview PreviewButton: Preview
REORGANISATIONSUCCESSFUL: 'Reorganised the site tree successfully.' REORGANISATIONSUCCESSFUL: 'Reorganised the site tree successfully.'
SAVEDUP: Saved. SAVEDUP: Saved.
VersionUnknown: desconhecido ShowAsList: 'show as list'
TooManyPages: 'Too many pages'
ValidationError: 'Validation error'
VersionUnknown: Unknown
LeftAndMain_Menu.ss: LeftAndMain_Menu.ss:
Hello: Hi Hello: Hi
LOGOUT: 'Log out' LOGOUT: 'Log out'
@ -407,6 +420,7 @@ pt:
TWODIGITMONTH: 'Two-digit month (01=January, etc.)' TWODIGITMONTH: 'Two-digit month (01=January, etc.)'
TWODIGITSECOND: 'Two digits of second (00 through 59)' TWODIGITSECOND: 'Two digits of second (00 through 59)'
TWODIGITYEAR: 'Two-digit year' TWODIGITYEAR: 'Two-digit year'
Toggle: 'Show formatting help'
MemberImportForm: MemberImportForm:
Help1: '<p>Import users in <em>CSV format</em> (comma-separated values). <small><a href="#" class="toggle-advanced">Show advanced usage</a></small></p>' Help1: '<p>Import users in <em>CSV format</em> (comma-separated values). <small><a href="#" class="toggle-advanced">Show advanced usage</a></small></p>'
Help2: '<div class="advanced"> <h4>Advanced usage</h4> <ul> <li>Allowed columns: <em>%s</em></li> <li>Existing users are matched by their unique <em>Code</em> property, and updated with any new values from the imported file.</li> <li>Groups can be assigned by the <em>Groups</em> column. Groups are identified by their <em>Code</em> property, multiple groups can be separated by comma. Existing group memberships are not cleared.</li> </ul></div>' Help2: '<div class="advanced"> <h4>Advanced usage</h4> <ul> <li>Allowed columns: <em>%s</em></li> <li>Existing users are matched by their unique <em>Code</em> property, and updated with any new values from the imported file.</li> <li>Groups can be assigned by the <em>Groups</em> column. Groups are identified by their <em>Code</em> property, multiple groups can be separated by comma. Existing group memberships are not cleared.</li> </ul></div>'
@ -421,7 +435,7 @@ pt:
ModelAdmin: ModelAdmin:
DELETE: Delete DELETE: Delete
DELETEDRECORDS: 'Deleted {count} records.' DELETEDRECORDS: 'Deleted {count} records.'
EMPTYBEFOREIMPORT: 'Clear Database before import' EMPTYBEFOREIMPORT: 'Replace data'
IMPORT: 'Import from CSV' IMPORT: 'Import from CSV'
IMPORTEDRECORDS: 'Imported {count} records.' IMPORTEDRECORDS: 'Imported {count} records.'
NOCSVFILE: 'Please browse for a CSV file to import' NOCSVFILE: 'Please browse for a CSV file to import'
@ -515,7 +529,20 @@ pt:
BtnImport: 'Import from CSV' BtnImport: 'Import from CSV'
FileFieldLabel: 'CSV File <small>(Allowed extensions: *.csv)</small>' FileFieldLabel: 'CSV File <small>(Allowed extensions: *.csv)</small>'
SilverStripeNavigator: SilverStripeNavigator:
Auto: Auto
ChangeViewMode: 'Change view mode'
Desktop: Desktop
DualWindowView: 'Dual Window'
Edit: Edit Edit: Edit
EditView: 'Edit mode'
Mobile: Mobile
PreviewState: 'Preview State'
PreviewView: 'Preview mode'
Responsive: Responsive
SplitView: 'Split mode'
Tablet: Tablet
ViewDeviceWidth: 'Select a preview width'
Width: width
SimpleImageField: SimpleImageField:
NOUPLOAD: 'Nenhuma imagem enviada' NOUPLOAD: 'Nenhuma imagem enviada'
SiteTree: SiteTree:
@ -551,6 +578,8 @@ pt:
ATTACHFILE: 'Adicionar um ficheiro' ATTACHFILE: 'Adicionar um ficheiro'
ATTACHFILES: 'Adicionar ficheiros' ATTACHFILES: 'Adicionar ficheiros'
AttachFile: 'Adicionar ficheiro(s)' AttachFile: 'Adicionar ficheiro(s)'
CHOOSEANOTHERFILE: 'Choose another file'
CHOOSEANOTHERINFO: 'Replace this file with another one from the file store'
DELETE: 'Delete from files' DELETE: 'Delete from files'
DELETEINFO: 'Remover permanentemente este ficheiro do sistema' DELETEINFO: 'Remover permanentemente este ficheiro do sistema'
DOEDIT: Guardar DOEDIT: Guardar
@ -565,12 +594,15 @@ pt:
FROMFILES: 'De ficheiros' FROMFILES: 'De ficheiros'
HOTLINKINFO: 'Info: This image will be hotlinked. Please ensure you have permissions from the original site creator to do so.' HOTLINKINFO: 'Info: This image will be hotlinked. Please ensure you have permissions from the original site creator to do so.'
MAXNUMBEROFFILES: 'Max number of {count} file(s) exceeded.' MAXNUMBEROFFILES: 'Max number of {count} file(s) exceeded.'
MAXNUMBEROFFILESONE: 'Can only upload one file'
MAXNUMBEROFFILESSHORT: 'Can only upload {count} files' MAXNUMBEROFFILESSHORT: 'Can only upload {count} files'
OVERWRITEWARNING: 'File with the same name already exists'
REMOVE: Remove REMOVE: Remove
REMOVEERROR: 'Erro ao mover o ficheiro' REMOVEERROR: 'Erro ao mover o ficheiro'
REMOVEINFO: 'Remover este ficheiro daqui, mas não apaga do sistema' REMOVEINFO: 'Remover este ficheiro daqui, mas não apaga do sistema'
STARTALL: 'Iniciar todos' STARTALL: 'Iniciar todos'
STARTALLINFO: 'Start all uploads' STARTALLINFO: 'Start all uploads'
Saved: Guardado Saved: Guardado
UPLOADSINTO: 'saves into /{path}'
Versioned: Versioned:
has_many_Versions: Versões has_many_Versions: Versões

View File

@ -2,6 +2,7 @@ pt_BR:
AssetAdmin: AssetAdmin:
ALLOWEDEXTS: 'Allowed extensions' ALLOWEDEXTS: 'Allowed extensions'
NEWFOLDER: 'Nova Pasta' NEWFOLDER: 'Nova Pasta'
SHOWALLOWEDEXTS: 'Show allowed extensions'
AssetTableField: AssetTableField:
CREATED: 'Primeiro upload' CREATED: 'Primeiro upload'
DIM: Dimensões DIM: Dimensões
@ -59,9 +60,9 @@ pt_BR:
ERRORNOTADMIN: 'Este usuário não é um administrador' ERRORNOTADMIN: 'Este usuário não é um administrador'
ERRORNOTREC: 'Este nome de usuário / senha não é reconhecido' ERRORNOTREC: 'Este nome de usuário / senha não é reconhecido'
Boolean: Boolean:
0: 'False'
ANY: Any ANY: Any
1: 'True' NOANSWER: 'False'
YESANSWER: 'True'
CMSLoadingScreen.ss: CMSLoadingScreen.ss:
LOADING: Loading... LOADING: Loading...
REQUIREJS: 'The CMS requires that you have JavaScript enabled.' REQUIREJS: 'The CMS requires that you have JavaScript enabled.'
@ -70,6 +71,8 @@ pt_BR:
ACCESSALLINTERFACES: 'Acessar todas as interfaces do CMS' ACCESSALLINTERFACES: 'Acessar todas as interfaces do CMS'
ACCESSALLINTERFACESHELP: 'Overrules more specific access settings.' ACCESSALLINTERFACESHELP: 'Overrules more specific access settings.'
SAVE: Salvar SAVE: Salvar
CMSPageHistoryController_versions.ss:
PREVIEW: 'Website preview'
CMSProfileController: CMSProfileController:
MENUTITLE: 'My Profile' MENUTITLE: 'My Profile'
ChangePasswordEmail.ss: ChangePasswordEmail.ss:
@ -79,8 +82,8 @@ pt_BR:
HELLO: Olá HELLO: Olá
PASSWORD: Senha PASSWORD: Senha
CheckboxField: CheckboxField:
- 'False' NOANSWER: 'False'
- 'True' YESANSWER: 'True'
ComplexTableField: ComplexTableField:
CLOSEPOPUP: 'Fechar janela' CLOSEPOPUP: 'Fechar janela'
SUCCESSADD2: 'Added {name}' SUCCESSADD2: 'Added {name}'
@ -109,20 +112,21 @@ pt_BR:
PLURALNAME: 'Dados dos objetos' PLURALNAME: 'Dados dos objetos'
SINGULARNAME: 'Dado do objeto' SINGULARNAME: 'Dado do objeto'
Date: Date:
DAY: dia DAY: day
DAYS: dias DAYS: days
HOUR: hora HOUR: hour
HOURS: horas HOURS: hours
LessThanMinuteAgo: 'less than a minute'
MIN: min MIN: min
MINS: mins MINS: mins
MONTH: mês MONTH: month
MONTHS: meses MONTHS: months
SEC: sec SEC: sec
SECS: secs SECS: secs
TIMEDIFFAGO: '{difference} ago' TIMEDIFFAGO: '{difference} ago'
TIMEDIFFIN: 'in {difference}' TIMEDIFFIN: 'in {difference}'
YEAR: ano YEAR: year
YEARS: anos YEARS: years
DateField: DateField:
NOTSET: 'não informado' NOTSET: 'não informado'
TODAY: hoje TODAY: hoje
@ -198,7 +202,8 @@ pt_BR:
TEXT2: 'link para reiniciar sua senha' TEXT2: 'link para reiniciar sua senha'
TEXT3: para TEXT3: para
Form: Form:
FIELDISREQUIRED: '%s é requerido' CSRF_FAILED_MESSAGE: 'There seems to have been a technical problem. Please click the back button, refresh your browser, and try again.'
FIELDISREQUIRED: '{name} is required'
SubmitBtnLabel: Go SubmitBtnLabel: Go
VALIDATIONCREDITNUMBER: 'Please ensure you have entered the {number} credit card number correctly' VALIDATIONCREDITNUMBER: 'Please ensure you have entered the {number} credit card number correctly'
VALIDATIONNOTUNIQUE: 'O valor inserido não é exclusivo' VALIDATIONNOTUNIQUE: 'O valor inserido não é exclusivo'
@ -208,6 +213,7 @@ pt_BR:
VALIDATOR: Verificador VALIDATOR: Verificador
VALIDCURRENCY: 'Please enter a valid currency' VALIDCURRENCY: 'Please enter a valid currency'
FormField: FormField:
Example: 'e.g. %s'
NONE: nenhum NONE: nenhum
GridAction: GridAction:
DELETE_DESCRIPTION: Delete DELETE_DESCRIPTION: Delete
@ -230,6 +236,7 @@ pt_BR:
ResetFilter: Reset ResetFilter: Reset
GridFieldAction_Delete: GridFieldAction_Delete:
DeletePermissionsFailure: 'No delete permissions' DeletePermissionsFailure: 'No delete permissions'
EditPermissionsFailure: 'No permission to unlink record'
GridFieldDetailForm: GridFieldDetailForm:
CancelBtn: Cancel CancelBtn: Cancel
Create: Create Create: Create
@ -237,7 +244,9 @@ pt_BR:
DeletePermissionsFailure: 'No delete permissions' DeletePermissionsFailure: 'No delete permissions'
Deleted: 'Deleted %s %s' Deleted: 'Deleted %s %s'
Save: Save Save: Save
Saved: 'Saved %s %s' Saved: 'Saved {name} {link}'
GridFieldEditButton.ss:
EDIT: Edit
GridFieldItemEditView.ss: null GridFieldItemEditView.ss: null
Group: Group:
AddRole: 'Add a role for this group' AddRole: 'Add a role for this group'
@ -267,6 +276,7 @@ pt_BR:
ADDURL: 'Add URL' ADDURL: 'Add URL'
ADJUSTDETAILSDIMENSIONS: 'Details &amp; dimensions' ADJUSTDETAILSDIMENSIONS: 'Details &amp; dimensions'
ANCHORVALUE: Âncora ANCHORVALUE: Âncora
BUTTONADDURL: 'Add url'
BUTTONINSERT: Insert BUTTONINSERT: Insert
BUTTONINSERTLINK: 'Inserir link' BUTTONINSERTLINK: 'Inserir link'
BUTTONREMOVELINK: 'Remover link' BUTTONREMOVELINK: 'Remover link'
@ -331,7 +341,10 @@ pt_BR:
PreviewButton: Preview PreviewButton: Preview
REORGANISATIONSUCCESSFUL: 'Reorganised the site tree successfully.' REORGANISATIONSUCCESSFUL: 'Reorganised the site tree successfully.'
SAVEDUP: Saved. SAVEDUP: Saved.
VersionUnknown: unknown ShowAsList: 'show as list'
TooManyPages: 'Too many pages'
ValidationError: 'Validation error'
VersionUnknown: Unknown
LeftAndMain_Menu.ss: LeftAndMain_Menu.ss:
Hello: Hi Hello: Hi
LOGOUT: 'Log out' LOGOUT: 'Log out'
@ -407,6 +420,7 @@ pt_BR:
TWODIGITMONTH: 'Two-digit month (01=January, etc.)' TWODIGITMONTH: 'Two-digit month (01=January, etc.)'
TWODIGITSECOND: 'Two digits of second (00 through 59)' TWODIGITSECOND: 'Two digits of second (00 through 59)'
TWODIGITYEAR: 'Two-digit year' TWODIGITYEAR: 'Two-digit year'
Toggle: 'Show formatting help'
MemberImportForm: MemberImportForm:
Help1: '<p>Import users in <em>CSV format</em> (comma-separated values). <small><a href="#" class="toggle-advanced">Show advanced usage</a></small></p>' Help1: '<p>Import users in <em>CSV format</em> (comma-separated values). <small><a href="#" class="toggle-advanced">Show advanced usage</a></small></p>'
Help2: '<div class="advanced"> <h4>Advanced usage</h4> <ul> <li>Allowed columns: <em>%s</em></li> <li>Existing users are matched by their unique <em>Code</em> property, and updated with any new values from the imported file.</li> <li>Groups can be assigned by the <em>Groups</em> column. Groups are identified by their <em>Code</em> property, multiple groups can be separated by comma. Existing group memberships are not cleared.</li> </ul></div>' Help2: '<div class="advanced"> <h4>Advanced usage</h4> <ul> <li>Allowed columns: <em>%s</em></li> <li>Existing users are matched by their unique <em>Code</em> property, and updated with any new values from the imported file.</li> <li>Groups can be assigned by the <em>Groups</em> column. Groups are identified by their <em>Code</em> property, multiple groups can be separated by comma. Existing group memberships are not cleared.</li> </ul></div>'
@ -421,7 +435,7 @@ pt_BR:
ModelAdmin: ModelAdmin:
DELETE: Excluir DELETE: Excluir
DELETEDRECORDS: 'Deleted {count} records.' DELETEDRECORDS: 'Deleted {count} records.'
EMPTYBEFOREIMPORT: 'Clear Database before import' EMPTYBEFOREIMPORT: 'Replace data'
IMPORT: 'importar do CSV' IMPORT: 'importar do CSV'
IMPORTEDRECORDS: 'Imported {count} records.' IMPORTEDRECORDS: 'Imported {count} records.'
NOCSVFILE: 'Por favor, localize um arquivo CSV para importar' NOCSVFILE: 'Por favor, localize um arquivo CSV para importar'
@ -515,7 +529,20 @@ pt_BR:
BtnImport: 'Import from CSV' BtnImport: 'Import from CSV'
FileFieldLabel: 'CSV File <small>(Allowed extensions: *.csv)</small>' FileFieldLabel: 'CSV File <small>(Allowed extensions: *.csv)</small>'
SilverStripeNavigator: SilverStripeNavigator:
Auto: Auto
ChangeViewMode: 'Change view mode'
Desktop: Desktop
DualWindowView: 'Dual Window'
Edit: Edit Edit: Edit
EditView: 'Edit mode'
Mobile: Mobile
PreviewState: 'Preview State'
PreviewView: 'Preview mode'
Responsive: Responsive
SplitView: 'Split mode'
Tablet: Tablet
ViewDeviceWidth: 'Select a preview width'
Width: width
SimpleImageField: SimpleImageField:
NOUPLOAD: 'Não foi feito o upload de nenhuma imagem' NOUPLOAD: 'Não foi feito o upload de nenhuma imagem'
SiteTree: SiteTree:
@ -551,6 +578,8 @@ pt_BR:
ATTACHFILE: 'Attach a file' ATTACHFILE: 'Attach a file'
ATTACHFILES: 'Attach files' ATTACHFILES: 'Attach files'
AttachFile: 'Attach file(s)' AttachFile: 'Attach file(s)'
CHOOSEANOTHERFILE: 'Choose another file'
CHOOSEANOTHERINFO: 'Replace this file with another one from the file store'
DELETE: 'Delete from files' DELETE: 'Delete from files'
DELETEINFO: 'Permanently delete this file from the file store' DELETEINFO: 'Permanently delete this file from the file store'
DOEDIT: Save DOEDIT: Save
@ -565,12 +594,15 @@ pt_BR:
FROMFILES: 'From files' FROMFILES: 'From files'
HOTLINKINFO: 'Info: This image will be hotlinked. Please ensure you have permissions from the original site creator to do so.' HOTLINKINFO: 'Info: This image will be hotlinked. Please ensure you have permissions from the original site creator to do so.'
MAXNUMBEROFFILES: 'Max number of {count} file(s) exceeded.' MAXNUMBEROFFILES: 'Max number of {count} file(s) exceeded.'
MAXNUMBEROFFILESONE: 'Can only upload one file'
MAXNUMBEROFFILESSHORT: 'Can only upload {count} files' MAXNUMBEROFFILESSHORT: 'Can only upload {count} files'
OVERWRITEWARNING: 'File with the same name already exists'
REMOVE: Remove REMOVE: Remove
REMOVEERROR: 'Error removing file' REMOVEERROR: 'Error removing file'
REMOVEINFO: 'Remove this file from here, but do not delete it from the file store' REMOVEINFO: 'Remove this file from here, but do not delete it from the file store'
STARTALL: 'Start all' STARTALL: 'Start all'
STARTALLINFO: 'Start all uploads' STARTALLINFO: 'Start all uploads'
Saved: Saved Saved: Saved
UPLOADSINTO: 'saves into /{path}'
Versioned: Versioned:
has_many_Versions: Versões has_many_Versions: Versões

View File

@ -2,6 +2,7 @@ ro:
AssetAdmin: AssetAdmin:
ALLOWEDEXTS: 'Allowed extensions' ALLOWEDEXTS: 'Allowed extensions'
NEWFOLDER: NewFolder NEWFOLDER: NewFolder
SHOWALLOWEDEXTS: 'Show allowed extensions'
AssetTableField: AssetTableField:
CREATED: 'First uploaded' CREATED: 'First uploaded'
DIM: Dimensions DIM: Dimensions
@ -59,9 +60,9 @@ ro:
ERRORNOTADMIN: 'Acest utilizator nu este un administrator.' ERRORNOTADMIN: 'Acest utilizator nu este un administrator.'
ERRORNOTREC: 'That username / password isn''t recognised' ERRORNOTREC: 'That username / password isn''t recognised'
Boolean: Boolean:
0: 'False'
ANY: Any ANY: Any
1: 'True' NOANSWER: 'False'
YESANSWER: 'True'
CMSLoadingScreen.ss: CMSLoadingScreen.ss:
LOADING: Loading... LOADING: Loading...
REQUIREJS: 'The CMS requires that you have JavaScript enabled.' REQUIREJS: 'The CMS requires that you have JavaScript enabled.'
@ -70,6 +71,8 @@ ro:
ACCESSALLINTERFACES: 'Access to all CMS sections' ACCESSALLINTERFACES: 'Access to all CMS sections'
ACCESSALLINTERFACESHELP: 'Overrules more specific access settings.' ACCESSALLINTERFACESHELP: 'Overrules more specific access settings.'
SAVE: Save SAVE: Save
CMSPageHistoryController_versions.ss:
PREVIEW: 'Website preview'
CMSProfileController: CMSProfileController:
MENUTITLE: 'My Profile' MENUTITLE: 'My Profile'
ChangePasswordEmail.ss: ChangePasswordEmail.ss:
@ -79,8 +82,8 @@ ro:
HELLO: Salut HELLO: Salut
PASSWORD: Parola PASSWORD: Parola
CheckboxField: CheckboxField:
- 'False' NOANSWER: 'False'
- 'True' YESANSWER: 'True'
ComplexTableField: ComplexTableField:
CLOSEPOPUP: 'Close Popup' CLOSEPOPUP: 'Close Popup'
SUCCESSADD2: 'Added {name}' SUCCESSADD2: 'Added {name}'
@ -109,20 +112,21 @@ ro:
PLURALNAME: 'Obiecte Data' PLURALNAME: 'Obiecte Data'
SINGULARNAME: 'Obiect Data' SINGULARNAME: 'Obiect Data'
Date: Date:
DAY: zi DAY: day
DAYS: zile DAYS: days
HOUR: oră HOUR: hour
HOURS: ore HOURS: hours
MIN: minut LessThanMinuteAgo: 'less than a minute'
MINS: minute MIN: min
MONTH: lună MINS: mins
MONTHS: luni MONTH: month
SEC: secundă MONTHS: months
SECS: secunde SEC: sec
SECS: secs
TIMEDIFFAGO: '{difference} ago' TIMEDIFFAGO: '{difference} ago'
TIMEDIFFIN: 'in {difference}' TIMEDIFFIN: 'in {difference}'
YEAR: an YEAR: year
YEARS: ani YEARS: years
DateField: DateField:
NOTSET: 'not set' NOTSET: 'not set'
TODAY: astazi TODAY: astazi
@ -198,7 +202,8 @@ ro:
TEXT2: 'link de resetare a parolei' TEXT2: 'link de resetare a parolei'
TEXT3: pentru TEXT3: pentru
Form: Form:
FIELDISREQUIRED: '%s is required' CSRF_FAILED_MESSAGE: 'There seems to have been a technical problem. Please click the back button, refresh your browser, and try again.'
FIELDISREQUIRED: '{name} is required'
SubmitBtnLabel: Go SubmitBtnLabel: Go
VALIDATIONCREDITNUMBER: 'Please ensure you have entered the {number} credit card number correctly' VALIDATIONCREDITNUMBER: 'Please ensure you have entered the {number} credit card number correctly'
VALIDATIONNOTUNIQUE: 'Valoarea introdusă nu este unică' VALIDATIONNOTUNIQUE: 'Valoarea introdusă nu este unică'
@ -208,6 +213,7 @@ ro:
VALIDATOR: Validator VALIDATOR: Validator
VALIDCURRENCY: 'Please enter a valid currency' VALIDCURRENCY: 'Please enter a valid currency'
FormField: FormField:
Example: 'e.g. %s'
NONE: none NONE: none
GridAction: GridAction:
DELETE_DESCRIPTION: Delete DELETE_DESCRIPTION: Delete
@ -230,6 +236,7 @@ ro:
ResetFilter: Reseteaza ResetFilter: Reseteaza
GridFieldAction_Delete: GridFieldAction_Delete:
DeletePermissionsFailure: 'No delete permissions' DeletePermissionsFailure: 'No delete permissions'
EditPermissionsFailure: 'No permission to unlink record'
GridFieldDetailForm: GridFieldDetailForm:
CancelBtn: Cancel CancelBtn: Cancel
Create: Create Create: Create
@ -237,7 +244,9 @@ ro:
DeletePermissionsFailure: 'No delete permissions' DeletePermissionsFailure: 'No delete permissions'
Deleted: 'Deleted %s %s' Deleted: 'Deleted %s %s'
Save: Save Save: Save
Saved: 'Saved %s %s' Saved: 'Saved {name} {link}'
GridFieldEditButton.ss:
EDIT: Edit
GridFieldItemEditView.ss: null GridFieldItemEditView.ss: null
Group: Group:
AddRole: 'Add a role for this group' AddRole: 'Add a role for this group'
@ -267,6 +276,7 @@ ro:
ADDURL: 'Add URL' ADDURL: 'Add URL'
ADJUSTDETAILSDIMENSIONS: 'Details &amp; dimensions' ADJUSTDETAILSDIMENSIONS: 'Details &amp; dimensions'
ANCHORVALUE: Anchor ANCHORVALUE: Anchor
BUTTONADDURL: 'Add url'
BUTTONINSERT: Insert BUTTONINSERT: Insert
BUTTONINSERTLINK: 'Insereaza link' BUTTONINSERTLINK: 'Insereaza link'
BUTTONREMOVELINK: 'Indeparteaza link' BUTTONREMOVELINK: 'Indeparteaza link'
@ -331,7 +341,10 @@ ro:
PreviewButton: Preview PreviewButton: Preview
REORGANISATIONSUCCESSFUL: 'Reorganised the site tree successfully.' REORGANISATIONSUCCESSFUL: 'Reorganised the site tree successfully.'
SAVEDUP: Saved. SAVEDUP: Saved.
VersionUnknown: unknown ShowAsList: 'show as list'
TooManyPages: 'Too many pages'
ValidationError: 'Validation error'
VersionUnknown: Unknown
LeftAndMain_Menu.ss: LeftAndMain_Menu.ss:
Hello: Hi Hello: Hi
LOGOUT: 'Log out' LOGOUT: 'Log out'
@ -407,6 +420,7 @@ ro:
TWODIGITMONTH: 'Two-digit month (01=January, etc.)' TWODIGITMONTH: 'Two-digit month (01=January, etc.)'
TWODIGITSECOND: 'Two digits of second (00 through 59)' TWODIGITSECOND: 'Two digits of second (00 through 59)'
TWODIGITYEAR: 'Two-digit year' TWODIGITYEAR: 'Two-digit year'
Toggle: 'Show formatting help'
MemberImportForm: MemberImportForm:
Help1: '<p>Import users in <em>CSV format</em> (comma-separated values). <small><a href="#" class="toggle-advanced">Show advanced usage</a></small></p>' Help1: '<p>Import users in <em>CSV format</em> (comma-separated values). <small><a href="#" class="toggle-advanced">Show advanced usage</a></small></p>'
Help2: '<div class="advanced"> <h4>Advanced usage</h4> <ul> <li>Allowed columns: <em>%s</em></li> <li>Existing users are matched by their unique <em>Code</em> property, and updated with any new values from the imported file.</li> <li>Groups can be assigned by the <em>Groups</em> column. Groups are identified by their <em>Code</em> property, multiple groups can be separated by comma. Existing group memberships are not cleared.</li> </ul></div>' Help2: '<div class="advanced"> <h4>Advanced usage</h4> <ul> <li>Allowed columns: <em>%s</em></li> <li>Existing users are matched by their unique <em>Code</em> property, and updated with any new values from the imported file.</li> <li>Groups can be assigned by the <em>Groups</em> column. Groups are identified by their <em>Code</em> property, multiple groups can be separated by comma. Existing group memberships are not cleared.</li> </ul></div>'
@ -421,7 +435,7 @@ ro:
ModelAdmin: ModelAdmin:
DELETE: Delete DELETE: Delete
DELETEDRECORDS: 'Deleted {count} records.' DELETEDRECORDS: 'Deleted {count} records.'
EMPTYBEFOREIMPORT: 'Clear Database before import' EMPTYBEFOREIMPORT: 'Replace data'
IMPORT: 'Import from CSV' IMPORT: 'Import from CSV'
IMPORTEDRECORDS: 'Imported {count} records.' IMPORTEDRECORDS: 'Imported {count} records.'
NOCSVFILE: 'Please browse for a CSV file to import' NOCSVFILE: 'Please browse for a CSV file to import'
@ -515,7 +529,20 @@ ro:
BtnImport: 'Import from CSV' BtnImport: 'Import from CSV'
FileFieldLabel: 'CSV File <small>(Allowed extensions: *.csv)</small>' FileFieldLabel: 'CSV File <small>(Allowed extensions: *.csv)</small>'
SilverStripeNavigator: SilverStripeNavigator:
Auto: Auto
ChangeViewMode: 'Change view mode'
Desktop: Desktop
DualWindowView: 'Dual Window'
Edit: Edit Edit: Edit
EditView: 'Edit mode'
Mobile: Mobile
PreviewState: 'Preview State'
PreviewView: 'Preview mode'
Responsive: Responsive
SplitView: 'Split mode'
Tablet: Tablet
ViewDeviceWidth: 'Select a preview width'
Width: width
SimpleImageField: SimpleImageField:
NOUPLOAD: 'Nici o imagine incarcata' NOUPLOAD: 'Nici o imagine incarcata'
SiteTree: SiteTree:
@ -551,6 +578,8 @@ ro:
ATTACHFILE: 'Atasati un fisier' ATTACHFILE: 'Atasati un fisier'
ATTACHFILES: 'Attach files' ATTACHFILES: 'Attach files'
AttachFile: 'Attach file(s)' AttachFile: 'Attach file(s)'
CHOOSEANOTHERFILE: 'Choose another file'
CHOOSEANOTHERINFO: 'Replace this file with another one from the file store'
DELETE: 'Delete from files' DELETE: 'Delete from files'
DELETEINFO: 'Permanently delete this file from the file store' DELETEINFO: 'Permanently delete this file from the file store'
DOEDIT: Salveaza DOEDIT: Salveaza
@ -565,12 +594,15 @@ ro:
FROMFILES: 'From files' FROMFILES: 'From files'
HOTLINKINFO: 'Info: This image will be hotlinked. Please ensure you have permissions from the original site creator to do so.' HOTLINKINFO: 'Info: This image will be hotlinked. Please ensure you have permissions from the original site creator to do so.'
MAXNUMBEROFFILES: 'Max number of {count} file(s) exceeded.' MAXNUMBEROFFILES: 'Max number of {count} file(s) exceeded.'
MAXNUMBEROFFILESONE: 'Can only upload one file'
MAXNUMBEROFFILESSHORT: 'Can only upload {count} files' MAXNUMBEROFFILESSHORT: 'Can only upload {count} files'
OVERWRITEWARNING: 'File with the same name already exists'
REMOVE: Remove REMOVE: Remove
REMOVEERROR: 'Error removing file' REMOVEERROR: 'Error removing file'
REMOVEINFO: 'Remove this file from here, but do not delete it from the file store' REMOVEINFO: 'Remove this file from here, but do not delete it from the file store'
STARTALL: 'Start all' STARTALL: 'Start all'
STARTALLINFO: 'Start all uploads' STARTALLINFO: 'Start all uploads'
Saved: Salvat Saved: Salvat
UPLOADSINTO: 'saves into /{path}'
Versioned: Versioned:
has_many_Versions: Versiune has_many_Versions: Versiune

View File

@ -2,14 +2,15 @@ ru:
AssetAdmin: AssetAdmin:
ALLOWEDEXTS: 'Allowed extensions' ALLOWEDEXTS: 'Allowed extensions'
NEWFOLDER: 'Новая папка' NEWFOLDER: 'Новая папка'
SHOWALLOWEDEXTS: 'Show allowed extensions'
AssetTableField: AssetTableField:
CREATED: 'Первая загрузка' CREATED: 'Первая загрузка'
DIM: Размеры DIM: 'Размеры'
FILENAME: 'Имя файла' FILENAME: 'Имя файла'
FOLDER: Папка FOLDER: Папка
LASTEDIT: 'Последнее изменение' LASTEDIT: 'Последнее изменение'
OWNER: Владелец OWNER: Владелец
SIZE: Размер SIZE: 'Размер'
TITLE: Название TITLE: Название
TYPE: Тип TYPE: Тип
URL: URL URL: URL
@ -59,9 +60,9 @@ ru:
ERRORNOTADMIN: 'Такой пользователь не является администратором.' ERRORNOTADMIN: 'Такой пользователь не является администратором.'
ERRORNOTREC: 'Такое имя пользователя или пароль не существует' ERRORNOTREC: 'Такое имя пользователя или пароль не существует'
Boolean: Boolean:
0: 'False'
ANY: Все ANY: Все
1: 'True' NOANSWER: 'False'
YESANSWER: 'True'
CMSLoadingScreen.ss: CMSLoadingScreen.ss:
LOADING: 'Идет загрузка...' LOADING: 'Идет загрузка...'
REQUIREJS: 'Для работы с CMS у вас должен быть включен JavaScript.' REQUIREJS: 'Для работы с CMS у вас должен быть включен JavaScript.'
@ -69,7 +70,9 @@ ru:
ACCESS: 'Доступ к разделу ''{title}''' ACCESS: 'Доступ к разделу ''{title}'''
ACCESSALLINTERFACES: 'Доступ ко всему интерфейсу CMS' ACCESSALLINTERFACES: 'Доступ ко всему интерфейсу CMS'
ACCESSALLINTERFACESHELP: 'Отменяет индивидуальные настройки прав доступа.' ACCESSALLINTERFACESHELP: 'Отменяет индивидуальные настройки прав доступа.'
SAVE: Сохранить SAVE: 'Сохранить'
CMSPageHistoryController_versions.ss:
PREVIEW: 'Предварительный просмотр сайта'
CMSProfileController: CMSProfileController:
MENUTITLE: 'Мой профиль' MENUTITLE: 'Мой профиль'
ChangePasswordEmail.ss: ChangePasswordEmail.ss:
@ -79,8 +82,8 @@ ru:
HELLO: Здравствуйте HELLO: Здравствуйте
PASSWORD: Пароль PASSWORD: Пароль
CheckboxField: CheckboxField:
- 'False' NOANSWER: 'False'
- 'True' YESANSWER: 'True'
ComplexTableField: ComplexTableField:
CLOSEPOPUP: 'Закрыть всплывающее окно' CLOSEPOPUP: 'Закрыть всплывающее окно'
SUCCESSADD2: '{name} добавлено' SUCCESSADD2: '{name} добавлено'
@ -109,20 +112,21 @@ ru:
PLURALNAME: Объекты PLURALNAME: Объекты
SINGULARNAME: Объект SINGULARNAME: Объект
Date: Date:
DAY: день DAY: day
DAYS: дней DAYS: days
HOUR: час HOUR: hour
HOURS: час. HOURS: hours
MIN: мин. LessThanMinuteAgo: 'less than a minute'
MINS: мин. MIN: min
MONTH: месяц MINS: mins
MONTHS: месяца(ев) MONTH: month
SEC: сек. MONTHS: months
SECS: сек. SEC: sec
SECS: secs
TIMEDIFFAGO: '{difference} назад' TIMEDIFFAGO: '{difference} назад'
TIMEDIFFIN: 'через {difference}' TIMEDIFFIN: 'через {difference}'
YEAR: год YEAR: year
YEARS: лет YEARS: years
DateField: DateField:
NOTSET: 'не установлено' NOTSET: 'не установлено'
TODAY: сегодня TODAY: сегодня
@ -198,7 +202,8 @@ ru:
TEXT2: 'ссылка переустановки пароля' TEXT2: 'ссылка переустановки пароля'
TEXT3: для TEXT3: для
Form: Form:
FIELDISREQUIRED: 'Поле %s является обязательным' CSRF_FAILED_MESSAGE: 'There seems to have been a technical problem. Please click the back button, refresh your browser, and try again.'
FIELDISREQUIRED: '{name} is required'
SubmitBtnLabel: Выбрать SubmitBtnLabel: Выбрать
VALIDATIONCREDITNUMBER: 'Пожалуйста, убедитесь, что номер кредитной карты {number} задан правильно' VALIDATIONCREDITNUMBER: 'Пожалуйста, убедитесь, что номер кредитной карты {number} задан правильно'
VALIDATIONNOTUNIQUE: 'Введенное значение не уникально' VALIDATIONNOTUNIQUE: 'Введенное значение не уникально'
@ -208,6 +213,7 @@ ru:
VALIDATOR: Валидатор VALIDATOR: Валидатор
VALIDCURRENCY: 'Пожалуйста, укажите валюту правильно' VALIDCURRENCY: 'Пожалуйста, укажите валюту правильно'
FormField: FormField:
Example: 'e.g. %s'
NONE: 'не выбрано' NONE: 'не выбрано'
GridAction: GridAction:
DELETE_DESCRIPTION: Удалить DELETE_DESCRIPTION: Удалить
@ -230,14 +236,17 @@ ru:
ResetFilter: Сброс ResetFilter: Сброс
GridFieldAction_Delete: GridFieldAction_Delete:
DeletePermissionsFailure: 'Нет прав на удаление' DeletePermissionsFailure: 'Нет прав на удаление'
EditPermissionsFailure: 'No permission to unlink record'
GridFieldDetailForm: GridFieldDetailForm:
CancelBtn: Отмена CancelBtn: Отмена
Create: Создать Create: Создать
Delete: Удалить Delete: Удалить
DeletePermissionsFailure: 'Нет прав на удаление' DeletePermissionsFailure: 'Нет прав на удаление'
Deleted: 'Удалено %s %s' Deleted: 'Удалено %s %s'
Save: Сохранить Save: 'Сохранить'
Saved: 'Сохранено %s %s' Saved: 'Saved {name} {link}'
GridFieldEditButton.ss:
EDIT: 'Редактировать'
GridFieldItemEditView.ss: null GridFieldItemEditView.ss: null
Group: Group:
AddRole: 'Добавить роль для этой группы' AddRole: 'Добавить роль для этой группы'
@ -267,6 +276,7 @@ ru:
ADDURL: 'Добавить URL' ADDURL: 'Добавить URL'
ADJUSTDETAILSDIMENSIONS: 'Дополнительные сведения и размеры' ADJUSTDETAILSDIMENSIONS: 'Дополнительные сведения и размеры'
ANCHORVALUE: Якорь ANCHORVALUE: Якорь
BUTTONADDURL: 'Добавить URL'
BUTTONINSERT: Вставить BUTTONINSERT: Вставить
BUTTONINSERTLINK: 'Вставить ссылку' BUTTONINSERTLINK: 'Вставить ссылку'
BUTTONREMOVELINK: 'Удалить ссылку' BUTTONREMOVELINK: 'Удалить ссылку'
@ -288,7 +298,7 @@ ru:
IMAGEALT: 'Альтернативный текст (alt)' IMAGEALT: 'Альтернативный текст (alt)'
IMAGEALTTEXT: 'Альтернативный текст (alt) - показывается, если изображение недоступно' IMAGEALTTEXT: 'Альтернативный текст (alt) - показывается, если изображение недоступно'
IMAGEALTTEXTDESC: 'Передается программе чтения экрана или отображается, если изображение недоступно' IMAGEALTTEXTDESC: 'Передается программе чтения экрана или отображается, если изображение недоступно'
IMAGEDIMENSIONS: Размеры IMAGEDIMENSIONS: 'Размеры'
IMAGEHEIGHTPX: Высота IMAGEHEIGHTPX: Высота
IMAGETITLE: 'Текст (всплывающая подсказка) - для дополнительной информации об изображении' IMAGETITLE: 'Текст (всплывающая подсказка) - для дополнительной информации об изображении'
IMAGETITLETEXT: 'Текст (всплывающая подсказка)' IMAGETITLETEXT: 'Текст (всплывающая подсказка)'
@ -330,11 +340,14 @@ ru:
PLEASESAVE: 'Пожалуйста, сохраните страницу: ее нельзя обновить, т.к. она еще не была сохранена.' PLEASESAVE: 'Пожалуйста, сохраните страницу: ее нельзя обновить, т.к. она еще не была сохранена.'
PreviewButton: Просмотр PreviewButton: Просмотр
REORGANISATIONSUCCESSFUL: 'Древесная структура сайта успешно реорганизована.' REORGANISATIONSUCCESSFUL: 'Древесная структура сайта успешно реорганизована.'
SAVEDUP: Сохранено. SAVEDUP: 'Сохранено.'
VersionUnknown: неизвестно ShowAsList: 'show as list'
TooManyPages: 'Too many pages'
ValidationError: 'Validation error'
VersionUnknown: Unknown
LeftAndMain_Menu.ss: LeftAndMain_Menu.ss:
Hello: Здравствуйте Hello: Здравствуйте
LOGOUT: Выход LOGOUT: 'Выход'
LoginAttempt: LoginAttempt:
Email: Email Email: Email
IP: IP-адрес IP: IP-адрес
@ -407,6 +420,7 @@ ru:
TWODIGITMONTH: 'Месяц двумя цифрами (01=январь и т.д.)' TWODIGITMONTH: 'Месяц двумя цифрами (01=январь и т.д.)'
TWODIGITSECOND: 'Секунды: двумя цифрами (00 - 59)' TWODIGITSECOND: 'Секунды: двумя цифрами (00 - 59)'
TWODIGITYEAR: 'Год: двумя цифрами' TWODIGITYEAR: 'Год: двумя цифрами'
Toggle: 'Show formatting help'
MemberImportForm: MemberImportForm:
Help1: '<p>Импорт пользователей в формате <em>CSV</em> (comma-separated values). <small><a href="#" class="toggle-advanced">Показать подробности</a></small></p>' Help1: '<p>Импорт пользователей в формате <em>CSV</em> (comma-separated values). <small><a href="#" class="toggle-advanced">Показать подробности</a></small></p>'
Help2: "<div class=\"advanced\">\\n<h4>Расширенное использование</h4>\\n<ul>\\n<li>Разрешенные столбцы: <em>%s</em></li>\\n<li>Существующие пользователи сверяются c уникальным атрибутом <em>Code</em> и новые значения из \\nимпортированного файла вносятся в записи о пользователях.</li>\\n<li>Назначение групп производится с помощью столбца <em>Groups</em>. Группы идентифицируются по атрибуту <em>Code</em>, \\nотдельные группы разделяются запятой. Если участник входит в какую-либо группу, это свойство не обнуляется.</li>\\n</ul>\\n</div>" Help2: "<div class=\"advanced\">\\n<h4>Расширенное использование</h4>\\n<ul>\\n<li>Разрешенные столбцы: <em>%s</em></li>\\n<li>Существующие пользователи сверяются c уникальным атрибутом <em>Code</em> и новые значения из \\nимпортированного файла вносятся в записи о пользователях.</li>\\n<li>Назначение групп производится с помощью столбца <em>Groups</em>. Группы идентифицируются по атрибуту <em>Code</em>, \\nотдельные группы разделяются запятой. Если участник входит в какую-либо группу, это свойство не обнуляется.</li>\\n</ul>\\n</div>"
@ -421,7 +435,7 @@ ru:
ModelAdmin: ModelAdmin:
DELETE: Удалить DELETE: Удалить
DELETEDRECORDS: 'Удалено {count} записей.' DELETEDRECORDS: 'Удалено {count} записей.'
EMPTYBEFOREIMPORT: 'Очистить базу данных перед импортированием' EMPTYBEFOREIMPORT: 'Заменить данные'
IMPORT: 'Импорт из CSV' IMPORT: 'Импорт из CSV'
IMPORTEDRECORDS: 'Импортировано {count} записей.' IMPORTEDRECORDS: 'Импортировано {count} записей.'
NOCSVFILE: 'Выберите CSV-файл для импорта' NOCSVFILE: 'Выберите CSV-файл для импорта'
@ -464,8 +478,8 @@ ru:
FromRoleOnGroup: 'перенято из роли "%s" для группы "%s"' FromRoleOnGroup: 'перенято из роли "%s" для группы "%s"'
PermissionRole: PermissionRole:
OnlyAdminCanApply: 'Может применяться только администратором' OnlyAdminCanApply: 'Может применяться только администратором'
PLURALNAME: Роли PLURALNAME: 'Роли'
SINGULARNAME: Роль SINGULARNAME: 'Роль'
Title: Название Title: Название
PermissionRoleCode: PermissionRoleCode:
PLURALNAME: 'Коды ролей доступа' PLURALNAME: 'Коды ролей доступа'
@ -487,7 +501,7 @@ ru:
ENTERNEWPASSWORD: 'Пожалуйста, введите новый пароль.' ENTERNEWPASSWORD: 'Пожалуйста, введите новый пароль.'
ERRORPASSWORDPERMISSION: 'Вы должны войти в систему, чтобы изменить Ваш пароль!' ERRORPASSWORDPERMISSION: 'Вы должны войти в систему, чтобы изменить Ваш пароль!'
LOGGEDOUT: 'Вы вышли. Если Вы хотите войти снова, введите ваши учетные данные ниже.' LOGGEDOUT: 'Вы вышли. Если Вы хотите войти снова, введите ваши учетные данные ниже.'
LOGIN: Вход LOGIN: 'Вход'
NOTEPAGESECURED: 'Эта страница защищена. Пожалуйста, введите свои учетные данные для входа.' NOTEPAGESECURED: 'Эта страница защищена. Пожалуйста, введите свои учетные данные для входа.'
NOTERESETLINKINVALID: '<p>Неверная ссылка переустановки пароля или время действия ссылки истекло.</p><p>Вы можете повторно запросить ссылку, щелкнув <a href="{link1}">здесь</a>, или поменять пароль, <a href="{link2}">войдя в систему</a>.</p> ' NOTERESETLINKINVALID: '<p>Неверная ссылка переустановки пароля или время действия ссылки истекло.</p><p>Вы можете повторно запросить ссылку, щелкнув <a href="{link1}">здесь</a>, или поменять пароль, <a href="{link2}">войдя в систему</a>.</p> '
NOTERESETPASSWORD: 'Введите Ваш адрес email, и Вам будет отправлена ссылка, по которой Вы сможете переустановить свой пароль' NOTERESETPASSWORD: 'Введите Ваш адрес email, и Вам будет отправлена ссылка, по которой Вы сможете переустановить свой пароль'
@ -507,15 +521,28 @@ ru:
MemberListCaution: 'Внимание: при удалении участников из этого списка они будут удалены из всех групп и из базы данных ' MemberListCaution: 'Внимание: при удалении участников из этого списка они будут удалены из всех групп и из базы данных '
NEWGROUP: 'Новая группа' NEWGROUP: 'Новая группа'
PERMISSIONS: 'Права доступа' PERMISSIONS: 'Права доступа'
ROLES: Роли ROLES: 'Роли'
ROLESDESCRIPTION: 'Роли представляют собой сочетания различных прав доступа, которые могут быть присвоены группам.<br />При необходимости они наследуются от групп более высокого уровня.' ROLESDESCRIPTION: 'Роли представляют собой сочетания различных прав доступа, которые могут быть присвоены группам.<br />При необходимости они наследуются от групп более высокого уровня.'
TABROLES: Роли TABROLES: 'Роли'
Users: Пользователи Users: Пользователи
SecurityAdmin_MemberImportForm: SecurityAdmin_MemberImportForm:
BtnImport: 'Импорт из CSV' BtnImport: 'Импорт из CSV'
FileFieldLabel: 'Файл CSV <small>(Допустимые расширения: *.csv)</small>' FileFieldLabel: 'Файл CSV <small>(Допустимые расширения: *.csv)</small>'
SilverStripeNavigator: SilverStripeNavigator:
Edit: Редактировать Auto: Auto
ChangeViewMode: 'Сменить режим просмотра'
Desktop: Desktop
DualWindowView: 'Dual Window'
Edit: 'Редактировать'
EditView: 'Edit mode'
Mobile: Mobile
PreviewState: 'Preview State'
PreviewView: 'Preview mode'
Responsive: Responsive
SplitView: 'Split mode'
Tablet: Планшет
ViewDeviceWidth: 'Select a preview width'
Width: width
SimpleImageField: SimpleImageField:
NOUPLOAD: 'Не загружено ни одного изображения' NOUPLOAD: 'Не загружено ни одного изображения'
SiteTree: SiteTree:
@ -551,13 +578,15 @@ ru:
ATTACHFILE: 'Прикрепить файл' ATTACHFILE: 'Прикрепить файл'
ATTACHFILES: 'Прикрепить файлы' ATTACHFILES: 'Прикрепить файлы'
AttachFile: 'Прикрепить файл(ы)' AttachFile: 'Прикрепить файл(ы)'
CHOOSEANOTHERFILE: 'Choose another file'
CHOOSEANOTHERINFO: 'Replace this file with another one from the file store'
DELETE: 'Удалить из файлов' DELETE: 'Удалить из файлов'
DELETEINFO: 'Окончательно удалить этот файл с сервера' DELETEINFO: 'Окончательно удалить этот файл с сервера'
DOEDIT: Сохранить DOEDIT: 'Сохранить'
DROPFILE: 'перетащите файл сюда' DROPFILE: 'перетащите файл сюда'
DROPFILES: 'перетащить файлы' DROPFILES: 'перетащить файлы'
Dimensions: Размеры Dimensions: 'Размеры'
EDIT: Редактировать EDIT: 'Редактировать'
EDITINFO: 'Редактировать этот файл' EDITINFO: 'Редактировать этот файл'
FIELDNOTSET: 'Информация о файле не найдена' FIELDNOTSET: 'Информация о файле не найдена'
FROMCOMPUTER: 'С диска' FROMCOMPUTER: 'С диска'
@ -565,12 +594,15 @@ ru:
FROMFILES: 'Из файлов' FROMFILES: 'Из файлов'
HOTLINKINFO: 'Внимание: это изображение будет вставлено через хотлинк. Пожалуйста, не забывайте, что на это у вас должно быть разрешение владельца исходного ресурса.' HOTLINKINFO: 'Внимание: это изображение будет вставлено через хотлинк. Пожалуйста, не забывайте, что на это у вас должно быть разрешение владельца исходного ресурса.'
MAXNUMBEROFFILES: 'Превышено максимальное количество файлов ({count}).' MAXNUMBEROFFILES: 'Превышено максимальное количество файлов ({count}).'
MAXNUMBEROFFILESONE: 'Can only upload one file'
MAXNUMBEROFFILESSHORT: 'Можно загрузить не более {count} файлов' MAXNUMBEROFFILESSHORT: 'Можно загрузить не более {count} файлов'
OVERWRITEWARNING: 'File with the same name already exists'
REMOVE: Удалить REMOVE: Удалить
REMOVEERROR: 'Ошибка при удалении файла' REMOVEERROR: 'Ошибка при удалении файла'
REMOVEINFO: 'Удалить файл отсюда, но не удалять с сервера' REMOVEINFO: 'Удалить файл отсюда, но не удалять с сервера'
STARTALL: 'Стартовать все' STARTALL: 'Стартовать все'
STARTALLINFO: 'Стартовать все загрузки' STARTALLINFO: 'Стартовать все загрузки'
Saved: Сохранено Saved: 'Сохранено'
UPLOADSINTO: 'saves into /{path}'
Versioned: Versioned:
has_many_Versions: Версии has_many_Versions: Версии

View File

@ -2,6 +2,7 @@ si:
AssetAdmin: AssetAdmin:
ALLOWEDEXTS: 'Allowed extensions' ALLOWEDEXTS: 'Allowed extensions'
NEWFOLDER: 'අලත් ගොනුවක්' NEWFOLDER: 'අලත් ගොනුවක්'
SHOWALLOWEDEXTS: 'Show allowed extensions'
AssetTableField: AssetTableField:
CREATED: 'පලමු ලිපිය අප්ලෝඩ් කරන ලදී' CREATED: 'පලමු ලිපිය අප්ලෝඩ් කරන ලදී'
DIM: මාන DIM: මාන
@ -59,9 +60,9 @@ si:
ERRORNOTADMIN: 'ඵම පරිශීලකයා නියමුවෙකු නොවේ' ERRORNOTADMIN: 'ඵම පරිශීලකයා නියමුවෙකු නොවේ'
ERRORNOTREC: 'ඵම නම/මුරපදය හදුනාගත නොහැක' ERRORNOTREC: 'ඵම නම/මුරපදය හදුනාගත නොහැක'
Boolean: Boolean:
0: 'False'
ANY: Any ANY: Any
1: 'True' NOANSWER: 'False'
YESANSWER: 'True'
CMSLoadingScreen.ss: CMSLoadingScreen.ss:
LOADING: Loading... LOADING: Loading...
REQUIREJS: 'The CMS requires that you have JavaScript enabled.' REQUIREJS: 'The CMS requires that you have JavaScript enabled.'
@ -70,6 +71,8 @@ si:
ACCESSALLINTERFACES: 'Access to all CMS sections' ACCESSALLINTERFACES: 'Access to all CMS sections'
ACCESSALLINTERFACESHELP: 'Overrules more specific access settings.' ACCESSALLINTERFACESHELP: 'Overrules more specific access settings.'
SAVE: 'සේවි කරන්න' SAVE: 'සේවි කරන්න'
CMSPageHistoryController_versions.ss:
PREVIEW: 'Website preview'
CMSProfileController: CMSProfileController:
MENUTITLE: 'My Profile' MENUTITLE: 'My Profile'
ChangePasswordEmail.ss: ChangePasswordEmail.ss:
@ -79,8 +82,8 @@ si:
HELLO: කොහොමද HELLO: කොහොමද
PASSWORD: Password PASSWORD: Password
CheckboxField: CheckboxField:
- 'False' NOANSWER: 'False'
- 'True' YESANSWER: 'True'
ComplexTableField: ComplexTableField:
CLOSEPOPUP: 'Close Popup' CLOSEPOPUP: 'Close Popup'
SUCCESSADD2: 'Added {name}' SUCCESSADD2: 'Added {name}'
@ -99,7 +102,7 @@ si:
MAXIMUM: 'Passwords must be at most {max} characters long.' MAXIMUM: 'Passwords must be at most {max} characters long.'
SHOWONCLICKTITLE: 'මුර පදය වෙනස් කිරීම' SHOWONCLICKTITLE: 'මුර පදය වෙනස් කිරීම'
CreditCardField: CreditCardField:
FIRST: පළමු FIRST: 'පළමු'
FOURTH: fourth FOURTH: fourth
SECOND: දෙවන SECOND: දෙවන
THIRD: third THIRD: third
@ -109,20 +112,21 @@ si:
PLURALNAME: 'දත්ත වස්තු' PLURALNAME: 'දත්ත වස්තු'
SINGULARNAME: 'දත්ත වස්තුව' SINGULARNAME: 'දත්ත වස්තුව'
Date: Date:
DAY: ඳිනය DAY: day
DAYS: ඳින DAYS: days
HOUR: පැය HOUR: hour
HOURS: පැය HOURS: hours
MIN: විනාඩිය LessThanMinuteAgo: 'less than a minute'
MINS: විනාඩි MIN: min
MONTH: මාසය MINS: mins
MONTHS: මාස MONTH: month
SEC: තත්පරය MONTHS: months
SECS: 'තත්පර ' SEC: sec
SECS: secs
TIMEDIFFAGO: '{difference} ago' TIMEDIFFAGO: '{difference} ago'
TIMEDIFFIN: 'in {difference}' TIMEDIFFIN: 'in {difference}'
YEAR: අවුරුද්ද YEAR: year
YEARS: අවුරුදු YEARS: years
DateField: DateField:
NOTSET: 'not set' NOTSET: 'not set'
TODAY: today TODAY: today
@ -198,7 +202,8 @@ si:
TEXT2: 'password reset link' TEXT2: 'password reset link'
TEXT3: සඳහා TEXT3: සඳහා
Form: Form:
FIELDISREQUIRED: '%s අවශ්යයි' CSRF_FAILED_MESSAGE: 'There seems to have been a technical problem. Please click the back button, refresh your browser, and try again.'
FIELDISREQUIRED: '{name} is required'
SubmitBtnLabel: Go SubmitBtnLabel: Go
VALIDATIONCREDITNUMBER: 'Please ensure you have entered the {number} credit card number correctly' VALIDATIONCREDITNUMBER: 'Please ensure you have entered the {number} credit card number correctly'
VALIDATIONNOTUNIQUE: 'අගය අද්විතීය නොවේ' VALIDATIONNOTUNIQUE: 'අගය අද්විතීය නොවේ'
@ -208,6 +213,7 @@ si:
VALIDATOR: Validator VALIDATOR: Validator
VALIDCURRENCY: 'Please enter a valid currency' VALIDCURRENCY: 'Please enter a valid currency'
FormField: FormField:
Example: 'e.g. %s'
NONE: none NONE: none
GridAction: GridAction:
DELETE_DESCRIPTION: Delete DELETE_DESCRIPTION: Delete
@ -230,6 +236,7 @@ si:
ResetFilter: Reset ResetFilter: Reset
GridFieldAction_Delete: GridFieldAction_Delete:
DeletePermissionsFailure: 'No delete permissions' DeletePermissionsFailure: 'No delete permissions'
EditPermissionsFailure: 'No permission to unlink record'
GridFieldDetailForm: GridFieldDetailForm:
CancelBtn: Cancel CancelBtn: Cancel
Create: Create Create: Create
@ -237,7 +244,9 @@ si:
DeletePermissionsFailure: 'No delete permissions' DeletePermissionsFailure: 'No delete permissions'
Deleted: 'Deleted %s %s' Deleted: 'Deleted %s %s'
Save: Save Save: Save
Saved: 'Saved %s %s' Saved: 'Saved {name} {link}'
GridFieldEditButton.ss:
EDIT: Edit
GridFieldItemEditView.ss: null GridFieldItemEditView.ss: null
Group: Group:
AddRole: 'Add a role for this group' AddRole: 'Add a role for this group'
@ -253,7 +262,7 @@ si:
RolesAddEditLink: 'Manage roles' RolesAddEditLink: 'Manage roles'
SINGULARNAME: Group SINGULARNAME: Group
Sort: 'Sort Order' Sort: 'Sort Order'
has_many_Permissions: අවසර has_many_Permissions: 'අවසර'
many_many_Members: සාමාජිකයින් many_many_Members: සාමාජිකයින්
GroupImportForm: GroupImportForm:
Help1: '<p>Import one or more groups in <em>CSV</em> format (comma-separated values). <small><a href="#" class="toggle-advanced">Show advanced usage</a></small></p>' Help1: '<p>Import one or more groups in <em>CSV</em> format (comma-separated values). <small><a href="#" class="toggle-advanced">Show advanced usage</a></small></p>'
@ -267,6 +276,7 @@ si:
ADDURL: 'Add URL' ADDURL: 'Add URL'
ADJUSTDETAILSDIMENSIONS: 'Details &amp; dimensions' ADJUSTDETAILSDIMENSIONS: 'Details &amp; dimensions'
ANCHORVALUE: Anchor ANCHORVALUE: Anchor
BUTTONADDURL: 'Add url'
BUTTONINSERT: Insert BUTTONINSERT: Insert
BUTTONINSERTLINK: 'බැදීමක් යොදන්න' BUTTONINSERTLINK: 'බැදීමක් යොදන්න'
BUTTONREMOVELINK: 'බැදීම ගලවන්න' BUTTONREMOVELINK: 'බැදීම ගලවන්න'
@ -331,7 +341,10 @@ si:
PreviewButton: Preview PreviewButton: Preview
REORGANISATIONSUCCESSFUL: 'Reorganised the site tree successfully.' REORGANISATIONSUCCESSFUL: 'Reorganised the site tree successfully.'
SAVEDUP: Saved. SAVEDUP: Saved.
VersionUnknown: unknown ShowAsList: 'show as list'
TooManyPages: 'Too many pages'
ValidationError: 'Validation error'
VersionUnknown: Unknown
LeftAndMain_Menu.ss: LeftAndMain_Menu.ss:
Hello: Hi Hello: Hi
LOGOUT: 'Log out' LOGOUT: 'Log out'
@ -407,6 +420,7 @@ si:
TWODIGITMONTH: 'Two-digit month (01=January, etc.)' TWODIGITMONTH: 'Two-digit month (01=January, etc.)'
TWODIGITSECOND: 'Two digits of second (00 through 59)' TWODIGITSECOND: 'Two digits of second (00 through 59)'
TWODIGITYEAR: 'Two-digit year' TWODIGITYEAR: 'Two-digit year'
Toggle: 'Show formatting help'
MemberImportForm: MemberImportForm:
Help1: '<p>Import users in <em>CSV format</em> (comma-separated values). <small><a href="#" class="toggle-advanced">Show advanced usage</a></small></p>' Help1: '<p>Import users in <em>CSV format</em> (comma-separated values). <small><a href="#" class="toggle-advanced">Show advanced usage</a></small></p>'
Help2: '<div class="advanced"> <h4>Advanced usage</h4> <ul> <li>Allowed columns: <em>%s</em></li> <li>Existing users are matched by their unique <em>Code</em> property, and updated with any new values from the imported file.</li> <li>Groups can be assigned by the <em>Groups</em> column. Groups are identified by their <em>Code</em> property, multiple groups can be separated by comma. Existing group memberships are not cleared.</li> </ul></div>' Help2: '<div class="advanced"> <h4>Advanced usage</h4> <ul> <li>Allowed columns: <em>%s</em></li> <li>Existing users are matched by their unique <em>Code</em> property, and updated with any new values from the imported file.</li> <li>Groups can be assigned by the <em>Groups</em> column. Groups are identified by their <em>Code</em> property, multiple groups can be separated by comma. Existing group memberships are not cleared.</li> </ul></div>'
@ -421,7 +435,7 @@ si:
ModelAdmin: ModelAdmin:
DELETE: Delete DELETE: Delete
DELETEDRECORDS: 'Deleted {count} records.' DELETEDRECORDS: 'Deleted {count} records.'
EMPTYBEFOREIMPORT: 'Clear Database before import' EMPTYBEFOREIMPORT: 'Replace data'
IMPORT: 'Import from CSV' IMPORT: 'Import from CSV'
IMPORTEDRECORDS: 'Imported {count} records.' IMPORTEDRECORDS: 'Imported {count} records.'
NOCSVFILE: 'Please browse for a CSV file to import' NOCSVFILE: 'Please browse for a CSV file to import'
@ -515,7 +529,20 @@ si:
BtnImport: 'Import from CSV' BtnImport: 'Import from CSV'
FileFieldLabel: 'CSV File <small>(Allowed extensions: *.csv)</small>' FileFieldLabel: 'CSV File <small>(Allowed extensions: *.csv)</small>'
SilverStripeNavigator: SilverStripeNavigator:
Auto: Auto
ChangeViewMode: 'Change view mode'
Desktop: Desktop
DualWindowView: 'Dual Window'
Edit: Edit Edit: Edit
EditView: 'Edit mode'
Mobile: Mobile
PreviewState: 'Preview State'
PreviewView: 'Preview mode'
Responsive: Responsive
SplitView: 'Split mode'
Tablet: Tablet
ViewDeviceWidth: 'Select a preview width'
Width: width
SimpleImageField: SimpleImageField:
NOUPLOAD: 'පි0තුර අප්ලෝඩ් කර නැත' NOUPLOAD: 'පි0තුර අප්ලෝඩ් කර නැත'
SiteTree: SiteTree:
@ -545,12 +572,14 @@ si:
TimeField: TimeField:
VALIDATEFORMAT: 'Please enter a valid time format ({format})' VALIDATEFORMAT: 'Please enter a valid time format ({format})'
ToggleField: ToggleField:
LESS: අඩු LESS: 'අඩු'
MORE: වැඩි MORE: වැඩි
UploadField: UploadField:
ATTACHFILE: 'Attach a file' ATTACHFILE: 'Attach a file'
ATTACHFILES: 'Attach files' ATTACHFILES: 'Attach files'
AttachFile: 'Attach file(s)' AttachFile: 'Attach file(s)'
CHOOSEANOTHERFILE: 'Choose another file'
CHOOSEANOTHERINFO: 'Replace this file with another one from the file store'
DELETE: 'Delete from files' DELETE: 'Delete from files'
DELETEINFO: 'Permanently delete this file from the file store' DELETEINFO: 'Permanently delete this file from the file store'
DOEDIT: Save DOEDIT: Save
@ -565,12 +594,15 @@ si:
FROMFILES: 'From files' FROMFILES: 'From files'
HOTLINKINFO: 'Info: This image will be hotlinked. Please ensure you have permissions from the original site creator to do so.' HOTLINKINFO: 'Info: This image will be hotlinked. Please ensure you have permissions from the original site creator to do so.'
MAXNUMBEROFFILES: 'Max number of {count} file(s) exceeded.' MAXNUMBEROFFILES: 'Max number of {count} file(s) exceeded.'
MAXNUMBEROFFILESONE: 'Can only upload one file'
MAXNUMBEROFFILESSHORT: 'Can only upload {count} files' MAXNUMBEROFFILESSHORT: 'Can only upload {count} files'
OVERWRITEWARNING: 'File with the same name already exists'
REMOVE: Remove REMOVE: Remove
REMOVEERROR: 'Error removing file' REMOVEERROR: 'Error removing file'
REMOVEINFO: 'Remove this file from here, but do not delete it from the file store' REMOVEINFO: 'Remove this file from here, but do not delete it from the file store'
STARTALL: 'Start all' STARTALL: 'Start all'
STARTALLINFO: 'Start all uploads' STARTALLINFO: 'Start all uploads'
Saved: Saved Saved: Saved
UPLOADSINTO: 'saves into /{path}'
Versioned: Versioned:
has_many_Versions: වෙලුම has_many_Versions: වෙලුම

View File

@ -2,6 +2,7 @@ sk:
AssetAdmin: AssetAdmin:
ALLOWEDEXTS: 'Povolené extenzie' ALLOWEDEXTS: 'Povolené extenzie'
NEWFOLDER: 'Nový priečinok' NEWFOLDER: 'Nový priečinok'
SHOWALLOWEDEXTS: 'Show allowed extensions'
AssetTableField: AssetTableField:
CREATED: 'Prvýkrát nahrané' CREATED: 'Prvýkrát nahrané'
DIM: Rozmery DIM: Rozmery
@ -59,9 +60,9 @@ sk:
ERRORNOTADMIN: 'Tento používateľ nie je administrátor.' ERRORNOTADMIN: 'Tento používateľ nie je administrátor.'
ERRORNOTREC: 'Toto používateľské meno / heslo nebolo rozpoznané' ERRORNOTREC: 'Toto používateľské meno / heslo nebolo rozpoznané'
Boolean: Boolean:
0: Nie
ANY: Ktorýkoľvek ANY: Ktorýkoľvek
1: Áno NOANSWER: 'False'
YESANSWER: 'True'
CMSLoadingScreen.ss: CMSLoadingScreen.ss:
LOADING: 'Načíta sa ...' LOADING: 'Načíta sa ...'
REQUIREJS: 'CMS vyžaduje, aby ste mali JavaScript zapnutý.' REQUIREJS: 'CMS vyžaduje, aby ste mali JavaScript zapnutý.'
@ -70,6 +71,8 @@ sk:
ACCESSALLINTERFACES: 'Pristup do všetkých častí CMS.' ACCESSALLINTERFACES: 'Pristup do všetkých častí CMS.'
ACCESSALLINTERFACESHELP: 'Prepisuje viac špecifických nastavení prístupu.' ACCESSALLINTERFACESHELP: 'Prepisuje viac špecifických nastavení prístupu.'
SAVE: Uložiť SAVE: Uložiť
CMSPageHistoryController_versions.ss:
PREVIEW: 'Website preview'
CMSProfileController: CMSProfileController:
MENUTITLE: 'Môj profil' MENUTITLE: 'Môj profil'
ChangePasswordEmail.ss: ChangePasswordEmail.ss:
@ -79,8 +82,8 @@ sk:
HELLO: 'Dobrý deň' HELLO: 'Dobrý deň'
PASSWORD: Heslo PASSWORD: Heslo
CheckboxField: CheckboxField:
- Nie NOANSWER: 'False'
- Áno YESANSWER: 'True'
ComplexTableField: ComplexTableField:
CLOSEPOPUP: 'Zatvoriť okno' CLOSEPOPUP: 'Zatvoriť okno'
SUCCESSADD2: 'Pridané {name}' SUCCESSADD2: 'Pridané {name}'
@ -109,20 +112,21 @@ sk:
PLURALNAME: 'Datové objekty' PLURALNAME: 'Datové objekty'
SINGULARNAME: 'Dátový objekt' SINGULARNAME: 'Dátový objekt'
Date: Date:
DAY: deň DAY: day
DAYS: dni DAYS: days
HOUR: hodina HOUR: hour
HOURS: hodiny HOURS: hours
MIN: minúta LessThanMinuteAgo: 'less than a minute'
MINS: minúty MIN: min
MONTH: mesiac MINS: mins
MONTHS: mesiace MONTH: month
SEC: sekunda MONTHS: months
SECS: sekundy SEC: sec
SECS: secs
TIMEDIFFAGO: '{difference} pred' TIMEDIFFAGO: '{difference} pred'
TIMEDIFFIN: 'v {difference}' TIMEDIFFIN: 'v {difference}'
YEAR: rok YEAR: year
YEARS: roky YEARS: years
DateField: DateField:
NOTSET: nezadané NOTSET: nezadané
TODAY: dnes TODAY: dnes
@ -198,7 +202,8 @@ sk:
TEXT2: 'odkaz na resetovanie hesla' TEXT2: 'odkaz na resetovanie hesla'
TEXT3: pre TEXT3: pre
Form: Form:
FIELDISREQUIRED: '%s je požadované' CSRF_FAILED_MESSAGE: 'There seems to have been a technical problem. Please click the back button, refresh your browser, and try again.'
FIELDISREQUIRED: '{name} is required'
SubmitBtnLabel: Choď SubmitBtnLabel: Choď
VALIDATIONCREDITNUMBER: 'Uistite sa, že ste zadali číslo {number} kreditnej karty správne' VALIDATIONCREDITNUMBER: 'Uistite sa, že ste zadali číslo {number} kreditnej karty správne'
VALIDATIONNOTUNIQUE: 'Zadaná hodnota nie je unikátna' VALIDATIONNOTUNIQUE: 'Zadaná hodnota nie je unikátna'
@ -208,6 +213,7 @@ sk:
VALIDATOR: Validácia VALIDATOR: Validácia
VALIDCURRENCY: 'Prosím zadajte platnú menu' VALIDCURRENCY: 'Prosím zadajte platnú menu'
FormField: FormField:
Example: 'e.g. %s'
NONE: žiadne NONE: žiadne
GridAction: GridAction:
DELETE_DESCRIPTION: Zmazať DELETE_DESCRIPTION: Zmazať
@ -230,6 +236,7 @@ sk:
ResetFilter: Reset ResetFilter: Reset
GridFieldAction_Delete: GridFieldAction_Delete:
DeletePermissionsFailure: 'Žiadne oprávnenia zmazať' DeletePermissionsFailure: 'Žiadne oprávnenia zmazať'
EditPermissionsFailure: 'No permission to unlink record'
GridFieldDetailForm: GridFieldDetailForm:
CancelBtn: Zrušiť CancelBtn: Zrušiť
Create: Vytvoriť Create: Vytvoriť
@ -237,7 +244,9 @@ sk:
DeletePermissionsFailure: 'Žiadne oprávnenia zmazať' DeletePermissionsFailure: 'Žiadne oprávnenia zmazať'
Deleted: 'Zmazané %s %s' Deleted: 'Zmazané %s %s'
Save: Uložiť Save: Uložiť
Saved: 'Uložené %s %s' Saved: 'Saved {name} {link}'
GridFieldEditButton.ss:
EDIT: Edit
GridFieldItemEditView.ss: null GridFieldItemEditView.ss: null
Group: Group:
AddRole: 'Pridať úlohu pre túto skupinu' AddRole: 'Pridať úlohu pre túto skupinu'
@ -267,6 +276,7 @@ sk:
ADDURL: 'Pridať URL' ADDURL: 'Pridať URL'
ADJUSTDETAILSDIMENSIONS: 'Detaily &amp; rozmery' ADJUSTDETAILSDIMENSIONS: 'Detaily &amp; rozmery'
ANCHORVALUE: Odkaz ANCHORVALUE: Odkaz
BUTTONADDURL: 'Add url'
BUTTONINSERT: Vložiť BUTTONINSERT: Vložiť
BUTTONINSERTLINK: 'Vložiť odkaz' BUTTONINSERTLINK: 'Vložiť odkaz'
BUTTONREMOVELINK: 'Odstrániť odkaz' BUTTONREMOVELINK: 'Odstrániť odkaz'
@ -293,7 +303,7 @@ sk:
IMAGETITLE: 'Text titulky (tooltip) - pre doplňujúce informácie o obrázku' IMAGETITLE: 'Text titulky (tooltip) - pre doplňujúce informácie o obrázku'
IMAGETITLETEXT: 'Text titulky (tooltip)' IMAGETITLETEXT: 'Text titulky (tooltip)'
IMAGETITLETEXTDESC: 'Pre doplňujúce informácie o obrázku' IMAGETITLETEXTDESC: 'Pre doplňujúce informácie o obrázku'
IMAGEWIDTHPX: Šírka IMAGEWIDTHPX: 'Šírka'
INSERTMEDIA: 'Vložiť média' INSERTMEDIA: 'Vložiť média'
LINK: 'Vložiť/upraviť odkaz na zvýraznený text' LINK: 'Vložiť/upraviť odkaz na zvýraznený text'
LINKANCHOR: 'Odkaz na tejto stranke' LINKANCHOR: 'Odkaz na tejto stranke'
@ -331,6 +341,9 @@ sk:
PreviewButton: Náhľad PreviewButton: Náhľad
REORGANISATIONSUCCESSFUL: 'Strom webu bol reorganizovaný úspešne.' REORGANISATIONSUCCESSFUL: 'Strom webu bol reorganizovaný úspešne.'
SAVEDUP: Uložené. SAVEDUP: Uložené.
ShowAsList: 'show as list'
TooManyPages: 'Too many pages'
ValidationError: 'Validation error'
VersionUnknown: neznáme VersionUnknown: neznáme
LeftAndMain_Menu.ss: LeftAndMain_Menu.ss:
Hello: Ahoj Hello: Ahoj
@ -407,6 +420,7 @@ sk:
TWODIGITMONTH: 'Dvojčíslie mesiaca (01=január, atď.)' TWODIGITMONTH: 'Dvojčíslie mesiaca (01=január, atď.)'
TWODIGITSECOND: 'Dvojčíslie sekundy (00 až 59)' TWODIGITSECOND: 'Dvojčíslie sekundy (00 až 59)'
TWODIGITYEAR: 'Dvojčíslie roka' TWODIGITYEAR: 'Dvojčíslie roka'
Toggle: 'Show formatting help'
MemberImportForm: MemberImportForm:
Help1: 'Importovať členov v <em>CSV formáte</em> (čiarkov oddelené hodnoty). Zobraziť pokročile použitie' Help1: 'Importovať členov v <em>CSV formáte</em> (čiarkov oddelené hodnoty). Zobraziť pokročile použitie'
Help2: "<div class=\"advanced\">\\n<h4>Pokročilé použitie</h4>\\n<ul>\\n<li>Povolené stĺpce: <em>%s</em></li>\\n<li>Existujúci užívatelia sú porovnávaní ich unikátnou vlastnosťou <em>Code</em>, a aktualizovaní s novými hodnotami z\\nimportovaného súboru.</li>\\n<li>Skupiny môžu byťt priradené stĺpcom <em>Groups</em>. Skupiny sú identifikované ich vlastnosťou <em>Code</em>,\\nviacero skupín môže byť oddelené čiarkou. Existujúce členstvá skupiny nie sú smazané.</li>\\n</ul>\\n</div>" Help2: "<div class=\"advanced\">\\n<h4>Pokročilé použitie</h4>\\n<ul>\\n<li>Povolené stĺpce: <em>%s</em></li>\\n<li>Existujúci užívatelia sú porovnávaní ich unikátnou vlastnosťou <em>Code</em>, a aktualizovaní s novými hodnotami z\\nimportovaného súboru.</li>\\n<li>Skupiny môžu byťt priradené stĺpcom <em>Groups</em>. Skupiny sú identifikované ich vlastnosťou <em>Code</em>,\\nviacero skupín môže byť oddelené čiarkou. Existujúce členstvá skupiny nie sú smazané.</li>\\n</ul>\\n</div>"
@ -421,7 +435,7 @@ sk:
ModelAdmin: ModelAdmin:
DELETE: Zmazať DELETE: Zmazať
DELETEDRECORDS: 'Zmazaných {count} záznamov.' DELETEDRECORDS: 'Zmazaných {count} záznamov.'
EMPTYBEFOREIMPORT: 'Vyčistiť databázu pred importovaním' EMPTYBEFOREIMPORT: 'Replace data'
IMPORT: 'Importovať z CSV' IMPORT: 'Importovať z CSV'
IMPORTEDRECORDS: 'Importovaných {count} záznamov.' IMPORTEDRECORDS: 'Importovaných {count} záznamov.'
NOCSVFILE: 'Prosím vyhľadajte CSV súbor pre importovanie' NOCSVFILE: 'Prosím vyhľadajte CSV súbor pre importovanie'
@ -515,7 +529,20 @@ sk:
BtnImport: Importovať BtnImport: Importovať
FileFieldLabel: 'CSV súbor <small>(Povoléné koncovki súborov: *.csv)</small>' FileFieldLabel: 'CSV súbor <small>(Povoléné koncovki súborov: *.csv)</small>'
SilverStripeNavigator: SilverStripeNavigator:
Auto: Auto
ChangeViewMode: 'Change view mode'
Desktop: Desktop
DualWindowView: 'Dual Window'
Edit: Editovať Edit: Editovať
EditView: 'Edit mode'
Mobile: Mobile
PreviewState: 'Preview State'
PreviewView: 'Preview mode'
Responsive: Responsive
SplitView: 'Split mode'
Tablet: Tablet
ViewDeviceWidth: 'Select a preview width'
Width: width
SimpleImageField: SimpleImageField:
NOUPLOAD: 'Nebol nahraný žiaden obrázok' NOUPLOAD: 'Nebol nahraný žiaden obrázok'
SiteTree: SiteTree:
@ -551,6 +578,8 @@ sk:
ATTACHFILE: 'Priložiť súbor' ATTACHFILE: 'Priložiť súbor'
ATTACHFILES: 'Priložiť súbory' ATTACHFILES: 'Priložiť súbory'
AttachFile: 'Priložiť súbor(y)' AttachFile: 'Priložiť súbor(y)'
CHOOSEANOTHERFILE: 'Choose another file'
CHOOSEANOTHERINFO: 'Replace this file with another one from the file store'
DELETE: 'Zmazať zo súborov' DELETE: 'Zmazať zo súborov'
DELETEINFO: 'Trvalo zmazať tento súbor z úložiska súborov' DELETEINFO: 'Trvalo zmazať tento súbor z úložiska súborov'
DOEDIT: Uložiť DOEDIT: Uložiť
@ -565,12 +594,15 @@ sk:
FROMFILES: 'Zo súborov' FROMFILES: 'Zo súborov'
HOTLINKINFO: 'Info: Tento obrázok bude "hotlinkovaný". Uistete sa prosím, že máte oprávnenie od pôvodneho tvorcu webu, aby sa tak stalo.' HOTLINKINFO: 'Info: Tento obrázok bude "hotlinkovaný". Uistete sa prosím, že máte oprávnenie od pôvodneho tvorcu webu, aby sa tak stalo.'
MAXNUMBEROFFILES: 'Maximálny počet {count} súbor(ov) prekročený.' MAXNUMBEROFFILES: 'Maximálny počet {count} súbor(ov) prekročený.'
MAXNUMBEROFFILESONE: 'Can only upload one file'
MAXNUMBEROFFILESSHORT: 'Môžte nahrať iba {count} súborov' MAXNUMBEROFFILESSHORT: 'Môžte nahrať iba {count} súborov'
OVERWRITEWARNING: 'File with the same name already exists'
REMOVE: Odstrániť REMOVE: Odstrániť
REMOVEERROR: 'Chyba odstránenia súboru' REMOVEERROR: 'Chyba odstránenia súboru'
REMOVEINFO: 'Odstrániť tento súbor odtiaľ, ale nezmazať z úložiska súborov' REMOVEINFO: 'Odstrániť tento súbor odtiaľ, ale nezmazať z úložiska súborov'
STARTALL: 'Začni všetko' STARTALL: 'Začni všetko'
STARTALLINFO: 'Začni všetko nahrávať' STARTALLINFO: 'Začni všetko nahrávať'
Saved: Uložené Saved: Uložené
UPLOADSINTO: 'saves into /{path}'
Versioned: Versioned:
has_many_Versions: verzie has_many_Versions: verzie

View File

@ -1,12 +1,13 @@
sl: sl:
AssetAdmin: AssetAdmin:
ALLOWEDEXTS: 'Allowed extensions' ALLOWEDEXTS: 'Podaljševanje je dovoljeno.'
NEWFOLDER: 'Nova mapa' NEWFOLDER: 'Nova mapa'
SHOWALLOWEDEXTS: 'Show allowed extensions'
AssetTableField: AssetTableField:
CREATED: 'Naloženo na začetku' CREATED: 'Naloženo na začetku'
DIM: Dimenzije DIM: Dimenzije
FILENAME: 'Ime datoteke' FILENAME: 'Ime datoteke'
FOLDER: Folder FOLDER: Mapa
LASTEDIT: 'Zadnje naloženo' LASTEDIT: 'Zadnje naloženo'
OWNER: Lastnik OWNER: Lastnik
SIZE: Velikost SIZE: Velikost
@ -14,19 +15,19 @@ sl:
TYPE: Tip TYPE: Tip
URL: URL URL: URL
AssetUploadField: AssetUploadField:
ChooseFiles: 'Choose files' ChooseFiles: 'Izberite datoteke'
DRAGFILESHERE: 'Drag files here' DRAGFILESHERE: 'Potegnite datoteke na to mesto '
DROPAREA: 'Drop Area' DROPAREA: 'Drop Area'
EDITALL: 'Edit all' EDITALL: 'Uredi vse'
EDITANDORGANIZE: 'Edit & organize' EDITANDORGANIZE: 'Uredite in razvrščajte'
EDITINFO: 'Edit files' EDITINFO: 'Uredi datoteke'
FILES: Files FILES: Datoteke
FROMCOMPUTER: 'Choose files from your computer' FROMCOMPUTER: 'Izberite datoteke z vašega računalnika'
FROMCOMPUTERINFO: 'Upload from your computer' FROMCOMPUTERINFO: 'Prenesite z vašega računalnika'
TOTAL: Total TOTAL: Vse
TOUPLOAD: 'Choose files to upload...' TOUPLOAD: 'Izberite datoteke za prenos'
UPLOADINPROGRESS: 'Please wait… upload in progress' UPLOADINPROGRESS: 'Prosimo, počakajte ... prenos poteka.'
UPLOADOR: OR UPLOADOR: ALI
BBCodeParser: BBCodeParser:
ALIGNEMENT: Poravnava ALIGNEMENT: Poravnava
ALIGNEMENTEXAMPLE: 'desno poravnano' ALIGNEMENTEXAMPLE: 'desno poravnano'
@ -53,25 +54,27 @@ sl:
UNORDEREDDESCRIPTION: 'Neurejen seznam' UNORDEREDDESCRIPTION: 'Neurejen seznam'
UNORDEREDEXAMPLE1: 'alineja na neurejenem seznamu' UNORDEREDEXAMPLE1: 'alineja na neurejenem seznamu'
BackLink_Button.ss: BackLink_Button.ss:
Back: Back Back: Nazaj
BasicAuth: BasicAuth:
ENTERINFO: 'Vpišite uporabniško ime in geslo.' ENTERINFO: 'Vpišite uporabniško ime in geslo.'
ERRORNOTADMIN: 'Uporabnik ni administrator tega spletnega mesta.' ERRORNOTADMIN: 'Uporabnik ni administrator tega spletnega mesta.'
ERRORNOTREC: 'Ne prepoznam uporabniškega imena ali gesla' ERRORNOTREC: 'Ne prepoznam uporabniškega imena ali gesla'
Boolean: Boolean:
0: Ne
ANY: Katerikoli ANY: Katerikoli
1: Da NOANSWER: 'False'
YESANSWER: 'True'
CMSLoadingScreen.ss: CMSLoadingScreen.ss:
LOADING: Loading... LOADING: 'Nalaganje ...'
REQUIREJS: 'The CMS requires that you have JavaScript enabled.' REQUIREJS: 'CMS zahteva, da imate omogočen JavaScript.'
CMSMain: CMSMain:
ACCESS: 'Access to ''{title}'' section' ACCESS: 'Dostop do razdelka ''{title}'''
ACCESSALLINTERFACES: 'Dostop do vseh sklopov CMS' ACCESSALLINTERFACES: 'Dostop do vseh sklopov CMS'
ACCESSALLINTERFACESHELP: 'Omogoča bolj specifične nastavitve za možnosti dostop.' ACCESSALLINTERFACESHELP: 'Omogoča bolj specifične nastavitve za možnosti dostop.'
SAVE: Shrani SAVE: Shrani
CMSPageHistoryController_versions.ss:
PREVIEW: 'Website preview'
CMSProfileController: CMSProfileController:
MENUTITLE: 'My Profile' MENUTITLE: 'Moj profil'
ChangePasswordEmail.ss: ChangePasswordEmail.ss:
CHANGEPASSWORDTEXT1: 'Geslo ste spremenili v' CHANGEPASSWORDTEXT1: 'Geslo ste spremenili v'
CHANGEPASSWORDTEXT2: 'Za prijavo lahko odslej uporabite naslednje podatke:' CHANGEPASSWORDTEXT2: 'Za prijavo lahko odslej uporabite naslednje podatke:'
@ -79,24 +82,24 @@ sl:
HELLO: 'Pozdravljeni,' HELLO: 'Pozdravljeni,'
PASSWORD: Geslo PASSWORD: Geslo
CheckboxField: CheckboxField:
- Ne NOANSWER: 'False'
- Da YESANSWER: 'True'
ComplexTableField: ComplexTableField:
CLOSEPOPUP: 'Zapri okno' CLOSEPOPUP: 'Zapri okno'
SUCCESSADD2: 'Added {name}' SUCCESSADD2: 'Dodano {name}'
SUCCESSEDIT: 'Shranjeno: %s %s %s' SUCCESSEDIT: 'Shranjeno: %s %s %s'
ComplexTableField.ss: ComplexTableField.ss:
ADDITEM: 'Dodaj %s' ADDITEM: 'Dodaj %s'
NOITEMSFOUND: 'No items found' NOITEMSFOUND: 'Ni najdenih predmetov.'
SORTASC: 'Razvrsti naraščajoče' SORTASC: 'Razvrsti naraščajoče'
SORTDESC: 'Razvrsti padajoče' SORTDESC: 'Razvrsti padajoče'
ComplexTableField_popup.ss: ComplexTableField_popup.ss:
NEXT: Naprej NEXT: Naprej
PREVIOUS: Nazaj PREVIOUS: Nazaj
ConfirmedPasswordField: ConfirmedPasswordField:
ATLEAST: 'Passwords must be at least {min} characters long.' ATLEAST: 'Geslo mora vsebovati vsaj {min} znakov.'
BETWEEN: 'Passwords must be {min} to {max} characters long.' BETWEEN: 'Geslo mora biti dolgo od {min} do {max} znakov.'
MAXIMUM: 'Passwords must be at most {max} characters long.' MAXIMUM: 'Geslo je lahko dolgo največ {max} znakov.'
SHOWONCLICKTITLE: 'Spremeni geslo' SHOWONCLICKTITLE: 'Spremeni geslo'
CreditCardField: CreditCardField:
FIRST: prvič FIRST: prvič
@ -109,191 +112,198 @@ sl:
PLURALNAME: 'Podatkovni objekti' PLURALNAME: 'Podatkovni objekti'
SINGULARNAME: 'Podatkovni objekt' SINGULARNAME: 'Podatkovni objekt'
Date: Date:
DAY: dan DAY: day
DAYS: dni DAYS: days
HOUR: ura HOUR: hour
HOURS: ure HOURS: hours
LessThanMinuteAgo: 'less than a minute'
MIN: min MIN: min
MINS: minute MINS: mins
MONTH: mesec MONTH: month
MONTHS: meseci MONTHS: months
SEC: s SEC: sec
SECS: s SECS: secs
TIMEDIFFAGO: '{difference} ago' TIMEDIFFAGO: '{difference} ago'
TIMEDIFFIN: 'in {difference}' TIMEDIFFIN: 'in {difference}'
YEAR: leto YEAR: year
YEARS: let YEARS: years
DateField: DateField:
NOTSET: 'ni nastavljeno' NOTSET: 'ni nastavljeno'
TODAY: danes TODAY: danes
VALIDDATEFORMAT2: 'Please enter a valid date format ({format})' VALIDDATEFORMAT2: 'Prosim, vnesite ustrezno obliko datuma ({format})'
VALIDDATEMAXDATE: 'Your date has to be older or matching the maximum allowed date ({date})' VALIDDATEMAXDATE: 'Your date has to be older or matching the maximum allowed date ({date})'
VALIDDATEMINDATE: 'Your date has to be newer or matching the minimum allowed date ({date})' VALIDDATEMINDATE: 'Your date has to be newer or matching the minimum allowed date ({date})'
DatetimeField: DatetimeField:
NOTSET: 'Not set' NOTSET: 'Ni nastavljeno'
Director: Director:
INVALID_REQUEST: 'Invalid request' INVALID_REQUEST: 'Napačna zahteva'
DropdownField: DropdownField:
CHOOSE: (Izberi) CHOOSE: (Izberi)
EmailField: EmailField:
VALIDATION: 'Please enter an email address' VALIDATION: 'Prosim, vpišite e-naslov.'
Email_BounceRecord: Email_BounceRecord:
PLURALNAME: 'Seznam zavrnjenih e-sporočil' PLURALNAME: 'Seznam zavrnjenih e-sporočil'
SINGULARNAME: 'Zavrnjeno e-sporočilo' SINGULARNAME: 'Zavrnjeno e-sporočilo'
Enum: Enum:
ANY: Katerikoli ANY: Katerikoli
File: File:
AviType: 'AVI video file' AviType: 'AVI video datoteka'
Content: Vsebina Content: Vsebina
CssType: 'CSS file' CssType: 'CSS datoteka'
DmgType: 'Apple disk image' DmgType: 'Apple disk image'
DocType: 'Word document' DocType: 'Word datoteka'
Filename: 'Ime datoteke' Filename: 'Ime datoteke'
GifType: 'GIF image - good for diagrams' GifType: 'GIF slika - primerna za diagrame'
GzType: 'GZIP compressed file' GzType: 'GZIP compressed file'
HtlType: 'HTML file' HtlType: 'HTML datoteka'
HtmlType: 'HTML file' HtmlType: 'HTML datoteka'
INVALIDEXTENSION: 'Extension is not allowed (valid: {extensions})' INVALIDEXTENSION: 'Podaljševanje ni dovoljeno (dovoljeno: {extensions})'
INVALIDEXTENSIONSHORT: 'Extension is not allowed' INVALIDEXTENSIONSHORT: 'Podaljševanje ni dovoljeno.'
IcoType: 'Icon image' IcoType: Ikona
JpgType: 'JPEG image - good for photos' JpgType: 'JPEG slika - primerno za fotografije'
JsType: 'Javascript file' JsType: 'Javascript datoteka'
Mp3Type: 'MP3 audio file' Mp3Type: 'MP3 avdio datoteka'
MpgType: 'MPEG video file' MpgType: 'MPEG video datoteka'
NOFILESIZE: 'Velikost datoteke je 0 bajtov.' NOFILESIZE: 'Velikost datoteke je 0 bajtov.'
NOVALIDUPLOAD: 'Datoteke ni možno naložiti.' NOVALIDUPLOAD: 'Datoteke ni možno naložiti.'
Name: Ime Name: Ime
PLURALNAME: Datoteke PLURALNAME: Datoteke
PdfType: 'Adobe Acrobat PDF file' PdfType: 'Adobe Acrobat PDF datoteka'
PngType: 'PNG image - good general-purpose format' PngType: 'PNG slika - večstransko uporabna oblika'
SINGULARNAME: Datoteka SINGULARNAME: Datoteka
TOOLARGE: 'Filesize is too large, maximum {size} allowed' TOOLARGE: 'Datoteka je prevelika. Največja dovoljena velikost je {size} '
TOOLARGESHORT: 'Filesize exceeds {size}' TOOLARGESHORT: 'Velikost datoteke presega {size}'
TiffType: 'Tagged image format' TiffType: 'Tagged image format'
Title: Naslov Title: Naslov
WavType: 'WAV audo file' WavType: 'WAV avdio datoteka'
XlsType: 'Excel spreadsheet' XlsType: 'Excel preglednica'
ZipType: 'ZIP compressed file' ZipType: 'ZIP stisnjena datoteka'
FileIFrameField: FileIFrameField:
ATTACH: 'Attach {type}' ATTACH: 'Pripni {type}'
ATTACHONCESAVED: '{type}s can be attached once you have saved the record for the first time.' ATTACHONCESAVED: '{type}s can be attached once you have saved the record for the first time.'
ATTACHONCESAVED2: 'Files can be attached once you have saved the record for the first time.' ATTACHONCESAVED2: 'Files can be attached once you have saved the record for the first time.'
DELETE: 'Delete {type}' DELETE: 'Izbriši {type}'
DISALLOWEDFILETYPE: 'This filetype is not allowed to be uploaded' DISALLOWEDFILETYPE: 'Datoteke v tem formatu ni mogoče naložiti'
FILE: Datoteka FILE: Datoteka
FROMCOMPUTER: 'Z vašega računalnika' FROMCOMPUTER: 'Z vašega računalnika'
FROMFILESTORE: 'Iz knjižnice datotek' FROMFILESTORE: 'Iz knjižnice datotek'
NOSOURCE: 'Izberite datoteko, ki jo boste pripeli.' NOSOURCE: 'Izberite datoteko, ki jo boste pripeli.'
REPLACE: 'Replace {type}' REPLACE: 'Nadomesti {type}'
FileIFrameField_iframe.ss: FileIFrameField_iframe.ss:
TITLE: 'Image Uploading Iframe' TITLE: 'Image Uploading Iframe'
Filesystem: Filesystem:
SYNCRESULTS: 'Sync complete: {createdcount} items created, {deletedcount} items deleted' SYNCRESULTS: 'Sync complete: {createdcount} items created, {deletedcount} items deleted'
Folder: Folder:
PLURALNAME: Folders PLURALNAME: Mape
SINGULARNAME: Folder SINGULARNAME: Mapa
ForgotPasswordEmail.ss: ForgotPasswordEmail.ss:
HELLO: 'Pozdravljeni,' HELLO: 'Pozdravljeni,'
TEXT1: 'Tukaj je vaša' TEXT1: 'Tukaj je vaša'
TEXT2: 'povezava za ponastavitev gesla' TEXT2: 'povezava za ponastavitev gesla'
TEXT3: za TEXT3: za
Form: Form:
FIELDISREQUIRED: 'Vpišite %s (obvezen podatek).' CSRF_FAILED_MESSAGE: 'There seems to have been a technical problem. Please click the back button, refresh your browser, and try again.'
SubmitBtnLabel: Go FIELDISREQUIRED: '{name} is required'
VALIDATIONCREDITNUMBER: 'Please ensure you have entered the {number} credit card number correctly' SubmitBtnLabel: Naprej
VALIDATIONCREDITNUMBER: 'Prosim, preverite, da ste vnesli številko kreditne kartice {number} pravilno.'
VALIDATIONNOTUNIQUE: 'Vpisana vrednost ni unikatna' VALIDATIONNOTUNIQUE: 'Vpisana vrednost ni unikatna'
VALIDATIONPASSWORDSDONTMATCH: 'Vpisani gesli se ne ujemata' VALIDATIONPASSWORDSDONTMATCH: 'Vpisani gesli se ne ujemata'
VALIDATIONPASSWORDSNOTEMPTY: 'Vpišite geslo (dvakrat) v za to predvideni polji' VALIDATIONPASSWORDSNOTEMPTY: 'Vpišite geslo (dvakrat) v za to predvideni polji'
VALIDATIONSTRONGPASSWORD: 'Passwords must have at least one digit and one alphanumeric character' VALIDATIONSTRONGPASSWORD: 'Geslo naj vsebuje vsaj eno črko in vsaj eno številko.'
VALIDATOR: Preverjanje VALIDATOR: Preverjanje
VALIDCURRENCY: 'Please enter a valid currency' VALIDCURRENCY: 'Prosim, vnesite pravo valuto.'
FormField: FormField:
Example: 'e.g. %s'
NONE: brez NONE: brez
GridAction: GridAction:
DELETE_DESCRIPTION: Delete DELETE_DESCRIPTION: Izbriši
Delete: Delete Delete: Izbriši
UnlinkRelation: Unlink UnlinkRelation: 'Odstrani povezavo'
GridField: GridField:
Add: 'Add {name}' Add: 'Dodaj {name}'
Filter: Filter Filter: Filter
FilterBy: 'Filter by ' FilterBy: 'Filter by '
Find: Find Find: Poišči
LEVELUP: 'Level up' LEVELUP: 'Level up'
LinkExisting: 'Link Existing' LinkExisting: 'Poveži na'
NewRecord: 'New %s' NewRecord: 'New %s'
NoItemsFound: 'No items found' NoItemsFound: 'No items found'
PRINTEDAT: 'Printed at' PRINTEDAT: 'Printed at'
PRINTEDBY: 'Printed by' PRINTEDBY: 'Printed by'
PlaceHolder: 'Find {type}' PlaceHolder: 'Poišči {type} '
PlaceHolderWithLabels: 'Find {type} by {name}' PlaceHolderWithLabels: 'Poišči {type} glede na {name}'
RelationSearch: 'Relation search' RelationSearch: 'Relation search'
ResetFilter: Reset ResetFilter: Ponastavi
GridFieldAction_Delete: GridFieldAction_Delete:
DeletePermissionsFailure: 'No delete permissions' DeletePermissionsFailure: 'Ni dovoljenja za brisanje'
EditPermissionsFailure: 'No permission to unlink record'
GridFieldDetailForm: GridFieldDetailForm:
CancelBtn: Cancel CancelBtn: Prekliči
Create: Create Create: Ustvari
Delete: Delete Delete: Izbriši
DeletePermissionsFailure: 'No delete permissions' DeletePermissionsFailure: 'Ni dovoljenja za brisanje'
Deleted: 'Deleted %s %s' Deleted: 'Deleted %s %s'
Save: Save Save: Shrani
Saved: 'Saved %s %s' Saved: 'Saved {name} {link}'
GridFieldEditButton.ss:
EDIT: Edit
GridFieldItemEditView.ss: null GridFieldItemEditView.ss: null
Group: Group:
AddRole: 'Add a role for this group' AddRole: 'Dodaj vlogo za to skupino.'
Code: 'Koda skupine' Code: 'Koda skupine'
DefaultGroupTitleAdministrators: Administratorji DefaultGroupTitleAdministrators: Administratorji
DefaultGroupTitleContentAuthors: 'Avtorji vsebine' DefaultGroupTitleContentAuthors: 'Avtorji vsebine'
Description: Opis Description: Opis
GroupReminder: 'If you choose a parent group, this group will take all it''s roles' GroupReminder: 'Če izberete nadrejeno skupino, bo ta skupina prevzela vse vloge nadrejene skupine.'
Locked: 'Zaklenjeno za urejanje?' Locked: 'Zaklenjeno za urejanje?'
NoRoles: 'No roles found' NoRoles: Vloge
PLURALNAME: Groups PLURALNAME: Skupine
Parent: 'Nadrejena skupina' Parent: 'Nadrejena skupina'
RolesAddEditLink: 'Dodaj in uredi vloge' RolesAddEditLink: 'Dodaj in uredi vloge'
SINGULARNAME: Group SINGULARNAME: Skupina
Sort: 'Način razvrščanja' Sort: 'Način razvrščanja'
has_many_Permissions: Dovoljenja has_many_Permissions: Dovoljenja
many_many_Members: Uporabniki many_many_Members: Uporabniki
GroupImportForm: GroupImportForm:
Help1: '<p>Uvozi eno ali več skupin v formatu <em>CSV</ em> (comma-separated values). <small> <a href="#" class="toggle-advanced">Prikaži možnosti za napredno urejanje</ a> </ small> </ p>' Help1: '<p>Uvozi eno ali več skupin v formatu <em>CSV</ em> (comma-separated values). <small> <a href="#" class="toggle-advanced">Prikaži možnosti za napredno urejanje</ a> </ small> </ p>'
Help2: '<div class="advanced"> <h4>Advanced usage</h4> <ul> <li>Allowed columns: <em>%s</em></li> <li>Existing groups are matched by their unique <em>Code</em> value, and updated with any new values from the imported file</li> <li>Group hierarchies can be created by using a <em>ParentCode</em> column.</li> <li>Permission codes can be assigned by the <em>PermissionCode</em> column. Existing permission codes are not cleared.</li> </ul></div>' Help2: '<div class="advanced"> <h4>Advanced usage</h4> <ul> <li>Allowed columns: <em>%s</em></li> <li>Existing groups are matched by their unique <em>Code</em> value, and updated with any new values from the imported file</li> <li>Group hierarchies can be created by using a <em>ParentCode</em> column.</li> <li>Permission codes can be assigned by the <em>PermissionCode</em> column. Existing permission codes are not cleared.</li> </ul></div>'
ResultCreated: 'Created {count} groups' ResultCreated: 'Ustvarjenih je {count} skupin'
ResultDeleted: 'Število izbrisanih skupin %d' ResultDeleted: 'Število izbrisanih skupin %d'
ResultUpdated: 'Število ponastavljenih skupin %d' ResultUpdated: 'Število ponastavljenih skupin %d'
Hierarchy: Hierarchy:
InfiniteLoopNotAllowed: 'Infinite loop found within the "{type}" hierarchy. Please change the parent to resolve this' InfiniteLoopNotAllowed: 'Infinite loop found within the "{type}" hierarchy. Please change the parent to resolve this'
HtmlEditorField: HtmlEditorField:
ADDURL: 'Add URL' ADDURL: 'Dodaj URL'
ADJUSTDETAILSDIMENSIONS: 'Details &amp; dimensions' ADJUSTDETAILSDIMENSIONS: 'Details &amp; dimensions'
ANCHORVALUE: Sidro ANCHORVALUE: Sidro
BUTTONINSERT: Insert BUTTONADDURL: 'Add url'
BUTTONINSERT: Vstavi
BUTTONINSERTLINK: 'Vstavi povezavo' BUTTONINSERTLINK: 'Vstavi povezavo'
BUTTONREMOVELINK: 'Odstrani povezavo' BUTTONREMOVELINK: 'Odstrani povezavo'
BUTTONUpdate: Update BUTTONUpdate: Osveži
CAPTIONTEXT: Pripis CAPTIONTEXT: Pripis
CSSCLASS: 'Poravnava in slog' CSSCLASS: 'Poravnava in slog'
CSSCLASSCENTER: 'Na sredini, samostojno' CSSCLASSCENTER: 'Na sredini, samostojno'
CSSCLASSLEFT: 'Levo, z oblivajočim besedilom' CSSCLASSLEFT: 'Levo, z oblivajočim besedilom'
CSSCLASSLEFTALONE: 'Na levi, samostojno.' CSSCLASSLEFTALONE: 'Na levi, samostojno.'
CSSCLASSRIGHT: 'Desno, z oblivajočim besedilom' CSSCLASSRIGHT: 'Desno, z oblivajočim besedilom'
DETAILS: Details DETAILS: Podrobno
EMAIL: E-naslov EMAIL: E-naslov
FILE: Datoteka FILE: Datoteka
FOLDER: Mapa FOLDER: Mapa
FROMCMS: 'From the CMS' FROMCMS: 'From the CMS'
FROMCOMPUTER: 'From your computer' FROMCOMPUTER: 'Z vašega računalnika'
FROMWEB: 'From the web' FROMWEB: 'S spleta'
FindInFolder: 'Find in Folder' FindInFolder: 'Poišči v mapi'
IMAGEALT: 'Alternative text (alt)' IMAGEALT: 'Nadomestno besedilo (alt)'
IMAGEALTTEXT: 'Nadomestno besedilo (alt) bo izpisano, kadar slike ne bo možno prikazati' IMAGEALTTEXT: 'Nadomestno besedilo (alt) bo izpisano, kadar slike ne bo možno prikazati'
IMAGEALTTEXTDESC: 'Shown to screen readers or if image can not be displayed' IMAGEALTTEXTDESC: 'Prikaz na bralnikih ali če se slika ne more prikazati'
IMAGEDIMENSIONS: Velikosti IMAGEDIMENSIONS: Velikosti
IMAGEHEIGHTPX: Višina IMAGEHEIGHTPX: Višina
IMAGETITLE: 'Naslov (tooltip) bo izpisan kot dopolnitev k vsebini slike' IMAGETITLE: 'Naslov (tooltip) bo izpisan kot dopolnitev k vsebini slike'
IMAGETITLETEXT: 'Title text (tooltip)' IMAGETITLETEXT: 'Naslov (tooltip)'
IMAGETITLETEXTDESC: 'For additional information about the image' IMAGETITLETEXTDESC: 'Za dodatne informacije o sliki'
IMAGEWIDTHPX: Širina IMAGEWIDTHPX: 'Širina'
INSERTMEDIA: 'Insert Media' INSERTMEDIA: 'Insert Media'
LINK: Povezava LINK: Povezava
LINKANCHOR: 'Sidro na tej strani' LINKANCHOR: 'Sidro na tej strani'
@ -309,50 +319,53 @@ sl:
URLNOTANOEMBEDRESOURCE: 'The URL ''{url}'' could not be turned into a media resource.' URLNOTANOEMBEDRESOURCE: 'The URL ''{url}'' could not be turned into a media resource.'
UpdateMEDIA: 'Update Media' UpdateMEDIA: 'Update Media'
Image: Image:
PLURALNAME: Files PLURALNAME: Datoteke
SINGULARNAME: File SINGULARNAME: Datoteka
ImageField: ImageField:
IMAGE: Slika IMAGE: Slika
Image_Cached: Image_Cached:
PLURALNAME: Files PLURALNAME: Datoteke
SINGULARNAME: File SINGULARNAME: Datoteka
Image_iframe.ss: Image_iframe.ss:
TITLE: 'Slika "uploading iframe"' TITLE: 'Slika "uploading iframe"'
LeftAndMain: LeftAndMain:
CANT_REORGANISE: 'You do not have permission to alter Top level pages. Your change was not saved.' CANT_REORGANISE: 'Nimate dovoljenja za menjavo strani v zgornjem nivoju. Sprememba ni shranjena.'
DELETED: Deleted. DELETED: Izbrisano.
DropdownBatchActionsDefault: Actions DropdownBatchActionsDefault: Dejanja
HELP: Pomoč HELP: Pomoč
PAGETYPE: 'Tip strani:' PAGETYPE: 'Tip strani:'
PERMAGAIN: 'Odjavili ste se iz CMS-vmesnika. Če se želite ponovno prijaviti, vpišite uporabniško ime in geslo.' PERMAGAIN: 'Odjavili ste se iz CMS-vmesnika. Če se želite ponovno prijaviti, vpišite uporabniško ime in geslo.'
PERMALREADY: 'Do tega dela CMS-vmesnika nimate dostopa. Če se želite vpisati z drugim uporabniškim imenom, lahko to storite spodaj' PERMALREADY: 'Do tega dela CMS-vmesnika nimate dostopa. Če se želite vpisati z drugim uporabniškim imenom, lahko to storite spodaj'
PERMDEFAULT: 'Izberite način avtentikacije in vpišite svoje podatke za dostop do CMS-vmesnika.' PERMDEFAULT: 'Izberite način avtentikacije in vpišite svoje podatke za dostop do CMS-vmesnika.'
PLEASESAVE: 'Shranite stran: te strani ne morete posodobiti, ker še ni bila shranjena.' PLEASESAVE: 'Shranite stran: te strani ne morete posodobiti, ker še ni bila shranjena.'
PreviewButton: Preview PreviewButton: Predogled
REORGANISATIONSUCCESSFUL: 'Reorganised the site tree successfully.' REORGANISATIONSUCCESSFUL: 'Struktura spletnega mesta je bila uspešno spremenjena.'
SAVEDUP: Saved. SAVEDUP: Shranjeno.
VersionUnknown: unknown ShowAsList: 'show as list'
TooManyPages: 'Too many pages'
ValidationError: 'Validation error'
VersionUnknown: Unknown
LeftAndMain_Menu.ss: LeftAndMain_Menu.ss:
Hello: Hi Hello: 'Pozdravljeni,'
LOGOUT: 'Log out' LOGOUT: Odjava
LoginAttempt: LoginAttempt:
Email: E-naslov Email: E-naslov
IP: IP-naslov IP: IP-naslov
PLURALNAME: 'Login Attempts' PLURALNAME: 'Poskusi prijave'
SINGULARNAME: 'Login Attempt' SINGULARNAME: 'Poskus prijave'
Status: Stanje Status: Stanje
Member: Member:
ADDGROUP: 'Add group' ADDGROUP: 'Dodaj skupino'
BUTTONCHANGEPASSWORD: 'Spremeni geslo' BUTTONCHANGEPASSWORD: 'Spremeni geslo'
BUTTONLOGIN: Prijava BUTTONLOGIN: Prijava
BUTTONLOGINOTHER: 'Prijavite se z drugim uporabniškim imenom' BUTTONLOGINOTHER: 'Prijavite se z drugim uporabniškim imenom'
BUTTONLOSTPASSWORD: 'Pozabil-a sem geslo' BUTTONLOSTPASSWORD: 'Pozabil-a sem geslo'
CANTEDIT: 'You don''t have permission to do that' CANTEDIT: 'Nimate dovoljenja za to dejanje'
CONFIRMNEWPASSWORD: 'Potrdi novo geslo' CONFIRMNEWPASSWORD: 'Potrdi novo geslo'
CONFIRMPASSWORD: 'Potrdi geslo' CONFIRMPASSWORD: 'Potrdi geslo'
DATEFORMAT: 'Date format' DATEFORMAT: 'Date format'
DefaultAdminFirstname: 'Privzeti administrator' DefaultAdminFirstname: 'Privzeti administrator'
DefaultDateTime: default DefaultDateTime: privzeto
EMAIL: E-naslov EMAIL: E-naslov
EMPTYNEWPASSWORD: 'Polje za vpis novega gesla ne sme ostati prazno. Poskusite ponovno.' EMPTYNEWPASSWORD: 'Polje za vpis novega gesla ne sme ostati prazno. Poskusite ponovno.'
ENTEREMAIL: 'Vpišite e-naslov, na katerega vam bomo nato poslali povezavo za ponastavitev gesla.' ENTEREMAIL: 'Vpišite e-naslov, na katerega vam bomo nato poslali povezavo za ponastavitev gesla.'
@ -362,8 +375,8 @@ sl:
ERRORWRONGCRED: 'Izgleda, kakor da se uporabniško ime in geslo ne ujemata. Poskusite se ponovno prijaviti.' ERRORWRONGCRED: 'Izgleda, kakor da se uporabniško ime in geslo ne ujemata. Poskusite se ponovno prijaviti.'
FIRSTNAME: Ime FIRSTNAME: Ime
INTERFACELANG: Jezik INTERFACELANG: Jezik
INVALIDNEWPASSWORD: 'We couldn''t accept that password: {password}' INVALIDNEWPASSWORD: 'Tega gesla ne moremo sprejeti: {password}'
LOGGEDINAS: 'You''re logged in as {name}.' LOGGEDINAS: 'Vpisan(a) si kot: {name}.'
NEWPASSWORD: 'Novo geslo' NEWPASSWORD: 'Novo geslo'
PASSWORD: Geslo PASSWORD: Geslo
PLURALNAME: Uporabniki PLURALNAME: Uporabniki
@ -375,7 +388,7 @@ sl:
TIMEFORMAT: 'Time format' TIMEFORMAT: 'Time format'
VALIDATIONMEMBEREXISTS: 'Uporabnik s tem %s že obstaja' VALIDATIONMEMBEREXISTS: 'Uporabnik s tem %s že obstaja'
ValidationIdentifierFailed: 'Can''t overwrite existing member #{id} with identical identifier ({name} = {value}))' ValidationIdentifierFailed: 'Can''t overwrite existing member #{id} with identical identifier ({name} = {value}))'
WELCOMEBACK: 'Welcome Back, {firstname}' WELCOMEBACK: 'Ponovno pozdravljeni, {firstname}'
YOUROLDPASSWORD: 'Staro geslo' YOUROLDPASSWORD: 'Staro geslo'
belongs_many_many_Groups: Skupine belongs_many_many_Groups: Skupine
db_LastVisited: 'Datum zadnjega obiska' db_LastVisited: 'Datum zadnjega obiska'
@ -387,46 +400,47 @@ sl:
MemberAuthenticator: MemberAuthenticator:
TITLE: 'Uporabniški račun' TITLE: 'Uporabniški račun'
MemberDatetimeOptionsetField: MemberDatetimeOptionsetField:
AMORPM: 'AM (Ante meridiem) or PM (Post meridiem)' AMORPM: 'AM (zjutraj in dopoldan) ali PM (popoldan in zvečer)'
'APPLY FILTER': 'Apply Filter' 'APPLY FILTER': 'Apply Filter'
Custom: Custom Custom: Prilagojeno
DATEFORMATBAD: 'Date format is invalid' DATEFORMATBAD: 'Zapis datuma je napačen'
DAYNOLEADING: 'Day of month without leading zero' DAYNOLEADING: 'Dan v mesecu brez zapisa sprednje ničle'
DIGITSDECFRACTIONSECOND: 'One or more digits representing a decimal fraction of a second' DIGITSDECFRACTIONSECOND: 'Ena ali več decimalk, ki predstavljajo sekunde'
FOURDIGITYEAR: 'Four-digit year' FOURDIGITYEAR: 'Štirimesten zapis letnice'
FULLNAMEMONTH: 'Full name of month (e.g. June)' FULLNAMEMONTH: 'Celoten zapis meseca (npr: junij)'
HOURNOLEADING: 'Hour without leading zero' HOURNOLEADING: 'Ura brez zapisa sprednje ničle'
MINUTENOLEADING: 'Minute without leading zero' MINUTENOLEADING: 'Minute brez zapisa sprednje ničle'
MONTHNOLEADING: 'Month digit without leading zero' MONTHNOLEADING: 'Mesec brez zapisa sprednje ničle'
Preview: Preview Preview: Predogled
SHORTMONTH: 'Short name of month (e.g. Jun)' SHORTMONTH: 'Kratek zapis meseca (npr. Jun)'
TOGGLEHELP: 'Toggle formatting help' TOGGLEHELP: 'Toggle formatting help'
TWODIGITDAY: 'Two-digit day of month' TWODIGITDAY: 'Dvomestno število za mesec'
TWODIGITHOUR: 'Two digits of hour (00 through 23)' TWODIGITHOUR: 'Dvomestno število za uro (od 00 do 23)'
TWODIGITMINUTE: 'Two digits of minute (00 through 59)' TWODIGITMINUTE: 'Dvomestno število za minute (od 00 do 59)'
TWODIGITMONTH: 'Two-digit month (01=January, etc.)' TWODIGITMONTH: 'Dvomesten zapis meseca (01 = Januar)'
TWODIGITSECOND: 'Two digits of second (00 through 59)' TWODIGITSECOND: 'Dvomesten zapis sekund (od 00 do 59)'
TWODIGITYEAR: 'Two-digit year' TWODIGITYEAR: 'Dvomestno število za letnico'
Toggle: 'Show formatting help'
MemberImportForm: MemberImportForm:
Help1: '<p>Uvoz uporabnikov v <em>formatu CSV</em> (comma-separated values). <small><a href="#" class="toggle-advanced">Prikaži možnosti za napredno urejanje.</a></small></p>' Help1: '<p>Uvoz uporabnikov v <em>formatu CSV</em> (comma-separated values). <small><a href="#" class="toggle-advanced">Prikaži možnosti za napredno urejanje.</a></small></p>'
Help2: '<div class="advanced"> <h4>Advanced usage</h4> <ul> <li>Allowed columns: <em>%s</em></li> <li>Existing users are matched by their unique <em>Code</em> property, and updated with any new values from the imported file.</li> <li>Groups can be assigned by the <em>Groups</em> column. Groups are identified by their <em>Code</em> property, multiple groups can be separated by comma. Existing group memberships are not cleared.</li> </ul></div>' Help2: '<div class="advanced"> <h4>Advanced usage</h4> <ul> <li>Allowed columns: <em>%s</em></li> <li>Existing users are matched by their unique <em>Code</em> property, and updated with any new values from the imported file.</li> <li>Groups can be assigned by the <em>Groups</em> column. Groups are identified by their <em>Code</em> property, multiple groups can be separated by comma. Existing group memberships are not cleared.</li> </ul></div>'
ResultCreated: 'Created {count} members' ResultCreated: 'Ustvarjenih {count} članov'
ResultDeleted: 'Število izbrisanih uporabnikov: %d' ResultDeleted: 'Število izbrisanih uporabnikov: %d'
ResultNone: 'Ni sprememb' ResultNone: 'Ni sprememb'
ResultUpdated: 'Updated {count} members' ResultUpdated: 'Posodobljenih {count} članov'
MemberPassword: MemberPassword:
PLURALNAME: 'Member Passwords' PLURALNAME: 'Gesla uporabnika'
SINGULARNAME: 'Member Password' SINGULARNAME: 'Geslo uporabnika'
MemberTableField: null MemberTableField: null
ModelAdmin: ModelAdmin:
DELETE: Izbriši DELETE: Izbriši
DELETEDRECORDS: 'Deleted {count} records.' DELETEDRECORDS: 'Deleted {count} records.'
EMPTYBEFOREIMPORT: 'Clear Database before import' EMPTYBEFOREIMPORT: 'Replace data'
IMPORT: 'Uvozi CSV-datoteko' IMPORT: 'Uvozi CSV-datoteko'
IMPORTEDRECORDS: 'Imported {count} records.' IMPORTEDRECORDS: 'Imported {count} records.'
NOCSVFILE: 'Poiščite CSV-datoteko za uvoz' NOCSVFILE: 'Poiščite CSV-datoteko za uvoz'
NOIMPORT: 'Ne najdem ničesar za uvoz' NOIMPORT: 'Ne najdem ničesar za uvoz'
RESET: Reset RESET: Ponastavi
Title: 'Data Models' Title: 'Data Models'
UPDATEDRECORDS: 'Updated {count} records.' UPDATEDRECORDS: 'Updated {count} records.'
ModelAdmin_ImportSpec.ss: ModelAdmin_ImportSpec.ss:
@ -436,37 +450,37 @@ sl:
IMPORTSPECTITLE: 'Specification for %s' IMPORTSPECTITLE: 'Specification for %s'
ModelAdmin_Tools.ss: ModelAdmin_Tools.ss:
FILTER: Filter FILTER: Filter
IMPORT: Import IMPORT: Uvozi
ModelSidebar.ss: ModelSidebar.ss:
IMPORT_TAB_HEADER: Import IMPORT_TAB_HEADER: Uvozi
SEARCHLISTINGS: Search SEARCHLISTINGS: Išči
MoneyField: MoneyField:
FIELDLABELAMOUNT: Znesek FIELDLABELAMOUNT: Znesek
FIELDLABELCURRENCY: Valuta FIELDLABELCURRENCY: Valuta
NullableField: NullableField:
IsNullLabel: 'Prazno polje' IsNullLabel: 'Prazno polje'
NumericField: NumericField:
VALIDATION: '''{value}'' is not a number, only numbers can be accepted for this field' VALIDATION: '''{value}'' ni številka. V to polje lahko vnesete samo številke.'
Pagination: Pagination:
Page: Page Page: Stran
View: View View: Poglej
Permission: Permission:
AdminGroup: Administrator AdminGroup: Administrator
CMS_ACCESS_CATEGORY: 'Dostop do CMS-vmesnika' CMS_ACCESS_CATEGORY: 'Dostop do CMS-vmesnika'
FULLADMINRIGHTS: 'Popolne administratorske pravice' FULLADMINRIGHTS: 'Popolne administratorske pravice'
FULLADMINRIGHTS_HELP: 'Lahko izniči oziroma upravlja z vsemi drugimi dovoljenji.' FULLADMINRIGHTS_HELP: 'Lahko izniči oziroma upravlja z vsemi drugimi dovoljenji.'
PLURALNAME: Permissions PLURALNAME: Dovoljenja
SINGULARNAME: Permission SINGULARNAME: Dovoljenje
PermissionCheckboxSetField: PermissionCheckboxSetField:
AssignedTo: 'assigned to "{title}"' AssignedTo: 'assigned to "{title}"'
FromGroup: 'inherited from group "{title}"' FromGroup: 'Privzeto iz skupine "{title}"'
FromRole: 'inherited from role "{title}"' FromRole: 'inherited from role "{title}"'
FromRoleOnGroup: 'podedovano iz vloge "%s" na skupino "%s"' FromRoleOnGroup: 'podedovano iz vloge "%s" na skupino "%s"'
PermissionRole: PermissionRole:
OnlyAdminCanApply: 'Only admin can apply' OnlyAdminCanApply: 'Only admin can apply'
PLURALNAME: Roles PLURALNAME: Vloge
SINGULARNAME: Role SINGULARNAME: Vloga
Title: Title Title: Naslov
PermissionRoleCode: PermissionRoleCode:
PLURALNAME: 'Permission Role Cods' PLURALNAME: 'Permission Role Cods'
SINGULARNAME: 'Permission Role Code' SINGULARNAME: 'Permission Role Code'
@ -477,8 +491,8 @@ sl:
VALIDATION: 'Vpišite veljavno telefonsko številko' VALIDATION: 'Vpišite veljavno telefonsko številko'
RelationComplexTableField.ss: RelationComplexTableField.ss:
ADD: Dodaj ADD: Dodaj
CSVEXPORT: 'Export to CSV' CSVEXPORT: 'Izvozi kot CSV-datoteko'
NOTFOUND: 'No items found' NOTFOUND: 'Ni najdenih predmetov.'
Security: Security:
ALREADYLOGGEDIN: 'Nimate dovoljenja za dostop do te strani. Če imate uporabniško ime z večimi pravicami, se lahko <a href="%s">ponovno prijavite</a>.' ALREADYLOGGEDIN: 'Nimate dovoljenja za dostop do te strani. Če imate uporabniško ime z večimi pravicami, se lahko <a href="%s">ponovno prijavite</a>.'
BUTTONSEND: 'Pošlji povezavo za ponastavitev gesla' BUTTONSEND: 'Pošlji povezavo za ponastavitev gesla'
@ -489,10 +503,10 @@ sl:
LOGGEDOUT: 'Vaša prijava je bila prekinjena. Če se želite ponovno prijaviti, vpišite svoje podatke.' LOGGEDOUT: 'Vaša prijava je bila prekinjena. Če se želite ponovno prijaviti, vpišite svoje podatke.'
LOGIN: Prijava LOGIN: Prijava
NOTEPAGESECURED: 'Stran je zaščitena. Da bi lahko nadaljevali, vpišite svoje podatke.' NOTEPAGESECURED: 'Stran je zaščitena. Da bi lahko nadaljevali, vpišite svoje podatke.'
NOTERESETLINKINVALID: '<p>The password reset link is invalid or expired.</p><p>You can request a new one <a href="{link1}">here</a> or change your password after you <a href="{link2}">logged in</a>.</p>' NOTERESETLINKINVALID: '<p>Povezava za ponastavitev gesla je napačna ali pa je njena veljavnost potekla.</p><p><a href="{link1}">Tukaj</a> lahko zaprosite za novo povezavo or pa zamenjate geslo, ko <a href="{link2}">se prijavite v sistem</a>.</p>'
NOTERESETPASSWORD: 'Vpišite e-naslov, na katerega vam bomo poslali povezavo za ponastavitev gesla' NOTERESETPASSWORD: 'Vpišite e-naslov, na katerega vam bomo poslali povezavo za ponastavitev gesla'
PASSWORDSENTHEADER: 'Password reset link sent to ''{email}''' PASSWORDSENTHEADER: 'Povezava za ponastavitev gesla je bila poslana na e-naslov ''{email}''.'
PASSWORDSENTTEXT: 'Thank you! A reset link has been sent to ''{email}'', provided an account exists for this email address.' PASSWORDSENTTEXT: 'Hvala! Povezava za ponastavitev gesla je bila poslana na e-naslov ''{email}'', ki je naveden kot e-naslov vašega računa. '
SecurityAdmin: SecurityAdmin:
ACCESS_HELP: 'Dovoli ogled, dodajanje in urejanje uporabnikov ter dodeljevanje dovoljenj in vlog zanje.' ACCESS_HELP: 'Dovoli ogled, dodajanje in urejanje uporabnikov ter dodeljevanje dovoljenj in vlog zanje.'
APPLY_ROLES: 'Skupinam pripiši vloge' APPLY_ROLES: 'Skupinam pripiši vloge'
@ -500,22 +514,35 @@ sl:
EDITPERMISSIONS: 'Upravljanje dovoljenj za skupine' EDITPERMISSIONS: 'Upravljanje dovoljenj za skupine'
EDITPERMISSIONS_HELP: 'Možnost upravljanja z dovoljenji in IP-naslovi skupin. Potrebujete dovoljenje za dostop do sklopa "Varnost".' EDITPERMISSIONS_HELP: 'Možnost upravljanja z dovoljenji in IP-naslovi skupin. Potrebujete dovoljenje za dostop do sklopa "Varnost".'
GROUPNAME: 'Ime skupine' GROUPNAME: 'Ime skupine'
IMPORTGROUPS: 'Import groups' IMPORTGROUPS: 'Uvozi skupine'
IMPORTUSERS: 'Import users' IMPORTUSERS: 'Uvozi uporabnike'
MEMBERS: Člani MEMBERS: Člani
MENUTITLE: Security MENUTITLE: Varnost
MemberListCaution: 'Pozor! Če boste odstranili uporabnike s tega seznama, jih boste hkrati odstranili iz vseh drugih skupin in izbrisali iz podatkovne zbirke.' MemberListCaution: 'Pozor! Če boste odstranili uporabnike s tega seznama, jih boste hkrati odstranili iz vseh drugih skupin in izbrisali iz podatkovne zbirke.'
NEWGROUP: 'Nova Skupina' NEWGROUP: 'Nova Skupina'
PERMISSIONS: Dovoljenja PERMISSIONS: Dovoljenja
ROLES: Vloge ROLES: Vloge
ROLESDESCRIPTION: 'Tukaj lahko skupini dodajate vloge. Vloge so logični sklopi dovoljenj, ki jih urejate v zavihku "Vloge".' ROLESDESCRIPTION: 'Tukaj lahko skupini dodajate vloge. Vloge so logični sklopi dovoljenj, ki jih urejate v zavihku "Vloge".'
TABROLES: Vloge TABROLES: Vloge
Users: Users Users: Uporabniki
SecurityAdmin_MemberImportForm: SecurityAdmin_MemberImportForm:
BtnImport: Uvozi BtnImport: Uvozi
FileFieldLabel: 'CSV-datoteka <small>(Samo končnica: *.csv)</small>' FileFieldLabel: 'CSV-datoteka <small>(Samo končnica: *.csv)</small>'
SilverStripeNavigator: SilverStripeNavigator:
Edit: Edit Auto: Auto
ChangeViewMode: 'Change view mode'
Desktop: Desktop
DualWindowView: 'Dual Window'
Edit: Uredi
EditView: 'Edit mode'
Mobile: Mobile
PreviewState: 'Preview State'
PreviewView: 'Preview mode'
Responsive: Responsive
SplitView: 'Split mode'
Tablet: Tablet
ViewDeviceWidth: 'Select a preview width'
Width: width
SimpleImageField: SimpleImageField:
NOUPLOAD: 'Slika ni naložena' NOUPLOAD: 'Slika ni naložena'
SiteTree: SiteTree:
@ -528,49 +555,54 @@ sl:
TableListField: TableListField:
CSVEXPORT: 'Izvozi kot CSV-datoteko' CSVEXPORT: 'Izvozi kot CSV-datoteko'
PRINT: Natisni PRINT: Natisni
Print: Print Print: Natisni
SELECT: 'Izberi:' SELECT: 'Izberi:'
TableListField.ss: TableListField.ss:
NOITEMSFOUND: 'No items found' NOITEMSFOUND: 'Ni najdenih predmetov.'
SORTASC: 'Razvrsti naraščajoče' SORTASC: 'Razvrsti naraščajoče'
SORTDESC: 'Razvrsti padajoče' SORTDESC: 'Razvrsti padajoče'
TableListField_PageControls.ss: TableListField_PageControls.ss:
DISPLAYING: Displaying DISPLAYING: Prikaz
OF: of OF: od
TO: to TO: za
VIEWFIRST: 'Na začetek' VIEWFIRST: 'Na začetek'
VIEWLAST: 'Na konec' VIEWLAST: 'Na konec'
VIEWNEXT: Naslednja VIEWNEXT: Naslednja
VIEWPREVIOUS: Prejšnja VIEWPREVIOUS: Prejšnja
TimeField: TimeField:
VALIDATEFORMAT: 'Please enter a valid time format ({format})' VALIDATEFORMAT: 'Prosim, vnesite čas v ustrezni obliki ({format})'
ToggleField: ToggleField:
LESS: manj LESS: manj
MORE: več MORE: več
UploadField: UploadField:
ATTACHFILE: 'Attach a file' ATTACHFILE: 'Pripni datoteko'
ATTACHFILES: 'Attach files' ATTACHFILES: 'Pripni datoteke'
AttachFile: 'Attach file(s)' AttachFile: 'Pripni datoteke'
DELETE: 'Delete from files' CHOOSEANOTHERFILE: 'Choose another file'
DELETEINFO: 'Permanently delete this file from the file store' CHOOSEANOTHERINFO: 'Replace this file with another one from the file store'
DOEDIT: Save DELETE: 'Izbriši iz zbirke naloženih datotek'
DROPFILE: 'drop a file' DELETEINFO: 'Dokončno izbriši datoteko iz knjižnjice datotek'
DROPFILES: 'drop files' DOEDIT: Shrani
Dimensions: Dimensions DROPFILE: 'Spusti datoteko'
EDIT: Edit DROPFILES: 'Spusti datoteko'
EDITINFO: 'Edit this file' Dimensions: Dimenzije
FIELDNOTSET: 'File information not found' EDIT: Uredi
FROMCOMPUTER: 'From your computer' EDITINFO: 'Uredi datoteko'
FROMCOMPUTERINFO: 'Select from files' FIELDNOTSET: 'Pred uvozom počisti bazo podatkov'
FROMFILES: 'From files' FROMCOMPUTER: 'Z vašega računalnika'
HOTLINKINFO: 'Info: This image will be hotlinked. Please ensure you have permissions from the original site creator to do so.' FROMCOMPUTERINFO: 'Izberite iz zbirke naloženih datotek'
MAXNUMBEROFFILES: 'Max number of {count} file(s) exceeded.' FROMFILES: 'Iz zbirke naloženih datotek'
MAXNUMBEROFFILESSHORT: 'Can only upload {count} files' HOTLINKINFO: 'Info: Ta slika bo dostopna prek povezave. Prosim, preverite, da imate dovoljenje avtorja za tako uporabo.'
REMOVE: Remove MAXNUMBEROFFILES: 'Doseženo je največje možno število datotek: {count}'
REMOVEERROR: 'Error removing file' MAXNUMBEROFFILESONE: 'Can only upload one file'
REMOVEINFO: 'Remove this file from here, but do not delete it from the file store' MAXNUMBEROFFILESSHORT: 'Naložite lahko največ {count} datotek'
OVERWRITEWARNING: 'File with the same name already exists'
REMOVE: Odstrani
REMOVEERROR: 'Napaka pri brisanju datoteke'
REMOVEINFO: 'Odstrani datoteko, vendar je ne izbriši iz knjižnjice datotek'
STARTALL: 'Start all' STARTALL: 'Start all'
STARTALLINFO: 'Start all uploads' STARTALLINFO: 'Start all uploads'
Saved: Saved Saved: Shranjeno
UPLOADSINTO: 'saves into /{path}'
Versioned: Versioned:
has_many_Versions: Verzije has_many_Versions: Verzije

View File

@ -2,6 +2,7 @@ sr:
AssetAdmin: AssetAdmin:
ALLOWEDEXTS: 'Allowed extensions' ALLOWEDEXTS: 'Allowed extensions'
NEWFOLDER: 'Нова фасцикла' NEWFOLDER: 'Нова фасцикла'
SHOWALLOWEDEXTS: 'Show allowed extensions'
AssetTableField: AssetTableField:
CREATED: 'Прво достављено' CREATED: 'Прво достављено'
DIM: Димензије DIM: Димензије
@ -59,9 +60,9 @@ sr:
ERRORNOTADMIN: 'Овај корисник није администратор.' ERRORNOTADMIN: 'Овај корисник није администратор.'
ERRORNOTREC: 'То корисничко име / лозинка није препознато' ERRORNOTREC: 'То корисничко име / лозинка није препознато'
Boolean: Boolean:
0: 'False'
ANY: Any ANY: Any
1: 'True' NOANSWER: 'False'
YESANSWER: 'True'
CMSLoadingScreen.ss: CMSLoadingScreen.ss:
LOADING: Loading... LOADING: Loading...
REQUIREJS: 'The CMS requires that you have JavaScript enabled.' REQUIREJS: 'The CMS requires that you have JavaScript enabled.'
@ -70,6 +71,8 @@ sr:
ACCESSALLINTERFACES: 'Access to all CMS sections' ACCESSALLINTERFACES: 'Access to all CMS sections'
ACCESSALLINTERFACESHELP: 'Overrules more specific access settings.' ACCESSALLINTERFACESHELP: 'Overrules more specific access settings.'
SAVE: Сачувај SAVE: Сачувај
CMSPageHistoryController_versions.ss:
PREVIEW: 'Website preview'
CMSProfileController: CMSProfileController:
MENUTITLE: 'My Profile' MENUTITLE: 'My Profile'
ChangePasswordEmail.ss: ChangePasswordEmail.ss:
@ -79,8 +82,8 @@ sr:
HELLO: Здраво HELLO: Здраво
PASSWORD: Password PASSWORD: Password
CheckboxField: CheckboxField:
- 'False' NOANSWER: 'False'
- 'True' YESANSWER: 'True'
ComplexTableField: ComplexTableField:
CLOSEPOPUP: 'Close Popup' CLOSEPOPUP: 'Close Popup'
SUCCESSADD2: 'Added {name}' SUCCESSADD2: 'Added {name}'
@ -92,7 +95,7 @@ sr:
SORTDESC: 'Сортирају у опадајућем поретку' SORTDESC: 'Сортирају у опадајућем поретку'
ComplexTableField_popup.ss: ComplexTableField_popup.ss:
NEXT: Следеће NEXT: Следеће
PREVIOUS: Претходно PREVIOUS: 'Претходно'
ConfirmedPasswordField: ConfirmedPasswordField:
ATLEAST: 'Passwords must be at least {min} characters long.' ATLEAST: 'Passwords must be at least {min} characters long.'
BETWEEN: 'Passwords must be {min} to {max} characters long.' BETWEEN: 'Passwords must be {min} to {max} characters long.'
@ -109,20 +112,21 @@ sr:
PLURALNAME: 'Data Objects' PLURALNAME: 'Data Objects'
SINGULARNAME: 'Data Object' SINGULARNAME: 'Data Object'
Date: Date:
DAY: дан DAY: day
DAYS: дана DAYS: days
HOUR: сат HOUR: hour
HOURS: сати HOURS: hours
MIN: минут LessThanMinuteAgo: 'less than a minute'
MINS: минута MIN: min
MONTH: месец MINS: mins
MONTHS: месеци MONTH: month
SEC: секунда MONTHS: months
SECS: секунди SEC: sec
SECS: secs
TIMEDIFFAGO: '{difference} ago' TIMEDIFFAGO: '{difference} ago'
TIMEDIFFIN: 'in {difference}' TIMEDIFFIN: 'in {difference}'
YEAR: година YEAR: year
YEARS: година YEARS: years
DateField: DateField:
NOTSET: 'not set' NOTSET: 'not set'
TODAY: данас TODAY: данас
@ -198,7 +202,8 @@ sr:
TEXT2: 'password reset link' TEXT2: 'password reset link'
TEXT3: for TEXT3: for
Form: Form:
FIELDISREQUIRED: '%s је захтевано' CSRF_FAILED_MESSAGE: 'There seems to have been a technical problem. Please click the back button, refresh your browser, and try again.'
FIELDISREQUIRED: '{name} is required'
SubmitBtnLabel: Go SubmitBtnLabel: Go
VALIDATIONCREDITNUMBER: 'Please ensure you have entered the {number} credit card number correctly' VALIDATIONCREDITNUMBER: 'Please ensure you have entered the {number} credit card number correctly'
VALIDATIONNOTUNIQUE: 'Унета вредност није јединствена' VALIDATIONNOTUNIQUE: 'Унета вредност није јединствена'
@ -208,6 +213,7 @@ sr:
VALIDATOR: Validator VALIDATOR: Validator
VALIDCURRENCY: 'Please enter a valid currency' VALIDCURRENCY: 'Please enter a valid currency'
FormField: FormField:
Example: 'e.g. %s'
NONE: без NONE: без
GridAction: GridAction:
DELETE_DESCRIPTION: Delete DELETE_DESCRIPTION: Delete
@ -230,6 +236,7 @@ sr:
ResetFilter: Reset ResetFilter: Reset
GridFieldAction_Delete: GridFieldAction_Delete:
DeletePermissionsFailure: 'No delete permissions' DeletePermissionsFailure: 'No delete permissions'
EditPermissionsFailure: 'No permission to unlink record'
GridFieldDetailForm: GridFieldDetailForm:
CancelBtn: Cancel CancelBtn: Cancel
Create: Create Create: Create
@ -237,7 +244,9 @@ sr:
DeletePermissionsFailure: 'No delete permissions' DeletePermissionsFailure: 'No delete permissions'
Deleted: 'Deleted %s %s' Deleted: 'Deleted %s %s'
Save: Save Save: Save
Saved: 'Saved %s %s' Saved: 'Saved {name} {link}'
GridFieldEditButton.ss:
EDIT: Edit
GridFieldItemEditView.ss: null GridFieldItemEditView.ss: null
Group: Group:
AddRole: 'Add a role for this group' AddRole: 'Add a role for this group'
@ -267,6 +276,7 @@ sr:
ADDURL: 'Add URL' ADDURL: 'Add URL'
ADJUSTDETAILSDIMENSIONS: 'Details &amp; dimensions' ADJUSTDETAILSDIMENSIONS: 'Details &amp; dimensions'
ANCHORVALUE: Anchor ANCHORVALUE: Anchor
BUTTONADDURL: 'Add url'
BUTTONINSERT: Insert BUTTONINSERT: Insert
BUTTONINSERTLINK: 'Уметни линк' BUTTONINSERTLINK: 'Уметни линк'
BUTTONREMOVELINK: 'Уклони линк' BUTTONREMOVELINK: 'Уклони линк'
@ -331,7 +341,10 @@ sr:
PreviewButton: Preview PreviewButton: Preview
REORGANISATIONSUCCESSFUL: 'Reorganised the site tree successfully.' REORGANISATIONSUCCESSFUL: 'Reorganised the site tree successfully.'
SAVEDUP: Saved. SAVEDUP: Saved.
VersionUnknown: unknown ShowAsList: 'show as list'
TooManyPages: 'Too many pages'
ValidationError: 'Validation error'
VersionUnknown: Unknown
LeftAndMain_Menu.ss: LeftAndMain_Menu.ss:
Hello: Hi Hello: Hi
LOGOUT: 'Log out' LOGOUT: 'Log out'
@ -407,6 +420,7 @@ sr:
TWODIGITMONTH: 'Two-digit month (01=January, etc.)' TWODIGITMONTH: 'Two-digit month (01=January, etc.)'
TWODIGITSECOND: 'Two digits of second (00 through 59)' TWODIGITSECOND: 'Two digits of second (00 through 59)'
TWODIGITYEAR: 'Two-digit year' TWODIGITYEAR: 'Two-digit year'
Toggle: 'Show formatting help'
MemberImportForm: MemberImportForm:
Help1: '<p>Import users in <em>CSV format</em> (comma-separated values). <small><a href="#" class="toggle-advanced">Show advanced usage</a></small></p>' Help1: '<p>Import users in <em>CSV format</em> (comma-separated values). <small><a href="#" class="toggle-advanced">Show advanced usage</a></small></p>'
Help2: '<div class="advanced"> <h4>Advanced usage</h4> <ul> <li>Allowed columns: <em>%s</em></li> <li>Existing users are matched by their unique <em>Code</em> property, and updated with any new values from the imported file.</li> <li>Groups can be assigned by the <em>Groups</em> column. Groups are identified by their <em>Code</em> property, multiple groups can be separated by comma. Existing group memberships are not cleared.</li> </ul></div>' Help2: '<div class="advanced"> <h4>Advanced usage</h4> <ul> <li>Allowed columns: <em>%s</em></li> <li>Existing users are matched by their unique <em>Code</em> property, and updated with any new values from the imported file.</li> <li>Groups can be assigned by the <em>Groups</em> column. Groups are identified by their <em>Code</em> property, multiple groups can be separated by comma. Existing group memberships are not cleared.</li> </ul></div>'
@ -421,7 +435,7 @@ sr:
ModelAdmin: ModelAdmin:
DELETE: Delete DELETE: Delete
DELETEDRECORDS: 'Deleted {count} records.' DELETEDRECORDS: 'Deleted {count} records.'
EMPTYBEFOREIMPORT: 'Clear Database before import' EMPTYBEFOREIMPORT: 'Replace data'
IMPORT: 'Import from CSV' IMPORT: 'Import from CSV'
IMPORTEDRECORDS: 'Imported {count} records.' IMPORTEDRECORDS: 'Imported {count} records.'
NOCSVFILE: 'Please browse for a CSV file to import' NOCSVFILE: 'Please browse for a CSV file to import'
@ -515,7 +529,20 @@ sr:
BtnImport: 'Import from CSV' BtnImport: 'Import from CSV'
FileFieldLabel: 'CSV File <small>(Allowed extensions: *.csv)</small>' FileFieldLabel: 'CSV File <small>(Allowed extensions: *.csv)</small>'
SilverStripeNavigator: SilverStripeNavigator:
Auto: Auto
ChangeViewMode: 'Change view mode'
Desktop: Desktop
DualWindowView: 'Dual Window'
Edit: Edit Edit: Edit
EditView: 'Edit mode'
Mobile: Mobile
PreviewState: 'Preview State'
PreviewView: 'Preview mode'
Responsive: Responsive
SplitView: 'Split mode'
Tablet: Tablet
ViewDeviceWidth: 'Select a preview width'
Width: width
SimpleImageField: SimpleImageField:
NOUPLOAD: 'Ниједна слика није достављена' NOUPLOAD: 'Ниједна слика није достављена'
SiteTree: SiteTree:
@ -551,6 +578,8 @@ sr:
ATTACHFILE: 'Attach a file' ATTACHFILE: 'Attach a file'
ATTACHFILES: 'Attach files' ATTACHFILES: 'Attach files'
AttachFile: 'Attach file(s)' AttachFile: 'Attach file(s)'
CHOOSEANOTHERFILE: 'Choose another file'
CHOOSEANOTHERINFO: 'Replace this file with another one from the file store'
DELETE: 'Delete from files' DELETE: 'Delete from files'
DELETEINFO: 'Permanently delete this file from the file store' DELETEINFO: 'Permanently delete this file from the file store'
DOEDIT: Save DOEDIT: Save
@ -565,12 +594,15 @@ sr:
FROMFILES: 'From files' FROMFILES: 'From files'
HOTLINKINFO: 'Info: This image will be hotlinked. Please ensure you have permissions from the original site creator to do so.' HOTLINKINFO: 'Info: This image will be hotlinked. Please ensure you have permissions from the original site creator to do so.'
MAXNUMBEROFFILES: 'Max number of {count} file(s) exceeded.' MAXNUMBEROFFILES: 'Max number of {count} file(s) exceeded.'
MAXNUMBEROFFILESONE: 'Can only upload one file'
MAXNUMBEROFFILESSHORT: 'Can only upload {count} files' MAXNUMBEROFFILESSHORT: 'Can only upload {count} files'
OVERWRITEWARNING: 'File with the same name already exists'
REMOVE: Remove REMOVE: Remove
REMOVEERROR: 'Error removing file' REMOVEERROR: 'Error removing file'
REMOVEINFO: 'Remove this file from here, but do not delete it from the file store' REMOVEINFO: 'Remove this file from here, but do not delete it from the file store'
STARTALL: 'Start all' STARTALL: 'Start all'
STARTALLINFO: 'Start all uploads' STARTALLINFO: 'Start all uploads'
Saved: Saved Saved: Saved
UPLOADSINTO: 'saves into /{path}'
Versioned: Versioned:
has_many_Versions: Versions has_many_Versions: Versions

View File

@ -2,6 +2,7 @@ sv:
AssetAdmin: AssetAdmin:
ALLOWEDEXTS: 'Allowed extensions' ALLOWEDEXTS: 'Allowed extensions'
NEWFOLDER: 'Ny mapp' NEWFOLDER: 'Ny mapp'
SHOWALLOWEDEXTS: 'Show allowed extensions'
AssetTableField: AssetTableField:
CREATED: 'Först uppladdad' CREATED: 'Först uppladdad'
DIM: Dimensioner DIM: Dimensioner
@ -59,9 +60,9 @@ sv:
ERRORNOTADMIN: 'Den användaren är inte administratör' ERRORNOTADMIN: 'Den användaren är inte administratör'
ERRORNOTREC: 'Användarnamnet / lösenordet hittas inte' ERRORNOTREC: 'Användarnamnet / lösenordet hittas inte'
Boolean: Boolean:
0: Falskt
ANY: 'Vilken som helst' ANY: 'Vilken som helst'
1: Sant NOANSWER: 'False'
YESANSWER: 'True'
CMSLoadingScreen.ss: CMSLoadingScreen.ss:
LOADING: Laddar... LOADING: Laddar...
REQUIREJS: 'CMS:et kräver att du har javascript aktiverat.' REQUIREJS: 'CMS:et kräver att du har javascript aktiverat.'
@ -70,6 +71,8 @@ sv:
ACCESSALLINTERFACES: 'Tillgång till alla CMS-sektioner' ACCESSALLINTERFACES: 'Tillgång till alla CMS-sektioner'
ACCESSALLINTERFACESHELP: 'Ersätter mer specifika behörighetsinställningar.' ACCESSALLINTERFACESHELP: 'Ersätter mer specifika behörighetsinställningar.'
SAVE: Spara SAVE: Spara
CMSPageHistoryController_versions.ss:
PREVIEW: 'Website preview'
CMSProfileController: CMSProfileController:
MENUTITLE: 'Min Profil' MENUTITLE: 'Min Profil'
ChangePasswordEmail.ss: ChangePasswordEmail.ss:
@ -79,8 +82,8 @@ sv:
HELLO: Hej HELLO: Hej
PASSWORD: Lösenord PASSWORD: Lösenord
CheckboxField: CheckboxField:
- Falskt NOANSWER: 'False'
- Sant YESANSWER: 'True'
ComplexTableField: ComplexTableField:
CLOSEPOPUP: 'Stäng popup' CLOSEPOPUP: 'Stäng popup'
SUCCESSADD2: 'Lade till {name}' SUCCESSADD2: 'Lade till {name}'
@ -109,20 +112,21 @@ sv:
PLURALNAME: Dataobjekt PLURALNAME: Dataobjekt
SINGULARNAME: Dataobjekt SINGULARNAME: Dataobjekt
Date: Date:
DAY: dag DAY: day
DAYS: dagar DAYS: days
HOUR: timme HOUR: hour
HOURS: timmar HOURS: hours
LessThanMinuteAgo: 'less than a minute'
MIN: min MIN: min
MINS: min MINS: mins
MONTH: 'månad ' MONTH: month
MONTHS: 'månader ' MONTHS: months
SEC: sek SEC: sec
SECS: sekunder SECS: secs
TIMEDIFFAGO: '{difference} sen' TIMEDIFFAGO: '{difference} sen'
TIMEDIFFIN: 'om {difference}' TIMEDIFFIN: 'om {difference}'
YEAR: år YEAR: year
YEARS: år YEARS: years
DateField: DateField:
NOTSET: 'inte angivet' NOTSET: 'inte angivet'
TODAY: 'i dag' TODAY: 'i dag'
@ -198,7 +202,8 @@ sv:
TEXT2: 'Återställningslänk för lösenord' TEXT2: 'Återställningslänk för lösenord'
TEXT3: för TEXT3: för
Form: Form:
FIELDISREQUIRED: '%s är obligatorisk' CSRF_FAILED_MESSAGE: 'There seems to have been a technical problem. Please click the back button, refresh your browser, and try again.'
FIELDISREQUIRED: '{name} is required'
SubmitBtnLabel: Kör SubmitBtnLabel: Kör
VALIDATIONCREDITNUMBER: 'Kontrollera att du angav kortnummret {number} rätt' VALIDATIONCREDITNUMBER: 'Kontrollera att du angav kortnummret {number} rätt'
VALIDATIONNOTUNIQUE: 'Det angivna värdet är inte unikt' VALIDATIONNOTUNIQUE: 'Det angivna värdet är inte unikt'
@ -208,6 +213,7 @@ sv:
VALIDATOR: Validator VALIDATOR: Validator
VALIDCURRENCY: 'Var vänlig ange en korrekt valuta' VALIDCURRENCY: 'Var vänlig ange en korrekt valuta'
FormField: FormField:
Example: 'e.g. %s'
NONE: ingen NONE: ingen
GridAction: GridAction:
DELETE_DESCRIPTION: Radera DELETE_DESCRIPTION: Radera
@ -230,6 +236,7 @@ sv:
ResetFilter: Rensa ResetFilter: Rensa
GridFieldAction_Delete: GridFieldAction_Delete:
DeletePermissionsFailure: 'Rättighet för att radera saknas' DeletePermissionsFailure: 'Rättighet för att radera saknas'
EditPermissionsFailure: 'No permission to unlink record'
GridFieldDetailForm: GridFieldDetailForm:
CancelBtn: Avbryt CancelBtn: Avbryt
Create: Skapa Create: Skapa
@ -237,7 +244,9 @@ sv:
DeletePermissionsFailure: 'Rättighet för att radera saknas' DeletePermissionsFailure: 'Rättighet för att radera saknas'
Deleted: 'Raderade %s %s' Deleted: 'Raderade %s %s'
Save: Spara Save: Spara
Saved: 'Sparade %s %s' Saved: 'Saved {name} {link}'
GridFieldEditButton.ss:
EDIT: Edit
GridFieldItemEditView.ss: null GridFieldItemEditView.ss: null
Group: Group:
AddRole: 'Lägg till roll för den här gruppen' AddRole: 'Lägg till roll för den här gruppen'
@ -267,6 +276,7 @@ sv:
ADDURL: 'Lägg till URL' ADDURL: 'Lägg till URL'
ADJUSTDETAILSDIMENSIONS: 'Detaljer &amp; dimensioner' ADJUSTDETAILSDIMENSIONS: 'Detaljer &amp; dimensioner'
ANCHORVALUE: Ankare ANCHORVALUE: Ankare
BUTTONADDURL: 'Add url'
BUTTONINSERT: Infoga BUTTONINSERT: Infoga
BUTTONINSERTLINK: 'Infoga länk' BUTTONINSERTLINK: 'Infoga länk'
BUTTONREMOVELINK: 'Ta bort länk' BUTTONREMOVELINK: 'Ta bort länk'
@ -321,7 +331,7 @@ sv:
LeftAndMain: LeftAndMain:
CANT_REORGANISE: 'Du har inte tillstånd att ändra sidor på toppnivå. Dina ändringar har inte sparats.' CANT_REORGANISE: 'Du har inte tillstånd att ändra sidor på toppnivå. Dina ändringar har inte sparats.'
DELETED: Raderad DELETED: Raderad
DropdownBatchActionsDefault: Åtgärder DropdownBatchActionsDefault: 'Åtgärder'
HELP: Hjälp HELP: Hjälp
PAGETYPE: Sidtyp PAGETYPE: Sidtyp
PERMAGAIN: 'Du har blivit utloggad. Om du vill logga in igen anger du dina uppgifter nedan.' PERMAGAIN: 'Du har blivit utloggad. Om du vill logga in igen anger du dina uppgifter nedan.'
@ -331,6 +341,9 @@ sv:
PreviewButton: Förhandsgranska PreviewButton: Förhandsgranska
REORGANISATIONSUCCESSFUL: 'Omorganisationen av sidträdet luyckades.' REORGANISATIONSUCCESSFUL: 'Omorganisationen av sidträdet luyckades.'
SAVEDUP: Sparad. SAVEDUP: Sparad.
ShowAsList: 'show as list'
TooManyPages: 'Too many pages'
ValidationError: 'Validation error'
VersionUnknown: okänd VersionUnknown: okänd
LeftAndMain_Menu.ss: LeftAndMain_Menu.ss:
Hello: Hej Hello: Hej
@ -407,6 +420,7 @@ sv:
TWODIGITMONTH: 'Tvåsiffrig månad (01 = januari osv)' TWODIGITMONTH: 'Tvåsiffrig månad (01 = januari osv)'
TWODIGITSECOND: 'Två siffror för sekund (00 till 59)' TWODIGITSECOND: 'Två siffror för sekund (00 till 59)'
TWODIGITYEAR: 'Två siffror för år' TWODIGITYEAR: 'Två siffror för år'
Toggle: 'Show formatting help'
MemberImportForm: MemberImportForm:
Help1: '<p>Importera användare i <em>CSV-format</em> (kommaseparerade värden). <small><a href="#" class="toggle-advanced">Visa avancerat</a></small></p>' Help1: '<p>Importera användare i <em>CSV-format</em> (kommaseparerade värden). <small><a href="#" class="toggle-advanced">Visa avancerat</a></small></p>'
Help2: "<div class=\"advanced\">\\n<h4>Avancerat </h4>\\n<ul>\\n<li>Tillåtna kolumner: <em>%s</em></li>\\n<li>Existerade användare matchas av deras unika <em>kod</em>-attribut och uppdateras med alla nya värden från den importerade filen</li>\\n<li>Grupper kan anges i <em>Grupp</em>-kolumnen. Grupper identiferas av deras <em>Code</em>-attribut. Anges flera grupper separeras dessa med kommatecken. Existerande användarrättigheter till grupperna tas inte bort.</li>\\n</ul>\\n</div>" Help2: "<div class=\"advanced\">\\n<h4>Avancerat </h4>\\n<ul>\\n<li>Tillåtna kolumner: <em>%s</em></li>\\n<li>Existerade användare matchas av deras unika <em>kod</em>-attribut och uppdateras med alla nya värden från den importerade filen</li>\\n<li>Grupper kan anges i <em>Grupp</em>-kolumnen. Grupper identiferas av deras <em>Code</em>-attribut. Anges flera grupper separeras dessa med kommatecken. Existerande användarrättigheter till grupperna tas inte bort.</li>\\n</ul>\\n</div>"
@ -421,7 +435,7 @@ sv:
ModelAdmin: ModelAdmin:
DELETE: Radera DELETE: Radera
DELETEDRECORDS: 'Raderade {count} poster.' DELETEDRECORDS: 'Raderade {count} poster.'
EMPTYBEFOREIMPORT: 'Töm databasen före import' EMPTYBEFOREIMPORT: 'Replace data'
IMPORT: 'Importera från CSV' IMPORT: 'Importera från CSV'
IMPORTEDRECORDS: 'Importerade {count} poster.' IMPORTEDRECORDS: 'Importerade {count} poster.'
NOCSVFILE: 'Var god och bläddra efter en CSV-fil för import' NOCSVFILE: 'Var god och bläddra efter en CSV-fil för import'
@ -515,7 +529,20 @@ sv:
BtnImport: 'Importera från CSV' BtnImport: 'Importera från CSV'
FileFieldLabel: 'CSV-fil <small>(Tillåtna filtyper: *.csv)</small>' FileFieldLabel: 'CSV-fil <small>(Tillåtna filtyper: *.csv)</small>'
SilverStripeNavigator: SilverStripeNavigator:
Auto: Auto
ChangeViewMode: 'Change view mode'
Desktop: Desktop
DualWindowView: 'Dual Window'
Edit: Ändra Edit: Ändra
EditView: 'Edit mode'
Mobile: Mobile
PreviewState: 'Preview State'
PreviewView: 'Preview mode'
Responsive: Responsive
SplitView: 'Split mode'
Tablet: Tablet
ViewDeviceWidth: 'Select a preview width'
Width: width
SimpleImageField: SimpleImageField:
NOUPLOAD: 'Ingen bild uppladdad' NOUPLOAD: 'Ingen bild uppladdad'
SiteTree: SiteTree:
@ -551,6 +578,8 @@ sv:
ATTACHFILE: 'Bifoga en fil' ATTACHFILE: 'Bifoga en fil'
ATTACHFILES: 'Bifoga fil(er)' ATTACHFILES: 'Bifoga fil(er)'
AttachFile: 'Bifoga fil(er)' AttachFile: 'Bifoga fil(er)'
CHOOSEANOTHERFILE: 'Choose another file'
CHOOSEANOTHERINFO: 'Replace this file with another one from the file store'
DELETE: 'Radera från filer' DELETE: 'Radera från filer'
DELETEINFO: 'Ta bort filen permanent från filarkivet' DELETEINFO: 'Ta bort filen permanent från filarkivet'
DOEDIT: Spara DOEDIT: Spara
@ -565,12 +594,15 @@ sv:
FROMFILES: 'Från filer' FROMFILES: 'Från filer'
HOTLINKINFO: 'Information: Denna bild kommer att bli länkad till. Var god kontrollera med ägaren till sajten att du har tillåtelse att länka till bilden.' HOTLINKINFO: 'Information: Denna bild kommer att bli länkad till. Var god kontrollera med ägaren till sajten att du har tillåtelse att länka till bilden.'
MAXNUMBEROFFILES: 'Max antal ({count}) filer överstiget.' MAXNUMBEROFFILES: 'Max antal ({count}) filer överstiget.'
MAXNUMBEROFFILESONE: 'Can only upload one file'
MAXNUMBEROFFILESSHORT: 'Kan bara ladda upp {count} files' MAXNUMBEROFFILESSHORT: 'Kan bara ladda upp {count} files'
OVERWRITEWARNING: 'File with the same name already exists'
REMOVE: 'Ta bort' REMOVE: 'Ta bort'
REMOVEERROR: 'Fel när filen skulle tas bort' REMOVEERROR: 'Fel när filen skulle tas bort'
REMOVEINFO: 'Ta bort filen härifrån, men radera den inte från filarkivet' REMOVEINFO: 'Ta bort filen härifrån, men radera den inte från filarkivet'
STARTALL: 'Starta alla' STARTALL: 'Starta alla'
STARTALLINFO: 'Starta all uppladdningar' STARTALLINFO: 'Starta all uppladdningar'
Saved: Sparad Saved: Sparad
UPLOADSINTO: 'saves into /{path}'
Versioned: Versioned:
has_many_Versions: Versioner has_many_Versions: Versioner

View File

@ -2,6 +2,7 @@ th:
AssetAdmin: AssetAdmin:
ALLOWEDEXTS: 'Allowed extensions' ALLOWEDEXTS: 'Allowed extensions'
NEWFOLDER: สร้างโฟลเดอร์ใหม่ NEWFOLDER: สร้างโฟลเดอร์ใหม่
SHOWALLOWEDEXTS: 'Show allowed extensions'
AssetTableField: AssetTableField:
CREATED: อัพโหลดครั้งแรก CREATED: อัพโหลดครั้งแรก
DIM: สัดส่วนกว้างยาว DIM: สัดส่วนกว้างยาว
@ -39,8 +40,8 @@ th:
COLOREDEXAMPLE: 'blue text' COLOREDEXAMPLE: 'blue text'
EMAILLINK: ลิงก์อีเมล EMAILLINK: ลิงก์อีเมล
EMAILLINKDESCRIPTION: สร้างลิงค์ให้กับที่อยู่อีเมล์ EMAILLINKDESCRIPTION: สร้างลิงค์ให้กับที่อยู่อีเมล์
IMAGE: รูปภาพ IMAGE: 'รูปภาพ'
IMAGEDESCRIPTION: แสดงรูปภาพในหน้าบทความของคุณ IMAGEDESCRIPTION: 'แสดงรูปภาพในหน้าบทความของคุณ'
ITALIC: ข้อความตัวเอียง ITALIC: ข้อความตัวเอียง
ITALICEXAMPLE: ตัวเอียง ITALICEXAMPLE: ตัวเอียง
LINK: ลิงก์เว็บไซต์ LINK: ลิงก์เว็บไซต์
@ -59,9 +60,9 @@ th:
ERRORNOTADMIN: ผู้ใช้งานรายดังกล่าวไม่ใช่ผู้ดูแลระบบ ERRORNOTADMIN: ผู้ใช้งานรายดังกล่าวไม่ใช่ผู้ดูแลระบบ
ERRORNOTREC: 'That username / password isn''t recognised' ERRORNOTREC: 'That username / password isn''t recognised'
Boolean: Boolean:
0: ไม่ตกลง
ANY: ใดๆ ANY: ใดๆ
1: ตกลง NOANSWER: 'False'
YESANSWER: 'True'
CMSLoadingScreen.ss: CMSLoadingScreen.ss:
LOADING: กำลังโหลด... LOADING: กำลังโหลด...
REQUIREJS: 'CMS ตัวนี้จำเป็นต้องมีการเปิดใช้งานจาวาสคริปต์' REQUIREJS: 'CMS ตัวนี้จำเป็นต้องมีการเปิดใช้งานจาวาสคริปต์'
@ -70,6 +71,8 @@ th:
ACCESSALLINTERFACES: 'เข้าถึงพื้นที่ในส่วนของ CMS ทั้งหมด' ACCESSALLINTERFACES: 'เข้าถึงพื้นที่ในส่วนของ CMS ทั้งหมด'
ACCESSALLINTERFACESHELP: 'Overrules more specific access settings.' ACCESSALLINTERFACESHELP: 'Overrules more specific access settings.'
SAVE: บันทึก SAVE: บันทึก
CMSPageHistoryController_versions.ss:
PREVIEW: 'Website preview'
CMSProfileController: CMSProfileController:
MENUTITLE: 'My Profile' MENUTITLE: 'My Profile'
ChangePasswordEmail.ss: ChangePasswordEmail.ss:
@ -79,8 +82,8 @@ th:
HELLO: สวัสดี HELLO: สวัสดี
PASSWORD: รหัสผ่าน PASSWORD: รหัสผ่าน
CheckboxField: CheckboxField:
- ไม่ตกลง NOANSWER: 'False'
- ตกลง YESANSWER: 'True'
ComplexTableField: ComplexTableField:
CLOSEPOPUP: ปิดหน้าต่างป๊อปอัพ CLOSEPOPUP: ปิดหน้าต่างป๊อปอัพ
SUCCESSADD2: 'เพิ่มแล้ว {name}' SUCCESSADD2: 'เพิ่มแล้ว {name}'
@ -109,20 +112,21 @@ th:
PLURALNAME: 'Data Objects' PLURALNAME: 'Data Objects'
SINGULARNAME: 'Data Object' SINGULARNAME: 'Data Object'
Date: Date:
DAY: วัน DAY: day
DAYS: วัน DAYS: days
HOUR: ชั่วโมง HOUR: hour
HOURS: ชั่วโมง HOURS: hours
MIN: นาที LessThanMinuteAgo: 'less than a minute'
MINS: นาที MIN: min
MONTH: เดือน MINS: mins
MONTHS: เดือน MONTH: month
SEC: วินาที MONTHS: months
SECS: วินาที SEC: sec
SECS: secs
TIMEDIFFAGO: '{difference} ago' TIMEDIFFAGO: '{difference} ago'
TIMEDIFFIN: 'in {difference}' TIMEDIFFIN: 'in {difference}'
YEAR: ปี YEAR: year
YEARS: ปี YEARS: years
DateField: DateField:
NOTSET: ไม่ต้องตั้งค่า NOTSET: ไม่ต้องตั้งค่า
TODAY: วันนี้ TODAY: วันนี้
@ -198,7 +202,8 @@ th:
TEXT2: ลิงค์รีเซ็ตรหัสผ่าน TEXT2: ลิงค์รีเซ็ตรหัสผ่าน
TEXT3: สำหรับ TEXT3: สำหรับ
Form: Form:
FIELDISREQUIRED: '%s เป็นข้อมูลที่จำเป็น' CSRF_FAILED_MESSAGE: 'There seems to have been a technical problem. Please click the back button, refresh your browser, and try again.'
FIELDISREQUIRED: '{name} is required'
SubmitBtnLabel: ไป SubmitBtnLabel: ไป
VALIDATIONCREDITNUMBER: 'Please ensure you have entered the {number} credit card number correctly' VALIDATIONCREDITNUMBER: 'Please ensure you have entered the {number} credit card number correctly'
VALIDATIONNOTUNIQUE: 'The value entered is not unique' VALIDATIONNOTUNIQUE: 'The value entered is not unique'
@ -208,6 +213,7 @@ th:
VALIDATOR: Validator VALIDATOR: Validator
VALIDCURRENCY: กรุณากรอกสกุลเงินที่ถูกต้อง VALIDCURRENCY: กรุณากรอกสกุลเงินที่ถูกต้อง
FormField: FormField:
Example: 'e.g. %s'
NONE: ไม่มี NONE: ไม่มี
GridAction: GridAction:
DELETE_DESCRIPTION: ลบ DELETE_DESCRIPTION: ลบ
@ -230,6 +236,7 @@ th:
ResetFilter: รีเซ็ต ResetFilter: รีเซ็ต
GridFieldAction_Delete: GridFieldAction_Delete:
DeletePermissionsFailure: ไม่ได้รับสิทธิ์ให้ลบได้ DeletePermissionsFailure: ไม่ได้รับสิทธิ์ให้ลบได้
EditPermissionsFailure: 'No permission to unlink record'
GridFieldDetailForm: GridFieldDetailForm:
CancelBtn: ยกเลิก CancelBtn: ยกเลิก
Create: สร้าง Create: สร้าง
@ -237,7 +244,9 @@ th:
DeletePermissionsFailure: 'No delete permissions' DeletePermissionsFailure: 'No delete permissions'
Deleted: 'ลบ %s %s แล้ว' Deleted: 'ลบ %s %s แล้ว'
Save: บันทึก Save: บันทึก
Saved: 'บันทึกแล้ว %s %s' Saved: 'Saved {name} {link}'
GridFieldEditButton.ss:
EDIT: Edit
GridFieldItemEditView.ss: null GridFieldItemEditView.ss: null
Group: Group:
AddRole: เพิ่มบทบาทให้กับกลุ่มนี้ AddRole: เพิ่มบทบาทให้กับกลุ่มนี้
@ -267,11 +276,12 @@ th:
ADDURL: 'เพิ่ม URL' ADDURL: 'เพิ่ม URL'
ADJUSTDETAILSDIMENSIONS: 'รายละเอียด &amp; ขนาดสัดส่วน' ADJUSTDETAILSDIMENSIONS: 'รายละเอียด &amp; ขนาดสัดส่วน'
ANCHORVALUE: Anchor ANCHORVALUE: Anchor
BUTTONADDURL: 'Add url'
BUTTONINSERT: แทรก BUTTONINSERT: แทรก
BUTTONINSERTLINK: แทรกลิงค์ BUTTONINSERTLINK: แทรกลิงค์
BUTTONREMOVELINK: ลบลิงค์ BUTTONREMOVELINK: ลบลิงค์
BUTTONUpdate: อัพเดท BUTTONUpdate: อัพเดท
CAPTIONTEXT: ข้อความคำอธิบายใต้ภาพ CAPTIONTEXT: 'ข้อความคำอธิบายใต้ภาพ'
CSSCLASS: 'การจัดวาง / รูปแบบ' CSSCLASS: 'การจัดวาง / รูปแบบ'
CSSCLASSCENTER: 'Centered, on its own.' CSSCLASSCENTER: 'Centered, on its own.'
CSSCLASSLEFT: 'On the left, with text wrapping around.' CSSCLASSLEFT: 'On the left, with text wrapping around.'
@ -312,7 +322,7 @@ th:
PLURALNAME: ไฟล์ PLURALNAME: ไฟล์
SINGULARNAME: ไฟล์ SINGULARNAME: ไฟล์
ImageField: ImageField:
IMAGE: รูปภาพ IMAGE: 'รูปภาพ'
Image_Cached: Image_Cached:
PLURALNAME: ไฟล์ PLURALNAME: ไฟล์
SINGULARNAME: ไฟล์ SINGULARNAME: ไฟล์
@ -331,7 +341,10 @@ th:
PreviewButton: ดูตัวอย่าง PreviewButton: ดูตัวอย่าง
REORGANISATIONSUCCESSFUL: 'Reorganised the site tree successfully.' REORGANISATIONSUCCESSFUL: 'Reorganised the site tree successfully.'
SAVEDUP: บันทึกแล้ว SAVEDUP: บันทึกแล้ว
VersionUnknown: ไม่ทราบ ShowAsList: 'show as list'
TooManyPages: 'Too many pages'
ValidationError: 'Validation error'
VersionUnknown: Unknown
LeftAndMain_Menu.ss: LeftAndMain_Menu.ss:
Hello: สวัสดีค่ะ Hello: สวัสดีค่ะ
LOGOUT: ออกจากระบบ LOGOUT: ออกจากระบบ
@ -361,7 +374,7 @@ th:
ERRORPASSWORDNOTMATCH: 'รหัสผ่านไม่ตรงกัน กรุณาลองใหม่อีกครั้ง' ERRORPASSWORDNOTMATCH: 'รหัสผ่านไม่ตรงกัน กรุณาลองใหม่อีกครั้ง'
ERRORWRONGCRED: 'That doesn''t seem to be the right e-mail address or password. Please try again.' ERRORWRONGCRED: 'That doesn''t seem to be the right e-mail address or password. Please try again.'
FIRSTNAME: ชื่อจริง FIRSTNAME: ชื่อจริง
INTERFACELANG: ภาษาสำหรับหน้าจอติดต่อผู้ใช้ INTERFACELANG: 'ภาษาสำหรับหน้าจอติดต่อผู้ใช้'
INVALIDNEWPASSWORD: 'We couldn''t accept that password: {password}' INVALIDNEWPASSWORD: 'We couldn''t accept that password: {password}'
LOGGEDINAS: 'You''re logged in as {name}.' LOGGEDINAS: 'You''re logged in as {name}.'
NEWPASSWORD: รหัสผ่านใหม่ NEWPASSWORD: รหัสผ่านใหม่
@ -379,7 +392,7 @@ th:
YOUROLDPASSWORD: รหัสผ่านเก่าของคุณ YOUROLDPASSWORD: รหัสผ่านเก่าของคุณ
belongs_many_many_Groups: กลุ่ม belongs_many_many_Groups: กลุ่ม
db_LastVisited: วันที่เยี่ยมชมล่าสุด db_LastVisited: วันที่เยี่ยมชมล่าสุด
db_Locale: ภาษาสำหรับส่วนอินเทอร์เฟซ db_Locale: 'ภาษาสำหรับส่วนอินเทอร์เฟซ'
db_LockedOutUntil: ออกจากระบบจนกว่า db_LockedOutUntil: ออกจากระบบจนกว่า
db_NumVisit: จำนวนการเข้าชม db_NumVisit: จำนวนการเข้าชม
db_Password: รหัสผ่าน db_Password: รหัสผ่าน
@ -407,6 +420,7 @@ th:
TWODIGITMONTH: 'Two-digit month (01=January, etc.)' TWODIGITMONTH: 'Two-digit month (01=January, etc.)'
TWODIGITSECOND: 'Two digits of second (00 through 59)' TWODIGITSECOND: 'Two digits of second (00 through 59)'
TWODIGITYEAR: 'Two-digit year' TWODIGITYEAR: 'Two-digit year'
Toggle: 'Show formatting help'
MemberImportForm: MemberImportForm:
Help1: '<p>Import users in <em>CSV format</em> (comma-separated values). <small><a href="#" class="toggle-advanced">Show advanced usage</a></small></p>' Help1: '<p>Import users in <em>CSV format</em> (comma-separated values). <small><a href="#" class="toggle-advanced">Show advanced usage</a></small></p>'
Help2: '<div class="advanced"> <h4>Advanced usage</h4> <ul> <li>Allowed columns: <em>%s</em></li> <li>Existing users are matched by their unique <em>Code</em> property, and updated with any new values from the imported file.</li> <li>Groups can be assigned by the <em>Groups</em> column. Groups are identified by their <em>Code</em> property, multiple groups can be separated by comma. Existing group memberships are not cleared.</li> </ul></div>' Help2: '<div class="advanced"> <h4>Advanced usage</h4> <ul> <li>Allowed columns: <em>%s</em></li> <li>Existing users are matched by their unique <em>Code</em> property, and updated with any new values from the imported file.</li> <li>Groups can be assigned by the <em>Groups</em> column. Groups are identified by their <em>Code</em> property, multiple groups can be separated by comma. Existing group memberships are not cleared.</li> </ul></div>'
@ -421,7 +435,7 @@ th:
ModelAdmin: ModelAdmin:
DELETE: ลบ DELETE: ลบ
DELETEDRECORDS: 'ลบแล้ว {count} รายการ' DELETEDRECORDS: 'ลบแล้ว {count} รายการ'
EMPTYBEFOREIMPORT: 'Clear Database before import' EMPTYBEFOREIMPORT: 'Replace data'
IMPORT: 'นำเข้าจากไฟล์ CSV' IMPORT: 'นำเข้าจากไฟล์ CSV'
IMPORTEDRECORDS: 'นำเข้าแล้ว {count} รายการ' IMPORTEDRECORDS: 'นำเข้าแล้ว {count} รายการ'
NOCSVFILE: 'กรุณาเปิดดูเพื่อเลือกไฟล์ CSV สำหรับนำเข้าข้อมูล' NOCSVFILE: 'กรุณาเปิดดูเพื่อเลือกไฟล์ CSV สำหรับนำเข้าข้อมูล'
@ -503,7 +517,7 @@ th:
IMPORTGROUPS: นำเข้ากลุ่ม IMPORTGROUPS: นำเข้ากลุ่ม
IMPORTUSERS: นำเข้าผู้ใช้งาน IMPORTUSERS: นำเข้าผู้ใช้งาน
MEMBERS: สมาชิก MEMBERS: สมาชิก
MENUTITLE: ความปลอดภัย MENUTITLE: 'ความปลอดภัย'
MemberListCaution: 'Caution: Removing members from this list will remove them from all groups and the database' MemberListCaution: 'Caution: Removing members from this list will remove them from all groups and the database'
NEWGROUP: สร้างกลุ่มใหม่ NEWGROUP: สร้างกลุ่มใหม่
PERMISSIONS: สิทธิ์อนุญาต PERMISSIONS: สิทธิ์อนุญาต
@ -515,9 +529,22 @@ th:
BtnImport: นำเข้า BtnImport: นำเข้า
FileFieldLabel: 'CSV File <small>(Allowed extensions: *.csv)</small>' FileFieldLabel: 'CSV File <small>(Allowed extensions: *.csv)</small>'
SilverStripeNavigator: SilverStripeNavigator:
Auto: Auto
ChangeViewMode: 'Change view mode'
Desktop: Desktop
DualWindowView: 'Dual Window'
Edit: แก้ไข Edit: แก้ไข
EditView: 'Edit mode'
Mobile: Mobile
PreviewState: 'Preview State'
PreviewView: 'Preview mode'
Responsive: Responsive
SplitView: 'Split mode'
Tablet: Tablet
ViewDeviceWidth: 'Select a preview width'
Width: width
SimpleImageField: SimpleImageField:
NOUPLOAD: ยังไม่มีรูปภาพที่ถูกอัพโหลด NOUPLOAD: 'ยังไม่มีรูปภาพที่ถูกอัพโหลด'
SiteTree: SiteTree:
TABMAIN: หลัก TABMAIN: หลัก
TableField: TableField:
@ -551,6 +578,8 @@ th:
ATTACHFILE: แนบไฟล์ ATTACHFILE: แนบไฟล์
ATTACHFILES: แนบไฟล์ ATTACHFILES: แนบไฟล์
AttachFile: แนบไฟล์ AttachFile: แนบไฟล์
CHOOSEANOTHERFILE: 'Choose another file'
CHOOSEANOTHERINFO: 'Replace this file with another one from the file store'
DELETE: ลบจากไฟล์ DELETE: ลบจากไฟล์
DELETEINFO: ลบไฟล์นี้ออกจากพื้นที่จัดเก็บไฟล์อย่างถาวร DELETEINFO: ลบไฟล์นี้ออกจากพื้นที่จัดเก็บไฟล์อย่างถาวร
DOEDIT: บันทึก DOEDIT: บันทึก
@ -565,12 +594,15 @@ th:
FROMFILES: จากไฟล์ FROMFILES: จากไฟล์
HOTLINKINFO: 'Info: This image will be hotlinked. Please ensure you have permissions from the original site creator to do so.' HOTLINKINFO: 'Info: This image will be hotlinked. Please ensure you have permissions from the original site creator to do so.'
MAXNUMBEROFFILES: 'Max number of {count} file(s) exceeded.' MAXNUMBEROFFILES: 'Max number of {count} file(s) exceeded.'
MAXNUMBEROFFILESONE: 'Can only upload one file'
MAXNUMBEROFFILESSHORT: 'Can only upload {count} files' MAXNUMBEROFFILESSHORT: 'Can only upload {count} files'
OVERWRITEWARNING: 'File with the same name already exists'
REMOVE: ลบออก REMOVE: ลบออก
REMOVEERROR: พบข้อผิดพลาดในระหว่างการลบไฟล์ REMOVEERROR: พบข้อผิดพลาดในระหว่างการลบไฟล์
REMOVEINFO: 'ลบไฟล์นี้จากที่นี่ แต่ไม่ต้องลบไฟล์ดังกล่าวจากพื้นที่จัดเก็บไฟล์' REMOVEINFO: 'ลบไฟล์นี้จากที่นี่ แต่ไม่ต้องลบไฟล์ดังกล่าวจากพื้นที่จัดเก็บไฟล์'
STARTALL: เริ่มทั้งหมด STARTALL: เริ่มทั้งหมด
STARTALLINFO: เริ่มการอัพโหลดทั้งหมด STARTALLINFO: เริ่มการอัพโหลดทั้งหมด
Saved: บันทึกแล้ว Saved: บันทึกแล้ว
UPLOADSINTO: 'saves into /{path}'
Versioned: Versioned:
has_many_Versions: เวอร์ชั่น has_many_Versions: เวอร์ชั่น

View File

@ -2,6 +2,7 @@ tr:
AssetAdmin: AssetAdmin:
ALLOWEDEXTS: 'Allowed extensions' ALLOWEDEXTS: 'Allowed extensions'
NEWFOLDER: YeniKlasör NEWFOLDER: YeniKlasör
SHOWALLOWEDEXTS: 'Show allowed extensions'
AssetTableField: AssetTableField:
CREATED: 'Yüklenme tarihi' CREATED: 'Yüklenme tarihi'
DIM: Boyutları DIM: Boyutları
@ -59,9 +60,9 @@ tr:
ERRORNOTADMIN: 'O kullanıcı, yönetici değildir' ERRORNOTADMIN: 'O kullanıcı, yönetici değildir'
ERRORNOTREC: 'Kullanıcı adı / şifre hatalı' ERRORNOTREC: 'Kullanıcı adı / şifre hatalı'
Boolean: Boolean:
0: Yanlış
ANY: Herhangi ANY: Herhangi
1: Doğru NOANSWER: 'False'
YESANSWER: 'True'
CMSLoadingScreen.ss: CMSLoadingScreen.ss:
LOADING: Loading... LOADING: Loading...
REQUIREJS: 'The CMS requires that you have JavaScript enabled.' REQUIREJS: 'The CMS requires that you have JavaScript enabled.'
@ -70,6 +71,8 @@ tr:
ACCESSALLINTERFACES: 'Tüm İYS arayüzlerine erişim' ACCESSALLINTERFACES: 'Tüm İYS arayüzlerine erişim'
ACCESSALLINTERFACESHELP: 'Overrules more specific access settings.' ACCESSALLINTERFACESHELP: 'Overrules more specific access settings.'
SAVE: Kaydet SAVE: Kaydet
CMSPageHistoryController_versions.ss:
PREVIEW: 'Website preview'
CMSProfileController: CMSProfileController:
MENUTITLE: 'My Profile' MENUTITLE: 'My Profile'
ChangePasswordEmail.ss: ChangePasswordEmail.ss:
@ -79,8 +82,8 @@ tr:
HELLO: Merhaba HELLO: Merhaba
PASSWORD: Parola PASSWORD: Parola
CheckboxField: CheckboxField:
- Yanlış NOANSWER: 'False'
- Doğru YESANSWER: 'True'
ComplexTableField: ComplexTableField:
CLOSEPOPUP: 'Açılır Pancereyi Kapat' CLOSEPOPUP: 'Açılır Pancereyi Kapat'
SUCCESSADD2: 'Added {name}' SUCCESSADD2: 'Added {name}'
@ -109,20 +112,21 @@ tr:
PLURALNAME: 'Data Nesneleri' PLURALNAME: 'Data Nesneleri'
SINGULARNAME: 'Data Nesnesi' SINGULARNAME: 'Data Nesnesi'
Date: Date:
DAY: gün DAY: day
DAYS: gün DAYS: days
HOUR: saat HOUR: hour
HOURS: saat HOURS: hours
MIN: dakika LessThanMinuteAgo: 'less than a minute'
MINS: dakika MIN: min
MONTH: ay MINS: mins
MONTHS: ay MONTH: month
SEC: saniye MONTHS: months
SECS: saniye SEC: sec
SECS: secs
TIMEDIFFAGO: '{difference} ago' TIMEDIFFAGO: '{difference} ago'
TIMEDIFFIN: 'in {difference}' TIMEDIFFIN: 'in {difference}'
YEAR: yıl YEAR: year
YEARS: yıl YEARS: years
DateField: DateField:
NOTSET: ayarlanmamış NOTSET: ayarlanmamış
TODAY: bugün TODAY: bugün
@ -198,7 +202,8 @@ tr:
TEXT2: 'şifre sıfırlama linki' TEXT2: 'şifre sıfırlama linki'
TEXT3: için TEXT3: için
Form: Form:
FIELDISREQUIRED: '%s alanının girilmesi zorunludur' CSRF_FAILED_MESSAGE: 'There seems to have been a technical problem. Please click the back button, refresh your browser, and try again.'
FIELDISREQUIRED: '{name} is required'
SubmitBtnLabel: Go SubmitBtnLabel: Go
VALIDATIONCREDITNUMBER: 'Please ensure you have entered the {number} credit card number correctly' VALIDATIONCREDITNUMBER: 'Please ensure you have entered the {number} credit card number correctly'
VALIDATIONNOTUNIQUE: 'Girilen değer benzersiz olmalıdır' VALIDATIONNOTUNIQUE: 'Girilen değer benzersiz olmalıdır'
@ -208,6 +213,7 @@ tr:
VALIDATOR: 'Geçerlilik tespiti' VALIDATOR: 'Geçerlilik tespiti'
VALIDCURRENCY: 'Please enter a valid currency' VALIDCURRENCY: 'Please enter a valid currency'
FormField: FormField:
Example: 'e.g. %s'
NONE: hiç NONE: hiç
GridAction: GridAction:
DELETE_DESCRIPTION: Delete DELETE_DESCRIPTION: Delete
@ -230,6 +236,7 @@ tr:
ResetFilter: Reset ResetFilter: Reset
GridFieldAction_Delete: GridFieldAction_Delete:
DeletePermissionsFailure: 'No delete permissions' DeletePermissionsFailure: 'No delete permissions'
EditPermissionsFailure: 'No permission to unlink record'
GridFieldDetailForm: GridFieldDetailForm:
CancelBtn: Cancel CancelBtn: Cancel
Create: Create Create: Create
@ -237,7 +244,9 @@ tr:
DeletePermissionsFailure: 'No delete permissions' DeletePermissionsFailure: 'No delete permissions'
Deleted: 'Deleted %s %s' Deleted: 'Deleted %s %s'
Save: Save Save: Save
Saved: 'Saved %s %s' Saved: 'Saved {name} {link}'
GridFieldEditButton.ss:
EDIT: Edit
GridFieldItemEditView.ss: null GridFieldItemEditView.ss: null
Group: Group:
AddRole: 'Bu gruba rol ekleyin' AddRole: 'Bu gruba rol ekleyin'
@ -267,6 +276,7 @@ tr:
ADDURL: 'Add URL' ADDURL: 'Add URL'
ADJUSTDETAILSDIMENSIONS: 'Details &amp; dimensions' ADJUSTDETAILSDIMENSIONS: 'Details &amp; dimensions'
ANCHORVALUE: Anchor(çapa) ANCHORVALUE: Anchor(çapa)
BUTTONADDURL: 'Add url'
BUTTONINSERT: Insert BUTTONINSERT: Insert
BUTTONINSERTLINK: 'Bağlantı ekle' BUTTONINSERTLINK: 'Bağlantı ekle'
BUTTONREMOVELINK: 'Bağlantıyı sil' BUTTONREMOVELINK: 'Bağlantıyı sil'
@ -331,7 +341,10 @@ tr:
PreviewButton: Önizleme PreviewButton: Önizleme
REORGANISATIONSUCCESSFUL: 'Reorganised the site tree successfully.' REORGANISATIONSUCCESSFUL: 'Reorganised the site tree successfully.'
SAVEDUP: Kaydedilmiş. SAVEDUP: Kaydedilmiş.
VersionUnknown: unknown ShowAsList: 'show as list'
TooManyPages: 'Too many pages'
ValidationError: 'Validation error'
VersionUnknown: Unknown
LeftAndMain_Menu.ss: LeftAndMain_Menu.ss:
Hello: Hi Hello: Hi
LOGOUT: 'Log out' LOGOUT: 'Log out'
@ -407,6 +420,7 @@ tr:
TWODIGITMONTH: 'Two-digit month (01=January, etc.)' TWODIGITMONTH: 'Two-digit month (01=January, etc.)'
TWODIGITSECOND: 'Two digits of second (00 through 59)' TWODIGITSECOND: 'Two digits of second (00 through 59)'
TWODIGITYEAR: 'Two-digit year' TWODIGITYEAR: 'Two-digit year'
Toggle: 'Show formatting help'
MemberImportForm: MemberImportForm:
Help1: '<p>Import users in <em>CSV format</em> (comma-separated values). <small><a href="#" class="toggle-advanced">Show advanced usage</a></small></p>' Help1: '<p>Import users in <em>CSV format</em> (comma-separated values). <small><a href="#" class="toggle-advanced">Show advanced usage</a></small></p>'
Help2: '<div class="advanced"> <h4>Advanced usage</h4> <ul> <li>Allowed columns: <em>%s</em></li> <li>Existing users are matched by their unique <em>Code</em> property, and updated with any new values from the imported file.</li> <li>Groups can be assigned by the <em>Groups</em> column. Groups are identified by their <em>Code</em> property, multiple groups can be separated by comma. Existing group memberships are not cleared.</li> </ul></div>' Help2: '<div class="advanced"> <h4>Advanced usage</h4> <ul> <li>Allowed columns: <em>%s</em></li> <li>Existing users are matched by their unique <em>Code</em> property, and updated with any new values from the imported file.</li> <li>Groups can be assigned by the <em>Groups</em> column. Groups are identified by their <em>Code</em> property, multiple groups can be separated by comma. Existing group memberships are not cleared.</li> </ul></div>'
@ -421,7 +435,7 @@ tr:
ModelAdmin: ModelAdmin:
DELETE: Sil DELETE: Sil
DELETEDRECORDS: 'Deleted {count} records.' DELETEDRECORDS: 'Deleted {count} records.'
EMPTYBEFOREIMPORT: 'Clear Database before import' EMPTYBEFOREIMPORT: 'Replace data'
IMPORT: 'CSV''den içer aktar' IMPORT: 'CSV''den içer aktar'
IMPORTEDRECORDS: 'Imported {count} records.' IMPORTEDRECORDS: 'Imported {count} records.'
NOCSVFILE: 'CSV dosyası ekleme' NOCSVFILE: 'CSV dosyası ekleme'
@ -515,7 +529,20 @@ tr:
BtnImport: Aktar BtnImport: Aktar
FileFieldLabel: 'CSV File <small>(Allowed extensions: *.csv)</small>' FileFieldLabel: 'CSV File <small>(Allowed extensions: *.csv)</small>'
SilverStripeNavigator: SilverStripeNavigator:
Auto: Auto
ChangeViewMode: 'Change view mode'
Desktop: Desktop
DualWindowView: 'Dual Window'
Edit: Edit Edit: Edit
EditView: 'Edit mode'
Mobile: Mobile
PreviewState: 'Preview State'
PreviewView: 'Preview mode'
Responsive: Responsive
SplitView: 'Split mode'
Tablet: Tablet
ViewDeviceWidth: 'Select a preview width'
Width: width
SimpleImageField: SimpleImageField:
NOUPLOAD: 'Henüz Resim Yüklenmemiş' NOUPLOAD: 'Henüz Resim Yüklenmemiş'
SiteTree: SiteTree:
@ -551,6 +578,8 @@ tr:
ATTACHFILE: 'Dosya ekle' ATTACHFILE: 'Dosya ekle'
ATTACHFILES: 'Dosya ekle' ATTACHFILES: 'Dosya ekle'
AttachFile: 'Dosyalar ekle' AttachFile: 'Dosyalar ekle'
CHOOSEANOTHERFILE: 'Choose another file'
CHOOSEANOTHERINFO: 'Replace this file with another one from the file store'
DELETE: 'Delete from files' DELETE: 'Delete from files'
DELETEINFO: 'Permanently delete this file from the file store' DELETEINFO: 'Permanently delete this file from the file store'
DOEDIT: Kaydet DOEDIT: Kaydet
@ -565,12 +594,15 @@ tr:
FROMFILES: 'Kimden dosyaları' FROMFILES: 'Kimden dosyaları'
HOTLINKINFO: 'Info: This image will be hotlinked. Please ensure you have permissions from the original site creator to do so.' HOTLINKINFO: 'Info: This image will be hotlinked. Please ensure you have permissions from the original site creator to do so.'
MAXNUMBEROFFILES: 'Max number of {count} file(s) exceeded.' MAXNUMBEROFFILES: 'Max number of {count} file(s) exceeded.'
MAXNUMBEROFFILESONE: 'Can only upload one file'
MAXNUMBEROFFILESSHORT: 'Can only upload {count} files' MAXNUMBEROFFILESSHORT: 'Can only upload {count} files'
OVERWRITEWARNING: 'File with the same name already exists'
REMOVE: Remove REMOVE: Remove
REMOVEERROR: 'Error removing file' REMOVEERROR: 'Error removing file'
REMOVEINFO: 'Remove this file from here, but do not delete it from the file store' REMOVEINFO: 'Remove this file from here, but do not delete it from the file store'
STARTALL: 'Tümünü başlat' STARTALL: 'Tümünü başlat'
STARTALLINFO: 'Start all uploads' STARTALLINFO: 'Start all uploads'
Saved: Kaydedilmiş Saved: Kaydedilmiş
UPLOADSINTO: 'saves into /{path}'
Versioned: Versioned:
has_many_Versions: Versiyonlar has_many_Versions: Versiyonlar

View File

@ -2,6 +2,7 @@ uk:
AssetAdmin: AssetAdmin:
ALLOWEDEXTS: 'Allowed extensions' ALLOWEDEXTS: 'Allowed extensions'
NEWFOLDER: 'Нова Тека' NEWFOLDER: 'Нова Тека'
SHOWALLOWEDEXTS: 'Show allowed extensions'
AssetTableField: AssetTableField:
CREATED: 'Вперше завантажено' CREATED: 'Вперше завантажено'
DIM: Виміри DIM: Виміри
@ -9,7 +10,7 @@ uk:
FOLDER: Folder FOLDER: Folder
LASTEDIT: 'Востаннє змінено' LASTEDIT: 'Востаннє змінено'
OWNER: Власник OWNER: Власник
SIZE: Розмір SIZE: 'Розмір'
TITLE: Назва TITLE: Назва
TYPE: Тип TYPE: Тип
URL: URL URL: URL
@ -59,9 +60,9 @@ uk:
ERRORNOTADMIN: 'Цей користувач не є адміністратором.' ERRORNOTADMIN: 'Цей користувач не є адміністратором.'
ERRORNOTREC: 'Таке ім''я користувача / пароль не існує' ERRORNOTREC: 'Таке ім''я користувача / пароль не існує'
Boolean: Boolean:
0: 'False'
ANY: Any ANY: Any
1: 'True' NOANSWER: 'False'
YESANSWER: 'True'
CMSLoadingScreen.ss: CMSLoadingScreen.ss:
LOADING: Loading... LOADING: Loading...
REQUIREJS: 'The CMS requires that you have JavaScript enabled.' REQUIREJS: 'The CMS requires that you have JavaScript enabled.'
@ -70,6 +71,8 @@ uk:
ACCESSALLINTERFACES: 'Access to all CMS sections' ACCESSALLINTERFACES: 'Access to all CMS sections'
ACCESSALLINTERFACESHELP: 'Overrules more specific access settings.' ACCESSALLINTERFACESHELP: 'Overrules more specific access settings.'
SAVE: Зберегти SAVE: Зберегти
CMSPageHistoryController_versions.ss:
PREVIEW: 'Website preview'
CMSProfileController: CMSProfileController:
MENUTITLE: 'My Profile' MENUTITLE: 'My Profile'
ChangePasswordEmail.ss: ChangePasswordEmail.ss:
@ -79,8 +82,8 @@ uk:
HELLO: Привіт HELLO: Привіт
PASSWORD: Пароль PASSWORD: Пароль
CheckboxField: CheckboxField:
- 'False' NOANSWER: 'False'
- 'True' YESANSWER: 'True'
ComplexTableField: ComplexTableField:
CLOSEPOPUP: 'Закрити Popup' CLOSEPOPUP: 'Закрити Popup'
SUCCESSADD2: 'Added {name}' SUCCESSADD2: 'Added {name}'
@ -109,20 +112,21 @@ uk:
PLURALNAME: 'Об’єкти даних' PLURALNAME: 'Об’єкти даних'
SINGULARNAME: 'Об’єкт даних' SINGULARNAME: 'Об’єкт даних'
Date: Date:
DAY: день DAY: day
DAYS: дні DAYS: days
HOUR: година HOUR: hour
HOURS: годин HOURS: hours
MIN: хв LessThanMinuteAgo: 'less than a minute'
MINS: хв MIN: min
MONTH: місяць MINS: mins
MONTHS: місяці MONTH: month
SEC: сек MONTHS: months
SECS: сек SEC: sec
SECS: secs
TIMEDIFFAGO: '{difference} ago' TIMEDIFFAGO: '{difference} ago'
TIMEDIFFIN: 'in {difference}' TIMEDIFFIN: 'in {difference}'
YEAR: рік YEAR: year
YEARS: роки YEARS: years
DateField: DateField:
NOTSET: 'не встановлено' NOTSET: 'не встановлено'
TODAY: сьогодні TODAY: сьогодні
@ -198,7 +202,8 @@ uk:
TEXT2: 'password reset link' TEXT2: 'password reset link'
TEXT3: for TEXT3: for
Form: Form:
FIELDISREQUIRED: '%s є необхідним' CSRF_FAILED_MESSAGE: 'There seems to have been a technical problem. Please click the back button, refresh your browser, and try again.'
FIELDISREQUIRED: '{name} is required'
SubmitBtnLabel: Go SubmitBtnLabel: Go
VALIDATIONCREDITNUMBER: 'Please ensure you have entered the {number} credit card number correctly' VALIDATIONCREDITNUMBER: 'Please ensure you have entered the {number} credit card number correctly'
VALIDATIONNOTUNIQUE: 'Введене значання не унікальне' VALIDATIONNOTUNIQUE: 'Введене значання не унікальне'
@ -208,6 +213,7 @@ uk:
VALIDATOR: Validator VALIDATOR: Validator
VALIDCURRENCY: 'Please enter a valid currency' VALIDCURRENCY: 'Please enter a valid currency'
FormField: FormField:
Example: 'e.g. %s'
NONE: none NONE: none
GridAction: GridAction:
DELETE_DESCRIPTION: Delete DELETE_DESCRIPTION: Delete
@ -230,6 +236,7 @@ uk:
ResetFilter: Reset ResetFilter: Reset
GridFieldAction_Delete: GridFieldAction_Delete:
DeletePermissionsFailure: 'No delete permissions' DeletePermissionsFailure: 'No delete permissions'
EditPermissionsFailure: 'No permission to unlink record'
GridFieldDetailForm: GridFieldDetailForm:
CancelBtn: Cancel CancelBtn: Cancel
Create: Create Create: Create
@ -237,7 +244,9 @@ uk:
DeletePermissionsFailure: 'No delete permissions' DeletePermissionsFailure: 'No delete permissions'
Deleted: 'Deleted %s %s' Deleted: 'Deleted %s %s'
Save: Save Save: Save
Saved: 'Saved %s %s' Saved: 'Saved {name} {link}'
GridFieldEditButton.ss:
EDIT: Edit
GridFieldItemEditView.ss: null GridFieldItemEditView.ss: null
Group: Group:
AddRole: 'Додати роль до цієї групи' AddRole: 'Додати роль до цієї групи'
@ -267,6 +276,7 @@ uk:
ADDURL: 'Add URL' ADDURL: 'Add URL'
ADJUSTDETAILSDIMENSIONS: 'Details &amp; dimensions' ADJUSTDETAILSDIMENSIONS: 'Details &amp; dimensions'
ANCHORVALUE: Якір ANCHORVALUE: Якір
BUTTONADDURL: 'Add url'
BUTTONINSERT: Insert BUTTONINSERT: Insert
BUTTONINSERTLINK: 'Вставити посилання' BUTTONINSERTLINK: 'Вставити посилання'
BUTTONREMOVELINK: 'Вмдалити посилання' BUTTONREMOVELINK: 'Вмдалити посилання'
@ -288,7 +298,7 @@ uk:
IMAGEALT: 'Alternative text (alt)' IMAGEALT: 'Alternative text (alt)'
IMAGEALTTEXT: 'Альтернативний текст (alt) - відображається якщо зображення не відображається' IMAGEALTTEXT: 'Альтернативний текст (alt) - відображається якщо зображення не відображається'
IMAGEALTTEXTDESC: 'Shown to screen readers or if image can not be displayed' IMAGEALTTEXTDESC: 'Shown to screen readers or if image can not be displayed'
IMAGEDIMENSIONS: Розміри IMAGEDIMENSIONS: 'Розміри'
IMAGEHEIGHTPX: Висота IMAGEHEIGHTPX: Висота
IMAGETITLE: 'Текст заголовку (tooltip) - для додаткової інформації про зображення' IMAGETITLE: 'Текст заголовку (tooltip) - для додаткової інформації про зображення'
IMAGETITLETEXT: 'Title text (tooltip)' IMAGETITLETEXT: 'Title text (tooltip)'
@ -331,7 +341,10 @@ uk:
PreviewButton: Preview PreviewButton: Preview
REORGANISATIONSUCCESSFUL: 'Reorganised the site tree successfully.' REORGANISATIONSUCCESSFUL: 'Reorganised the site tree successfully.'
SAVEDUP: Saved. SAVEDUP: Saved.
VersionUnknown: unknown ShowAsList: 'show as list'
TooManyPages: 'Too many pages'
ValidationError: 'Validation error'
VersionUnknown: Unknown
LeftAndMain_Menu.ss: LeftAndMain_Menu.ss:
Hello: Hi Hello: Hi
LOGOUT: 'Log out' LOGOUT: 'Log out'
@ -407,6 +420,7 @@ uk:
TWODIGITMONTH: 'Two-digit month (01=January, etc.)' TWODIGITMONTH: 'Two-digit month (01=January, etc.)'
TWODIGITSECOND: 'Two digits of second (00 through 59)' TWODIGITSECOND: 'Two digits of second (00 through 59)'
TWODIGITYEAR: 'Two-digit year' TWODIGITYEAR: 'Two-digit year'
Toggle: 'Show formatting help'
MemberImportForm: MemberImportForm:
Help1: '<p>Import users in <em>CSV format</em> (comma-separated values). <small><a href="#" class="toggle-advanced">Show advanced usage</a></small></p>' Help1: '<p>Import users in <em>CSV format</em> (comma-separated values). <small><a href="#" class="toggle-advanced">Show advanced usage</a></small></p>'
Help2: '<div class="advanced"> <h4>Advanced usage</h4> <ul> <li>Allowed columns: <em>%s</em></li> <li>Existing users are matched by their unique <em>Code</em> property, and updated with any new values from the imported file.</li> <li>Groups can be assigned by the <em>Groups</em> column. Groups are identified by their <em>Code</em> property, multiple groups can be separated by comma. Existing group memberships are not cleared.</li> </ul></div>' Help2: '<div class="advanced"> <h4>Advanced usage</h4> <ul> <li>Allowed columns: <em>%s</em></li> <li>Existing users are matched by their unique <em>Code</em> property, and updated with any new values from the imported file.</li> <li>Groups can be assigned by the <em>Groups</em> column. Groups are identified by their <em>Code</em> property, multiple groups can be separated by comma. Existing group memberships are not cleared.</li> </ul></div>'
@ -421,7 +435,7 @@ uk:
ModelAdmin: ModelAdmin:
DELETE: Delete DELETE: Delete
DELETEDRECORDS: 'Deleted {count} records.' DELETEDRECORDS: 'Deleted {count} records.'
EMPTYBEFOREIMPORT: 'Clear Database before import' EMPTYBEFOREIMPORT: 'Replace data'
IMPORT: 'Імпортувати з CSV' IMPORT: 'Імпортувати з CSV'
IMPORTEDRECORDS: 'Imported {count} records.' IMPORTEDRECORDS: 'Imported {count} records.'
NOCSVFILE: 'Please browse for a CSV file to import' NOCSVFILE: 'Please browse for a CSV file to import'
@ -507,15 +521,28 @@ uk:
MemberListCaution: 'Caution: Removing members from this list will remove them from all groups and the database' MemberListCaution: 'Caution: Removing members from this list will remove them from all groups and the database'
NEWGROUP: 'Нова Група' NEWGROUP: 'Нова Група'
PERMISSIONS: Дозволи PERMISSIONS: Дозволи
ROLES: Ролі ROLES: 'Ролі'
ROLESDESCRIPTION: 'Roles are predefined sets of permissions, and can be assigned to groups.<br />They are inherited from parent groups if required.' ROLESDESCRIPTION: 'Roles are predefined sets of permissions, and can be assigned to groups.<br />They are inherited from parent groups if required.'
TABROLES: Ролі TABROLES: 'Ролі'
Users: Користувачі Users: Користувачі
SecurityAdmin_MemberImportForm: SecurityAdmin_MemberImportForm:
BtnImport: 'Import from CSV' BtnImport: 'Import from CSV'
FileFieldLabel: 'CSV File <small>(Allowed extensions: *.csv)</small>' FileFieldLabel: 'CSV File <small>(Allowed extensions: *.csv)</small>'
SilverStripeNavigator: SilverStripeNavigator:
Auto: Auto
ChangeViewMode: 'Change view mode'
Desktop: Desktop
DualWindowView: 'Dual Window'
Edit: Edit Edit: Edit
EditView: 'Edit mode'
Mobile: Mobile
PreviewState: 'Preview State'
PreviewView: 'Preview mode'
Responsive: Responsive
SplitView: 'Split mode'
Tablet: Tablet
ViewDeviceWidth: 'Select a preview width'
Width: width
SimpleImageField: SimpleImageField:
NOUPLOAD: 'Не завантажено жодного зображення' NOUPLOAD: 'Не завантажено жодного зображення'
SiteTree: SiteTree:
@ -551,6 +578,8 @@ uk:
ATTACHFILE: 'Прикріпити файл' ATTACHFILE: 'Прикріпити файл'
ATTACHFILES: 'Прикріпити файли' ATTACHFILES: 'Прикріпити файли'
AttachFile: 'Прикріпити файл(и)' AttachFile: 'Прикріпити файл(и)'
CHOOSEANOTHERFILE: 'Choose another file'
CHOOSEANOTHERINFO: 'Replace this file with another one from the file store'
DELETE: 'Delete from files' DELETE: 'Delete from files'
DELETEINFO: 'Permanently delete this file from the file store' DELETEINFO: 'Permanently delete this file from the file store'
DOEDIT: Зберегти DOEDIT: Зберегти
@ -565,12 +594,15 @@ uk:
FROMFILES: 'З файлів' FROMFILES: 'З файлів'
HOTLINKINFO: 'Info: This image will be hotlinked. Please ensure you have permissions from the original site creator to do so.' HOTLINKINFO: 'Info: This image will be hotlinked. Please ensure you have permissions from the original site creator to do so.'
MAXNUMBEROFFILES: 'Max number of {count} file(s) exceeded.' MAXNUMBEROFFILES: 'Max number of {count} file(s) exceeded.'
MAXNUMBEROFFILESONE: 'Can only upload one file'
MAXNUMBEROFFILESSHORT: 'Can only upload {count} files' MAXNUMBEROFFILESSHORT: 'Can only upload {count} files'
OVERWRITEWARNING: 'File with the same name already exists'
REMOVE: Remove REMOVE: Remove
REMOVEERROR: 'Помилка видалення файла' REMOVEERROR: 'Помилка видалення файла'
REMOVEINFO: 'Remove this file from here, but do not delete it from the file store' REMOVEINFO: 'Remove this file from here, but do not delete it from the file store'
STARTALL: 'Start all' STARTALL: 'Start all'
STARTALLINFO: 'Start all uploads' STARTALLINFO: 'Start all uploads'
Saved: Saved Saved: Saved
UPLOADSINTO: 'saves into /{path}'
Versioned: Versioned:
has_many_Versions: Версіїї has_many_Versions: Версіїї

View File

@ -2,6 +2,7 @@ uz:
AssetAdmin: AssetAdmin:
ALLOWEDEXTS: 'Allowed extensions' ALLOWEDEXTS: 'Allowed extensions'
NEWFOLDER: NewFolder NEWFOLDER: NewFolder
SHOWALLOWEDEXTS: 'Show allowed extensions'
AssetTableField: AssetTableField:
CREATED: 'First uploaded' CREATED: 'First uploaded'
DIM: Dimensions DIM: Dimensions
@ -59,9 +60,9 @@ uz:
ERRORNOTADMIN: 'That user is not an administrator.' ERRORNOTADMIN: 'That user is not an administrator.'
ERRORNOTREC: 'That username / password isn''t recognised' ERRORNOTREC: 'That username / password isn''t recognised'
Boolean: Boolean:
0: 'False'
ANY: Any ANY: Any
1: 'True' NOANSWER: 'False'
YESANSWER: 'True'
CMSLoadingScreen.ss: CMSLoadingScreen.ss:
LOADING: Loading... LOADING: Loading...
REQUIREJS: 'The CMS requires that you have JavaScript enabled.' REQUIREJS: 'The CMS requires that you have JavaScript enabled.'
@ -70,6 +71,8 @@ uz:
ACCESSALLINTERFACES: 'Access to all CMS sections' ACCESSALLINTERFACES: 'Access to all CMS sections'
ACCESSALLINTERFACESHELP: 'Overrules more specific access settings.' ACCESSALLINTERFACESHELP: 'Overrules more specific access settings.'
SAVE: Saqlash SAVE: Saqlash
CMSPageHistoryController_versions.ss:
PREVIEW: 'Website preview'
CMSProfileController: CMSProfileController:
MENUTITLE: 'My Profile' MENUTITLE: 'My Profile'
ChangePasswordEmail.ss: ChangePasswordEmail.ss:
@ -79,8 +82,8 @@ uz:
HELLO: Hi HELLO: Hi
PASSWORD: Password PASSWORD: Password
CheckboxField: CheckboxField:
- 'False' NOANSWER: 'False'
- 'True' YESANSWER: 'True'
ComplexTableField: ComplexTableField:
CLOSEPOPUP: 'Close Popup' CLOSEPOPUP: 'Close Popup'
SUCCESSADD2: 'Added {name}' SUCCESSADD2: 'Added {name}'
@ -109,20 +112,21 @@ uz:
PLURALNAME: 'Data Objects' PLURALNAME: 'Data Objects'
SINGULARNAME: 'Data Object' SINGULARNAME: 'Data Object'
Date: Date:
DAY: ' day' DAY: day
DAYS: ' days' DAYS: days
HOUR: ' hour' HOUR: hour
HOURS: ' hours' HOURS: hours
MIN: ' min' LessThanMinuteAgo: 'less than a minute'
MINS: ' mins' MIN: min
MONTH: ' month' MINS: mins
MONTHS: ' months' MONTH: month
SEC: ' sec' MONTHS: months
SECS: ' secs' SEC: sec
SECS: secs
TIMEDIFFAGO: '{difference} ago' TIMEDIFFAGO: '{difference} ago'
TIMEDIFFIN: 'in {difference}' TIMEDIFFIN: 'in {difference}'
YEAR: ' year' YEAR: year
YEARS: ' years' YEARS: years
DateField: DateField:
NOTSET: 'not set' NOTSET: 'not set'
TODAY: today TODAY: today
@ -198,7 +202,8 @@ uz:
TEXT2: 'password reset link' TEXT2: 'password reset link'
TEXT3: for TEXT3: for
Form: Form:
FIELDISREQUIRED: '%s is required' CSRF_FAILED_MESSAGE: 'There seems to have been a technical problem. Please click the back button, refresh your browser, and try again.'
FIELDISREQUIRED: '{name} is required'
SubmitBtnLabel: Go SubmitBtnLabel: Go
VALIDATIONCREDITNUMBER: 'Please ensure you have entered the {number} credit card number correctly' VALIDATIONCREDITNUMBER: 'Please ensure you have entered the {number} credit card number correctly'
VALIDATIONNOTUNIQUE: 'The value entered is not unique' VALIDATIONNOTUNIQUE: 'The value entered is not unique'
@ -208,6 +213,7 @@ uz:
VALIDATOR: Validator VALIDATOR: Validator
VALIDCURRENCY: 'Please enter a valid currency' VALIDCURRENCY: 'Please enter a valid currency'
FormField: FormField:
Example: 'e.g. %s'
NONE: none NONE: none
GridAction: GridAction:
DELETE_DESCRIPTION: Delete DELETE_DESCRIPTION: Delete
@ -230,6 +236,7 @@ uz:
ResetFilter: Reset ResetFilter: Reset
GridFieldAction_Delete: GridFieldAction_Delete:
DeletePermissionsFailure: 'No delete permissions' DeletePermissionsFailure: 'No delete permissions'
EditPermissionsFailure: 'No permission to unlink record'
GridFieldDetailForm: GridFieldDetailForm:
CancelBtn: Cancel CancelBtn: Cancel
Create: Create Create: Create
@ -237,7 +244,9 @@ uz:
DeletePermissionsFailure: 'No delete permissions' DeletePermissionsFailure: 'No delete permissions'
Deleted: 'Deleted %s %s' Deleted: 'Deleted %s %s'
Save: Save Save: Save
Saved: 'Saved %s %s' Saved: 'Saved {name} {link}'
GridFieldEditButton.ss:
EDIT: Edit
GridFieldItemEditView.ss: null GridFieldItemEditView.ss: null
Group: Group:
AddRole: 'Add a role for this group' AddRole: 'Add a role for this group'
@ -267,6 +276,7 @@ uz:
ADDURL: 'Add URL' ADDURL: 'Add URL'
ADJUSTDETAILSDIMENSIONS: 'Details &amp; dimensions' ADJUSTDETAILSDIMENSIONS: 'Details &amp; dimensions'
ANCHORVALUE: Anchor ANCHORVALUE: Anchor
BUTTONADDURL: 'Add url'
BUTTONINSERT: Insert BUTTONINSERT: Insert
BUTTONINSERTLINK: 'Insert link' BUTTONINSERTLINK: 'Insert link'
BUTTONREMOVELINK: 'Remove link' BUTTONREMOVELINK: 'Remove link'
@ -331,7 +341,10 @@ uz:
PreviewButton: Preview PreviewButton: Preview
REORGANISATIONSUCCESSFUL: 'Reorganised the site tree successfully.' REORGANISATIONSUCCESSFUL: 'Reorganised the site tree successfully.'
SAVEDUP: Saved. SAVEDUP: Saved.
VersionUnknown: unknown ShowAsList: 'show as list'
TooManyPages: 'Too many pages'
ValidationError: 'Validation error'
VersionUnknown: Unknown
LeftAndMain_Menu.ss: LeftAndMain_Menu.ss:
Hello: Hi Hello: Hi
LOGOUT: 'Log out' LOGOUT: 'Log out'
@ -407,6 +420,7 @@ uz:
TWODIGITMONTH: 'Two-digit month (01=January, etc.)' TWODIGITMONTH: 'Two-digit month (01=January, etc.)'
TWODIGITSECOND: 'Two digits of second (00 through 59)' TWODIGITSECOND: 'Two digits of second (00 through 59)'
TWODIGITYEAR: 'Two-digit year' TWODIGITYEAR: 'Two-digit year'
Toggle: 'Show formatting help'
MemberImportForm: MemberImportForm:
Help1: '<p>Import users in <em>CSV format</em> (comma-separated values). <small><a href="#" class="toggle-advanced">Show advanced usage</a></small></p>' Help1: '<p>Import users in <em>CSV format</em> (comma-separated values). <small><a href="#" class="toggle-advanced">Show advanced usage</a></small></p>'
Help2: '<div class="advanced"> <h4>Advanced usage</h4> <ul> <li>Allowed columns: <em>%s</em></li> <li>Existing users are matched by their unique <em>Code</em> property, and updated with any new values from the imported file.</li> <li>Groups can be assigned by the <em>Groups</em> column. Groups are identified by their <em>Code</em> property, multiple groups can be separated by comma. Existing group memberships are not cleared.</li> </ul></div>' Help2: '<div class="advanced"> <h4>Advanced usage</h4> <ul> <li>Allowed columns: <em>%s</em></li> <li>Existing users are matched by their unique <em>Code</em> property, and updated with any new values from the imported file.</li> <li>Groups can be assigned by the <em>Groups</em> column. Groups are identified by their <em>Code</em> property, multiple groups can be separated by comma. Existing group memberships are not cleared.</li> </ul></div>'
@ -421,7 +435,7 @@ uz:
ModelAdmin: ModelAdmin:
DELETE: Delete DELETE: Delete
DELETEDRECORDS: 'Deleted {count} records.' DELETEDRECORDS: 'Deleted {count} records.'
EMPTYBEFOREIMPORT: 'Clear Database before import' EMPTYBEFOREIMPORT: 'Replace data'
IMPORT: 'Import from CSV' IMPORT: 'Import from CSV'
IMPORTEDRECORDS: 'Imported {count} records.' IMPORTEDRECORDS: 'Imported {count} records.'
NOCSVFILE: 'Please browse for a CSV file to import' NOCSVFILE: 'Please browse for a CSV file to import'
@ -515,7 +529,20 @@ uz:
BtnImport: 'Import from CSV' BtnImport: 'Import from CSV'
FileFieldLabel: 'CSV File <small>(Allowed extensions: *.csv)</small>' FileFieldLabel: 'CSV File <small>(Allowed extensions: *.csv)</small>'
SilverStripeNavigator: SilverStripeNavigator:
Auto: Auto
ChangeViewMode: 'Change view mode'
Desktop: Desktop
DualWindowView: 'Dual Window'
Edit: Edit Edit: Edit
EditView: 'Edit mode'
Mobile: Mobile
PreviewState: 'Preview State'
PreviewView: 'Preview mode'
Responsive: Responsive
SplitView: 'Split mode'
Tablet: Tablet
ViewDeviceWidth: 'Select a preview width'
Width: width
SimpleImageField: SimpleImageField:
NOUPLOAD: 'No Image Uploaded' NOUPLOAD: 'No Image Uploaded'
SiteTree: SiteTree:
@ -551,6 +578,8 @@ uz:
ATTACHFILE: 'Attach a file' ATTACHFILE: 'Attach a file'
ATTACHFILES: 'Attach files' ATTACHFILES: 'Attach files'
AttachFile: 'Attach file(s)' AttachFile: 'Attach file(s)'
CHOOSEANOTHERFILE: 'Choose another file'
CHOOSEANOTHERINFO: 'Replace this file with another one from the file store'
DELETE: 'Delete from files' DELETE: 'Delete from files'
DELETEINFO: 'Permanently delete this file from the file store' DELETEINFO: 'Permanently delete this file from the file store'
DOEDIT: Save DOEDIT: Save
@ -565,12 +594,15 @@ uz:
FROMFILES: 'From files' FROMFILES: 'From files'
HOTLINKINFO: 'Info: This image will be hotlinked. Please ensure you have permissions from the original site creator to do so.' HOTLINKINFO: 'Info: This image will be hotlinked. Please ensure you have permissions from the original site creator to do so.'
MAXNUMBEROFFILES: 'Max number of {count} file(s) exceeded.' MAXNUMBEROFFILES: 'Max number of {count} file(s) exceeded.'
MAXNUMBEROFFILESONE: 'Can only upload one file'
MAXNUMBEROFFILESSHORT: 'Can only upload {count} files' MAXNUMBEROFFILESSHORT: 'Can only upload {count} files'
OVERWRITEWARNING: 'File with the same name already exists'
REMOVE: Remove REMOVE: Remove
REMOVEERROR: 'Error removing file' REMOVEERROR: 'Error removing file'
REMOVEINFO: 'Remove this file from here, but do not delete it from the file store' REMOVEINFO: 'Remove this file from here, but do not delete it from the file store'
STARTALL: 'Start all' STARTALL: 'Start all'
STARTALLINFO: 'Start all uploads' STARTALLINFO: 'Start all uploads'
Saved: Saved Saved: Saved
UPLOADSINTO: 'saves into /{path}'
Versioned: Versioned:
has_many_Versions: Versions has_many_Versions: Versions

View File

@ -2,6 +2,7 @@ vi_VN:
AssetAdmin: AssetAdmin:
ALLOWEDEXTS: 'Allowed extensions' ALLOWEDEXTS: 'Allowed extensions'
NEWFOLDER: NewFolder NEWFOLDER: NewFolder
SHOWALLOWEDEXTS: 'Show allowed extensions'
AssetTableField: AssetTableField:
CREATED: 'First uploaded' CREATED: 'First uploaded'
DIM: Dimensions DIM: Dimensions
@ -59,9 +60,9 @@ vi_VN:
ERRORNOTADMIN: 'That user is not an administrator.' ERRORNOTADMIN: 'That user is not an administrator.'
ERRORNOTREC: 'That username / password isn''t recognised' ERRORNOTREC: 'That username / password isn''t recognised'
Boolean: Boolean:
0: 'False'
ANY: Any ANY: Any
1: 'True' NOANSWER: 'False'
YESANSWER: 'True'
CMSLoadingScreen.ss: CMSLoadingScreen.ss:
LOADING: Loading... LOADING: Loading...
REQUIREJS: 'The CMS requires that you have JavaScript enabled.' REQUIREJS: 'The CMS requires that you have JavaScript enabled.'
@ -70,6 +71,8 @@ vi_VN:
ACCESSALLINTERFACES: 'Access to all CMS sections' ACCESSALLINTERFACES: 'Access to all CMS sections'
ACCESSALLINTERFACESHELP: 'Overrules more specific access settings.' ACCESSALLINTERFACESHELP: 'Overrules more specific access settings.'
SAVE: Lưu SAVE: Lưu
CMSPageHistoryController_versions.ss:
PREVIEW: 'Website preview'
CMSProfileController: CMSProfileController:
MENUTITLE: 'My Profile' MENUTITLE: 'My Profile'
ChangePasswordEmail.ss: ChangePasswordEmail.ss:
@ -79,8 +82,8 @@ vi_VN:
HELLO: Hi HELLO: Hi
PASSWORD: Password PASSWORD: Password
CheckboxField: CheckboxField:
- 'False' NOANSWER: 'False'
- 'True' YESANSWER: 'True'
ComplexTableField: ComplexTableField:
CLOSEPOPUP: 'Close Popup' CLOSEPOPUP: 'Close Popup'
SUCCESSADD2: 'Added {name}' SUCCESSADD2: 'Added {name}'
@ -109,20 +112,21 @@ vi_VN:
PLURALNAME: 'Data Objects' PLURALNAME: 'Data Objects'
SINGULARNAME: 'Data Object' SINGULARNAME: 'Data Object'
Date: Date:
DAY: ngày DAY: day
DAYS: ngày DAYS: days
HOUR: giờ HOUR: hour
HOURS: giờ HOURS: hours
MIN: phút LessThanMinuteAgo: 'less than a minute'
MINS: phút MIN: min
MONTH: tháng MINS: mins
MONTHS: tháng MONTH: month
SEC: giây MONTHS: months
SECS: giây SEC: sec
SECS: secs
TIMEDIFFAGO: '{difference} ago' TIMEDIFFAGO: '{difference} ago'
TIMEDIFFIN: 'in {difference}' TIMEDIFFIN: 'in {difference}'
YEAR: năm YEAR: year
YEARS: năm YEARS: years
DateField: DateField:
NOTSET: 'not set' NOTSET: 'not set'
TODAY: 'hôm nay' TODAY: 'hôm nay'
@ -198,7 +202,8 @@ vi_VN:
TEXT2: 'password reset link' TEXT2: 'password reset link'
TEXT3: for TEXT3: for
Form: Form:
FIELDISREQUIRED: '%s is required' CSRF_FAILED_MESSAGE: 'There seems to have been a technical problem. Please click the back button, refresh your browser, and try again.'
FIELDISREQUIRED: '{name} is required'
SubmitBtnLabel: Go SubmitBtnLabel: Go
VALIDATIONCREDITNUMBER: 'Please ensure you have entered the {number} credit card number correctly' VALIDATIONCREDITNUMBER: 'Please ensure you have entered the {number} credit card number correctly'
VALIDATIONNOTUNIQUE: 'The value entered is not unique' VALIDATIONNOTUNIQUE: 'The value entered is not unique'
@ -208,6 +213,7 @@ vi_VN:
VALIDATOR: Validator VALIDATOR: Validator
VALIDCURRENCY: 'Please enter a valid currency' VALIDCURRENCY: 'Please enter a valid currency'
FormField: FormField:
Example: 'e.g. %s'
NONE: none NONE: none
GridAction: GridAction:
DELETE_DESCRIPTION: Delete DELETE_DESCRIPTION: Delete
@ -230,6 +236,7 @@ vi_VN:
ResetFilter: Reset ResetFilter: Reset
GridFieldAction_Delete: GridFieldAction_Delete:
DeletePermissionsFailure: 'No delete permissions' DeletePermissionsFailure: 'No delete permissions'
EditPermissionsFailure: 'No permission to unlink record'
GridFieldDetailForm: GridFieldDetailForm:
CancelBtn: Cancel CancelBtn: Cancel
Create: Create Create: Create
@ -237,7 +244,9 @@ vi_VN:
DeletePermissionsFailure: 'No delete permissions' DeletePermissionsFailure: 'No delete permissions'
Deleted: 'Deleted %s %s' Deleted: 'Deleted %s %s'
Save: Save Save: Save
Saved: 'Saved %s %s' Saved: 'Saved {name} {link}'
GridFieldEditButton.ss:
EDIT: Edit
GridFieldItemEditView.ss: null GridFieldItemEditView.ss: null
Group: Group:
AddRole: 'Add a role for this group' AddRole: 'Add a role for this group'
@ -267,6 +276,7 @@ vi_VN:
ADDURL: 'Add URL' ADDURL: 'Add URL'
ADJUSTDETAILSDIMENSIONS: 'Details &amp; dimensions' ADJUSTDETAILSDIMENSIONS: 'Details &amp; dimensions'
ANCHORVALUE: Anchor ANCHORVALUE: Anchor
BUTTONADDURL: 'Add url'
BUTTONINSERT: Insert BUTTONINSERT: Insert
BUTTONINSERTLINK: 'Insert link' BUTTONINSERTLINK: 'Insert link'
BUTTONREMOVELINK: 'Remove link' BUTTONREMOVELINK: 'Remove link'
@ -331,7 +341,10 @@ vi_VN:
PreviewButton: Preview PreviewButton: Preview
REORGANISATIONSUCCESSFUL: 'Reorganised the site tree successfully.' REORGANISATIONSUCCESSFUL: 'Reorganised the site tree successfully.'
SAVEDUP: Saved. SAVEDUP: Saved.
VersionUnknown: unknown ShowAsList: 'show as list'
TooManyPages: 'Too many pages'
ValidationError: 'Validation error'
VersionUnknown: Unknown
LeftAndMain_Menu.ss: LeftAndMain_Menu.ss:
Hello: Hi Hello: Hi
LOGOUT: 'Log out' LOGOUT: 'Log out'
@ -407,6 +420,7 @@ vi_VN:
TWODIGITMONTH: 'Two-digit month (01=January, etc.)' TWODIGITMONTH: 'Two-digit month (01=January, etc.)'
TWODIGITSECOND: 'Two digits of second (00 through 59)' TWODIGITSECOND: 'Two digits of second (00 through 59)'
TWODIGITYEAR: 'Two-digit year' TWODIGITYEAR: 'Two-digit year'
Toggle: 'Show formatting help'
MemberImportForm: MemberImportForm:
Help1: '<p>Import users in <em>CSV format</em> (comma-separated values). <small><a href="#" class="toggle-advanced">Show advanced usage</a></small></p>' Help1: '<p>Import users in <em>CSV format</em> (comma-separated values). <small><a href="#" class="toggle-advanced">Show advanced usage</a></small></p>'
Help2: '<div class="advanced"> <h4>Advanced usage</h4> <ul> <li>Allowed columns: <em>%s</em></li> <li>Existing users are matched by their unique <em>Code</em> property, and updated with any new values from the imported file.</li> <li>Groups can be assigned by the <em>Groups</em> column. Groups are identified by their <em>Code</em> property, multiple groups can be separated by comma. Existing group memberships are not cleared.</li> </ul></div>' Help2: '<div class="advanced"> <h4>Advanced usage</h4> <ul> <li>Allowed columns: <em>%s</em></li> <li>Existing users are matched by their unique <em>Code</em> property, and updated with any new values from the imported file.</li> <li>Groups can be assigned by the <em>Groups</em> column. Groups are identified by their <em>Code</em> property, multiple groups can be separated by comma. Existing group memberships are not cleared.</li> </ul></div>'
@ -421,7 +435,7 @@ vi_VN:
ModelAdmin: ModelAdmin:
DELETE: Delete DELETE: Delete
DELETEDRECORDS: 'Deleted {count} records.' DELETEDRECORDS: 'Deleted {count} records.'
EMPTYBEFOREIMPORT: 'Clear Database before import' EMPTYBEFOREIMPORT: 'Replace data'
IMPORT: 'Import from CSV' IMPORT: 'Import from CSV'
IMPORTEDRECORDS: 'Imported {count} records.' IMPORTEDRECORDS: 'Imported {count} records.'
NOCSVFILE: 'Please browse for a CSV file to import' NOCSVFILE: 'Please browse for a CSV file to import'
@ -515,7 +529,20 @@ vi_VN:
BtnImport: 'Import from CSV' BtnImport: 'Import from CSV'
FileFieldLabel: 'CSV File <small>(Allowed extensions: *.csv)</small>' FileFieldLabel: 'CSV File <small>(Allowed extensions: *.csv)</small>'
SilverStripeNavigator: SilverStripeNavigator:
Auto: Auto
ChangeViewMode: 'Change view mode'
Desktop: Desktop
DualWindowView: 'Dual Window'
Edit: Edit Edit: Edit
EditView: 'Edit mode'
Mobile: Mobile
PreviewState: 'Preview State'
PreviewView: 'Preview mode'
Responsive: Responsive
SplitView: 'Split mode'
Tablet: Tablet
ViewDeviceWidth: 'Select a preview width'
Width: width
SimpleImageField: SimpleImageField:
NOUPLOAD: 'No Image Uploaded' NOUPLOAD: 'No Image Uploaded'
SiteTree: SiteTree:
@ -551,6 +578,8 @@ vi_VN:
ATTACHFILE: 'Attach a file' ATTACHFILE: 'Attach a file'
ATTACHFILES: 'Attach files' ATTACHFILES: 'Attach files'
AttachFile: 'Attach file(s)' AttachFile: 'Attach file(s)'
CHOOSEANOTHERFILE: 'Choose another file'
CHOOSEANOTHERINFO: 'Replace this file with another one from the file store'
DELETE: 'Delete from files' DELETE: 'Delete from files'
DELETEINFO: 'Permanently delete this file from the file store' DELETEINFO: 'Permanently delete this file from the file store'
DOEDIT: Save DOEDIT: Save
@ -565,12 +594,15 @@ vi_VN:
FROMFILES: 'From files' FROMFILES: 'From files'
HOTLINKINFO: 'Info: This image will be hotlinked. Please ensure you have permissions from the original site creator to do so.' HOTLINKINFO: 'Info: This image will be hotlinked. Please ensure you have permissions from the original site creator to do so.'
MAXNUMBEROFFILES: 'Max number of {count} file(s) exceeded.' MAXNUMBEROFFILES: 'Max number of {count} file(s) exceeded.'
MAXNUMBEROFFILESONE: 'Can only upload one file'
MAXNUMBEROFFILESSHORT: 'Can only upload {count} files' MAXNUMBEROFFILESSHORT: 'Can only upload {count} files'
OVERWRITEWARNING: 'File with the same name already exists'
REMOVE: Remove REMOVE: Remove
REMOVEERROR: 'Error removing file' REMOVEERROR: 'Error removing file'
REMOVEINFO: 'Remove this file from here, but do not delete it from the file store' REMOVEINFO: 'Remove this file from here, but do not delete it from the file store'
STARTALL: 'Start all' STARTALL: 'Start all'
STARTALLINFO: 'Start all uploads' STARTALLINFO: 'Start all uploads'
Saved: Saved Saved: Saved
UPLOADSINTO: 'saves into /{path}'
Versioned: Versioned:
has_many_Versions: Versions has_many_Versions: Versions

View File

@ -2,13 +2,14 @@ zh_CN:
AssetAdmin: AssetAdmin:
ALLOWEDEXTS: 'Allowed extensions' ALLOWEDEXTS: 'Allowed extensions'
NEWFOLDER: 新建文件夹 NEWFOLDER: 新建文件夹
SHOWALLOWEDEXTS: 'Show allowed extensions'
AssetTableField: AssetTableField:
CREATED: 第一次被上传 CREATED: '第一次被上传'
DIM: 尺寸 DIM: 尺寸
FILENAME: 文件名 FILENAME: 文件名
FOLDER: Folder FOLDER: Folder
LASTEDIT: 上一次被更改 LASTEDIT: 上一次被更改
OWNER: 拥有者 OWNER: '拥有者'
SIZE: 大小 SIZE: 大小
TITLE: 文件名称 TITLE: 文件名称
TYPE: 类型 TYPE: 类型
@ -55,13 +56,13 @@ zh_CN:
BackLink_Button.ss: BackLink_Button.ss:
Back: Back Back: Back
BasicAuth: BasicAuth:
ENTERINFO: 请输入用户名和密码 ENTERINFO: '请输入用户名和密码'
ERRORNOTADMIN: 此用户没有管理员权限。 ERRORNOTADMIN: 此用户没有管理员权限。
ERRORNOTREC: 没有找到此用户名/密码 ERRORNOTREC: '没有找到此用户名/密码'
Boolean: Boolean:
0: 'False'
ANY: Any ANY: Any
1: 'True' NOANSWER: 'False'
YESANSWER: 'True'
CMSLoadingScreen.ss: CMSLoadingScreen.ss:
LOADING: Loading... LOADING: Loading...
REQUIREJS: 'The CMS requires that you have JavaScript enabled.' REQUIREJS: 'The CMS requires that you have JavaScript enabled.'
@ -70,23 +71,25 @@ zh_CN:
ACCESSALLINTERFACES: 'Access to all CMS sections' ACCESSALLINTERFACES: 'Access to all CMS sections'
ACCESSALLINTERFACESHELP: 'Overrules more specific access settings.' ACCESSALLINTERFACESHELP: 'Overrules more specific access settings.'
SAVE: 保存 SAVE: 保存
CMSPageHistoryController_versions.ss:
PREVIEW: 'Website preview'
CMSProfileController: CMSProfileController:
MENUTITLE: 'My Profile' MENUTITLE: 'My Profile'
ChangePasswordEmail.ss: ChangePasswordEmail.ss:
CHANGEPASSWORDTEXT1: 您已更改了登陆%s的密码 CHANGEPASSWORDTEXT1: '您已更改了登陆%s的密码'
CHANGEPASSWORDTEXT2: 您现在可以用下列权限信息进行登路: CHANGEPASSWORDTEXT2: 您现在可以用下列权限信息进行登路:
EMAIL: Email EMAIL: Email
HELLO: HELLO:
PASSWORD: Password PASSWORD: Password
CheckboxField: CheckboxField:
- 'False' NOANSWER: 'False'
- 'True' YESANSWER: 'True'
ComplexTableField: ComplexTableField:
CLOSEPOPUP: 'Close Popup' CLOSEPOPUP: 'Close Popup'
SUCCESSADD2: 'Added {name}' SUCCESSADD2: 'Added {name}'
SUCCESSEDIT: 'Saved %s %s %s' SUCCESSEDIT: 'Saved %s %s %s'
ComplexTableField.ss: ComplexTableField.ss:
ADDITEM: 新加 ADDITEM: '新加'
NOITEMSFOUND: 'No items found' NOITEMSFOUND: 'No items found'
SORTASC: 正序排列 SORTASC: 正序排列
SORTDESC: 倒序排列 SORTDESC: 倒序排列
@ -97,7 +100,7 @@ zh_CN:
ATLEAST: 'Passwords must be at least {min} characters long.' ATLEAST: 'Passwords must be at least {min} characters long.'
BETWEEN: 'Passwords must be {min} to {max} characters long.' BETWEEN: 'Passwords must be {min} to {max} characters long.'
MAXIMUM: 'Passwords must be at most {max} characters long.' MAXIMUM: 'Passwords must be at most {max} characters long.'
SHOWONCLICKTITLE: 更改密码 SHOWONCLICKTITLE: '更改密码'
CreditCardField: CreditCardField:
FIRST: first FIRST: first
FOURTH: fourth FOURTH: fourth
@ -109,20 +112,21 @@ zh_CN:
PLURALNAME: 数据对象 PLURALNAME: 数据对象
SINGULARNAME: 数据对象 SINGULARNAME: 数据对象
Date: Date:
DAY: DAY: day
DAYS: DAYS: days
HOUR: 个小时 HOUR: hour
HOURS: 个小时 HOURS: hours
MIN: 分钟 LessThanMinuteAgo: 'less than a minute'
MINS: 分钟 MIN: min
MONTH: 个月 MINS: mins
MONTHS: 个月 MONTH: month
SEC: MONTHS: months
SECS: SEC: sec
SECS: secs
TIMEDIFFAGO: '{difference} ago' TIMEDIFFAGO: '{difference} ago'
TIMEDIFFIN: 'in {difference}' TIMEDIFFIN: 'in {difference}'
YEAR: YEAR: year
YEARS: YEARS: years
DateField: DateField:
NOTSET: 'not set' NOTSET: 'not set'
TODAY: today TODAY: today
@ -198,16 +202,18 @@ zh_CN:
TEXT2: 'password reset link' TEXT2: 'password reset link'
TEXT3: for TEXT3: for
Form: Form:
FIELDISREQUIRED: '%s是必需填写的' CSRF_FAILED_MESSAGE: 'There seems to have been a technical problem. Please click the back button, refresh your browser, and try again.'
FIELDISREQUIRED: '{name} is required'
SubmitBtnLabel: Go SubmitBtnLabel: Go
VALIDATIONCREDITNUMBER: 'Please ensure you have entered the {number} credit card number correctly' VALIDATIONCREDITNUMBER: 'Please ensure you have entered the {number} credit card number correctly'
VALIDATIONNOTUNIQUE: 输入值已被他人占用 VALIDATIONNOTUNIQUE: '输入值已被他人占用'
VALIDATIONPASSWORDSDONTMATCH: (密码相互不匹配) VALIDATIONPASSWORDSDONTMATCH: '(密码相互不匹配)'
VALIDATIONPASSWORDSNOTEMPTY: 密码不能空白 VALIDATIONPASSWORDSNOTEMPTY: '密码不能空白'
VALIDATIONSTRONGPASSWORD: 'Passwords must have at least one digit and one alphanumeric character' VALIDATIONSTRONGPASSWORD: 'Passwords must have at least one digit and one alphanumeric character'
VALIDATOR: Validator VALIDATOR: Validator
VALIDCURRENCY: 'Please enter a valid currency' VALIDCURRENCY: 'Please enter a valid currency'
FormField: FormField:
Example: 'e.g. %s'
NONE: none NONE: none
GridAction: GridAction:
DELETE_DESCRIPTION: Delete DELETE_DESCRIPTION: Delete
@ -230,6 +236,7 @@ zh_CN:
ResetFilter: Reset ResetFilter: Reset
GridFieldAction_Delete: GridFieldAction_Delete:
DeletePermissionsFailure: 'No delete permissions' DeletePermissionsFailure: 'No delete permissions'
EditPermissionsFailure: 'No permission to unlink record'
GridFieldDetailForm: GridFieldDetailForm:
CancelBtn: Cancel CancelBtn: Cancel
Create: Create Create: Create
@ -237,11 +244,13 @@ zh_CN:
DeletePermissionsFailure: 'No delete permissions' DeletePermissionsFailure: 'No delete permissions'
Deleted: 'Deleted %s %s' Deleted: 'Deleted %s %s'
Save: Save Save: Save
Saved: 'Saved %s %s' Saved: 'Saved {name} {link}'
GridFieldEditButton.ss:
EDIT: Edit
GridFieldItemEditView.ss: null GridFieldItemEditView.ss: null
Group: Group:
AddRole: 'Add a role for this group' AddRole: 'Add a role for this group'
Code: 团队代码 Code: '团队代码'
DefaultGroupTitleAdministrators: Administrators DefaultGroupTitleAdministrators: Administrators
DefaultGroupTitleContentAuthors: 'Content Authors' DefaultGroupTitleContentAuthors: 'Content Authors'
Description: Description Description: Description
@ -267,13 +276,14 @@ zh_CN:
ADDURL: 'Add URL' ADDURL: 'Add URL'
ADJUSTDETAILSDIMENSIONS: 'Details &amp; dimensions' ADJUSTDETAILSDIMENSIONS: 'Details &amp; dimensions'
ANCHORVALUE: Anchor ANCHORVALUE: Anchor
BUTTONADDURL: 'Add url'
BUTTONINSERT: Insert BUTTONINSERT: Insert
BUTTONINSERTLINK: 插入链接 BUTTONINSERTLINK: '插入链接'
BUTTONREMOVELINK: 删除链接 BUTTONREMOVELINK: '删除链接'
BUTTONUpdate: Update BUTTONUpdate: Update
CAPTIONTEXT: 'Caption text' CAPTIONTEXT: 'Caption text'
CSSCLASS: 对齐/样式 CSSCLASS: '对齐/样式'
CSSCLASSCENTER: 自居中 CSSCLASSCENTER: '自居中'
CSSCLASSLEFT: 左端自动换行 CSSCLASSLEFT: 左端自动换行
CSSCLASSLEFTALONE: 'On the left, on its own.' CSSCLASSLEFTALONE: 'On the left, on its own.'
CSSCLASSRIGHT: 右端自动换行 CSSCLASSRIGHT: 右端自动换行
@ -289,17 +299,17 @@ zh_CN:
IMAGEALTTEXT: 'Alternative text (alt) - shown if image cannot be displayed' IMAGEALTTEXT: 'Alternative text (alt) - shown if image cannot be displayed'
IMAGEALTTEXTDESC: 'Shown to screen readers or if image can not be displayed' IMAGEALTTEXTDESC: 'Shown to screen readers or if image can not be displayed'
IMAGEDIMENSIONS: 尺寸 IMAGEDIMENSIONS: 尺寸
IMAGEHEIGHTPX: 高(像素) IMAGEHEIGHTPX: '高(像素)'
IMAGETITLE: 'Title text (tooltip) - for additional information about the image' IMAGETITLE: 'Title text (tooltip) - for additional information about the image'
IMAGETITLETEXT: 'Title text (tooltip)' IMAGETITLETEXT: 'Title text (tooltip)'
IMAGETITLETEXTDESC: 'For additional information about the image' IMAGETITLETEXTDESC: 'For additional information about the image'
IMAGEWIDTHPX: 宽(像素) IMAGEWIDTHPX: '宽(像素)'
INSERTMEDIA: 'Insert Media' INSERTMEDIA: 'Insert Media'
LINK: 对所选文字插入/编辑链接 LINK: '对所选文字插入/编辑链接'
LINKANCHOR: 'Anchor on this page' LINKANCHOR: 'Anchor on this page'
LINKDESCR: 链接描述 LINKDESCR: 链接描述
LINKEMAIL: 电子邮件地址 LINKEMAIL: 电子邮件地址
LINKEXTERNAL: 其它网站 LINKEXTERNAL: '其它网站'
LINKFILE: 下载文件 LINKFILE: 下载文件
LINKINTERNAL: 本站网页 LINKINTERNAL: 本站网页
LINKOPENNEWWIN: 在新窗口打开链接? LINKOPENNEWWIN: 在新窗口打开链接?
@ -317,21 +327,24 @@ zh_CN:
PLURALNAME: Files PLURALNAME: Files
SINGULARNAME: File SINGULARNAME: File
Image_iframe.ss: Image_iframe.ss:
TITLE: 图象上传内嵌框架Iframe TITLE: '图象上传内嵌框架Iframe'
LeftAndMain: LeftAndMain:
CANT_REORGANISE: 'You do not have permission to alter Top level pages. Your change was not saved.' CANT_REORGANISE: 'You do not have permission to alter Top level pages. Your change was not saved.'
DELETED: Deleted. DELETED: Deleted.
DropdownBatchActionsDefault: Actions DropdownBatchActionsDefault: Actions
HELP: 帮助 HELP: 帮助
PAGETYPE: 网页类型 PAGETYPE: 网页类型
PERMAGAIN: 您于CMS的登录已被注销请在下面输入用户名和密码重新登录。 PERMAGAIN: '您于CMS的登录已被注销请在下面输入用户名和密码重新登录。'
PERMALREADY: 对不起您无权登录CMS的这一部分。如果您要用另外的帐号请在下面登录。 PERMALREADY: '对不起您无权登录CMS的这一部分。如果您要用另外的帐号请在下面登录。'
PERMDEFAULT: 请先选择一种验证方法并输入您的权限信息以登录CMS。 PERMDEFAULT: '请先选择一种验证方法并输入您的权限信息以登录CMS。'
PLEASESAVE: 请先保存:因为该网页还未保存,所以该页无法更新。 PLEASESAVE: '请先保存:因为该网页还未保存,所以该页无法更新。'
PreviewButton: Preview PreviewButton: Preview
REORGANISATIONSUCCESSFUL: 'Reorganised the site tree successfully.' REORGANISATIONSUCCESSFUL: 'Reorganised the site tree successfully.'
SAVEDUP: Saved. SAVEDUP: Saved.
VersionUnknown: unknown ShowAsList: 'show as list'
TooManyPages: 'Too many pages'
ValidationError: 'Validation error'
VersionUnknown: Unknown
LeftAndMain_Menu.ss: LeftAndMain_Menu.ss:
Hello: Hi Hello: Hi
LOGOUT: 'Log out' LOGOUT: 'Log out'
@ -343,13 +356,13 @@ zh_CN:
Status: Status Status: Status
Member: Member:
ADDGROUP: 'Add group' ADDGROUP: 'Add group'
BUTTONCHANGEPASSWORD: 更改密码 BUTTONCHANGEPASSWORD: '更改密码'
BUTTONLOGIN: 登录 BUTTONLOGIN: 登录
BUTTONLOGINOTHER: 使用其他帐户登录 BUTTONLOGINOTHER: '使用其他帐户登录'
BUTTONLOSTPASSWORD: 忘记密码 BUTTONLOSTPASSWORD: '忘记密码'
CANTEDIT: 'You don''t have permission to do that' CANTEDIT: 'You don''t have permission to do that'
CONFIRMNEWPASSWORD: 确认新密码 CONFIRMNEWPASSWORD: '确认新密码'
CONFIRMPASSWORD: 确认密码 CONFIRMPASSWORD: '确认密码'
DATEFORMAT: 'Date format' DATEFORMAT: 'Date format'
DefaultAdminFirstname: 'Default Admin' DefaultAdminFirstname: 'Default Admin'
DefaultDateTime: default DefaultDateTime: default
@ -357,35 +370,35 @@ zh_CN:
EMPTYNEWPASSWORD: 'The new password can''t be empty, please try again' EMPTYNEWPASSWORD: 'The new password can''t be empty, please try again'
ENTEREMAIL: 'Please enter an email address to get a password reset link.' ENTEREMAIL: 'Please enter an email address to get a password reset link.'
ERRORLOCKEDOUT: 'Your account has been temporarily disabled because of too many failed attempts at logging in. Please try again in 20 minutes.' ERRORLOCKEDOUT: 'Your account has been temporarily disabled because of too many failed attempts at logging in. Please try again in 20 minutes.'
ERRORNEWPASSWORD: 您输入了一个不同的新密码,请重新输入 ERRORNEWPASSWORD: '您输入了一个不同的新密码,请重新输入'
ERRORPASSWORDNOTMATCH: 您当前的密码不正确,请再次输入 ERRORPASSWORDNOTMATCH: '您当前的密码不正确,请再次输入'
ERRORWRONGCRED: 电邮地址或密码似乎不对。请重新输入。 ERRORWRONGCRED: '电邮地址或密码似乎不对。请重新输入。'
FIRSTNAME: FIRSTNAME:
INTERFACELANG: 界面语言 INTERFACELANG: 界面语言
INVALIDNEWPASSWORD: 'We couldn''t accept that password: {password}' INVALIDNEWPASSWORD: 'We couldn''t accept that password: {password}'
LOGGEDINAS: 'You''re logged in as {name}.' LOGGEDINAS: 'You''re logged in as {name}.'
NEWPASSWORD: 新密码 NEWPASSWORD: '新密码'
PASSWORD: 密码 PASSWORD: '密码'
PLURALNAME: 成员 PLURALNAME: 成员
REMEMBERME: 记住我的信息? REMEMBERME: 记住我的信息?
SINGULARNAME: 成员 SINGULARNAME: 成员
SUBJECTPASSWORDCHANGED: 您的密码已更改 SUBJECTPASSWORDCHANGED: '您的密码已更改'
SUBJECTPASSWORDRESET: 重设您的密码链接 SUBJECTPASSWORDRESET: '重设您的密码链接'
SURNAME: SURNAME:
TIMEFORMAT: 'Time format' TIMEFORMAT: 'Time format'
VALIDATIONMEMBEREXISTS: 已经存在用这个电子邮件的会员 VALIDATIONMEMBEREXISTS: 已经存在用这个电子邮件的会员
ValidationIdentifierFailed: 'Can''t overwrite existing member #{id} with identical identifier ({name} = {value}))' ValidationIdentifierFailed: 'Can''t overwrite existing member #{id} with identical identifier ({name} = {value}))'
WELCOMEBACK: 'Welcome Back, {firstname}' WELCOMEBACK: 'Welcome Back, {firstname}'
YOUROLDPASSWORD: 您的旧密码 YOUROLDPASSWORD: '您的旧密码'
belongs_many_many_Groups: 团队 belongs_many_many_Groups: 团队
db_LastVisited: 'Last Visited Date' db_LastVisited: 'Last Visited Date'
db_Locale: 'Interface Locale' db_Locale: 'Interface Locale'
db_LockedOutUntil: 禁止直至 db_LockedOutUntil: 禁止直至
db_NumVisit: 'Number of Visits' db_NumVisit: 'Number of Visits'
db_Password: Password db_Password: Password
db_PasswordExpiry: 密码过期日期 db_PasswordExpiry: '密码过期日期'
MemberAuthenticator: MemberAuthenticator:
TITLE: 电邮地址和密码 TITLE: '电邮地址和密码'
MemberDatetimeOptionsetField: MemberDatetimeOptionsetField:
AMORPM: 'AM (Ante meridiem) or PM (Post meridiem)' AMORPM: 'AM (Ante meridiem) or PM (Post meridiem)'
'APPLY FILTER': 'Apply Filter' 'APPLY FILTER': 'Apply Filter'
@ -407,6 +420,7 @@ zh_CN:
TWODIGITMONTH: 'Two-digit month (01=January, etc.)' TWODIGITMONTH: 'Two-digit month (01=January, etc.)'
TWODIGITSECOND: 'Two digits of second (00 through 59)' TWODIGITSECOND: 'Two digits of second (00 through 59)'
TWODIGITYEAR: 'Two-digit year' TWODIGITYEAR: 'Two-digit year'
Toggle: 'Show formatting help'
MemberImportForm: MemberImportForm:
Help1: '<p>Import users in <em>CSV format</em> (comma-separated values). <small><a href="#" class="toggle-advanced">Show advanced usage</a></small></p>' Help1: '<p>Import users in <em>CSV format</em> (comma-separated values). <small><a href="#" class="toggle-advanced">Show advanced usage</a></small></p>'
Help2: '<div class="advanced"> <h4>Advanced usage</h4> <ul> <li>Allowed columns: <em>%s</em></li> <li>Existing users are matched by their unique <em>Code</em> property, and updated with any new values from the imported file.</li> <li>Groups can be assigned by the <em>Groups</em> column. Groups are identified by their <em>Code</em> property, multiple groups can be separated by comma. Existing group memberships are not cleared.</li> </ul></div>' Help2: '<div class="advanced"> <h4>Advanced usage</h4> <ul> <li>Allowed columns: <em>%s</em></li> <li>Existing users are matched by their unique <em>Code</em> property, and updated with any new values from the imported file.</li> <li>Groups can be assigned by the <em>Groups</em> column. Groups are identified by their <em>Code</em> property, multiple groups can be separated by comma. Existing group memberships are not cleared.</li> </ul></div>'
@ -419,9 +433,9 @@ zh_CN:
SINGULARNAME: 'Member Password' SINGULARNAME: 'Member Password'
MemberTableField: null MemberTableField: null
ModelAdmin: ModelAdmin:
DELETE: 删除 DELETE: '删除'
DELETEDRECORDS: 'Deleted {count} records.' DELETEDRECORDS: 'Deleted {count} records.'
EMPTYBEFOREIMPORT: 'Clear Database before import' EMPTYBEFOREIMPORT: 'Replace data'
IMPORT: 'Import from CSV' IMPORT: 'Import from CSV'
IMPORTEDRECORDS: 'Imported {count} records.' IMPORTEDRECORDS: 'Imported {count} records.'
NOCSVFILE: 'Please browse for a CSV file to import' NOCSVFILE: 'Please browse for a CSV file to import'
@ -474,23 +488,23 @@ zh_CN:
PERMISSIONS_CATEGORY: 'Roles and access permissions' PERMISSIONS_CATEGORY: 'Roles and access permissions'
UserPermissionsIntro: 'Assigning groups to this user will adjust the permissions they have. See the groups section for details of permissions on individual groups.' UserPermissionsIntro: 'Assigning groups to this user will adjust the permissions they have. See the groups section for details of permissions on individual groups.'
PhoneNumberField: PhoneNumberField:
VALIDATION: 请输入有效电话号码 VALIDATION: '请输入有效电话号码'
RelationComplexTableField.ss: RelationComplexTableField.ss:
ADD: Add ADD: Add
CSVEXPORT: 'Export to CSV' CSVEXPORT: 'Export to CSV'
NOTFOUND: 'No items found' NOTFOUND: 'No items found'
Security: Security:
ALREADYLOGGEDIN: 您无访问此页的权限。如果您拥有另一个可访问次页的帐户,请在下面登录。 ALREADYLOGGEDIN: '您无访问此页的权限。如果您拥有另一个可访问次页的帐户,请在下面登录。'
BUTTONSEND: 给我发送密码重设链接 BUTTONSEND: '给我发送密码重设链接'
CHANGEPASSWORDBELOW: 您可在下面更改您的密码 CHANGEPASSWORDBELOW: '您可在下面更改您的密码'
CHANGEPASSWORDHEADER: 更改您的密码 CHANGEPASSWORDHEADER: '更改您的密码'
ENTERNEWPASSWORD: 请输入新密码 ENTERNEWPASSWORD: '请输入新密码'
ERRORPASSWORDPERMISSION: 您必需登录以更改您的密码 ERRORPASSWORDPERMISSION: '您必需登录以更改您的密码'
LOGGEDOUT: 您已被撤消登录。如果您想再次登录,在下面输入您的登录信息。 LOGGEDOUT: '您已被撤消登录。如果您想再次登录,在下面输入您的登录信息。'
LOGIN: 登录 LOGIN: 登录
NOTEPAGESECURED: 此页是受安全保护的。输入您的登录信息,我们会将您送达。 NOTEPAGESECURED: '此页是受安全保护的。输入您的登录信息,我们会将您送达。'
NOTERESETLINKINVALID: '<p>The password reset link is invalid or expired.</p><p>You can request a new one <a href="{link1}">here</a> or change your password after you <a href="{link2}">logged in</a>.</p>' NOTERESETLINKINVALID: '<p>The password reset link is invalid or expired.</p><p>You can request a new one <a href="{link1}">here</a> or change your password after you <a href="{link2}">logged in</a>.</p>'
NOTERESETPASSWORD: 输入您的电邮地址,我们会给您发送一个您可重设密码的链接 NOTERESETPASSWORD: '输入您的电邮地址,我们会给您发送一个您可重设密码的链接'
PASSWORDSENTHEADER: 'Password reset link sent to ''{email}''' PASSWORDSENTHEADER: 'Password reset link sent to ''{email}'''
PASSWORDSENTTEXT: 'Thank you! A reset link has been sent to ''{email}'', provided an account exists for this email address.' PASSWORDSENTTEXT: 'Thank you! A reset link has been sent to ''{email}'', provided an account exists for this email address.'
SecurityAdmin: SecurityAdmin:
@ -515,9 +529,22 @@ zh_CN:
BtnImport: 'Import from CSV' BtnImport: 'Import from CSV'
FileFieldLabel: 'CSV File <small>(Allowed extensions: *.csv)</small>' FileFieldLabel: 'CSV File <small>(Allowed extensions: *.csv)</small>'
SilverStripeNavigator: SilverStripeNavigator:
Auto: Auto
ChangeViewMode: 'Change view mode'
Desktop: Desktop
DualWindowView: 'Dual Window'
Edit: Edit Edit: Edit
EditView: 'Edit mode'
Mobile: Mobile
PreviewState: 'Preview State'
PreviewView: 'Preview mode'
Responsive: Responsive
SplitView: 'Split mode'
Tablet: Tablet
ViewDeviceWidth: 'Select a preview width'
Width: width
SimpleImageField: SimpleImageField:
NOUPLOAD: 没有上传的图像 NOUPLOAD: '没有上传的图像'
SiteTree: SiteTree:
TABMAIN: 主要部分 TABMAIN: 主要部分
TableField: TableField:
@ -551,6 +578,8 @@ zh_CN:
ATTACHFILE: 'Attach a file' ATTACHFILE: 'Attach a file'
ATTACHFILES: 'Attach files' ATTACHFILES: 'Attach files'
AttachFile: 'Attach file(s)' AttachFile: 'Attach file(s)'
CHOOSEANOTHERFILE: 'Choose another file'
CHOOSEANOTHERINFO: 'Replace this file with another one from the file store'
DELETE: 'Delete from files' DELETE: 'Delete from files'
DELETEINFO: 'Permanently delete this file from the file store' DELETEINFO: 'Permanently delete this file from the file store'
DOEDIT: Save DOEDIT: Save
@ -565,12 +594,15 @@ zh_CN:
FROMFILES: 'From files' FROMFILES: 'From files'
HOTLINKINFO: 'Info: This image will be hotlinked. Please ensure you have permissions from the original site creator to do so.' HOTLINKINFO: 'Info: This image will be hotlinked. Please ensure you have permissions from the original site creator to do so.'
MAXNUMBEROFFILES: 'Max number of {count} file(s) exceeded.' MAXNUMBEROFFILES: 'Max number of {count} file(s) exceeded.'
MAXNUMBEROFFILESONE: 'Can only upload one file'
MAXNUMBEROFFILESSHORT: 'Can only upload {count} files' MAXNUMBEROFFILESSHORT: 'Can only upload {count} files'
OVERWRITEWARNING: 'File with the same name already exists'
REMOVE: Remove REMOVE: Remove
REMOVEERROR: 'Error removing file' REMOVEERROR: 'Error removing file'
REMOVEINFO: 'Remove this file from here, but do not delete it from the file store' REMOVEINFO: 'Remove this file from here, but do not delete it from the file store'
STARTALL: 'Start all' STARTALL: 'Start all'
STARTALLINFO: 'Start all uploads' STARTALLINFO: 'Start all uploads'
Saved: Saved Saved: Saved
UPLOADSINTO: 'saves into /{path}'
Versioned: Versioned:
has_many_Versions: Versions has_many_Versions: Versions

View File

@ -2,13 +2,14 @@ zh_TW:
AssetAdmin: AssetAdmin:
ALLOWEDEXTS: 'Allowed extensions' ALLOWEDEXTS: 'Allowed extensions'
NEWFOLDER: 新資料夾 NEWFOLDER: 新資料夾
SHOWALLOWEDEXTS: 'Show allowed extensions'
AssetTableField: AssetTableField:
CREATED: 第一次上傳 CREATED: 第一次上傳
DIM: 尺寸 DIM: 尺寸
FILENAME: 檔案名稱 FILENAME: 檔案名稱
FOLDER: Folder FOLDER: Folder
LASTEDIT: 最後一次更新 LASTEDIT: 最後一次更新
OWNER: 擁有者 OWNER: '擁有者'
SIZE: 大小 SIZE: 大小
TITLE: 標題 TITLE: 標題
TYPE: 類型 TYPE: 類型
@ -55,13 +56,13 @@ zh_TW:
BackLink_Button.ss: BackLink_Button.ss:
Back: Back Back: Back
BasicAuth: BasicAuth:
ENTERINFO: 請輸入帳號密碼。 ENTERINFO: '請輸入帳號密碼。'
ERRORNOTADMIN: 那個使用者不是管理員。 ERRORNOTADMIN: '那個使用者不是管理員。'
ERRORNOTREC: 那組帳號密碼不對。 ERRORNOTREC: 那組帳號密碼不對。
Boolean: Boolean:
0: 'False'
ANY: Any ANY: Any
1: 'True' NOANSWER: 'False'
YESANSWER: 'True'
CMSLoadingScreen.ss: CMSLoadingScreen.ss:
LOADING: Loading... LOADING: Loading...
REQUIREJS: 'The CMS requires that you have JavaScript enabled.' REQUIREJS: 'The CMS requires that you have JavaScript enabled.'
@ -70,17 +71,19 @@ zh_TW:
ACCESSALLINTERFACES: 'Access to all CMS sections' ACCESSALLINTERFACES: 'Access to all CMS sections'
ACCESSALLINTERFACESHELP: 'Overrules more specific access settings.' ACCESSALLINTERFACESHELP: 'Overrules more specific access settings.'
SAVE: 儲存 SAVE: 儲存
CMSPageHistoryController_versions.ss:
PREVIEW: 'Website preview'
CMSProfileController: CMSProfileController:
MENUTITLE: 'My Profile' MENUTITLE: 'My Profile'
ChangePasswordEmail.ss: ChangePasswordEmail.ss:
CHANGEPASSWORDTEXT1: 您為這個帳戶改密碼: CHANGEPASSWORDTEXT1: 您為這個帳戶改密碼:
CHANGEPASSWORDTEXT2: 您可以用下列的帳號密碼登入: CHANGEPASSWORDTEXT2: '您可以用下列的帳號密碼登入:'
EMAIL: Email EMAIL: Email
HELLO: 您好 HELLO: 您好
PASSWORD: Password PASSWORD: Password
CheckboxField: CheckboxField:
- 'False' NOANSWER: 'False'
- 'True' YESANSWER: 'True'
ComplexTableField: ComplexTableField:
CLOSEPOPUP: 'Close Popup' CLOSEPOPUP: 'Close Popup'
SUCCESSADD2: 'Added {name}' SUCCESSADD2: 'Added {name}'
@ -109,20 +112,21 @@ zh_TW:
PLURALNAME: 'Data Objects' PLURALNAME: 'Data Objects'
SINGULARNAME: 'Data Object' SINGULARNAME: 'Data Object'
Date: Date:
DAY: DAY: day
DAYS: DAYS: days
HOUR: 小時 HOUR: hour
HOURS: 小時 HOURS: hours
MIN: 分鐘 LessThanMinuteAgo: 'less than a minute'
MINS: 分鐘 MIN: min
MONTH: MINS: mins
MONTHS: MONTH: month
SEC: MONTHS: months
SECS: SEC: sec
SECS: secs
TIMEDIFFAGO: '{difference} ago' TIMEDIFFAGO: '{difference} ago'
TIMEDIFFIN: 'in {difference}' TIMEDIFFIN: 'in {difference}'
YEAR: YEAR: year
YEARS: YEARS: years
DateField: DateField:
NOTSET: 'not set' NOTSET: 'not set'
TODAY: today TODAY: today
@ -198,16 +202,18 @@ zh_TW:
TEXT2: 'password reset link' TEXT2: 'password reset link'
TEXT3: for TEXT3: for
Form: Form:
FIELDISREQUIRED: '必須要填 %s' CSRF_FAILED_MESSAGE: 'There seems to have been a technical problem. Please click the back button, refresh your browser, and try again.'
FIELDISREQUIRED: '{name} is required'
SubmitBtnLabel: Go SubmitBtnLabel: Go
VALIDATIONCREDITNUMBER: 'Please ensure you have entered the {number} credit card number correctly' VALIDATIONCREDITNUMBER: 'Please ensure you have entered the {number} credit card number correctly'
VALIDATIONNOTUNIQUE: 您輸入的數值並不是獨特的。 VALIDATIONNOTUNIQUE: '您輸入的數值並不是獨特的。'
VALIDATIONPASSWORDSDONTMATCH: 密碼不相配 VALIDATIONPASSWORDSDONTMATCH: '密碼不相配'
VALIDATIONPASSWORDSNOTEMPTY: 密碼不能是空的 VALIDATIONPASSWORDSNOTEMPTY: 密碼不能是空的
VALIDATIONSTRONGPASSWORD: 'Passwords must have at least one digit and one alphanumeric character' VALIDATIONSTRONGPASSWORD: 'Passwords must have at least one digit and one alphanumeric character'
VALIDATOR: Validator VALIDATOR: Validator
VALIDCURRENCY: 'Please enter a valid currency' VALIDCURRENCY: 'Please enter a valid currency'
FormField: FormField:
Example: 'e.g. %s'
NONE: none NONE: none
GridAction: GridAction:
DELETE_DESCRIPTION: Delete DELETE_DESCRIPTION: Delete
@ -230,6 +236,7 @@ zh_TW:
ResetFilter: Reset ResetFilter: Reset
GridFieldAction_Delete: GridFieldAction_Delete:
DeletePermissionsFailure: 'No delete permissions' DeletePermissionsFailure: 'No delete permissions'
EditPermissionsFailure: 'No permission to unlink record'
GridFieldDetailForm: GridFieldDetailForm:
CancelBtn: Cancel CancelBtn: Cancel
Create: Create Create: Create
@ -237,7 +244,9 @@ zh_TW:
DeletePermissionsFailure: 'No delete permissions' DeletePermissionsFailure: 'No delete permissions'
Deleted: 'Deleted %s %s' Deleted: 'Deleted %s %s'
Save: Save Save: Save
Saved: 'Saved %s %s' Saved: 'Saved {name} {link}'
GridFieldEditButton.ss:
EDIT: Edit
GridFieldItemEditView.ss: null GridFieldItemEditView.ss: null
Group: Group:
AddRole: 'Add a role for this group' AddRole: 'Add a role for this group'
@ -267,16 +276,17 @@ zh_TW:
ADDURL: 'Add URL' ADDURL: 'Add URL'
ADJUSTDETAILSDIMENSIONS: 'Details &amp; dimensions' ADJUSTDETAILSDIMENSIONS: 'Details &amp; dimensions'
ANCHORVALUE: Anchor ANCHORVALUE: Anchor
BUTTONADDURL: 'Add url'
BUTTONINSERT: Insert BUTTONINSERT: Insert
BUTTONINSERTLINK: 插入連結 BUTTONINSERTLINK: '插入連結'
BUTTONREMOVELINK: 移除連結 BUTTONREMOVELINK: 移除連結
BUTTONUpdate: Update BUTTONUpdate: Update
CAPTIONTEXT: 'Caption text' CAPTIONTEXT: 'Caption text'
CSSCLASS: 對齊/樣式 CSSCLASS: 對齊/樣式
CSSCLASSCENTER: 獨立置中 CSSCLASSCENTER: 獨立置中
CSSCLASSLEFT: 靠左被字包圍。 CSSCLASSLEFT: '靠左被字包圍。'
CSSCLASSLEFTALONE: 'On the left, on its own.' CSSCLASSLEFTALONE: 'On the left, on its own.'
CSSCLASSRIGHT: 靠右被字包圍。 CSSCLASSRIGHT: '靠右被字包圍。'
DETAILS: Details DETAILS: Details
EMAIL: 電子郵件地址 EMAIL: 電子郵件地址
FILE: 檔案 FILE: 檔案
@ -295,7 +305,7 @@ zh_TW:
IMAGETITLETEXTDESC: 'For additional information about the image' IMAGETITLETEXTDESC: 'For additional information about the image'
IMAGEWIDTHPX: IMAGEWIDTHPX:
INSERTMEDIA: 'Insert Media' INSERTMEDIA: 'Insert Media'
LINK: 插入或編輯選取的連結 LINK: '插入或編輯選取的連結'
LINKANCHOR: 'Anchor on this page' LINKANCHOR: 'Anchor on this page'
LINKDESCR: 連結敘述 LINKDESCR: 連結敘述
LINKEMAIL: 電子郵件地址 LINKEMAIL: 電子郵件地址
@ -304,7 +314,7 @@ zh_TW:
LINKINTERNAL: 此網站 LINKINTERNAL: 此網站
LINKOPENNEWWIN: 在新視窗打開連結 LINKOPENNEWWIN: 在新視窗打開連結
LINKTO: 連結至 LINKTO: 連結至
PAGE: 網頁 PAGE: '網頁'
URL: 網址 URL: 網址
URLNOTANOEMBEDRESOURCE: 'The URL ''{url}'' could not be turned into a media resource.' URLNOTANOEMBEDRESOURCE: 'The URL ''{url}'' could not be turned into a media resource.'
UpdateMEDIA: 'Update Media' UpdateMEDIA: 'Update Media'
@ -323,15 +333,18 @@ zh_TW:
DELETED: Deleted. DELETED: Deleted.
DropdownBatchActionsDefault: Actions DropdownBatchActionsDefault: Actions
HELP: 說明 HELP: 說明
PAGETYPE: 網頁類型: PAGETYPE: '網頁類型:'
PERMAGAIN: 您已被登出,請在下面重新登入。 PERMAGAIN: '您已被登出,請在下面重新登入。'
PERMALREADY: 抱歉,您沒有權力使用這個部分。您可以用別的帳號登入。 PERMALREADY: '抱歉,您沒有權力使用這個部分。您可以用別的帳號登入。'
PERMDEFAULT: 請選擇一個認證方法並登入。 PERMDEFAULT: '請選擇一個認證方法並登入。'
PLEASESAVE: 請儲存:這個網頁沒有被更新因為尚未被儲存。 PLEASESAVE: '請儲存:這個網頁沒有被更新因為尚未被儲存。'
PreviewButton: Preview PreviewButton: Preview
REORGANISATIONSUCCESSFUL: 'Reorganised the site tree successfully.' REORGANISATIONSUCCESSFUL: 'Reorganised the site tree successfully.'
SAVEDUP: Saved. SAVEDUP: Saved.
VersionUnknown: unknown ShowAsList: 'show as list'
TooManyPages: 'Too many pages'
ValidationError: 'Validation error'
VersionUnknown: Unknown
LeftAndMain_Menu.ss: LeftAndMain_Menu.ss:
Hello: Hi Hello: Hi
LOGOUT: 'Log out' LOGOUT: 'Log out'
@ -344,8 +357,8 @@ zh_TW:
Member: Member:
ADDGROUP: 'Add group' ADDGROUP: 'Add group'
BUTTONCHANGEPASSWORD: 更改密碼 BUTTONCHANGEPASSWORD: 更改密碼
BUTTONLOGIN: 登入 BUTTONLOGIN: '登入'
BUTTONLOGINOTHER: 用別的帳戶登入 BUTTONLOGINOTHER: '用別的帳戶登入'
BUTTONLOSTPASSWORD: 忘記密碼 BUTTONLOSTPASSWORD: 忘記密碼
CANTEDIT: 'You don''t have permission to do that' CANTEDIT: 'You don''t have permission to do that'
CONFIRMNEWPASSWORD: 確認新密碼 CONFIRMNEWPASSWORD: 確認新密碼
@ -357,7 +370,7 @@ zh_TW:
EMPTYNEWPASSWORD: 'The new password can''t be empty, please try again' EMPTYNEWPASSWORD: 'The new password can''t be empty, please try again'
ENTEREMAIL: 'Please enter an email address to get a password reset link.' ENTEREMAIL: 'Please enter an email address to get a password reset link.'
ERRORLOCKEDOUT: 'Your account has been temporarily disabled because of too many failed attempts at logging in. Please try again in 20 minutes.' ERRORLOCKEDOUT: 'Your account has been temporarily disabled because of too many failed attempts at logging in. Please try again in 20 minutes.'
ERRORNEWPASSWORD: 新密碼不相配,請再試一次。 ERRORNEWPASSWORD: '新密碼不相配,請再試一次。'
ERRORPASSWORDNOTMATCH: 舊密碼不對,請再試一次。 ERRORPASSWORDNOTMATCH: 舊密碼不對,請再試一次。
ERRORWRONGCRED: 密碼或電子郵件地址錯誤。請再是一次。 ERRORWRONGCRED: 密碼或電子郵件地址錯誤。請再是一次。
FIRSTNAME: FIRSTNAME:
@ -407,6 +420,7 @@ zh_TW:
TWODIGITMONTH: 'Two-digit month (01=January, etc.)' TWODIGITMONTH: 'Two-digit month (01=January, etc.)'
TWODIGITSECOND: 'Two digits of second (00 through 59)' TWODIGITSECOND: 'Two digits of second (00 through 59)'
TWODIGITYEAR: 'Two-digit year' TWODIGITYEAR: 'Two-digit year'
Toggle: 'Show formatting help'
MemberImportForm: MemberImportForm:
Help1: '<p>Import users in <em>CSV format</em> (comma-separated values). <small><a href="#" class="toggle-advanced">Show advanced usage</a></small></p>' Help1: '<p>Import users in <em>CSV format</em> (comma-separated values). <small><a href="#" class="toggle-advanced">Show advanced usage</a></small></p>'
Help2: '<div class="advanced"> <h4>Advanced usage</h4> <ul> <li>Allowed columns: <em>%s</em></li> <li>Existing users are matched by their unique <em>Code</em> property, and updated with any new values from the imported file.</li> <li>Groups can be assigned by the <em>Groups</em> column. Groups are identified by their <em>Code</em> property, multiple groups can be separated by comma. Existing group memberships are not cleared.</li> </ul></div>' Help2: '<div class="advanced"> <h4>Advanced usage</h4> <ul> <li>Allowed columns: <em>%s</em></li> <li>Existing users are matched by their unique <em>Code</em> property, and updated with any new values from the imported file.</li> <li>Groups can be assigned by the <em>Groups</em> column. Groups are identified by their <em>Code</em> property, multiple groups can be separated by comma. Existing group memberships are not cleared.</li> </ul></div>'
@ -421,7 +435,7 @@ zh_TW:
ModelAdmin: ModelAdmin:
DELETE: Delete DELETE: Delete
DELETEDRECORDS: 'Deleted {count} records.' DELETEDRECORDS: 'Deleted {count} records.'
EMPTYBEFOREIMPORT: 'Clear Database before import' EMPTYBEFOREIMPORT: 'Replace data'
IMPORT: 'Import from CSV' IMPORT: 'Import from CSV'
IMPORTEDRECORDS: 'Imported {count} records.' IMPORTEDRECORDS: 'Imported {count} records.'
NOCSVFILE: 'Please browse for a CSV file to import' NOCSVFILE: 'Please browse for a CSV file to import'
@ -474,23 +488,23 @@ zh_TW:
PERMISSIONS_CATEGORY: 'Roles and access permissions' PERMISSIONS_CATEGORY: 'Roles and access permissions'
UserPermissionsIntro: 'Assigning groups to this user will adjust the permissions they have. See the groups section for details of permissions on individual groups.' UserPermissionsIntro: 'Assigning groups to this user will adjust the permissions they have. See the groups section for details of permissions on individual groups.'
PhoneNumberField: PhoneNumberField:
VALIDATION: 請輸入有效的電話號碼 VALIDATION: '請輸入有效的電話號碼'
RelationComplexTableField.ss: RelationComplexTableField.ss:
ADD: Add ADD: Add
CSVEXPORT: 'Export to CSV' CSVEXPORT: 'Export to CSV'
NOTFOUND: 'No items found' NOTFOUND: 'No items found'
Security: Security:
ALREADYLOGGEDIN: 你不能瀏覽此頁。請用別的帳戶登入。 ALREADYLOGGEDIN: '你不能瀏覽此頁。請用別的帳戶登入。'
BUTTONSEND: 寄給我密碼重設網址。 BUTTONSEND: 寄給我密碼重設網址。
CHANGEPASSWORDBELOW: 請在下面更改密碼。 CHANGEPASSWORDBELOW: 請在下面更改密碼。
CHANGEPASSWORDHEADER: 更改密碼 CHANGEPASSWORDHEADER: 更改密碼
ENTERNEWPASSWORD: 請輸入新的密碼。 ENTERNEWPASSWORD: '請輸入新的密碼。'
ERRORPASSWORDPERMISSION: 你必須先登入才能改密碼! ERRORPASSWORDPERMISSION: '你必須先登入才能改密碼!'
LOGGEDOUT: 你已登出。您在下面再登入一次。 LOGGEDOUT: '你已登出。您在下面再登入一次。'
LOGIN: 'Log in' LOGIN: 'Log in'
NOTEPAGESECURED: 那的網頁是被保護的。請先登入。 NOTEPAGESECURED: '那的網頁是被保護的。請先登入。'
NOTERESETLINKINVALID: '<p>The password reset link is invalid or expired.</p><p>You can request a new one <a href="{link1}">here</a> or change your password after you <a href="{link2}">logged in</a>.</p>' NOTERESETLINKINVALID: '<p>The password reset link is invalid or expired.</p><p>You can request a new one <a href="{link1}">here</a> or change your password after you <a href="{link2}">logged in</a>.</p>'
NOTERESETPASSWORD: 請輸入您的電子郵件。我們將寄給你重設密媽的網址。 NOTERESETPASSWORD: '請輸入您的電子郵件。我們將寄給你重設密媽的網址。'
PASSWORDSENTHEADER: 'Password reset link sent to ''{email}''' PASSWORDSENTHEADER: 'Password reset link sent to ''{email}'''
PASSWORDSENTTEXT: 'Thank you! A reset link has been sent to ''{email}'', provided an account exists for this email address.' PASSWORDSENTTEXT: 'Thank you! A reset link has been sent to ''{email}'', provided an account exists for this email address.'
SecurityAdmin: SecurityAdmin:
@ -515,7 +529,20 @@ zh_TW:
BtnImport: 'Import from CSV' BtnImport: 'Import from CSV'
FileFieldLabel: 'CSV File <small>(Allowed extensions: *.csv)</small>' FileFieldLabel: 'CSV File <small>(Allowed extensions: *.csv)</small>'
SilverStripeNavigator: SilverStripeNavigator:
Auto: Auto
ChangeViewMode: 'Change view mode'
Desktop: Desktop
DualWindowView: 'Dual Window'
Edit: Edit Edit: Edit
EditView: 'Edit mode'
Mobile: Mobile
PreviewState: 'Preview State'
PreviewView: 'Preview mode'
Responsive: Responsive
SplitView: 'Split mode'
Tablet: Tablet
ViewDeviceWidth: 'Select a preview width'
Width: width
SimpleImageField: SimpleImageField:
NOUPLOAD: 沒有上傳圖片 NOUPLOAD: 沒有上傳圖片
SiteTree: SiteTree:
@ -551,6 +578,8 @@ zh_TW:
ATTACHFILE: 'Attach a file' ATTACHFILE: 'Attach a file'
ATTACHFILES: 'Attach files' ATTACHFILES: 'Attach files'
AttachFile: 'Attach file(s)' AttachFile: 'Attach file(s)'
CHOOSEANOTHERFILE: 'Choose another file'
CHOOSEANOTHERINFO: 'Replace this file with another one from the file store'
DELETE: 'Delete from files' DELETE: 'Delete from files'
DELETEINFO: 'Permanently delete this file from the file store' DELETEINFO: 'Permanently delete this file from the file store'
DOEDIT: Save DOEDIT: Save
@ -565,12 +594,15 @@ zh_TW:
FROMFILES: 'From files' FROMFILES: 'From files'
HOTLINKINFO: 'Info: This image will be hotlinked. Please ensure you have permissions from the original site creator to do so.' HOTLINKINFO: 'Info: This image will be hotlinked. Please ensure you have permissions from the original site creator to do so.'
MAXNUMBEROFFILES: 'Max number of {count} file(s) exceeded.' MAXNUMBEROFFILES: 'Max number of {count} file(s) exceeded.'
MAXNUMBEROFFILESONE: 'Can only upload one file'
MAXNUMBEROFFILESSHORT: 'Can only upload {count} files' MAXNUMBEROFFILESSHORT: 'Can only upload {count} files'
OVERWRITEWARNING: 'File with the same name already exists'
REMOVE: Remove REMOVE: Remove
REMOVEERROR: 'Error removing file' REMOVEERROR: 'Error removing file'
REMOVEINFO: 'Remove this file from here, but do not delete it from the file store' REMOVEINFO: 'Remove this file from here, but do not delete it from the file store'
STARTALL: 'Start all' STARTALL: 'Start all'
STARTALLINFO: 'Start all uploads' STARTALLINFO: 'Start all uploads'
Saved: Saved Saved: Saved
UPLOADSINTO: 'saves into /{path}'
Versioned: Versioned:
has_many_Versions: Versions has_many_Versions: Versions

View File

@ -426,10 +426,13 @@ class DataList extends ViewableData implements SS_List, SS_Filterable, SS_Sortab
} }
/** /**
* Translates a Object relation name to a Database name and apply the relation join to * Translates a {@link Object} relation name to a Database name and apply
* the query. Throws an InvalidArgumentException if the $field doesn't correspond to a relation * the relation join to the query. Throws an InvalidArgumentException if
* the $field doesn't correspond to a relation.
* *
* @throws InvalidArgumentException
* @param string $field * @param string $field
*
* @return string * @return string
*/ */
public function getRelationName($field) { public function getRelationName($field) {
@ -445,9 +448,11 @@ class DataList extends ViewableData implements SS_List, SS_Filterable, SS_Sortab
if(strpos($field,'.') === false) { if(strpos($field,'.') === false) {
return '"'.$field.'"'; return '"'.$field.'"';
} }
$relations = explode('.', $field); $relations = explode('.', $field);
$fieldName = array_pop($relations); $fieldName = array_pop($relations);
$relationModelName = $this->dataQuery->applyRelation($field); $relationModelName = $this->dataQuery->applyRelation($field);
return '"'.$relationModelName.'"."'.$fieldName.'"'; return '"'.$relationModelName.'"."'.$fieldName.'"';
} }
@ -466,10 +471,13 @@ class DataList extends ViewableData implements SS_List, SS_Filterable, SS_Sortab
} else { } else {
$className = 'ExactMatchFilter'; $className = 'ExactMatchFilter';
} }
if(!class_exists($className)) { if(!class_exists($className)) {
$className = 'ExactMatchFilter'; $className = 'ExactMatchFilter';
array_unshift($modifiers, $filter); array_unshift($modifiers, $filter);
} }
$t = new $className($field, $value, $modifiers); $t = new $className($field, $value, $modifiers);
return $this->alterDataQuery(array($t, 'apply')); return $this->alterDataQuery(array($t, 'apply'));

View File

@ -499,7 +499,7 @@ class DataObject extends ViewableData implements DataObjectInterface, i18nEntity
} }
} }
} else { //one-to-one relation } else { //one-to-one relation
$destinationObject->$name = $relations; $destinationObject->{"{$name}ID"} = $relations->ID;
} }
} }
} }
@ -2568,7 +2568,7 @@ class DataObject extends ViewableData implements DataObjectInterface, i18nEntity
$results = $this->extend($methodName, $member); $results = $this->extend($methodName, $member);
if($results && is_array($results)) { if($results && is_array($results)) {
// Remove NULLs // Remove NULLs
$results = array_filter($results, array($this,'isNotNull')); $results = array_filter($results, function($v) {return !is_null($v);});
// If there are any non-NULL responses, then return the lowest one of them. // If there are any non-NULL responses, then return the lowest one of them.
// If any explicitly deny the permission, then we don't get access // If any explicitly deny the permission, then we don't get access
if($results) return min($results); if($results) return min($results);
@ -2576,16 +2576,6 @@ class DataObject extends ViewableData implements DataObjectInterface, i18nEntity
return null; return null;
} }
/**
* Helper functon for extendedCan
*
* @param Mixed $value
* @return boolean
*/
private function isNotNull($value) {
return !is_null($value);
}
/** /**
* @param Member $member * @param Member $member
* @return boolean * @return boolean
@ -2743,12 +2733,20 @@ class DataObject extends ViewableData implements DataObjectInterface, i18nEntity
$relations = explode('.', $fieldName); $relations = explode('.', $fieldName);
$fieldName = array_pop($relations); $fieldName = array_pop($relations);
foreach($relations as $relation) { foreach($relations as $relation) {
// Bail if any of the below sets a $component to a null object // Inspect $component for element $relation
if($component instanceof SS_List && !method_exists($component, $relation)) { if($component->hasMethod($relation)) {
$component = $component->relation($relation); // Check nested method
// Just call the method and hope for the best
} else {
$component = $component->$relation(); $component = $component->$relation();
} elseif($component instanceof SS_List) {
// Select adjacent relation from DataList
$component = $component->relation($relation);
} elseif($component instanceof DataObject
&& ($dbObject = $component->dbObject($relation))
) {
// Select db object
$component = $dbObject;
} else {
user_error("$relation is not a relation/field on ".get_class($component), E_USER_ERROR);
} }
} }
} }

View File

@ -350,7 +350,7 @@ class Image extends File {
* @param integer $height The height to size to * @param integer $height The height to size to
* @return Image * @return Image
*/ */
public function PaddedImage($width, $height, $backgroundColor=null) { public function PaddedImage($width, $height, $backgroundColor='FFFFFF') {
return $this->isSize($width, $height) return $this->isSize($width, $height)
? $this ? $this
: $this->getFormattedImage('PaddedImage', $width, $height, $backgroundColor); : $this->getFormattedImage('PaddedImage', $width, $height, $backgroundColor);
@ -364,7 +364,7 @@ class Image extends File {
* @param integer $height The height to size to * @param integer $height The height to size to
* @return Image_Backend * @return Image_Backend
*/ */
public function generatePaddedImage(Image_Backend $backend, $width, $height, $backgroundColor=null) { public function generatePaddedImage(Image_Backend $backend, $width, $height, $backgroundColor='FFFFFF') {
return $backend->paddedResize($width, $height, $backgroundColor); return $backend->paddedResize($width, $height, $backgroundColor);
} }

View File

@ -12,19 +12,19 @@ class MySQLDatabase extends SS_Database {
* Connection to the DBMS. * Connection to the DBMS.
* @var resource * @var resource
*/ */
private $dbConn; protected $dbConn;
/** /**
* True if we are connected to a database. * True if we are connected to a database.
* @var boolean * @var boolean
*/ */
private $active; protected $active;
/** /**
* The name of the database. * The name of the database.
* @var string * @var string
*/ */
private $database; protected $database;
/** /**
* @config * @config
@ -32,7 +32,7 @@ class MySQLDatabase extends SS_Database {
*/ */
private static $connection_charset = null; private static $connection_charset = null;
private $supportsTransactions = true; protected $supportsTransactions = true;
/** /**
* Sets the character set for the MySQL database connection. * Sets the character set for the MySQL database connection.
@ -931,7 +931,7 @@ class MySQLDatabase extends SS_Database {
$list = new PaginatedList(new ArrayList($objects)); $list = new PaginatedList(new ArrayList($objects));
$list->setPageStart($start); $list->setPageStart($start);
$list->setPageLEngth($pageLength); $list->setPageLength($pageLength);
$list->setTotalItems($totalCount); $list->setTotalItems($totalCount);
// The list has already been limited by the query above // The list has already been limited by the query above
@ -1221,13 +1221,13 @@ class MySQLQuery extends SS_Query {
* The MySQLDatabase object that created this result set. * The MySQLDatabase object that created this result set.
* @var MySQLDatabase * @var MySQLDatabase
*/ */
private $database; protected $database;
/** /**
* The internal MySQL handle that points to the result set. * The internal MySQL handle that points to the result set.
* @var resource * @var resource
*/ */
private $handle; protected $handle;
/** /**
* Hook the result-set given into a Query class, suitable for use by SilverStripe. * Hook the result-set given into a Query class, suitable for use by SilverStripe.

View File

@ -450,6 +450,7 @@ class SQLQuery {
* Internally, limit will always be stored as a map containing the keys 'start' and 'limit' * Internally, limit will always be stored as a map containing the keys 'start' and 'limit'
* *
* @param int|string|array $limit If passed as a string or array, assumes SQL escaped data. * @param int|string|array $limit If passed as a string or array, assumes SQL escaped data.
* Only applies for positive values, or if an $offset is set as well.
* @param int $offset * @param int $offset
* *
* @throws InvalidArgumentException * @throws InvalidArgumentException
@ -461,7 +462,7 @@ class SQLQuery {
throw new InvalidArgumentException("SQLQuery::setLimit() only takes positive values"); throw new InvalidArgumentException("SQLQuery::setLimit() only takes positive values");
} }
if($limit && is_numeric($limit)) { if(is_numeric($limit) && ($limit || $offset)) {
$this->limit = array( $this->limit = array(
'start' => $offset, 'start' => $offset,
'limit' => $limit, 'limit' => $limit,

View File

@ -79,6 +79,14 @@ class Versioned extends DataExtension {
'Version' => 'Int' 'Version' => 'Int'
); );
/**
* Used to enable or disable the prepopulation of the version number cache.
* Defaults to true.
*
* @var boolean
*/
private static $prepopulate_versionnumber_cache = true;
/** /**
* Keep track of the archive tables that have been created. * Keep track of the archive tables that have been created.
* *
@ -1095,6 +1103,9 @@ class Versioned extends DataExtension {
* @param array $idList * @param array $idList
*/ */
public static function prepopulate_versionnumber_cache($class, $stage, $idList = null) { public static function prepopulate_versionnumber_cache($class, $stage, $idList = null) {
if (!Config::inst()->get('Versioned', 'prepopulate_versionnumber_cache')) {
return;
}
$filter = ""; $filter = "";
if($idList) { if($idList) {

View File

@ -134,7 +134,6 @@ body.cms.ss-uploadfield-edit-iframe, .composite.ss-assetuploadfield .details fie
.ss-uploadfield-item-info { .ss-uploadfield-item-info {
position: relative; position: relative;
line-height: 30px; line-height: 30px;
font-size: 14px;
overflow: hidden; overflow: hidden;
background-color: #5db4df; background-color: #5db4df;
@include background-image(linear-gradient(top, #5db4df 0%,#5db1dd 8%,#439bcb 50%,#3f99cd 54%,#207db6 96%,#1e7cba 100%)); @include background-image(linear-gradient(top, #5db4df 0%,#5db1dd 8%,#439bcb 50%,#3f99cd 54%,#207db6 96%,#1e7cba 100%));

View File

@ -1,151 +1,121 @@
/** form {
* Fields
*/ * {
form * { font-size: 12px;
font-size: 12px;
}
form fieldset {
margin: 0;
padding: 0;
border-style: none;
}
form .field {
clear: both;
padding: 0.2em;
margin: 0 0 0 10em;
vertical-align: middle;
}
form p.checkbox {
margin: 0 0 0 8.5em;
}
form .field.nolabel {
margin-left: 0;
}
form label.left {
float: left;
width: 10em;
margin-left: -10em;
}
form input.maxlength {
width: auto;
}
form .actions{
float : right;
}
form .validation,
form .error,
form .required
{
border: 1px solid #f00;
background: #fcc;
padding: 0.5em;
width: 50%;
}
form .field span.readonly {
border: 1px #CCC dotted;
background-color: #F7F7F7;
display: block;
width: 98%;
padding: 3px;
margin:5px 0;
}
form .indicator.inline {
display: inline;
margin-left: 5px;
vertical-align: middle;
}
form .indicator.block {
display: inline;
}
/* Emulating link styling for actions requiring lesser attention, e.g. "cancel" FormActions */
form button.minorAction {
background: none;
padding: 0;
border: 0;
color: #0074C6;
text-decoration: underline;
}
/**
* Composite Fields - raw concatenation of fields for programmatic purposes.
*/
.right form div.CompositeField {
margin-left: 7.5em;
}
.right form div.CompositeField div.field {
font-size: 1em;
}
.right form div.CompositeField {
clear: both;
}
.right form div.CompositeField label.left {
float: left;
width: 10em;
margin-left: -10em;
}
.right form div.column2 {
float: left;
width: 45%;
margin-right: 4%;
}
.right form div.multicolumn {
width: 100%;
float: left;
clear: left;
}
/**
* Messages
*/
form .message.notice {
background-color: #FCFFDF;
border-color: #FF9300;
}
form .message {
margin: 1em 0;
padding: 0.5em;
font-weight: bold;
border: 1px black solid;
background-color: #B9FFB9;
border-color: #00FF00;
}
form .message.warning {
background-color: #FFD2A6;
border-color: #FF9300;
} }
form .message.bad {
background-color: #FF8080; fieldset {
border-color: #FF0000; margin: 0;
padding: 0;
border-style: none;
} }
form .message.required,
form .message.validation { .field {
display:block; clear: both;
margin-top:5px; padding: 0.2em;
color:#FF9300; margin: 0 0 0 10em;
width:240px; vertical-align: middle;
border-color: #FF9300;
} }
form .message.validation {
color:#FF4040; p.checkbox {
width:240px; margin: 0 0 0 8.5em;
border-color: #FF4040;
} }
.field.nolabel {
margin-left: 0;
}
label.left {
float: left;
width: 10em;
margin-left: -10em;
}
input.maxlength {
width: auto;
}
.actions{
float : right;
}
.validation, .error, .required {
border: 1px solid #f00;
background: #fcc;
padding: 0.5em;
width: 50%;
}
.field span.readonly {
border: 1px #CCC dotted;
background-color: #F7F7F7;
display: block;
width: 98%;
padding: 3px;
margin:5px 0;
}
.indicator.inline {
display: inline;
margin-left: 5px;
vertical-align: middle;
}
.indicator.block {
display: inline;
}
// Emulating link styling for actions requiring lesser attention, e.g. "cancel" FormActions
button.minorAction {
background: none;
padding: 0;
border: 0;
color: #0074C6;
text-decoration: underline;
}
/**
* Messages
*/
.message {
margin: 1em 0;
padding: 0.5em;
font-weight: bold;
border: 1px black solid;
background-color: #B9FFB9;
border-color: #00FF00;
&.notice {
background-color: #FCFFDF;
border-color: #FF9300;
}
&.warning {
background-color: #FFD2A6;
border-color: #FF9300;
}
&.bad {
background-color: #FF8080;
border-color: #FF0000;
}
&.required, &.validation {
display:block;
margin-top:5px;
color:#FF9300;
width:240px;
border-color: #FF9300;
}
&.validation {
color:#FF4040;
width:240px;
border-color: #FF4040;
}
}
}
.typography .ss-tabset ul { .typography .ss-tabset ul {
margin: 0; margin: 0;
} }

View File

@ -127,7 +127,6 @@ $gf_grid_x: 16px;
border-collapse: separate; border-collapse: separate;
border-bottom: 0 none; border-bottom: 0 none;
width: 100%; width: 100%;
margin-bottom:$gf_grid_y;
thead { thead {
color: darken($color-base, 50%); color: darken($color-base, 50%);
@ -583,6 +582,7 @@ $gf_grid_x: 16px;
margin-left:-116px; //half the width of .datagrid-pagination - centers pagination margin-left:-116px; //half the width of .datagrid-pagination - centers pagination
.pagination-page-number { .pagination-page-number {
color:$color-text-light; color:$color-text-light;
text-align: center;
@include single-text-shadow($gf_colour_text_shadow, 0px, -1px, 0); @include single-text-shadow($gf_colour_text_shadow, 0px, -1px, 0);
input { input {
width:35px; //exact width so that a four digit number can be entered width:35px; //exact width so that a four digit number can be entered
@ -641,4 +641,8 @@ $gf_grid_x: 16px;
border-right: 1px solid $gf_colour_border; border-right: 1px solid $gf_colour_border;
} }
} }
.grid-bottom-button {
margin-top:$gf_grid_y;
}
} }

View File

@ -62,20 +62,7 @@ div.TreeDropdownField {
-webkit-border-radius: 0 4px 4px 0; -webkit-border-radius: 0 4px 4px 0;
-moz-border-radius: 0 4px 4px 0; -moz-border-radius: 0 4px 4px 0;
border-radius: 0 4px 4px 0; border-radius: 0 4px 4px 0;
-moz-background-clip : padding;
-webkit-background-clip: padding-box;
background-clip: padding-box;
background: #ccc;
background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #ccc), color-stop(0.6, #eee));
background-image: -webkit-linear-gradient(center bottom, #ccc 0%, #eee 60%);
background-image: -moz-linear-gradient(center bottom, #ccc 0%, #eee 60%);
background-image: -o-linear-gradient(bottom, #ccc 0%, #eee 60%);
background-image: -ms-linear-gradient(top, #cccccc 0%,#eeeeee 60%);
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#cccccc', endColorstr='#eeeeee',GradientType=0 );
background-image: linear-gradient(top, #cccccc 0%,#eeeeee 60%);
border-left: 1px solid #aaa;
&.treedropdownfield-open-tree { &.treedropdownfield-open-tree {
background: transparent; background: transparent;
border: none; border: none;

View File

@ -10,20 +10,6 @@
clear: both; clear: both;
} }
.ss-insert-media &{
margin-top:20px;
h4{
float:left;
}
// Stop nolabel from resetting margin on tree dropdown
&.from-CMS .nolabel.treedropdown .middleColumn{
margin-left:184px;
}
}
.middleColumn { .middleColumn {
// TODO .middleColumn styling should probably be theme specific (eg cms ui will look different than blackcandy) // TODO .middleColumn styling should probably be theme specific (eg cms ui will look different than blackcandy)
// so we should move this style into the cms and black candy files // so we should move this style into the cms and black candy files
@ -104,7 +90,7 @@
display: block; display: block;
float: left; float: left;
margin: 0 10px 6px 0; margin: 0 10px 6px 0;
&.ss-uploadfield-fromcomputer { &.ss-uploadfield-fromcomputer {
position: relative; position: relative;
overflow: hidden; overflow: hidden;

View File

@ -52,6 +52,7 @@ abstract class SearchFilter extends Object {
*/ */
public function __construct($fullName, $value = false, array $modifiers = array()) { public function __construct($fullName, $value = false, array $modifiers = array()) {
$this->fullName = $fullName; $this->fullName = $fullName;
// sets $this->name and $this->relation // sets $this->name and $this->relation
$this->addRelation($fullName); $this->addRelation($fullName);
$this->value = $value; $this->value = $value;
@ -161,20 +162,28 @@ abstract class SearchFilter extends Object {
*/ */
public function getDbName() { public function getDbName() {
// Special handler for "NULL" relations // Special handler for "NULL" relations
if($this->name == "NULL") return $this->name; if($this->name == "NULL") {
return $this->name;
}
// SRM: This code finds the table where the field named $this->name lives // This code finds the table where the field named $this->name lives
// Todo: move to somewhere more appropriate, such as DataMapper, the magical class-to-be? // Todo: move to somewhere more appropriate, such as DataMapper, the
// magical class-to-be?
$candidateClass = $this->model; $candidateClass = $this->model;
while($candidateClass != 'DataObject') { while($candidateClass != 'DataObject') {
if(DataObject::has_own_table($candidateClass) if(DataObject::has_own_table($candidateClass)
&& singleton($candidateClass)->hasOwnTableDatabaseField($this->name)) { && singleton($candidateClass)->hasOwnTableDatabaseField($this->name)) {
break; break;
} }
$candidateClass = get_parent_class($candidateClass); $candidateClass = get_parent_class($candidateClass);
} }
if($candidateClass == 'DataObject') { if($candidateClass == 'DataObject') {
user_error("Couldn't find field $this->name in any of $this->model's tables.", E_USER_ERROR); // fallback to the provided name in the event of a joined column
// name (as the candidate class doesn't check joined records)
return $this->fullName;
} }
return "\"$candidateClass\".\"$this->name\""; return "\"$candidateClass\".\"$this->name\"";

View File

@ -25,7 +25,7 @@ class ChangePasswordForm extends Form {
} else { } else {
$backURL = Session::get('BackURL'); $backURL = Session::get('BackURL');
} }
if(!$fields) { if(!$fields) {
$fields = new FieldList(); $fields = new FieldList();
@ -67,7 +67,8 @@ class ChangePasswordForm extends Form {
_t('Member.ERRORPASSWORDNOTMATCH', "Your current password does not match, please try again"), _t('Member.ERRORPASSWORDNOTMATCH', "Your current password does not match, please try again"),
"bad" "bad"
); );
$this->controller->redirectBack(); // redirect back to the form, instead of using redirectBack() which could send the user elsewhere.
$this->controller->redirect($this->controller->Link('changepassword'));
return; return;
} }
} }
@ -91,7 +92,9 @@ class ChangePasswordForm extends Form {
$this->sessionMessage( $this->sessionMessage(
_t('Member.EMPTYNEWPASSWORD', "The new password can't be empty, please try again"), _t('Member.EMPTYNEWPASSWORD', "The new password can't be empty, please try again"),
"bad"); "bad");
$this->controller->redirectBack();
// redirect back to the form, instead of using redirectBack() which could send the user elsewhere.
$this->controller->redirect($this->controller->Link('changepassword'));
return; return;
} }
else if($data['NewPassword1'] == $data['NewPassword2']) { else if($data['NewPassword1'] == $data['NewPassword2']) {
@ -127,7 +130,9 @@ class ChangePasswordForm extends Form {
), ),
"bad" "bad"
); );
$this->controller->redirectBack();
// redirect back to the form, instead of using redirectBack() which could send the user elsewhere.
$this->controller->redirect($this->controller->Link('changepassword'));
} }
} else { } else {
@ -135,7 +140,9 @@ class ChangePasswordForm extends Form {
$this->sessionMessage( $this->sessionMessage(
_t('Member.ERRORNEWPASSWORD', "You have entered your new password differently, try again"), _t('Member.ERRORNEWPASSWORD', "You have entered your new password differently, try again"),
"bad"); "bad");
$this->controller->redirectBack();
// redirect back to the form, instead of using redirectBack() which could send the user elsewhere.
$this->controller->redirect($this->controller->Link('changepassword'));
} }
} }

View File

@ -210,6 +210,11 @@ class Member extends DataObject implements TemplateGlobalProvider {
public function checkPassword($password) { public function checkPassword($password) {
$result = $this->canLogIn(); $result = $this->canLogIn();
if(empty($this->Password) && $this->exists()) {
$result->error(_t('Member.NoPassword','There is no password on this member.'));
return $result;
}
$e = PasswordEncryptor::create_for_algorithm($this->PasswordEncryption); $e = PasswordEncryptor::create_for_algorithm($this->PasswordEncryption);
if(!$e->check($this->Password, $password, $this->Salt, $this)) { if(!$e->check($this->Password, $password, $this->Salt, $this)) {
$result->error(_t ( $result->error(_t (

View File

@ -60,12 +60,18 @@ class PasswordValidator extends Object {
*/ */
public function validate($password, $member) { public function validate($password, $member) {
$valid = new ValidationResult(); $valid = new ValidationResult();
if($this->minLength) { if($this->minLength) {
if(strlen($password) < $this->minLength) { if(strlen($password) < $this->minLength) {
$valid->error( $valid->error(
sprintf("Password is too short, it must be %s or more characters long.", $this->minLength), sprintf(
"TOO_SHORT" _t(
'PasswordValidator.TOOSHORT',
'Password is too short, it must be %s or more characters long'
),
$this->minLength
),
'TOO_SHORT'
); );
} }
} }
@ -74,32 +80,47 @@ class PasswordValidator extends Object {
$score = 0; $score = 0;
$missedTests = array(); $missedTests = array();
foreach($this->testNames as $name) { foreach($this->testNames as $name) {
if(preg_match(self::config()->character_strength_tests[$name], $password)) $score++; if(preg_match(self::config()->character_strength_tests[$name], $password)) {
else $missedTests[] = $name; $score++;
} else {
$missedTests[] = _t(
'PasswordValidator.STRENGTHTEST' . strtoupper($name),
$name,
'The user needs to add this to their password for more complexity'
);
}
} }
if($score < $this->minScore) { if($score < $this->minScore) {
$valid->error( $valid->error(
"You need to increase the strength of your passwords by adding some of the following characters: " sprintf(
. implode(", ", $missedTests), _t(
"LOW_CHARACTER_STRENGTH" 'PasswordValidator.LOWCHARSTRENGTH',
'Please increase password strength by adding some of the following characters: %s'
),
implode(', ', $missedTests)
),
'LOW_CHARACTER_STRENGTH'
); );
} }
} }
if($this->historicalPasswordCount) { if($this->historicalPasswordCount) {
$previousPasswords = DataObject::get( $previousPasswords = DataObject::get(
"MemberPassword", "MemberPassword",
"\"MemberID\" = $member->ID", "\"MemberID\" = $member->ID",
"\"Created\" DESC, \"ID\" Desc", "\"Created\" DESC, \"ID\" DESC",
"", "",
$this->historicalPasswordCount $this->historicalPasswordCount
); );
if($previousPasswords) foreach($previousPasswords as $previousPasswords) { if($previousPasswords) foreach($previousPasswords as $previousPasswords) {
if($previousPasswords->checkPassword($password)) { if($previousPasswords->checkPassword($password)) {
$valid->error( $valid->error(
"You've already used that password in the past, please choose a new password", _t(
"PREVIOUS_PASSWORD" 'PasswordValidator.PREVPASSWORD',
'You\'ve already used that password in the past, please choose a new password'
),
'PREVIOUS_PASSWORD'
); );
break; break;
} }

View File

View File

View File

@ -5,6 +5,7 @@ namespace SilverStripe\Framework\Test\Behaviour;
use SilverStripe\BehatExtension\Context\SilverStripeContext, use SilverStripe\BehatExtension\Context\SilverStripeContext,
SilverStripe\BehatExtension\Context\BasicContext, SilverStripe\BehatExtension\Context\BasicContext,
SilverStripe\BehatExtension\Context\LoginContext, SilverStripe\BehatExtension\Context\LoginContext,
SilverStripe\BehatExtension\Context\FixtureContext,
SilverStripe\Framework\Test\Behaviour\CmsFormsContext, SilverStripe\Framework\Test\Behaviour\CmsFormsContext,
SilverStripe\Framework\Test\Behaviour\CmsUiContext; SilverStripe\Framework\Test\Behaviour\CmsUiContext;
@ -20,6 +21,12 @@ require_once 'PHPUnit/Framework/Assert/Functions.php';
*/ */
class FeatureContext extends SilverStripeContext class FeatureContext extends SilverStripeContext
{ {
/**
* @var FixtureFactory
*/
protected $fixtureFactory;
/** /**
* Initializes context. * Initializes context.
* Every scenario gets it's own context object. * Every scenario gets it's own context object.
@ -28,11 +35,46 @@ class FeatureContext extends SilverStripeContext
*/ */
public function __construct(array $parameters) public function __construct(array $parameters)
{ {
parent::__construct($parameters);
$this->useContext('BasicContext', new BasicContext($parameters)); $this->useContext('BasicContext', new BasicContext($parameters));
$this->useContext('LoginContext', new LoginContext($parameters)); $this->useContext('LoginContext', new LoginContext($parameters));
$this->useContext('CmsFormsContext', new CmsFormsContext($parameters)); $this->useContext('CmsFormsContext', new CmsFormsContext($parameters));
$this->useContext('CmsUiContext', new CmsUiContext($parameters)); $this->useContext('CmsUiContext', new CmsUiContext($parameters));
parent::__construct($parameters); $fixtureContext = new FixtureContext($parameters);
$fixtureContext->setFixtureFactory($this->getFixtureFactory());
$this->useContext('FixtureContext', $fixtureContext);
// Use blueprints to set user name from identifier
$factory = $fixtureContext->getFixtureFactory();
$blueprint = \Injector::inst()->create('FixtureBlueprint', 'Member');
$blueprint->addCallback('beforeCreate', function($identifier, &$data, &$fixtures) {
if(!isset($data['FirstName'])) $data['FirstName'] = $identifier;
});
$factory->define('Member', $blueprint);
}
public function setMinkParameters(array $parameters)
{
parent::setMinkParameters($parameters);
if(isset($parameters['files_path'])) {
$this->getSubcontext('FixtureContext')->setFilesPath($parameters['files_path']);
}
}
/**
* @return FixtureFactory
*/
public function getFixtureFactory() {
if(!$this->fixtureFactory) {
$this->fixtureFactory = \Injector::inst()->create('BehatFixtureFactory');
}
return $this->fixtureFactory;
}
public function setFixtureFactory(FixtureFactory $factory) {
$this->fixtureFactory = $factory;
} }
} }

View File

@ -6,8 +6,9 @@ use Behat\Behat\Context\ClosuredContextInterface,
Behat\Behat\Context\TranslatedContextInterface, Behat\Behat\Context\TranslatedContextInterface,
Behat\Behat\Context\BehatContext, Behat\Behat\Context\BehatContext,
Behat\Behat\Context\Step, Behat\Behat\Context\Step,
Behat\Behat\Exception\PendingException; Behat\Behat\Exception\PendingException,
use Behat\Gherkin\Node\PyStringNode, Behat\Mink\Exception\ElementHtmlException,
Behat\Gherkin\Node\PyStringNode,
Behat\Gherkin\Node\TableNode; Behat\Gherkin\Node\TableNode;
// PHPUnit // PHPUnit
@ -88,15 +89,25 @@ class CmsFormsContext extends BehatContext
} }
/** /**
* @Then /^the "(?P<field>([^"]*))" HTML field should contain "(?P<value>([^"]*))"$/ * @Then /^the "(?P<locator>([^"]*))" HTML field should contain "(?P<html>([^"]*))"$/
*/ */
public function theHtmlFieldShouldContain($field, $value) public function theHtmlFieldShouldContain($locator, $html)
{ {
$page = $this->getSession()->getPage(); $page = $this->getSession()->getPage();
$inputField = $page->findField($field); $element = $page->findField($locator);
assertNotNull($inputField, sprintf('HTML field "%s" not found', $field)); assertNotNull($element, sprintf('HTML field "%s" not found', $locator));
$this->getMainContext()->assertElementContains('#' . $inputField->getAttribute('id'), $value); $actual = $element->getAttribute('value');
$regex = '/'.preg_quote($html, '/').'/ui';
if (!preg_match($regex, $actual)) {
$message = sprintf(
'The string "%s" was not found in the HTML of the element matching %s "%s".',
$html,
'named',
$locator
);
throw new ElementHtmlException($message, $this->getSession(), $element);
}
} }
/** /**
@ -105,7 +116,26 @@ class CmsFormsContext extends BehatContext
public function iShouldSeeAButton($text) public function iShouldSeeAButton($text)
{ {
$page = $this->getSession()->getPage(); $page = $this->getSession()->getPage();
$element = $page->find('named', array('link_or_button', "'$text'")); $els = $page->findAll('named', array('link_or_button', "'$text'"));
assertNotNull($element, sprintf('%s button not found', $text)); $matchedEl = null;
foreach($els as $el) {
if($el->isVisible()) $matchedEl = $el;
}
assertNotNull($matchedEl, sprintf('%s button not found', $text));
} }
/**
* @Given /^I should not see a "([^"]*)" button$/
*/
public function iShouldNotSeeAButton($text)
{
$page = $this->getSession()->getPage();
$els = $page->findAll('named', array('link_or_button', "'$text'"));
$matchedEl = null;
foreach($els as $el) {
if($el->isVisible()) $matchedEl = $el;
}
assertNull($matchedEl, sprintf('%s button found', $text));
}
} }

View File

@ -7,9 +7,10 @@ use Behat\Behat\Context\ClosuredContextInterface,
Behat\Behat\Context\BehatContext, Behat\Behat\Context\BehatContext,
Behat\Behat\Context\Step, Behat\Behat\Context\Step,
Behat\Behat\Exception\PendingException, Behat\Behat\Exception\PendingException,
Behat\Mink\Exception\ElementNotFoundException; Behat\Mink\Exception\ElementNotFoundException,
use Behat\Gherkin\Node\PyStringNode, Behat\Gherkin\Node\PyStringNode,
Behat\Gherkin\Node\TableNode; Behat\Gherkin\Node\TableNode,
Behat\Mink\Element\NodeElement;
// PHPUnit // PHPUnit
@ -310,7 +311,7 @@ class CmsUiContext extends BehatContext
} }
/** /**
* Workaround for chosen.js dropdowns which hide the original dropdown field. * Workaround for chosen.js dropdowns or tree dropdowns which hide the original dropdown field.
* *
* @When /^(?:|I )fill in the "(?P<field>(?:[^"]|\\")*)" dropdown with "(?P<value>(?:[^"]|\\")*)"$/ * @When /^(?:|I )fill in the "(?P<field>(?:[^"]|\\")*)" dropdown with "(?P<value>(?:[^"]|\\")*)"$/
* @When /^(?:|I )fill in "(?P<value>(?:[^"]|\\")*)" for the "(?P<field>(?:[^"]|\\")*)" dropdown$/ * @When /^(?:|I )fill in "(?P<value>(?:[^"]|\\")*)" for the "(?P<field>(?:[^"]|\\")*)" dropdown$/
@ -320,6 +321,12 @@ class CmsUiContext extends BehatContext
$field = $this->fixStepArgument($field); $field = $this->fixStepArgument($field);
$value = $this->fixStepArgument($value); $value = $this->fixStepArgument($value);
$nativeField = $this->getSession()->getPage()->findField($field);
if($nativeField) {
$nativeField->selectOption($value);
return;
}
// Given the fuzzy matching, we might get more than one matching field. // Given the fuzzy matching, we might get more than one matching field.
$formFields = array(); $formFields = array();
@ -338,50 +345,56 @@ class CmsUiContext extends BehatContext
); );
} }
// Find by name (incl. hidden fields)
if(!$formFields) {
$formFields = $this->getSession()->getPage()->findAll('xpath', "//*[@name='$field']");
}
assertGreaterThan(0, count($formFields), sprintf( assertGreaterThan(0, count($formFields), sprintf(
'Chosen.js dropdown named "%s" not found', 'Chosen.js dropdown named "%s" not found',
$field $field
)); ));
$containers = array(); // Traverse up to field holder
$container = null;
foreach($formFields as $formField) { foreach($formFields as $formField) {
// Traverse up to field holder $container = $this->findParentByClass($formField, 'field');
$containerCandidate = $formField; if($container) break; // Default to first visible container
do {
$containerCandidate = $containerCandidate->getParent();
} while($containerCandidate && !preg_match('/field/', $containerCandidate->getAttribute('class')));
if(
$containerCandidate
&& $containerCandidate->isVisible()
&& preg_match('/field/', $containerCandidate->getAttribute('class'))
) {
$containers[] = $containerCandidate;
}
} }
assertGreaterThan(0, count($containers), 'Chosen.js field container not found'); assertNotNull($container, 'Chosen.js field container not found');
// Default to first visible container
$container = $containers[0];
// Click on newly expanded list element, indirectly setting the dropdown value // Click on newly expanded list element, indirectly setting the dropdown value
$linkEl = $container->find('xpath', './/a[./@href]'); $linkEl = $container->find('xpath', './/a[./@href]');
assertNotNull($linkEl, 'Chosen.js link element not found'); assertNotNull($linkEl, 'Chosen.js link element not found');
$this->getSession()->wait(100); // wait for dropdown overlay to appear $this->getSession()->wait(100); // wait for dropdown overlay to appear
$linkEl->click(); $linkEl->click();
if(in_array('treedropdown', explode(' ', $container->getAttribute('class')))) {
// wait for ajax dropdown to load
$this->getSession()->wait(
5000,
"jQuery('#" . $container->getAttribute('id') . " .treedropdownfield-panel li').length > 0"
);
} else {
// wait for dropdown overlay to appear (might be animated)
$this->getSession()->wait(300);
}
$listEl = $container->find('xpath', sprintf('.//li[contains(normalize-space(string(.)), \'%s\')]', $value)); $listEl = $container->find('xpath', sprintf('.//li[contains(normalize-space(string(.)), \'%s\')]', $value));
assertNotNull($listEl, sprintf( if(null === $listEl) {
throw new \InvalidArgumentException(sprintf(
'Chosen.js list element with title "%s" not found', 'Chosen.js list element with title "%s" not found',
$value $value
)); ));
}
// Dropdown flyout might be animated $listLinkEl = $listEl->find('xpath', './/a');
// $this->getSession()->wait(1000, 'jQuery(":animated").length == 0'); if($listLinkEl) {
$this->getSession()->wait(300); $listLinkEl->click();
} else {
$listEl->click(); $listEl->click();
}
} }
/** /**
@ -395,4 +408,24 @@ class CmsUiContext extends BehatContext
{ {
return str_replace('\\"', '"', $argument); return str_replace('\\"', '"', $argument);
} }
/**
* Returns the closest parent element having a specific class attribute.
*
* @param NodeElement $el
* @param String $class
* @return Element|null
*/
protected function findParentByClass(NodeElement $el, $class) {
$container = $el->getParent();
while($container && $container->getTagName() != 'body'
) {
if($container->isVisible() && in_array($class, explode(' ', $container->getAttribute('class')))) {
return $container;
}
$container = $container->getParent();
}
return null;
}
} }

View File

@ -0,0 +1,26 @@
Feature: Insert an image into a page
As a cms author
I want to insert an image into a page
So that I can insert them into my content efficiently
Background:
Given a "page" "About Us"
Given I am logged in with "ADMIN" permissions
And I go to "/admin/pages"
Then I should see "About Us" in CMS Tree
@javascript
Scenario: I can insert images into the content
When I follow "About Us"
Then I should see an edit page form
When I press the "Insert Media" button
Then I should see "Choose files to upload..."
When I press the "From the web" button
And I fill in "RemoteURL" with "http://www.silverstripe.com/themes/sscom/images/silverstripe_logo_web.png"
And I press the "Add url" button
Then I should see "silverstripe_logo_web.png (www.silverstripe.com)" in the ".ss-assetuploadfield span.name" element
When I press the "Update" button
Then the "Content" HTML field should contain "silverstripe_logo_web.png"

View File

@ -5,37 +5,10 @@ Feature: Manage files
So that I can insert them into my content efficiently So that I can insert them into my content efficiently
Background: Background:
# Idea: We could weave the database reset into this through Given a "file" "assets/folder1/file1.jpg"
# saying 'Given there are ONLY the following...'. And a "file" "assets/folder1/folder1.1/file2.jpg"
Given there are the following Folder records And a "folder" "assets/folder2"
"""
folder1:
Filename: assets/folder1
folder1.1:
Filename: assets/folder1/folder1.1
Parent: =>Folder.folder1
folder2:
Filename: assets/folder2
Name: folder2
"""
And there are the following File records
"""
file1:
Filename: assets/folder1/file1.jpg
Name: file1.jpg
Parent: =>Folder.folder1
file2:
Filename: assets/folder1/folder1.1/file2.jpg
Name: file2.jpg
Parent: =>Folder.folder1.1
"""
And I am logged in with "ADMIN" permissions And I am logged in with "ADMIN" permissions
# Alternative fixture shortcuts, with their titles
# as shown in admin/security rather than technical permission codes.
# Just an idea for now, could be handled by YAML fixtures as well
# And I am logged in with the following permissions
# - Access to 'Pages' section
# - Access to 'Files' section
And I go to "/admin/assets" And I go to "/admin/assets"
@modal @modal
@ -76,7 +49,7 @@ Feature: Manage files
Scenario: I can change the folder of a file Scenario: I can change the folder of a file
Given I click on "folder1" in the "Files" table Given I click on "folder1" in the "Files" table
And I click on "file1" in the "folder1" table And I click on "file1" in the "folder1" table
And I fill in =>Folder.folder2 for "ParentID" And I fill in "folder2" for the "ParentID" dropdown
And I press the "Save" button And I press the "Save" button
# /show/0 is to ensure that we are on top level folder # /show/0 is to ensure that we are on top level folder
And I go to "/admin/assets/show/0" And I go to "/admin/assets/show/0"
@ -86,4 +59,4 @@ Feature: Manage files
Scenario: I can see allowed extensions help Scenario: I can see allowed extensions help
When I go to "/admin/assets/add" When I go to "/admin/assets/add"
And I follow "Show allowed extensions" And I follow "Show allowed extensions"
Then I should see "png," Then I should see "png,"

View File

@ -1,48 +1,21 @@
@database-defaults @javascript
Feature: Manage users Feature: Manage users
As a site administrator As a site administrator
I want to create and manage user accounts on my site I want to create and manage user accounts on my site
So that I can control access to the CMS So that I can control access to the CMS
Background: Background:
Given there are the following Permission records Given a "member" "Admin" belonging to "Admin Group" with "Email"="admin@test.com"
""" And a "member" "Staff" belonging to "Staff Group" with "Email"="staffmember@test.com"
admin: And the "group" "Admin Group" has permissions "Full administrative rights"
Code: ADMIN
security-admin:
Code: CMS_ACCESS_SecurityAdmin
"""
And there are the following Group records
"""
admingroup:
Title: Admin Group
Code: admin
Permissions: =>Permission.admin
staffgroup:
Title: Staff Group
Code: staffgroup
"""
And there are the following Member records
"""
admin:
FirstName: Admin
Email: admin@test.com
Groups: =>Group.admingroup
staffmember:
FirstName: Staff
Email: staffmember@test.com
Groups: =>Group.staffgroup
"""
And I am logged in with "ADMIN" permissions And I am logged in with "ADMIN" permissions
And I go to "/admin/security" And I go to "/admin/security"
@javascript
Scenario: I can list all users regardless of group Scenario: I can list all users regardless of group
When I click the "Users" CMS tab When I click the "Users" CMS tab
Then I should see "admin@test.com" in the "#Root_Users" element Then I should see "admin@test.com" in the "#Root_Users" element
And I should see "staffmember@test.com" in the "#Root_Users" element And I should see "staffmember@test.com" in the "#Root_Users" element
@javascript
Scenario: I can list all users in a specific group Scenario: I can list all users in a specific group
When I click the "Groups" CMS tab When I click the "Groups" CMS tab
# TODO Please check how performant this is # TODO Please check how performant this is
@ -50,7 +23,6 @@ Feature: Manage users
Then I should see "admin@test.com" in the "#Root_Members" element Then I should see "admin@test.com" in the "#Root_Members" element
And I should not see "staffmember@test.com" in the "#Root_Members" element And I should not see "staffmember@test.com" in the "#Root_Members" element
@javascript
Scenario: I can add a user to the system Scenario: I can add a user to the system
When I click the "Users" CMS tab When I click the "Users" CMS tab
And I press the "Add Member" button And I press the "Add Member" button
@ -64,12 +36,10 @@ Feature: Manage users
When I go to "admin/security/" When I go to "admin/security/"
Then I should see "john.doe@test.com" in the "#Root_Users" element Then I should see "john.doe@test.com" in the "#Root_Users" element
@javascript
Scenario: I can edit an existing user and add him to an existing group Scenario: I can edit an existing user and add him to an existing group
When I click the "Users" CMS tab When I click the "Users" CMS tab
And I click "staffmember@test.com" in the "#Root_Users" element And I click "staffmember@test.com" in the "#Root_Users" element
And I select "Admin Group" from "Groups" And I select "Admin Group" from "Groups"
And I additionally select "Administrators" from "Groups"
And I press the "Save" button And I press the "Save" button
Then I should see a "Saved Member" message Then I should see a "Saved Member" message
@ -78,7 +48,6 @@ Feature: Manage users
And I click "Admin Group" in the "#Root_Groups" element And I click "Admin Group" in the "#Root_Groups" element
Then I should see "staffmember@test.com" Then I should see "staffmember@test.com"
@javascript
Scenario: I can delete an existing user Scenario: I can delete an existing user
When I click the "Users" CMS tab When I click the "Users" CMS tab
And I click "staffmember@test.com" in the "#Root_Users" element And I click "staffmember@test.com" in the "#Root_Users" element

View File

@ -1,4 +1,3 @@
@database-defaults
Feature: My Profile Feature: My Profile
As a CMS user As a CMS user
I want to be able to change personal settings I want to be able to change personal settings

View File

@ -100,10 +100,24 @@ class ControllerTest extends FunctionalTest {
$response = $this->get("ControllerTest_AccessSecuredController/method2"); $response = $this->get("ControllerTest_AccessSecuredController/method2");
$this->assertEquals(200, $response->getStatusCode(), $this->assertEquals(200, $response->getStatusCode(),
'Access grante on action originally defined with empty $allowed_actions on parent controller, ' . 'Access granted on action originally defined with empty $allowed_actions on parent controller, ' .
'because it has been redefined in the subclass' 'because it has been redefined in the subclass'
); );
$response = $this->get("ControllerTest_AccessSecuredController/templateaction");
$this->assertEquals(403, $response->getStatusCode(),
'Access denied on action with $allowed_actions on defining controller, ' .
'if action is not a method but rather a template discovered by naming convention'
);
$this->session()->inst_set('loggedInAs', $adminUser->ID);
$response = $this->get("ControllerTest_AccessSecuredController/templateaction");
$this->assertEquals(200, $response->getStatusCode(),
'Access granted for logged in admin on action with $allowed_actions on defining controller, ' .
'if action is not a method but rather a template discovered by naming convention'
);
$this->session()->inst_set('loggedInAs', null);
$response = $this->get("ControllerTest_AccessSecuredController/adminonly"); $response = $this->get("ControllerTest_AccessSecuredController/adminonly");
$this->assertEquals(403, $response->getStatusCode(), $this->assertEquals(403, $response->getStatusCode(),
'Access denied on action with $allowed_actions on defining controller, ' . 'Access denied on action with $allowed_actions on defining controller, ' .
@ -349,8 +363,9 @@ class ControllerTest_Controller extends Controller implements TestOnly {
'methodaction', 'methodaction',
'stringaction', 'stringaction',
'redirectbacktest', 'redirectbacktest',
'templateaction'
); );
public function methodaction() { public function methodaction() {
return array( return array(
"Content" => "methodaction content" "Content" => "methodaction content"
@ -395,7 +410,7 @@ class ControllerTest_AccessSecuredController extends ControllerTest_AccessBaseCo
"method1", // denied because only defined in parent "method1", // denied because only defined in parent
"method2" => true, // granted because its redefined "method2" => true, // granted because its redefined
"adminonly" => "ADMIN", "adminonly" => "ADMIN",
"protectedmethod" => true, // denied because its protected 'templateaction' => 'ADMIN'
); );
public function method2() {} public function method2() {}

View File

@ -309,6 +309,8 @@ class DirectorTest extends SapphireTest {
'HTTP_X_FORWARDED_PROTOCOL', 'HTTPS', 'SSL' 'HTTP_X_FORWARDED_PROTOCOL', 'HTTPS', 'SSL'
); );
$origServer = $_SERVER;
foreach($headers as $header) { foreach($headers as $header) {
if(isset($_SERVER[$header])) { if(isset($_SERVER[$header])) {
unset($_SERVER['HTTP_X_FORWARDED_PROTOCOL']); unset($_SERVER['HTTP_X_FORWARDED_PROTOCOL']);
@ -339,6 +341,8 @@ class DirectorTest extends SapphireTest {
// https via SSL // https via SSL
$_SERVER['SSL'] = ''; $_SERVER['SSL'] = '';
$this->assertTrue(Director::is_https()); $this->assertTrue(Director::is_https());
$_SERVER = $origServer;
} }
} }

View File

@ -1,5 +1,9 @@
<?php <?php
/**
* @package framework
* @subpackage tests
*/
class DataListTest extends SapphireTest { class DataListTest extends SapphireTest {
// Borrow the model from DataObjectTest // Borrow the model from DataObjectTest
@ -207,11 +211,7 @@ class DataListTest extends SapphireTest {
$this->assertEquals($list->Count(), $count); $this->assertEquals($list->Count(), $count);
} }
public function testFilter() {
$this->markTestIncomplete();
}
public function testWhere() { public function testWhere() {
// We can use raw SQL queries with where. This is only recommended for advanced uses; // We can use raw SQL queries with where. This is only recommended for advanced uses;
// if you can, you should use filter(). // if you can, you should use filter().
@ -576,6 +576,18 @@ class DataListTest extends SapphireTest {
); );
} }
public function testFilterOnJoin() {
$list = DataObjectTest_TeamComment::get()
->leftJoin('DataObjectTest_Team',
'"DataObjectTest_Team"."ID" = "DataObjectTest_TeamComment"."TeamID"'
)->filter(array(
'Title' => 'Team 1'
));
$this->assertEquals(2, $list->count());
$this->assertEquals(array('Joe', 'Bob'), $list->column('Name'));
}
public function testFilterAndExcludeById() { public function testFilterAndExcludeById() {
$id = $this->idFromFixture('DataObjectTest_SubTeam', 'subteam1'); $id = $this->idFromFixture('DataObjectTest_SubTeam', 'subteam1');
$list = DataObjectTest_SubTeam::get()->filter('ID', $id); $list = DataObjectTest_SubTeam::get()->filter('ID', $id);

View File

@ -1,6 +1,8 @@
<?php <?php
class DataObjectDuplicationTest extends SapphireTest { class DataObjectDuplicationTest extends SapphireTest {
protected $usesDatabase = true;
protected $extraDataObjects = array( protected $extraDataObjects = array(
'DataObjectDuplicateTestClass1', 'DataObjectDuplicateTestClass1',
@ -28,6 +30,29 @@ class DataObjectDuplicationTest extends SapphireTest {
); );
} }
public function testDuplicateHasOne() {
$relationObj = new DataObjectDuplicateTestClass1();
$relationObj->text = 'class1';
$relationObj->write();
$orig = new DataObjectDuplicateTestClass2();
$orig->text = 'class2';
$orig->oneID = $relationObj->ID;
$orig->write();
$duplicate = $orig->duplicate();
$this->assertEquals($relationObj->ID, $duplicate->oneID,
'Copies has_one relationship'
);
$this->assertEquals(2, DataObjectDuplicateTestClass2::get()->Count(),
'Only creates a single duplicate'
);
$this->assertEquals(1, DataObjectDuplicateTestClass1::get()->Count(),
'Does not create duplicate of has_one relationship'
);
}
public function testDuplicateManyManyClasses() { public function testDuplicateManyManyClasses() {
//create new test classes below //create new test classes below
$one = new DataObjectDuplicateTestClass1(); $one = new DataObjectDuplicateTestClass1();

View File

@ -1103,6 +1103,10 @@ class DataObjectTest extends SapphireTest {
$newPlayer = new DataObjectTest_Player(); $newPlayer = new DataObjectTest_Player();
$this->assertNull($newPlayer->relField('Teams.First.Title')); $this->assertNull($newPlayer->relField('Teams.First.Title'));
// Test that relField works on db field manipulations
$comment = $this->objFromFixture('DataObjectTest_TeamComment', 'comment3');
$this->assertEquals("PHIL IS A UNIQUE GUY, AND COMMENTS ON TEAM2" , $comment->relField('Comment.UpperCase'));
} }
public function testRelObject() { public function testRelObject() {

View File

@ -20,7 +20,6 @@ DataObjectTest_Player:
player2: player2:
FirstName: Player 2 FirstName: Player 2
Teams: =>DataObjectTest_Team.team1,=>DataObjectTest_Team.team2 Teams: =>DataObjectTest_Team.team1,=>DataObjectTest_Team.team2
DataObjectTest_SubTeam: DataObjectTest_SubTeam:
subteam1: subteam1:
Title: Subteam 1 Title: Subteam 1
@ -33,12 +32,11 @@ DataObjectTest_SubTeam:
ExtendedHasOneRelationship: =>DataObjectTest_Player.player1 ExtendedHasOneRelationship: =>DataObjectTest_Player.player1
subteam3_with_empty_fields: subteam3_with_empty_fields:
Title: Subteam 3 Title: Subteam 3
DataObjectTest_TeamComment: DataObjectTest_TeamComment:
comment1: comment1:
Name: Joe Name: Joe
Comment: This is a team comment by Joe Comment: This is a team comment by Joe
Team: =>DataObjectTest_Team.team1 Team: =>DataObjectTest_Team.team1
comment2: comment2:
Name: Bob Name: Bob
Comment: This is a team comment by Bob Comment: This is a team comment by Bob

View File

@ -138,6 +138,39 @@ class SQLQueryTest extends SapphireTest {
$query->sql()); $query->sql());
} }
public function testNullLimit() {
$query = new SQLQuery();
$query->setFrom("MyTable");
$query->setLimit(null);
$this->assertEquals(
'SELECT * FROM MyTable',
$query->sql()
);
}
public function testZeroLimit() {
$query = new SQLQuery();
$query->setFrom("MyTable");
$query->setLimit(0);
$this->assertEquals(
'SELECT * FROM MyTable',
$query->sql()
);
}
public function testZeroLimitWithOffset() {
$query = new SQLQuery();
$query->setFrom("MyTable");
$query->setLimit(0, 99);
$this->assertEquals(
'SELECT * FROM MyTable LIMIT 0 OFFSET 99',
$query->sql()
);
}
/** /**
* @expectedException InvalidArgumentException * @expectedException InvalidArgumentException
*/ */

View File

@ -1,14 +1,16 @@
<?php <?php
/** /**
* This test class will focus on the when an search filter contains relational component, * This test class will focus on the when an search filter contains relational
* such as has_one, has_many, many_many, the SearchFilter::applyRelation($query) will add * component such as has_one, has_many, many_many, the {@link SearchFilter::applyRelation($query)}
* the right "join" clauses to $query without the component parent class missing from * will add the right "join" clauses to $query without the component parent
* "join" chain. * class missing from "join" chain.
* *
* @package framework * @package framework
* @subpackage testing * @subpackage tests
*/ */
class SearchFilterApplyRelationTest extends SapphireTest{ class SearchFilterApplyRelationTest extends SapphireTest {
protected static $fixture_file = 'SearchFilterApplyRelationTest.yml'; protected static $fixture_file = 'SearchFilterApplyRelationTest.yml';
protected $extraDataObjects = array( protected $extraDataObjects = array(
@ -109,7 +111,12 @@ class SearchFilterApplyRelationTest extends SapphireTest{
} }
} }
/**
* @package framework
* @subpackage tests
*/
class SearchFilterApplyRelationTest_DO extends DataObject implements TestOnly { class SearchFilterApplyRelationTest_DO extends DataObject implements TestOnly {
private static $has_one = array( private static $has_one = array(
'SearchFilterApplyRelationTest_HasOneGrantChild' => 'SearchFilterApplyRelationTest_HasOneGrantChild' 'SearchFilterApplyRelationTest_HasOneGrantChild' => 'SearchFilterApplyRelationTest_HasOneGrantChild'
); );
@ -123,12 +130,20 @@ class SearchFilterApplyRelationTest_DO extends DataObject implements TestOnly {
); );
} }
/**
* @package framework
* @subpackage tests
*/
class SearchFilterApplyRelationTest_HasOneParent extends DataObject implements TestOnly { class SearchFilterApplyRelationTest_HasOneParent extends DataObject implements TestOnly {
private static $db = array( private static $db = array(
"Title" => "Varchar" "Title" => "Varchar"
); );
} }
/**
* @package framework
* @subpackage tests
*/
class SearchFilterApplyRelationTest_HasOneChild extends SearchFilterApplyRelationTest_HasOneParent class SearchFilterApplyRelationTest_HasOneChild extends SearchFilterApplyRelationTest_HasOneParent
implements TestOnly { implements TestOnly {
// This is to create an seperate Table only. // This is to create an seperate Table only.
@ -137,6 +152,10 @@ class SearchFilterApplyRelationTest_HasOneChild extends SearchFilterApplyRelatio
); );
} }
/**
* @package framework
* @subpackage tests
*/
class SearchFilterApplyRelationTest_HasOneGrantChild extends SearchFilterApplyRelationTest_HasOneChild class SearchFilterApplyRelationTest_HasOneGrantChild extends SearchFilterApplyRelationTest_HasOneChild
implements TestOnly { implements TestOnly {
// This is to create an seperate Table only. // This is to create an seperate Table only.
@ -148,12 +167,20 @@ class SearchFilterApplyRelationTest_HasOneGrantChild extends SearchFilterApplyRe
); );
} }
/**
* @package framework
* @subpackage tests
*/
class SearchFilterApplyRelationTest_HasManyParent extends DataObject implements TestOnly { class SearchFilterApplyRelationTest_HasManyParent extends DataObject implements TestOnly {
private static $db = array( private static $db = array(
"Title" => "Varchar" "Title" => "Varchar"
); );
} }
/**
* @package framework
* @subpackage tests
*/
class SearchFilterApplyRelationTest_HasManyChild extends SearchFilterApplyRelationTest_HasManyParent class SearchFilterApplyRelationTest_HasManyChild extends SearchFilterApplyRelationTest_HasManyParent
implements TestOnly { implements TestOnly {
// This is to create an separate Table only. // This is to create an separate Table only.
@ -162,12 +189,20 @@ class SearchFilterApplyRelationTest_HasManyChild extends SearchFilterApplyRelati
); );
} }
/**
* @package framework
* @subpackage tests
*/
class SearchFilterApplyRelationTest_HasManyGrantChild extends SearchFilterApplyRelationTest_HasManyChild{ class SearchFilterApplyRelationTest_HasManyGrantChild extends SearchFilterApplyRelationTest_HasManyChild{
private static $has_one = array( private static $has_one = array(
"SearchFilterApplyRelationTest_DO" => "SearchFilterApplyRelationTest_DO" "SearchFilterApplyRelationTest_DO" => "SearchFilterApplyRelationTest_DO"
); );
} }
/**
* @package framework
* @subpackage tests
*/
class SearchFilterApplyRelationTest_ManyManyParent extends DataObject implements TestOnly{ class SearchFilterApplyRelationTest_ManyManyParent extends DataObject implements TestOnly{
private static $db = array( private static $db = array(
"Title" => "Varchar" "Title" => "Varchar"
@ -182,6 +217,10 @@ class SearchFilterApplyRelationTest_ManyManyChild extends SearchFilterApplyRelat
); );
} }
/**
* @package framework
* @subpackage tests
*/
class SearchFilterApplyRelationTest_ManyManyGrantChild extends SearchFilterApplyRelationTest_ManyManyChild class SearchFilterApplyRelationTest_ManyManyGrantChild extends SearchFilterApplyRelationTest_ManyManyChild
implements TestOnly { implements TestOnly {
// This is to create an seperate Table only. // This is to create an seperate Table only.

View File

@ -408,6 +408,14 @@ class Requirements_Backend {
*/ */
public $combine_js_with_jsmin = true; public $combine_js_with_jsmin = true;
/**
* Setting for whether or not a file header should be written when
* combining files.
*
* @var boolean
*/
public $write_header_comment = true;
/** /**
* @var string By default, combined files are stored in assets/_combinedfiles. * @var string By default, combined files are stored in assets/_combinedfiles.
* Set this by calling Requirements::set_combined_files_folder() * Set this by calling Requirements::set_combined_files_folder()
@ -1052,17 +1060,15 @@ class Requirements_Backend {
$combinedData = ""; $combinedData = "";
foreach(array_diff($fileList, $this->blocked) as $file) { foreach(array_diff($fileList, $this->blocked) as $file) {
$fileContent = file_get_contents($base . $file); $fileContent = file_get_contents($base . $file);
// if we have a javascript file and jsmin is enabled, minify the content $fileContent = $this->minifyFile($file, $fileContent);
$isJS = stripos($file, '.js');
if($isJS && $this->combine_js_with_jsmin) {
require_once('thirdparty/jsmin/jsmin.php');
increase_time_limit_to(); if ($this->write_header_comment) {
$fileContent = JSMin::minify($fileContent); // write a header comment for each file for easier identification and debugging
// also the semicolon between each file is required for jQuery to be combinable properly
$combinedData .= "/****** FILE: $file *****/\n";
} }
// write a header comment for each file for easier identification and debugging
// also the semicolon between each file is required for jQuery to be combinable properly $combinedData .= $fileContent . "\n";
$combinedData .= "/****** FILE: $file *****/\n" . $fileContent . "\n".($isJS ? ';' : '')."\n";
} }
$successfulWrite = false; $successfulWrite = false;
@ -1087,6 +1093,19 @@ class Requirements_Backend {
$this->css = $newCSSRequirements; $this->css = $newCSSRequirements;
} }
protected function minifyFile($filename, $content) {
// if we have a javascript file and jsmin is enabled, minify the content
$isJS = stripos($filename, '.js');
if($isJS && $this->combine_js_with_jsmin) {
require_once('thirdparty/jsmin/jsmin.php');
increase_time_limit_to();
$content = JSMin::minify($content);
}
$content .= ($isJS ? ';' : '') . "\n";
return $content;
}
public function get_custom_scripts() { public function get_custom_scripts() {
$requirements = ""; $requirements = "";

View File

@ -717,8 +717,14 @@ class SSViewer {
public static function hasTemplate($templates) { public static function hasTemplate($templates) {
$manifest = SS_TemplateLoader::instance()->getManifest(); $manifest = SS_TemplateLoader::instance()->getManifest();
if(Config::inst()->get('SSViewer', 'theme_enabled')) {
$theme = Config::inst()->get('SSViewer', 'theme');
} else {
$theme = null;
}
foreach ((array) $templates as $template) { foreach ((array) $templates as $template) {
if ($manifest->getTemplate($template)) return true; if ($manifest->getCandidateTemplate($template, $theme)) return true;
} }
return false; return false;