Merge remote-tracking branch 'origin/3.0'

This commit is contained in:
Ingo Schommer 2012-07-18 15:00:06 +02:00
commit 3ae8b0b665
95 changed files with 1650 additions and 1372 deletions

View File

@ -358,6 +358,17 @@ class LeftAndMain extends Controller implements PermissionProvider {
if($this->request->getHeader('X-Pjax') && !$this->response->getHeader('X-Pjax')) {
$this->response->addHeader('X-Pjax', $this->request->getHeader('X-Pjax'));
}
$oldResponse = $this->response;
$newResponse = new LeftAndMain_HTTPResponse(
$oldResponse->getBody(),
$oldResponse->getStatusCode(),
$oldResponse->getStatusDescription()
);
foreach($oldResponse->getHeaders() as $k => $v) {
$newResponse->addHeader($k, $v);
}
$newResponse->setIsFinished(true);
$this->response = $newResponse;
return ''; // Actual response will be re-requested by client
} else {
parent::redirect($url, $code);
@ -579,7 +590,8 @@ class LeftAndMain extends Controller implements PermissionProvider {
* @return ArrayList
*/
public function Breadcrumbs($unlinked = false) {
$title = self::menu_title_for_class($this->class);
$defaultTitle = LeftAndMain::menu_title_for_class($this->class);
$title = _t("{$this->class}.MENUTITLE", $defaultTitle);
$items = new ArrayList(array(
new ArrayData(array(
'Title' => $title,
@ -1471,3 +1483,19 @@ class LeftAndMainMarkingFilter {
}
}
/**
* Allow overriding finished state for faux redirects.
*/
class LeftAndMain_HTTPResponse extends SS_HTTPResponse {
protected $isFinished = false;
function isFinished() {
return (parent::isFinished() || $this->isFinished);
}
function setIsFinished($bool) {
$this->isFinished = $bool;
}
}

View File

@ -7,7 +7,7 @@
abstract class LeftAndMainDecorator extends LeftAndMainExtension {
public function __construct() {
Deprecation::notice('3.0', 'Use LeftAndMainExtension instead.');
Deprecation::notice('3.0', 'Use LeftAndMainExtension instead.', Deprecation::SCOPE_CLASS);
parent::__construct();
}

View File

@ -40,8 +40,8 @@
.filter-buttons button.ss-gridfield-button-filter { background-position: -18px 4px !important; }
.cms-panel .cms-panel-content-collapsed { width: 40px; }
.cms-panel .cms-panel-content-collapsed h2, .cms-panel .cms-panel-content-collapsed h3 { display: none; }
.cms-panel .cms-panel-content-collapsed { position: relative; width: 40px; }
.cms-panel .cms-panel-content-collapsed h2.cms-panel-header, .cms-panel .cms-panel-content-collapsed h3.cms-panel-header { zoom: 1; position: absolute; top: 10px; right: 10px; writing-mode: tb-rl; float: right; z-index: 5000; }
.cms-content-toolbar .cms-tree-view-modes .checkboxAboveTree { margin-right: 1px; }
@ -52,3 +52,6 @@
.filter-buttons button.ss-gridfield-button-close { margin-right: -7px !important; }
.col-buttons { width: 18px; }
/* fix for actions buttons on edit page content overlapping */
.cms-content-actions .ss-ui-buttonset button { margin-right: 0; }

View File

@ -364,17 +364,18 @@ body.cms { overflow: hidden; }
.cms-add-form .step-label .title { padding-top: 5px; font-weight: bold; text-shadow: 1px 1px 0 white; }
.cms-add-form ul.SelectionGroup { padding-left: 28px; }
.cms-add-form .parent-mode { padding: 8px; overflow: auto; }
.cms-add-form #PageType li { float: none; width: 100%; padding: 9px 0 9px 15px; overflow: hidden; border-bottom-width: 2px; border-bottom: 2px groove rgba(255, 255, 255, 0.8); -webkit-border-image: url(../images/textures/bg_fieldset_elements_border.png) 2 stretch stretch; border-image: url(../images/textures/bg_fieldset_elements_border.png) 2 stretch stretch; }
.cms-add-form #PageType li:last-child { border-bottom: none; }
.cms-add-form #PageType li:hover, .cms-add-form #PageType li.selected { background-color: rgba(255, 255, 102, 0.3); }
.cms-add-form #PageType li.disabled { color: #aaaaaa; }
.cms-add-form #PageType li.disabled:hover { background: none; }
.cms-add-form #PageType li input { margin: inherit; }
.cms-add-form #PageType li label { padding-left: 0; padding-bottom: 0; }
.cms-add-form #PageType li input, .cms-add-form #PageType li label, .cms-add-form #PageType li .page-icon, .cms-add-form #PageType li .title { float: left; line-height: 1.3em; }
.cms-add-form #PageType li .page-icon { margin: 0 4px; }
.cms-add-form #PageType li .title { width: 120px; font-weight: bold; padding-right: 10px; }
.cms-add-form #PageType li .description { font-style: italic; }
.cms-add-form #PageType ul { padding-left: 20px; }
.cms-add-form #PageType ul li { float: none; width: 100%; padding: 9px 0 9px 15px; overflow: hidden; border-bottom-width: 2px; border-bottom: 2px groove rgba(255, 255, 255, 0.8); -webkit-border-image: url(../images/textures/bg_fieldset_elements_border.png) 2 stretch stretch; border-image: url(../images/textures/bg_fieldset_elements_border.png) 2 stretch stretch; }
.cms-add-form #PageType ul li:last-child { border-bottom: none; }
.cms-add-form #PageType ul li:hover, .cms-add-form #PageType ul li.selected { background-color: rgba(255, 255, 102, 0.3); }
.cms-add-form #PageType ul li.disabled { color: #aaaaaa; }
.cms-add-form #PageType ul li.disabled:hover { background: none; }
.cms-add-form #PageType ul li input { margin: inherit; }
.cms-add-form #PageType ul li label { padding-left: 0; padding-bottom: 0; }
.cms-add-form #PageType ul li input, .cms-add-form #PageType ul li label, .cms-add-form #PageType ul li .page-icon, .cms-add-form #PageType ul li .title { float: left; line-height: 1.3em; }
.cms-add-form #PageType ul li .page-icon { margin: 0 4px; }
.cms-add-form #PageType ul li .title { width: 120px; font-weight: bold; padding-right: 10px; }
.cms-add-form #PageType ul li .description { font-style: italic; }
/** -------------------------------------------- Content toolbar -------------------------------------------- */
.cms-content-toolbar { display: block; margin: 0 0 15px 0; 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); -o-box-shadow: 0 1px 0 rgba(255, 255, 255, 0.8); box-shadow: 0 1px 0 rgba(255, 255, 255, 0.8); *zoom: 1; /* smaller treedropdown */ }

View File

@ -67,7 +67,7 @@
if(this.is('.is-collapsed')) return;
// var url = ui.xmlhttp.getResponseHeader('x-frontend-url');
var url = $('.cms-edit-form').find(':input[name=StageURLSegment]').val();
var url = $('.cms-edit-form').find(':input[name=PreviewURL],:input[name=StageURLSegment]').val();
if(url) {
this.loadUrl(url);
this.unblock();
@ -286,7 +286,7 @@
onclick: function(e) {
e.preventDefault();
var preview = $('.cms-preview'), url = $('.cms-edit-form').find(':input[name=StageURLSegment]').val();
var preview = $('.cms-preview'), url = $('.cms-edit-form').find(':input[name=PreviewURL],:input[name=StageURLSegment]').val();
if(url) {
preview.loadUrl(url);
preview.unblock();
@ -295,4 +295,4 @@
}
});
});
}(jQuery));
}(jQuery));

View File

@ -162,6 +162,9 @@ jQuery.noConflict();
if(abort) return;
}
// Save tab selections so we can restore them later
this.saveTabState();
if(window.History.enabled) {
// Active menu item is set based on X-Controller ajax header,
@ -209,12 +212,6 @@ jQuery.noConflict();
return false;
}
// save tab selections in order to reconstruct them later
var selectedTabs = [];
form.find('.cms-tabset').each(function(i, el) {
if($(el).attr('id')) selectedTabs.push({id:$(el).attr('id'), selected:$(el).tabs('option', 'selected')});
});
// get all data from the form
var formData = form.serializeArray();
// add button action
@ -224,6 +221,9 @@ jQuery.noConflict();
// as automatic browser ajax response redirects seem to discard the hash/fragment.
formData.push({name: 'BackURL', value:History.getPageUrl()});
// Save tab selections so we can restore them later
this.saveTabState();
// Standard Pjax behaviour is to replace the submitted form with new content.
// The returned view isn't always decided upon when the request
// is fired, so the server might decide to change it based on its own logic,
@ -243,24 +243,13 @@ jQuery.noConflict();
var newContentEls = self.handleAjaxResponse(data, status, xhr);
if(!newContentEls) return;
var newForm = newContentEls.filter('form');
// Re-init tabs (in case the form tag itself is a tabset)
if(newForm.hasClass('cms-tabset')) newForm.removeClass('cms-tabset').addClass('cms-tabset');
// re-select previously saved tabs
$.each(selectedTabs, function(i, selectedTab) {
newForm.find('#' + selectedTab.id).tabs('select', selectedTab.selected);
});
newForm.trigger('aftersubmitform', {status: status, xhr: xhr, formData: formData});
},
dataType: 'json'
newContentEls.filter('form').trigger('aftersubmitform', {status: status, xhr: xhr, formData: formData});
}
}, ajaxOptions));
return false;
},
/**
* Handles ajax loading of new panels through the window.History object.
* To trigger loading, pass a new URL to window.History.pushState().
@ -289,7 +278,8 @@ jQuery.noConflict();
var self = this, h = window.History, state = h.getState(),
fragments = state.data.pjax || 'Content', headers = {},
contentEls = this._findFragments(fragments.split(','));
fragmentsArr = fragments.split(','),
contentEls = this._findFragments(fragmentsArr);
// For legacy IE versions (IE7 and IE8), reload without ajax
// as a crude way to fix memory leaks through whole window refreshes.
@ -299,6 +289,14 @@ jQuery.noConflict();
document.location.href = state.url;
return;
}
// If any of the requested Pjax fragments don't exist in the current view,
// fetch the "Content" view instead, which is the "outermost" fragment
// that can be reloaded without reloading the whole window.
if(contentEls.length < fragmentsArr.length) {
fragments = 'Content', fragmentsArr = ['Content'];
contentEls = this._findFragments(fragmentsArr);
}
this.trigger('beforestatechange', {state: state, element: contentEls});
@ -330,7 +328,7 @@ jQuery.noConflict();
* Can be hooked into an ajax 'success' callback.
*/
handleAjaxResponse: function(data, status, xhr) {
var self = this;
var self = this, url, selectedTabs;
// Pseudo-redirects via X-ControllerURL might return empty data, in which
// case we'll ignore the response
@ -394,8 +392,14 @@ jQuery.noConflict();
if(origVisible) newContentEl.css('visibility', 'visible');
});
// Re-init tabs (in case the form tag itself is a tabset)
var newForm = newContentEls.filter('form');
if(newForm.hasClass('cms-tabset')) newForm.removeClass('cms-tabset').addClass('cms-tabset');
this.redraw();
this.restoreTabState();
return newContentEls;
},
@ -428,6 +432,50 @@ jQuery.noConflict();
$(window).trigger('statechange');
$(this).redraw();
},
/**
* Save tab selections in order to reconstruct them later.
* Requires HTML5 sessionStorage support.
*/
saveTabState: function() {
if(typeof(window.sessionStorage)=="undefined") return;
var selectedTabs = [], url = this._tabStateUrl();
this.find('.cms-tabset,.ss-tabset').each(function(i, el) {
var id = $(el).attr('id');
if(!id) return; // we need a unique reference
if(!$(el).data('tabs')) return; // don't act on uninit'ed controls
if($(el).data('ignoreTabState')) return; // allow opt-out
selectedTabs.push({id:id, selected:$(el).tabs('option', 'selected')});
});
if(selectedTabs) window.sessionStorage.setItem('tabs-' + url, JSON.stringify(selectedTabs));
},
/**
* Re-select previously saved tabs.
* Requires HTML5 sessionStorage support.
*/
restoreTabState: function() {
if(typeof(window.sessionStorage)=="undefined") return;
var self = this, url = this._tabStateUrl(),
data = window.sessionStorage.getItem('tabs-' + url),
selectedTabs = data ? JSON.parse(data) : false;
if(selectedTabs) {
$.each(selectedTabs, function(i, selectedTab) {
var el = self.find('#' + selectedTab.id);
if(!el.data('tabs')) return; // don't act on uninit'ed controls
el.tabs('select', selectedTab.selected);
});
}
},
_tabStateUrl: function() {
return History.getState().url
.replace(/\?.*/, '')
.replace(/#.*/, '')
.replace($('base').attr('href'), '');
}
});
@ -671,7 +719,8 @@ jQuery.noConflict();
showDetailView: function(url) {
// Include any GET parameters from the current URL, as the view state might depend on it.
// For example, a list prefiltered through external search criteria might be passed to GridField.
url = $.path.addSearchParams(url, window.location.search.replace(/^\?/, ''));
var params = window.location.search.replace(/^\?/, '');
if(params) url = $.path.addSearchParams(url, params);
$('.cms-container').loadPanel(url);
}
});

View File

@ -528,59 +528,63 @@ body.cms {
overflow: auto;
}
#PageType li {
float: none;
width: 100%;
padding: 9px 0 9px 15px;
overflow: hidden;
border-bottom-width: 2px;
border-bottom: 2px groove lighten($color-shadow-light, 95%);
-webkit-border-image: url(../images/textures/bg_fieldset_elements_border.png) 2 stretch stretch;
border-image: url(../images/textures/bg_fieldset_elements_border.png) 2 stretch stretch;
#PageType {
ul {
padding-left: 20px;
li {
float: none;
width: 100%;
padding: 9px 0 9px 15px;
overflow: hidden;
border-bottom-width: 2px;
border-bottom: 2px groove lighten($color-shadow-light, 95%);
-webkit-border-image: url(../images/textures/bg_fieldset_elements_border.png) 2 stretch stretch;
border-image: url(../images/textures/bg_fieldset_elements_border.png) 2 stretch stretch;
&:last-child {
border-bottom: none;
}
&:last-child {
border-bottom: none;
}
&:hover, &.selected {
background-color: $color-highlight-opacity;
}
&.disabled {
color: $color-text-disabled;
&:hover {
background: none;
}
}
input {
margin: inherit;
}
label {
padding-left: 0;
padding-bottom: 0;
}
&:hover, &.selected {
background-color: $color-highlight-opacity;
}
&.disabled {
color: $color-text-disabled;
&:hover {
background: none;
input, label, .page-icon, .title {
float: left;
line-height: 1.3em;
}
.page-icon {
margin: 0 4px;
}
.title {
width: 120px;
font-weight: bold;
padding-right: 10px;
}
.description {
font-style: italic;
}
}
}
input {
margin: inherit;
}
label {
padding-left: 0;
padding-bottom: 0;
}
input, label, .page-icon, .title {
float: left;
line-height: 1.3em;
}
.page-icon {
margin: 0 4px;
}
.title {
width: 120px;
font-weight: bold;
padding-right: 10px;
}
.description {
font-style: italic;
}
}
}
}

View File

@ -39,4 +39,13 @@
.col-buttons{
width:18px;
}
/* fix for actions buttons on edit page content overlapping */
.cms-content-actions {
.ss-ui-buttonset {
button {
margin-right: 0;
}
}
}

View File

@ -325,6 +325,7 @@ Copyright (c) 2011 by Harvest
this.container_id = this.form_field.id.length ? this.form_field.id.replace(/(:|\.)/g, '_') : this.generate_field_id();
this.container_id += "_chzn";
this.f_width = this.form_field_jq.outerWidth();
if (this.f_width==0) this.f_width = this.form_field_jq.css("width");
this.default_text = this.form_field_jq.data('placeholder') ? this.form_field_jq.data('placeholder') : this.default_text_default;
container_div = $("<div />", {
id: this.container_id,

View File

@ -42,7 +42,7 @@ class Director implements TemplateGlobalProvider {
*/
static function addRules($priority, $rules) {
if ($priority != 100) {
Deprecation::notice('3.0', 'Priority argument is now ignored - use the default of 100. You should really be setting routes via _config yaml fragments though.');
Deprecation::notice('3.0', 'Priority argument is now ignored - use the default of 100. You should really be setting routes via _config yaml fragments though.', Deprecation::SCOPE_GLOBAL);
}
Config::inst()->update('Director', 'rules', $rules);

View File

@ -332,7 +332,7 @@ abstract class Object {
* @return mixed
*/
public static function get_static($class, $name, $uncached = false) {
Deprecation::notice('3.1.0', 'get_static is deprecated, replaced by Config#get');
Deprecation::notice('3.1.0', 'Replaced by Config#get');
return Config::inst()->get($class, $name, Config::FIRST_SET);
}
@ -344,7 +344,7 @@ abstract class Object {
* @param mixed $value
*/
public static function set_static($class, $name, $value) {
Deprecation::notice('3.1.0', 'set_static is deprecated, replaced by Config#update');
Deprecation::notice('3.1.0', 'Replaced by Config#update');
Config::inst()->update($class, $name, $value);
}
@ -356,7 +356,7 @@ abstract class Object {
* @return mixed
*/
public static function uninherited_static($class, $name, $uncached = false) {
Deprecation::notice('3.1.0', 'uninherited_static is deprecated, replaced by Config#get');
Deprecation::notice('3.1.0', 'Replaced by Config#get');
return Config::inst()->get($class, $name, Config::UNINHERITED);
}
@ -373,7 +373,7 @@ abstract class Object {
public static function combined_static($class, $name, $ceiling = false) {
if ($ceiling) throw new Exception('Ceiling argument to combined_static is no longer supported');
Deprecation::notice('3.1.0', 'combined_static is deprecated, replaced by Config#get');
Deprecation::notice('3.1.0', 'Replaced by Config#get');
return Config::inst()->get($class, $name);
}
@ -385,7 +385,7 @@ abstract class Object {
* @param bool $replace replace existing static vars
*/
public static function addStaticVars($class, $properties, $replace = false) {
Deprecation::notice('3.1.0', 'addStaticVars is deprecated, replaced by Config#update');
Deprecation::notice('3.1.0', 'Replaced by Config#update');
foreach($properties as $prop => $value) self::add_static_var($class, $prop, $value, $replace);
}
@ -406,7 +406,7 @@ abstract class Object {
* @param bool $replace completely replace existing static values
*/
public static function add_static_var($class, $name, $value, $replace = false) {
Deprecation::notice('3.1.0', 'add_static_var is deprecated, replaced by Config#remove and Config#update');
Deprecation::notice('3.1.0', 'Replaced by Config#remove and Config#update');
if ($replace) Config::inst()->remove($class, $name);
Config::inst()->update($class, $name, $value);

View File

@ -172,8 +172,9 @@ class PaginatedList extends SS_ListDecorator {
*/
public function getIterator() {
if($this->limitItems) {
$tmptList = clone $this->list;
return new IteratorIterator(
$this->list->limit($this->pageLength, $this->getPageStart())
$tmptList->limit($this->pageLength, $this->getPageStart())
);
} else {
return new IteratorIterator($this->list);

View File

@ -45,7 +45,7 @@
.cms table.ss-gridfield-table tbody td.col-getTreeTitle span.badge.deletedonlive { color: #636363; border: 1px solid #E49393; background-color: #F2DADB; }
.cms table.ss-gridfield-table tbody td.col-getTreeTitle span.badge.removedfromdraft { color: #636363; border: 1px solid #E49393; background-color: #F2DADB; }
.cms table.ss-gridfield-table tbody td.col-getTreeTitle span.badge.workflow-approval { color: #56660C; border: 1px solid #7C8816; background-color: #DAE79A; }
.cms table.ss-gridfield-table tbody td button { border: none; background: none; margin: 0 0 0 2px; padding: 6px 0; width: auto; text-shadow: none; }
.cms table.ss-gridfield-table tbody td button { border: none; background: none; margin: 0 0 0 2px; padding: 1px 0; width: auto; text-shadow: none; }
.cms table.ss-gridfield-table tbody td button.ui-state-hover { background: none; -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none; }
.cms table.ss-gridfield-table tbody td button.ui-state-active { border: none; -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none; }
.cms table.ss-gridfield-table tbody td button.gridfield-button-delete { width: 20px; margin: 0; }

View File

@ -32,6 +32,10 @@
*/
class Deprecation {
const SCOPE_METHOD = 1;
const SCOPE_CLASS = 2;
const SCOPE_GLOBAL = 4;
/**
*
* @var string
@ -119,9 +123,10 @@ class Deprecation {
* @static
* @param $string - The notice to raise
* @param $atVersion - The version at which this notice should start being raised
* @param Boolean $scope - Notice relates to the method or class context its called in.
* @return void
*/
public static function notice($atVersion, $string = '') {
public static function notice($atVersion, $string = '', $scope = Deprecation::SCOPE_METHOD) {
// Never raise deprecation notices in a live environment
if(Director::isLive()) return;
@ -139,9 +144,16 @@ class Deprecation {
// Check the version against the notice version
if ($checkVersion && version_compare($checkVersion, $atVersion, '>=')) {
// Get the calling method
if (!$backtrace) $backtrace = debug_backtrace(0);
$caller = self::get_called_method_from_trace($backtrace);
// Get the calling scope
if($scope == Deprecation::SCOPE_METHOD) {
if (!$backtrace) $backtrace = debug_backtrace(0);
$caller = self::get_called_method_from_trace($backtrace);
} elseif($scope == Deprecation::SCOPE_CLASS) {
if (!$backtrace) $backtrace = debug_backtrace(0);
$caller = isset($backtrace[1]['class']) ? $backtrace[1]['class'] : '(unknown)';
} else {
$caller = false;
}
// Get the level to raise the notice as
$level = self::$notice_level;
@ -152,7 +164,12 @@ class Deprecation {
$string .= " Called from " . self::get_called_method_from_trace($backtrace, 2) . '.';
user_error($caller.' is deprecated.'.($string ? ' '.$string : ''), $level);
if($caller) {
user_error($caller.' is deprecated.'.($string ? ' '.$string : ''), $level);
} else {
user_error($string, $level);
}
}
}

View File

@ -106,6 +106,14 @@ class TestRunner extends Controller {
if(!PhpUnitWrapper::has_php_unit()) {
die("Please install PHPUnit using pear");
}
if(!isset($_GET['flush']) || !$_GET['flush']) {
Debug::message(
"WARNING: Manifest not flushed. " .
"Add flush=1 as an argument to discover new classes or files.\n",
false
);
}
}
public function Link() {

View File

@ -85,9 +85,9 @@ Create a new file called `zzz_admin/code/BookmarkedPageExtension.php` and insert
:::php
<?php
class BookmarkedPageExtension extends DataExtension {
static $db = array('IsBookmarked' => 'Boolean');
public static $db = array('IsBookmarked' => 'Boolean');
public function updateCMSFields(&$fields) {
public function updateCMSFields(FieldList $fields) {
$fields->addFieldToTab('Root.Main',
new CheckboxField('IsBookmarked', "Show in CMS bookmarks?")
);

View File

@ -88,6 +88,23 @@ and merge it back manually to your 'master' as required.
cp build.properties # Add your own getlocalization config to 'build.properties'
phing -Dmodule=<yourmodule> -propertyfile build.properties translations-sync
### Merge back existing translations
Since the latest translations are downloaded into a "translations-staging"
branch, you need to get them back into your main project repository.
This depends on your release strategy: For simpler modules,
just merge back to master:
git checkout master
git merge translations-staging
In case you are maintaining release branches, its a bit more complicated:
The "translations-staging" branch is (correctly) based off master,
but you don't want to merge all other master changes into your release branch.
Use the following task to copy & commit the specific files instead:
phing -Dmodule=<yourmodule> translations-mergeback
### Converting your language files from 2.4 PHP format
The conversion from PHP format to YML is taken care of by a module
@ -107,9 +124,9 @@ Special characters (such as german umlauts) need to be entered in their native f
Currently translated entities are not directly factored into code (for security reasons and release/review-control), so you can't see them straight away.
It is strongly encouraged that you check your translation this way, as its a good way to doublecheck your translation works in the right context.
Please use our [daily-builds](http://www.silverstripe.org/daily-builds/) for your local installation, to ensure you're looking at the most up to date interface.
Please use our [daily-builds](http://www.silverstripe.org/daily-builds/) for your local installation, to ensure you're looking at the most up to date interface. See "Download Translations" above
to find out how to retrieve the latest translation files.
### Can I change a translation just for one SilverStripe version?

View File

@ -204,7 +204,7 @@ will return all members whose first name or surname contain the string 'sam'.
:::php
$members = Member::get()->filter(array(
'FirstName,Surname:Contains' => 'sam'
'FirstName,Surname:PartialMatch' => 'sam'
));
If you wish to match against any of a number of values, you can pass an array as the value. This will return all

View File

@ -41,7 +41,7 @@ class Folder extends File {
* @deprecated in favor of the correct name find_or_make
*/
public static function findOrMake($folderPath) {
Deprecation::notice('3.0', "Folder::findOrMake() is deprecated in favor of Folder::find_or_make()");
Deprecation::notice('3.0', "Use Folder::find_or_make() instead.");
return self::find_or_make($folderPath);
}

View File

@ -118,10 +118,10 @@ class DropdownField extends FormField {
$this->setSource($source);
if($emptyString === true) {
Deprecation::notice('3.1', 'Please use setHasEmptyDefault(true) instead of passing a boolean true $emptyString argument');
Deprecation::notice('3.1', 'Please use setHasEmptyDefault(true) instead of passing a boolean true $emptyString argument', Deprecation::SCOPE_GLOBAL);
}
if(is_string($emptyString)) {
Deprecation::notice('3.1', 'Please use setEmptyString() instead of passing a string $emptyString argument.');
Deprecation::notice('3.1', 'Please use setEmptyString() instead of passing a string $emptyString argument.', Deprecation::SCOPE_GLOBAL);
}
if($emptyString) $this->setHasEmptyDefault(true);

View File

@ -605,11 +605,14 @@ class FieldList extends ArrayList {
foreach($this->getTabPathRewrites() as $regex => $replace) {
if(preg_match($regex, $name)) {
$newName = preg_replace($regex, $replace, $name);
Deprecation::notice('3.0.0', sprintf(
'Using outdated tab path "%s", please use the new location "%s" instead',
$name,
$newName
));
Deprecation::notice('3.0.0',
sprintf(
'Using outdated tab path "%s", please use the new location "%s" instead',
$name,
$newName
),
Deprecation::SCOPE_GLOBAL
);
return $newName;
}
}

View File

@ -102,7 +102,13 @@ class FileField extends FormField {
* @param int $value The value of the field.
*/
function __construct($name, $title = null, $value = null) {
if(count(func_get_args()) > 3) Deprecation::notice('3.0', 'Use setRightTitle() and setFolderName() instead of constructor arguments');
if(count(func_get_args()) > 3) {
Deprecation::notice(
'3.0',
'Use setRightTitle() and setFolderName() instead of constructor arguments',
Deprecation::SCOPE_GLOBAL
);
}
$this->upload = new Upload();

View File

@ -51,7 +51,7 @@ class HasManyComplexTableField extends ComplexTableField {
function __construct($controller, $name, $sourceClass, $fieldList = null, $detailFormFields = null, $sourceFilter = "", $sourceSort = "", $sourceJoin = "") {
parent::__construct($controller, $name, $sourceClass, $fieldList, $detailFormFields, $sourceFilter, $sourceSort, $sourceJoin);
Deprecation::notice('3.0', 'Use GridField with GridFieldConfig_RelationEditor');
Deprecation::notice('3.0', 'Use GridField with GridFieldConfig_RelationEditor', Deprecation::SCOPE_CLASS);
$this->Markable = true;

View File

@ -46,7 +46,7 @@ class HtmlEditorField extends TextareaField {
* @see TextareaField::__construct()
*/
public function __construct($name, $title = null, $value = '') {
if(count(func_get_args()) > 3) Deprecation::notice('3.0', 'Use setRows() and setCols() instead of constructor arguments');
if(count(func_get_args()) > 3) Deprecation::notice('3.0', 'Use setRows() and setCols() instead of constructor arguments', Deprecation::SCOPE_GLOBAL);
parent::__construct($name, $title, $value);
@ -63,14 +63,14 @@ class HtmlEditorField extends TextareaField {
if($links = $value->getElementsByTagName('a')) foreach($links as $link) {
$matches = array();
if(preg_match('/\[sitetree_link id=([0-9]+)\]/i', $link->getAttribute('href'), $matches)) {
if(preg_match('/\[sitetree_link(?:\s*|%20|,)?id=([0-9]+)\]/i', $link->getAttribute('href'), $matches)) {
if(!DataObject::get_by_id('SiteTree', $matches[1])) {
$class = $link->getAttribute('class');
$link->setAttribute('class', ($class ? "$class ss-broken" : 'ss-broken'));
}
}
if(preg_match('/\[file_link id=([0-9]+)\]/i', $link->getAttribute('href'), $matches)) {
if(preg_match('/\[file_link(?:\s*|%20|,)?id=([0-9]+)\]/i', $link->getAttribute('href'), $matches)) {
if(!DataObject::get_by_id('File', $matches[1])) {
$class = $link->getAttribute('class');
$link->setAttribute('class', ($class ? "$class ss-broken" : 'ss-broken'));
@ -114,7 +114,7 @@ class HtmlEditorField extends TextareaField {
$href = Director::makeRelative($link->getAttribute('href'));
if($href) {
if(preg_match('/\[sitetree_link id=([0-9]+)\]/i', $href, $matches)) {
if(preg_match('/\[sitetree_link,id=([0-9]+)\]/i', $href, $matches)) {
$ID = $matches[1];
// clear out any broken link classes
@ -365,11 +365,14 @@ class HtmlEditorField_Toolbar extends RequestHandler {
// TODO Handle through GridState within field - currently this state set too late to be useful here (during request handling)
$parentID = $this->controller->getRequest()->requestVar('ParentID');
$fileFieldConfig = GridFieldConfig::create();
$fileFieldConfig->addComponent(new GridFieldSortableHeader());
$fileFieldConfig->addComponent(new GridFieldFilterHeader());
$fileFieldConfig->addComponent(new GridFieldDataColumns());
$fileFieldConfig->addComponent(new GridFieldPaginator(5));
$fileFieldConfig = GridFieldConfig::create()->addComponents(
new GridFieldFilterHeader(),
new GridFieldSortableHeader(),
new GridFieldDataColumns(),
new GridFieldPaginator(5),
new GridFieldDeleteAction(),
new GridFieldDetailForm()
);
$fileField = new GridField('Files', false, null, $fileFieldConfig);
$fileField->setList($this->getFiles($parentID));
$fileField->setAttribute('data-selectable', true);

View File

@ -45,7 +45,7 @@ class ImageField extends FileIFrameField {
* @return Form
*/
public function EditFileForm() {
Deprecation::notice('3.0', 'Use UploadField');
Deprecation::notice('3.0', 'Use UploadField', Deprecation::SCOPE_CLASS);
$filter = create_function('$item', 'return (in_array("Folder", ClassInfo::ancestry($item->ClassName)) || in_array("Image", ClassInfo::ancestry($item->ClassName)));');

View File

@ -18,7 +18,7 @@ class ImageFormAction extends FormAction {
* @param form The parent form, auto-set when the field is placed inside a form
*/
function __construct($action, $title = "", $image = "", $hoverImage = null, $className = null, $form = null) {
Deprecation::notice('3.0', "Use FormAction with setAttribute('src', 'myimage.png') and custom JavaScript to achieve hover effect");
Deprecation::notice('3.0', "Use FormAction with setAttribute('src', 'myimage.png') and custom JavaScript to achieve hover effect", Deprecation::SCOPE_CLASS);
$this->image = $image;
$this->hoverImage = $hoverImage;

View File

@ -43,7 +43,7 @@ class ManyManyComplexTableField extends HasManyComplexTableField {
function __construct($controller, $name, $sourceClass, $fieldList = null, $detailFormFields = null, $sourceFilter = "", $sourceSort = "", $sourceJoin = "") {
Deprecation::notice('3.0', 'Use GridField with GridFieldConfig_RelationEditor');
Deprecation::notice('3.0', 'Use GridField with GridFieldConfig_RelationEditor', Deprecation::SCOPE_CLASS);
parent::__construct($controller, $name, $sourceClass, $fieldList, $detailFormFields, $sourceFilter, $sourceSort, $sourceJoin);

View File

@ -11,7 +11,7 @@ class PasswordField extends TextField {
* maxlength
*/
function __construct($name, $title = null, $value = "") {
if(count(func_get_args()) > 3) Deprecation::notice('3.0', 'Use setMaxLength() instead of constructor arguments');
if(count(func_get_args()) > 3) Deprecation::notice('3.0', 'Use setMaxLength() instead of constructor arguments', Deprecation::SCOPE_GLOBAL);
parent::__construct($name, $title, $value);
}

View File

@ -69,9 +69,9 @@
class SimpleImageField extends FileField {
function __construct($name, $title = null, $value = null) {
Deprecation::notice('3.0', "Use UploadField with \$myField->allowedExtensions = array('jpg', 'gif', 'png')");
Deprecation::notice('3.0', "SimpleImageField is deprecated. Use UploadField with \$myField->allowedExtensions = array('jpg', 'gif', 'png')", Deprecation::SCOPE_CLASS);
if(count(func_get_args()) > 3) Deprecation::notice('3.0', 'Use setRightTitle() and setFolderName() instead of constructor arguments');
if(count(func_get_args()) > 3) Deprecation::notice('3.0', 'Use setRightTitle() and setFolderName() instead of constructor arguments', Deprecation::SCOPE_GLOBAL);
parent::__construct($name, $title, $value);

View File

@ -72,7 +72,7 @@ class TabSet extends CompositeField {
Requirements::javascript(FRAMEWORK_DIR . '/thirdparty/jquery-ui/jquery-ui.js');
Requirements::javascript(FRAMEWORK_DIR . '/thirdparty/jquery-cookie/jquery.cookie.js');
Requirements::css(FRAMEWORK_DIR . '/thirdparty/jquery-ui-themes/smoothness/jquery.ui.css');
Requirements::css(FRAMEWORK_DIR . '/thirdparty/jquery-ui-themes/smoothness/jquery-ui.css');
Requirements::javascript(FRAMEWORK_DIR . '/thirdparty/jquery-entwine/dist/jquery.entwine-dist.js');

View File

@ -66,6 +66,7 @@ class ToggleCompositeField extends CompositeField {
*/
public function setStartClosed($bool) {
$this->startClosed = (bool) $bool;
return $this;
}
/**
@ -80,6 +81,7 @@ class ToggleCompositeField extends CompositeField {
*/
public function setHeadingLevel($level) {
$this->headingLevel = $level;
return $this;
}
/**

32
forms/gridfield/GridFieldAddExistingAutocompleter.php Executable file → Normal file
View File

@ -40,7 +40,12 @@ class GridFieldAddExistingAutocompleter implements GridField_HTMLProvider, GridF
* @var String Text shown on the search field, instructing what to search for.
*/
protected $placeholderText;
/**
* @var int
*/
protected $resultsLimit = 20;
/**
*
* @param array $searchFields Which fields on the object in the list should be searched
@ -69,7 +74,7 @@ class GridFieldAddExistingAutocompleter implements GridField_HTMLProvider, GridF
// Apparently the data-* needs to be double qouted for the jQuery.meta data plugin
$searchField->setAttribute('data-search-url', '\''.Controller::join_links($gridField->Link('search').'\''));
$searchField->setAttribute('placeholder', $this->getPlaceholderText($dataClass));
$searchField->addExtraClass('relation-search');
$searchField->addExtraClass('relation-search no-change-track');
$findAction = new GridField_FormAction($gridField, 'gridfield_relationfind', _t('GridField.Find', "Find"), 'find', 'find');
$findAction->setAttribute('data-icon', 'relationfind');
@ -151,7 +156,7 @@ class GridFieldAddExistingAutocompleter implements GridField_HTMLProvider, GridF
*/
public function getURLHandlers($gridField) {
return array(
'search/$ID' => 'doSearch',
'search' => 'doSearch',
);
}
@ -176,10 +181,11 @@ class GridFieldAddExistingAutocompleter implements GridField_HTMLProvider, GridF
// TODO Replace with DataList->filterAny() once it correctly supports OR connectives
foreach($searchFields as $searchField) {
$stmts[] .= sprintf('"%s" LIKE \'%s%%\'', $searchField, $request->param('ID'));
$stmts[] .= sprintf('"%s" LIKE \'%s%%\'', $searchField, Convert::raw2sql($request->getVar('gridfield_relationsearch')));
}
$results = $allList->where(implode(' OR ', $stmts))->subtract($gridField->getList());
$results = $results->sort($searchFields[0], 'ASC');
$results = $results->limit($this->getResultsLimit());
$json = array();
foreach($results as $result) {
@ -271,7 +277,23 @@ class GridFieldAddExistingAutocompleter implements GridField_HTMLProvider, GridF
public function setPlaceholderText($text) {
$this->placeholderText = $text;
}
/**
* Gets the maximum number of autocomplete results to display.
*
* @return int
*/
public function getResultsLimit() {
return $this->resultsLimit;
}
/**
* @param int $limit
*/
public function setResultsLimit($limit) {
$this->resultsLimit = $limit;
}
/**
* This will provide a StartsWith search that only returns a value if we are
* matching ONE object only. We wouldn't want to attach used any object to

View File

@ -328,11 +328,15 @@ class GridFieldDetailForm_ItemRequest extends RequestHandler {
$form->addExtraClass('cms-content cms-edit-form center ss-tabset');
$form->setAttribute('data-pjax-fragment', 'CurrentForm Content');
if($form->Fields()->hasTabset()) $form->Fields()->findOrMakeTab('Root')->setTemplate('CMSTabSet');
// TODO Link back to controller action (and edited root record) rather than index,
// which requires more URL knowledge than the current link to this field gives us.
// The current root record is held in session only,
// e.g. page/edit/show/6/ vs. page/edit/EditForm/field/MyGridField/....
$form->Backlink = $toplevelController->hasMethod('Backlink') ? $toplevelController->Backlink() : $toplevelController->Link();
if($toplevelController->hasMethod('Backlink')) {
$form->Backlink = $toplevelController->Backlink();
} elseif($this->popupController->hasMethod('Breadcrumbs')) {
$parents = $this->popupController->Breadcrumbs(false)->items;
$form->Backlink = array_pop($parents)->Link;
} else {
$form->Backlink = $toplevelController->Link();
}
}
$cb = $this->component->getItemEditFormCallback();

View File

@ -91,12 +91,13 @@ class GridFieldFilterHeader implements GridField_HTMLProvider, GridField_DataMan
}
$filterArguments = $state->Columns->toArray();
$dataListClone = null;
foreach($filterArguments as $columnName => $value ) {
if($dataList->canFilterBy($columnName) && $value) {
$dataList->filter($columnName.':PartialMatch', $value);
$dataListClone = $dataList->filter($columnName.':PartialMatch', $value);
}
}
return $dataList;
return ($dataListClone) ? $dataListClone : $dataList;
}
public function getHTMLFragments($gridField) {
@ -120,6 +121,7 @@ class GridFieldFilterHeader implements GridField_HTMLProvider, GridField_DataMan
}
$field = new TextField('filter['.$columnField.']', '', $value);
$field->addExtraClass('ss-gridfield-sort');
$field->addExtraClass('no-change-track');
$field->setAttribute('placeholder', _t('GridField.FilterBy', "Filter by ") . _t('GridField.'.$metadata['title'], $metadata['title']));
@ -144,6 +146,7 @@ class GridFieldFilterHeader implements GridField_HTMLProvider, GridField_DataMan
->setAttribute('id', 'action_reset_' . $gridField->getModelClass() . '_' . $columnField)
);
$field->addExtraClass('filter-buttons');
$field->addExtraClass('no-change-track');
}else{
$field = new LiteralField('', '');
}

View File

@ -444,7 +444,7 @@ class i18n extends Object implements TemplateGlobalProvider {
'mfe_MU' => 'Morisyen (Mauritius)',
'mg_MG' => 'Malagasy (Madagascar)',
'mh_MH' => 'Marshallese (Marshall Islands)',
'mi_NZ' => 'Maori (New Zealand)',
'mi_NZ' => 'Māori (New Zealand)',
'min_ID' => 'Minangkabau (Indonesia)',
'mk_MK' => 'Macedonian (Macedonia)',
'ml_IN' => 'Malayalam (India)',
@ -685,7 +685,7 @@ class i18n extends Object implements TemplateGlobalProvider {
'lt' => array('Lithuanian', 'lietuvi&#353;kai'),
'lmo' => array('Lombard', 'Lombardo'),
'mk' => array('Macedonian', '&#1084;&#1072;&#1082;&#1077;&#1076;&#1086;&#1085;&#1089;&#1082;&#1080;'),
'mi' => array('Maori', 'Maori'),
'mi' => array('Maori', 'Māori'),
'ms' => array('Malay', 'Bahasa melayu'),
'mt' => array('Maltese', 'Malti'),
'mr' => array('Marathi', '&#2350;&#2352;&#2366;&#2336;&#2368;'),
@ -777,7 +777,7 @@ class i18n extends Object implements TemplateGlobalProvider {
'lv_LV' => array('Latvian', 'latvie&#353;u'),
'lt_LT' => array('Lithuanian', 'lietuvi&#353;kai'),
'mk_MK' => array('Macedonian', '&#1084;&#1072;&#1082;&#1077;&#1076;&#1086;&#1085;&#1089;&#1082;&#1080;'),
'mi_NZ' => array('Maori', 'Maori'),
'mi_NZ' => array('Maori', 'Māori'),
'ms_MY' => array('Malay', 'Bahasa melayu'),
'mt_MT' => array('Maltese', 'Malti'),
'mr_IN' => array('Marathi', '&#2350;&#2352;&#2366;&#2336;&#2368;'),
@ -1465,7 +1465,8 @@ class i18n extends Object implements TemplateGlobalProvider {
if(is_numeric($context) && in_array($context, array(PR_LOW, PR_MEDIUM, PR_HIGH))) {
Deprecation::notice(
'3.0',
'The $priority argument to _t() is deprecated, please use module inclusion priorities instead'
'The $priority argument to _t() is deprecated, please use module inclusion priorities instead',
Deprecation::SCOPE_GLOBAL
);
}

View File

@ -310,9 +310,9 @@ class i18nTextCollector extends Object {
// use the old method of getting _t() style translatable entities
// Collect in actual template
if(preg_match_all('/<%\s*(_t\(.*)%>/ms', $content, $matches)) {
foreach($matches as $match) {
$entities = array_merge($entities, $this->collectFromCode($match[0], $module));
if(preg_match_all('/(_t\([^\)]*?\))/ms', $content, $matches)) {
foreach($matches[1] as $match) {
$entities = array_merge($entities, $this->collectFromCode($match, $module));
}
}

View File

@ -301,7 +301,7 @@
"X-Pjax" : 'Partial'
},
type: "GET",
url: suggestionUrl+'/'+request.term,
url: suggestionUrl,
data: form.serialize()+'&'+escape(searchField.attr('name'))+'='+escape(searchField.val()),
success: function(data) {
response( $.map(JSON.parse(data), function( name, id ) {

View File

@ -283,7 +283,7 @@ ss.editorWrappers['default'] = ss.editorWrappers.tinyMCE;
onbeforestatechange: function(){
this.css('visibility', 'hidden');
var ed = this.getEditor(), container = ed.getInstance() ? ed.getContainer() : null;
var ed = this.getEditor(), container = (ed && ed.getInstance()) ? ed.getContainer() : null;
if(container && container.length) container.remove();
}
},
@ -468,7 +468,6 @@ ss.editorWrappers['default'] = ss.editorWrappers.tinyMCE;
* which are toggled through a type dropdown. Variations share fields, so there's only one "title" field in the form.
*/
$('form.htmleditorfield-linkform').entwine({
// TODO Entwine doesn't respect submits triggered by ENTER key
onsubmit: function(e) {
this.insertLink();
@ -477,36 +476,27 @@ ss.editorWrappers['default'] = ss.editorWrappers.tinyMCE;
},
resetFields: function() {
this._super();
this.find('fieldset :input:not(:radio)').val('').change();
// Reset the form using a native call. This will also correctly reset checkboxes and radio buttons.
this[0].reset();
},
redraw: function(setDefaults) {
redraw: function() {
this._super();
var linkType = this.find(':input[name=LinkType]:checked').val(), list = ['internal', 'external', 'file', 'email'];
// If we haven't selected an existing link, then just make sure we default to "internal" for the link type.
if(!linkType) {
this.find(':input[name=LinkType]').val(['internal']);
linkType = 'internal';
}
this.addAnchorSelector();
// Toggle field visibility and state based on type selection
// Toggle field visibility depending on the link type.
this.find('div.content .field').hide();
this.find('.field#LinkType').show();
this.find('.field#' + linkType).show();
if(linkType == 'internal' || linkType == 'anchor') this.find('.field#Anchor').show();
if(linkType !== 'email') this.find('.field#TargetBlank').show();
if(linkType == 'anchor') {
this.find('.field#AnchorSelector').show();
this.find('.field#AnchorRefresh').show();
}
this.find(':input[name=TargetBlank]').attr('disabled', (linkType == 'email'));
if(typeof setDefaults == 'undefined' || setDefaults) {
this.find(':input[name=TargetBlank]').attr('checked', (linkType == 'file'));
}
},
insertLink: function() {
var href, target = null, anchor = this.find(':input[name=Anchor]').val();
@ -614,16 +604,24 @@ ss.editorWrappers['default'] = ss.editorWrappers.tinyMCE;
selector.append($('<option value="'+anchors[j]+'">'+anchors[j]+'</option>'));
}
},
/**
* Updates the state of the dialog inputs to match the editor selection.
* If selection does not contain a link, resets the fields.
*/
updateFromEditor: function() {
var htmlTagPattern = /<\S[^><]*>/g, fieldName, data = this.getCurrentLink();
if(data) {
for(fieldName in data) {
var el = this.find(':input[name=' + fieldName + ']'), selected = data[fieldName];
// Remove html tags in the selected text that occurs on IE browsers
if(typeof(selected) == 'string') selected = selected.replace(htmlTagPattern, '');
if(el.is(':radio')) {
el.val([selected]).change(); // setting as an arry due to jQuery quirks
// Set values and invoke the triggers (e.g. for TreeDropdownField).
if(el.is(':checkbox')) {
el.prop('checked', selected).change();
} else if(el.is(':radio')) {
el.val([selected]).change();
} else {
el.val(selected).change();
}
@ -631,8 +629,9 @@ ss.editorWrappers['default'] = ss.editorWrappers.tinyMCE;
}
},
/**
* Return information about the currently selected link, suitable for population of the link
* form.
* Return information about the currently selected link, suitable for population of the link form.
*
* Returns null if no link was currently selected.
*/
getCurrentLink: function() {
var selectedEl = this.getSelection(),
@ -682,7 +681,8 @@ ss.editorWrappers['default'] = ss.editorWrappers.tinyMCE;
return {
LinkType: 'file',
file: RegExp.$1,
Description: title
Description: title,
TargetBlank: target ? true : false
};
} else if(href.match(/^#(.*)$/)) {
return {
@ -691,7 +691,7 @@ ss.editorWrappers['default'] = ss.editorWrappers.tinyMCE;
Description: title,
TargetBlank: target ? true : false
};
} else if(href.match(/^\[sitetree_link\s*(?:%20)?id=([0-9]+)\]?(#.*)?$/)) {
} else if(href.match(/^\[sitetree_link(?:\s*|%20|,)?id=([0-9]+)\]?(#.*)?$/i)) {
return {
LinkType: 'internal',
internal: RegExp.$1,
@ -707,9 +707,8 @@ ss.editorWrappers['default'] = ss.editorWrappers.tinyMCE;
TargetBlank: target ? true : false
};
} else {
return {
LinkType: 'internal'
};
// No link/invalid link selected.
return null;
}
}
});

View File

@ -2,10 +2,10 @@
$.entwine('ss', function($){
$('.ss-toggle').entwine({
onadd: function() {
opts = {collapsible: true};
if (this.hasClass("ss-toggle-start-closed")) opts.active = false;
this.accordion({ collapsible: true });
this.accordion({
collapsible: true,
active: !this.hasClass("ss-toggle-start-closed")
});
this._super();
},

View File

@ -29,7 +29,7 @@
* @todo Expand title height to fit all elements
*/
$('.TreeDropdownField').entwine({
onmatch: function() {
onadd: function() {
this.append(
'<span class="treedropdownfield-title"></span>' +
'<div class="treedropdownfield-toggle-panel-link"><a href="#" class="ui-icon ui-icon-triangle-1-s"></a></div>' +
@ -43,9 +43,6 @@
this.getPanel().hide();
this._super();
},
onunmatch: function() {
this._super();
},
getPanel: function() {
return this.find('.treedropdownfield-panel');
},
@ -260,7 +257,7 @@
});
$('.TreeDropdownField.searchable').entwine({
onmatch: function() {
onadd: function() {
this._super();
var title = this.data('title');
@ -270,9 +267,6 @@
this.setTitle(title ? title : strings.searchFieldTitle);
},
onunmatch: function() {
this._super();
},
setTitle: function(title) {
if(!title && title !== '') title = strings.fieldTitle;
@ -372,8 +366,13 @@
});
$('.TreeDropdownField input[type=hidden]').entwine({
onchange: function() {
this.getField().updateTitle();
onadd: function() {
this.bind('change.TreeDropdownField', function() {
$(this).getField().updateTitle();
});
},
onremove: function() {
this.unbind('.TreeDropdownField');
}
});
});

View File

@ -7,8 +7,8 @@ ar:
FILENAME: 'اسم الملف'
FOLDER: Folder
LASTEDIT: 'آخر التعديلات'
OWNER: 'المالك'
SIZE: 'الحجم'
OWNER: المالك
SIZE: الحجم
TITLE: العنوان
TYPE: النوع
URL: الرابط
@ -24,7 +24,7 @@ ar:
UPLOADINPROGRESS: 'Please wait… upload in progress'
UPLOADOR: OR
BBCodeParser:
ALIGNEMENT: 'المحاذاة'
ALIGNEMENT: المحاذاة
ALIGNEMENTEXAMPLE: 'محاذاة إلى اليمين'
BOLD: 'خط عريض'
BOLDEXAMPLE: عريض
@ -38,7 +38,7 @@ ar:
IMAGE: الصورة
IMAGEDESCRIPTION: 'عرض الصورة في الموضوع'
ITALIC: 'خط مائل'
ITALICEXAMPLE: 'مائل'
ITALICEXAMPLE: مائل
LINK: 'رابط الموقع'
LINKDESCRIPTION: 'رابط إلى موقع آخر'
STRUCK: 'خط في المنتصف'
@ -56,7 +56,7 @@ ar:
ANY: أي
0: لا
LOGOUT: 'Log out'
1: 'نعم'
1: نعم
CMSMain:
ACCESS: 'Access to ''{title}'' section'
ACCESSALLINTERFACES: 'الدخول إلى جميع واجهات إدارة المحتوى'
@ -66,7 +66,7 @@ ar:
MENUTITLE: CMSProfileController
CheckboxField:
- لا
- 'نعم'
- نعم
ComplexTableField:
CLOSEPOPUP: 'إغلاق النافذة'
SUCCESSADD2: 'Added {name}'
@ -87,8 +87,8 @@ ar:
PLURALNAME: 'بيانات كائن'
SINGULARNAME: 'بيانات كائن'
Date:
DAY: 'اليوم'
DAYS: 'الأيام'
DAY: اليوم
DAYS: الأيام
HOUR: ساعة
HOURS: ساعات
MIN: دقيقة
@ -103,7 +103,7 @@ ar:
YEARS: السنوات
DateField:
NOTSET: 'غير محدد'
TODAY: 'اليوم'
TODAY: اليوم
VALIDDATEFORMAT2: 'Please enter a valid date format ({format})'
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})'
@ -121,15 +121,15 @@ ar:
ANY: أي
LOADING: Loading...
File:
Content: 'المحتوى'
Content: المحتوى
Filename: 'اسم الملف'
INVALIDEXTENSION: 'Extension is not allowed (valid: {extensions})'
INVALIDEXTENSIONSHORT: 'Extension is not allowed'
NOFILESIZE: 'حجم الملف 0 بايت'
NOVALIDUPLOAD: 'نوع الملف غير قابل للرفع'
Name: 'الاسم'
PLURALNAME: 'الملفات'
SINGULARNAME: 'الملف'
Name: الاسم
PLURALNAME: الملفات
SINGULARNAME: الملف
TOOLARGE: 'Filesize is too large, maximum {size} allowed'
TOOLARGESHORT: 'Filesize exceeds {size}'
Title: العنوان
@ -139,7 +139,7 @@ ar:
ATTACHONCESAVED2: 'Files can be attached once you have saved the record for the first time.'
DELETE: 'Delete {type}'
DISALLOWEDFILETYPE: 'This filetype is not allowed to be uploaded'
FILE: 'ملف'
FILE: ملف
FROMCOMPUTER: 'من جهازك الشخصي'
FROMFILESTORE: 'من مكتبة الملفات'
NOSOURCE: 'الرجاء اختيارمصدر ملف المرفق'
@ -156,7 +156,7 @@ ar:
VALIDATIONPASSWORDSDONTMATCH: 'رقم المرور غير صحيح'
VALIDATIONPASSWORDSNOTEMPTY: 'أرقام المرور لا يمكن أن تكون فارغة'
VALIDATIONSTRONGPASSWORD: 'Passwords must have at least one digit and one alphanumeric character'
VALIDATOR: 'المحقق'
VALIDATOR: المحقق
VALIDCURRENCY: 'Please enter a valid currency'
FormField:
NONE: لايوجد
@ -238,8 +238,8 @@ ar:
CSSCLASSRIGHT: 'إلى اليمين ، مع التفاف النص'
DETAILS: Details
EMAIL: 'بريد إلكتروني'
FILE: 'ملف'
FOLDER: 'المجلد'
FILE: ملف
FOLDER: المجلد
FROMCMS: 'From the CMS'
FROMCOMPUTER: 'From your computer'
FROMWEB: 'From the web'
@ -275,7 +275,7 @@ ar:
CANT_REORGANISE: 'You do not have permission to alter Top level pages. Your change was not saved.'
DELETED: Deleted.
DropdownBatchActionsDefault: Actions
HELP: 'مساعدة'
HELP: مساعدة
PAGETYPE: 'نوع الصفحة:'
PERMAGAIN: 'تم خروجك من النظام بنجاح. للدخول مرة أخرى أدحل البريد الإلكتروني و الرقم السري بالأسفل'
PERMALREADY: 'عذراً , لكن لا يمكنك الوصول لهذا القسم من النظام. يتوجب عليك الدخول بصلاحية أخرى'
@ -323,7 +323,7 @@ ar:
ValidationIdentifierFailed: 'Can''t overwrite existing member #{id} with identical identifier ({name} = {value}))'
WELCOMEBACK: 'Welcome Back, {firstname}'
YOUROLDPASSWORD: 'رقم المرور السابق'
belongs_many_many_Groups: 'المجموعات'
belongs_many_many_Groups: المجموعات
db_LastVisited: 'تاريخ آخر زيارة'
db_Locale: 'واجهة الموقع'
db_LockedOutUntil: 'مغلق حتى تاريخ'
@ -371,8 +371,8 @@ ar:
Title: 'Data Models'
UPDATEDRECORDS: 'Updated {count} records.'
MoneyField:
FIELDLABELAMOUNT: 'الكمية'
FIELDLABELCURRENCY: 'العملة'
FIELDLABELAMOUNT: الكمية
FIELDLABELCURRENCY: العملة
NullableField:
IsNullLabel: باطل
NumericField:

View File

@ -212,7 +212,7 @@ bg:
RolesAddEditLink: 'Manage roles'
Sort: Сортиране
TITLE: 'Качване на изображението Iрамка'
has_many_Permissions: 'Разрешения'
has_many_Permissions: Разрешения
many_many_Members: Членове
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>'
@ -247,7 +247,7 @@ bg:
IMAGEALT: 'Alternative text (alt)'
IMAGEALTTEXT: 'Alternative text (alt) - shown if image cannot be displayed'
IMAGEALTTEXTDESC: 'Shown to screen readers or if image can not be displayed'
IMAGEDIMENSIONS: 'Размери'
IMAGEDIMENSIONS: Размери
IMAGEHEIGHTPX: Височина
IMAGETITLE: 'Title text (tooltip) - for additional information about the image'
IMAGETITLETEXT: 'Title text (tooltip)'
@ -421,10 +421,10 @@ bg:
MENUTITLE: Security
MemberListCaution: 'Внимание: изтривайки потребители от този списък, ще ги премахне от всички групи и от базата данни.'
NEWGROUP: 'New Group'
PERMISSIONS: 'Разрешения'
ROLES: 'Роли'
PERMISSIONS: Разрешения
ROLES: Роли
ROLESDESCRIPTION: 'Ролите са предварително зададени сетове от разрешения и могат да бъдат присвоявани на групи.<br />Ако е нужно, те се наследяват от родителските групи.'
TABROLES: 'Роли'
TABROLES: Роли
Users: Users
SecurityAdmin_MemberImportForm:
BtnImport: 'Import from CSV'

View File

@ -252,7 +252,7 @@ bs:
IMAGETITLE: 'Title text (tooltip) - for additional information about the image'
IMAGETITLETEXT: 'Title text (tooltip)'
IMAGETITLETEXTDESC: 'For additional information about the image'
IMAGEWIDTHPX: 'Širina'
IMAGEWIDTHPX: Širina
INSERTMEDIA: 'Insert Media'
LINK: Link
LINKANCHOR: 'Sidro na ovoj stranici'
@ -311,7 +311,7 @@ bs:
INVALIDNEWPASSWORD: 'We couldn''t accept that password: {password}'
LOGGEDINAS: 'You''re logged in as {name}.'
NEWPASSWORD: 'Nova šifra'
PASSWORD: 'Šifra'
PASSWORD: Šifra
PLURALNAME: Members
PROFILESAVESUCCESS: 'Successfully saved.'
REMEMBERME: 'Zapamti me slijedeći put'
@ -448,8 +448,8 @@ bs:
SORTDESC: 'Sort in descending order'
TableListField:
CSVEXPORT: 'Izvezi u CSV'
PRINT: 'Štampaj'
Print: 'Štampaj'
PRINT: Štampaj
Print: Štampaj
SELECT: 'Select:'
TimeField:
VALIDATEFORMAT: 'Please enter a valid time format ({format})'

View File

@ -263,7 +263,7 @@ ca:
LINKINTERNAL: 'Pàgina del lloc web'
LINKOPENNEWWIN: 'Obrir l''enllaç a una nova finestra?'
LINKTO: 'Enllaça a'
PAGE: 'Pàgina'
PAGE: Pàgina
URL: URL
URLNOTANOEMBEDRESOURCE: 'The URL ''{url}'' could not be turned into a media resource.'
UpdateMEDIA: 'Update Media'

View File

@ -252,7 +252,7 @@ cs:
IMAGETITLE: 'Titul text (tooltip) - další informace o obrázku'
IMAGETITLETEXT: 'Title text (tooltip)'
IMAGETITLETEXTDESC: 'For additional information about the image'
IMAGEWIDTHPX: 'Šířka'
IMAGEWIDTHPX: Šířka
INSERTMEDIA: 'Insert Media'
LINK: 'Vložit nebo upravit odkaz'
LINKANCHOR: 'Záložka (kotva) na stránce'

View File

@ -5,7 +5,7 @@ de:
CREATED: 'Erstmalig hochgeladen'
DIM: Dimensionen
FILENAME: Dateiname
FOLDER: Folder
FOLDER: Ordner
LASTEDIT: 'Letztmals geändert'
OWNER: Eigentümer
SIZE: Größe
@ -13,14 +13,14 @@ de:
TYPE: Typ
URL: URL
AssetUploadField:
ChooseFiles: 'Choose files'
DRAGFILESHERE: 'Drag files here'
DROPAREA: 'Drop Area'
EDITALL: 'Edit all'
EDITANDORGANIZE: 'Edit & organize'
FILES: Files
TOTAL: Total
TOUPLOAD: 'Choose file(s) to upload...'
ChooseFiles: 'Dateien auswählen'
DRAGFILESHERE: 'Dateien hier ablegen'
DROPAREA: Dateiablage
EDITALL: 'Alle Bearbeiten'
EDITANDORGANIZE: Bearbeiten
FILES: Dateien
TOTAL: Gesamt
TOUPLOAD: 'Datei(en) zum Hochladen auswählen'
UPLOADINPROGRESS: 'Please wait… upload in progress'
UPLOADOR: ODER
BBCodeParser:
@ -55,7 +55,7 @@ de:
Boolean:
ANY: alle
0: Nein
LOGOUT: 'Log out'
LOGOUT: Ausloggen
1: Ja
CMSMain:
ACCESS: 'Access to ''{title}'' section'
@ -69,7 +69,7 @@ de:
- Ja
ComplexTableField:
CLOSEPOPUP: 'Popup schließen'
SUCCESSADD2: 'Added {name}'
SUCCESSADD2: '{name} hinzugefügt'
SUCCESSEDIT: 'Gespeichert %s %s %s'
ConfirmedPasswordField:
ATLEAST: 'Passwords must be at least {min} characters long.'
@ -97,7 +97,7 @@ de:
MONTHS: Monat
SEC: Sekunden
SECS: Sekunden
TIMEDIFFAGO: '{difference} ago'
TIMEDIFFAGO: 'vor {difference}'
TIMEDIFFIN: 'in {difference}'
YEAR: Jahr
YEARS: Jahre
@ -109,17 +109,17 @@ de:
VALIDDATEMINDATE: 'Your date has to be newer or matching the minimum allowed date ({date})'
Director:
ADD: Hinzufügen
INVALID_REQUEST: 'Invalid request'
INVALID_REQUEST: 'Ungültige Anfrage'
DropdownField:
CHOOSE: (Auswahl)
EmailField:
VALIDATION: 'Please enter an email address'
VALIDATION: 'Bitte geben Sie eine E-Mail Adresse ein'
Email_BounceRecord:
PLURALNAME: 'E-Mail Rückläufer'
SINGULARNAME: 'E-Mail Rückläufer'
Enum:
ANY: alle
LOADING: Loading...
LOADING: 'Lade Daten ...'
File:
Content: Inhalt
Filename: Dateiname
@ -134,7 +134,7 @@ de:
TOOLARGESHORT: 'Filesize exceeds {size}'
Title: Titel
FileIFrameField:
ATTACH: 'Attach {type}'
ATTACH: '{type} anhängen'
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.'
DELETE: 'Delete {type}'
@ -143,11 +143,11 @@ de:
FROMCOMPUTER: 'Von Ihrem Computer'
FROMFILESTORE: 'Aus dem Datei-Storage'
NOSOURCE: 'Bitte wählen Sie eine Datei aus'
REPLACE: 'Replace {type}'
REPLACE: '{type} ersetzen'
Filesystem:
IMPORT_TAB_HEADER: Import
SEARCHLISTINGS: Search
SYNCRESULTS: 'Sync complete: {createdcount} items created, {deletedcount} items deleted'
IMPORT_TAB_HEADER: Importieren
SEARCHLISTINGS: Suche
SYNCRESULTS: 'Synchronisation beendet: {createdcount} Objekte erstellt, {deletedcount} Objekte gelöscht'
Form:
FIELDISREQUIRED: '%s wird benötigt'
TITLE: 'Image Uploading Iframe'
@ -161,41 +161,41 @@ de:
FormField:
NONE: keine
GridAction:
DELETE_DESCRIPTION: Delete
Delete: Delete
UnlinkRelation: Unlink
DELETE_DESCRIPTION: Löschen
Delete: Löschen
UnlinkRelation: 'Verbindung entfernen'
GridField:
Add: 'Add {name}'
Add: '{name} Hinzufügen'
Filter: Filter
FilterBy: 'Filter by '
Find: Find
FilterBy: 'Filter nach'
Find: Suchen
LEVELUP: 'Level up'
LinkExisting: 'Link Existing'
NewRecord: 'New %s'
NoItemsFound: 'No items found'
NewRecord: 'Neue(r) %s'
NoItemsFound: 'Keine Elemente gefunden.'
PRINTEDAT: 'Printed at'
PRINTEDBY: 'Printed by'
PlaceHolder: 'Find {type}'
PlaceHolder: '{type} Suchen'
PlaceHolderWithLabels: 'Find {type} by {name}'
RelationSearch: 'Relation search'
ResetFilter: Reset
ResetFilter: Zurücksetzen
GridFieldAction_Delete:
DeletePermissionsFailure: 'No delete permissions'
NEXT: nächste
PREVIOUS: vorherige
GridFieldDetailForm:
Create: Create
Delete: Delete
DeletePermissionsFailure: 'No delete permissions'
Deleted: 'Deleted %s %s'
Create: Erstellen
Delete: Löschen
DeletePermissionsFailure: 'Keine Berechtigungen zum löschen'
Deleted: 'Gelöscht %s %s'
HELLO: Hallo
Save: Save
Saved: 'Saved %s %s'
Save: Speichern
Saved: 'Gespeichert %s %s'
TEXT1: 'Hier ist Ihr'
TEXT2: 'Link zum Zurücksetzen des Passworts'
TEXT3: für
Group:
AddRole: 'Add a role for this group'
AddRole: 'Rolle für die Gruppe hinzufügen'
CHANGEPASSWORDTEXT1: 'Sie haben ihr Passwort geändert für'
CHANGEPASSWORDTEXT2: 'Sie können nun folgende Angaben benutzen um sich einzuloggen'
Code: 'Gruppen Code'
@ -203,10 +203,10 @@ de:
DefaultGroupTitleContentAuthors: Inhaltsautoren
Description: Beschreibung
EMAIL: E-Mail
GroupReminder: 'If you choose a parent group, this group will take all it''s roles'
GroupReminder: 'Bei Zuweisung einer Übergruppe werden alle ihre Rollen übernommen'
HELLO: Hi
Locked: 'Gesperrt?'
NoRoles: 'No roles found'
NoRoles: 'Keine Rollen gefunden'
PASSWORD: Passwort
Parent: Elterngruppe
RolesAddEditLink: 'Rollen hinzufügen/editieren'
@ -223,13 +223,13 @@ de:
Hierarchy:
InfiniteLoopNotAllowed: 'Infinite loop found within the "{type}" hierarchy. Please change the parent to resolve this'
HtmlEditorField:
ADDURL: 'Add URL'
ADJUSTDETAILSDIMENSIONS: 'Details &amp; dimensions'
ADDURL: 'URL hinzufügen'
ADJUSTDETAILSDIMENSIONS: 'Details &amp; Dimensionen'
ANCHORVALUE: Anker
BUTTONINSERT: Insert
BUTTONINSERT: Einfügen
BUTTONINSERTLINK: 'Verweis einfügen'
BUTTONREMOVELINK: 'Verweise entfernen'
BUTTONUpdate: Update
BUTTONUpdate: Aktualisieren
CAPTIONTEXT: Beschriftungstext
CSSCLASS: Ausrichtung/Stil
CSSCLASSCENTER: 'Zentriert, selbstständig'
@ -241,10 +241,10 @@ de:
FILE: Datei
FOLDER: Ordner
FROMCMS: 'From the CMS'
FROMCOMPUTER: 'From your computer'
FROMWEB: 'From the web'
FindInFolder: 'Find in Folder'
IMAGEALT: 'Alternative text (alt)'
FROMCOMPUTER: 'Von Ihrem Computer'
FROMWEB: 'Aus dem Internet'
FindInFolder: 'In Ordner suchen'
IMAGEALT: 'Alternativer Text (alt)'
IMAGEALTTEXT: 'Alternativer Text (alt) - angezeigt, wenn das Bild nicht dargestellt werden kann'
IMAGEALTTEXTDESC: 'Shown to screen readers or if image can not be displayed'
IMAGEDIMENSIONS: Dimensionen
@ -269,28 +269,28 @@ de:
UpdateMEDIA: 'Update Media'
ImageField:
IMAGE: Bild
Image_iframe.ss: 'ChangePasswordEmail.ss: BackLink_Button.ss: CMSLoadingScreen.ss: RelationComplexTableField.ss: ForgotPasswordEmail.ss: APPLY FILTER: "Apply Filter" GridFieldItemEditView.ss: Go back: "Go back" ModelSidebar.ss: TableListField_PageControls.ss: ModelAdmin_Tools.ss: ComplexTableField_popup.ss: TableField.ss: FileIFrameField_iframe.ss: ComplexTableField.ss: TableListField.ss: ModelAdmin_ImportSpec.ss: LeftAndMain_Menu.ss:'
Image_iframe.ss: 'ChangePasswordEmail.ss: BackLink_Button.ss: CMSLoadingScreen.ss: RelationComplexTableField.ss: ForgotPasswordEmail.ss: APPLY FILTER: "Filter anwenden" GridFieldItemEditView.ss: Go back: "Zurück" ModelSidebar.ss: TableListField_PageControls.ss: ModelAdmin_Tools.ss: ComplexTableField_popup.ss: TableField.ss: FileIFrameField_iframe.ss: ComplexTableField.ss: TableListField.ss: ModelAdmin_ImportSpec.ss: LeftAndMain_Menu.ss:'
LeftAndMain:
ADD: 'Eine neue Zeile hinzufügen'
CANT_REORGANISE: 'You do not have permission to alter Top level pages. Your change was not saved.'
DELETED: Deleted.
DropdownBatchActionsDefault: Actions
DropdownBatchActionsDefault: Aktionen
HELP: Hilfe
PAGETYPE: 'Seitentyp:'
PERMAGAIN: 'Sie wurden aus dem System ausgeloggt. Falls Sie sich wieder einloggen möchten, geben Sie bitte Benutzernamen und Passwort im untenstehenden Formular an.'
PERMALREADY: 'Leider dürfen Sie diesen Teil des CMS nicht aufrufen. Wenn Sie sich als jemand anderes einloggen wollen, benutzen Sie bitte das nachstehende Formular.'
PERMDEFAULT: 'Bitte wählen Sie eine Authentifizierungsmethode und geben Sie Ihre Benutzerdaten für den Zugang zum CMS ein.'
PLEASESAVE: 'Diese Seite konnte nicht aktualisiert werden weil sie noch nicht gespeichert wurde - bitte speichern.'
PreviewButton: Preview
PreviewButton: Vorschau
REORGANISATIONSUCCESSFUL: 'Reorganised the site tree successfully.'
SAVEDUP: Saved.
VersionUnknown: unknown
SAVEDUP: Gespeichert.
VersionUnknown: unbekannt
LoginAttempt:
Email: E-Mail-Adresse
IP: IP-Adresse
Status: Status
Member:
ADDGROUP: 'Add group'
ADDGROUP: 'Gruppe hinzufügen'
BUTTONCHANGEPASSWORD: 'Passwort ändern'
BUTTONLOGIN: Einloggen
BUTTONLOGINOTHER: 'Als jemand anders einloggen'
@ -334,23 +334,23 @@ de:
TITLE: 'E-Mail &amp; Passwort'
MemberDatetimeOptionsetField:
AMORPM: 'AM (Ante meridiem) or PM (Post meridiem)'
Custom: Custom
DATEFORMATBAD: 'Date format is invalid'
Custom: Benutzerdefiniert
DATEFORMATBAD: 'Ungültiges Datumsformat'
DAYNOLEADING: 'Day of month without leading zero'
DIGITSDECFRACTIONSECOND: 'One or more digits representing a decimal fraction of a second'
FOURDIGITYEAR: 'Four-digit year'
FOURDIGITYEAR: Jahr
FULLNAMEMONTH: 'Full name of month (e.g. June)'
HOURNOLEADING: 'Hour without leading zero'
MINUTENOLEADING: 'Minute without leading zero'
MINUTENOLEADING: Minute
MONTHNOLEADING: 'Month digit without leading zero'
Preview: Preview
Preview: Vorschau
SHORTMONTH: 'Short name of month (e.g. Jun)'
TOGGLEHELP: 'Toggle formatting help'
TWODIGITDAY: 'Two-digit day of month'
TWODIGITHOUR: 'Two digits of hour (00 through 23)'
TWODIGITMINUTE: 'Two digits of minute (00 through 59)'
TWODIGITMONTH: 'Two-digit month (01=January, etc.)'
TWODIGITSECOND: 'Two digits of second (00 through 59)'
TWODIGITSECOND: Sekunde
TWODIGITYEAR: 'Two-digit year'
MemberImportForm:
Help1: '<p>Mitglieder im <em>CSV</em>-Format (kommaseparierte Werte) importieren. <small><a href="#" class="toggle-advanced">Erweiterte Nutzung</a></small></p>'
@ -362,14 +362,14 @@ de:
MemberTableField: null
ModelAdmin:
DELETE: Löschen
DELETEDRECORDS: 'Deleted {count} records.'
DELETEDRECORDS: '{count} Datensätze wurden gelöscht.'
IMPORT: 'CSV Import'
IMPORTEDRECORDS: 'Imported {count} records.'
IMPORTEDRECORDS: '{count} Datensätze wurden importiert.'
NOCSVFILE: 'Wählen sie eine CSV-Datei zum Importieren'
NOIMPORT: 'Kein Import notwendig.'
RESET: Reset
RESET: Zurücksetzen
Title: 'Data Models'
UPDATEDRECORDS: 'Updated {count} records.'
UPDATEDRECORDS: '{count} Datensätze wurden aktualisiert.'
MoneyField:
FIELDLABELAMOUNT: Betrag
FIELDLABELCURRENCY: Währung
@ -385,14 +385,14 @@ de:
IMPORTSPECFIELDS: 'Database columns'
IMPORTSPECRELATIONS: Relations
PermissionCheckboxSetField:
AssignedTo: 'assigned to "{title}"'
FromGroup: 'inherited from group "{title}"'
FromRole: 'inherited from role "{title}"'
AssignedTo: 'Zugewiesen an "{title}"'
FromGroup: 'abgeleited von Gruppe "{title}"'
FromRole: 'abgeleited von Rolle "{title}"'
FromRoleOnGroup: 'geerbt von Rolle "%s" für die Gruppe "%s"'
Permissions:
PERMISSIONS_CATEGORY: 'Rollen und Zugriffsberechtigungen'
PhoneNumberField:
Back: Back
Back: Zurück
VALIDATION: 'Bitte geben Sie eine gültige Telefonnummer ein'
Security:
ALREADYLOGGEDIN: 'Sie haben keinen Zugriff auf diese Seite. Wenn Sie ein anderes Konto besitzen, mit dem Sie auf diese Seite zugreifen können, melden Sie sich bitte unten an.'
@ -415,8 +415,8 @@ de:
EDITPERMISSIONS: 'Bearbeiten der Rechte und IP-Adressen für jede Gruppe'
EDITPERMISSIONS_HELP: 'Möglichkeit Berechtigungen und IP-Adressen einer Gruppen zu editieren. Erfordert Zugriff auf den Bereich "Sicherheit".'
GROUPNAME: Gruppenname
IMPORTGROUPS: 'Import groups'
IMPORTUSERS: 'Import users'
IMPORTGROUPS: 'Gruppen importieren'
IMPORTUSERS: 'Benutzer importieren'
MEMBERS: Mitglieder
MENUTITLE: Security
MemberListCaution: 'Achtung: Das Entfernen von Mitgliedern aus dieser Liste löscht diese auch aus der Datenbank sowie die entsprechenden Gruppenzuweisungen.'
@ -425,14 +425,14 @@ de:
ROLES: Rollen
ROLESDESCRIPTION: 'Hier können Sie der Gruppe Rollen zuweisen. Rollen sind logische Gruppierungen von Berechtigungen.'
TABROLES: Rollen
Users: Users
Users: Benutzer
SecurityAdmin_MemberImportForm:
BtnImport: Import
FileFieldLabel: 'CSV Datei <small>(Erlaubte Dateierweiterung: *.csv)</small>'
SilverStripeNavigator:
Edit: Edit
Edit: Bearbeiten
FILTER: Filter
IMPORT: Import
IMPORT: Importieren
VIEWFIRST: 'Ersten anzeigen'
VIEWLAST: 'Letzten anzeigen'
VIEWNEXT: 'Nächsten anzeigen'
@ -443,7 +443,7 @@ de:
TABMAIN: Hauptteil
TableField:
ADDITEM: '%s hinzufügen'
ISREQUIRED: 'In %s ''%s'' is required'
ISREQUIRED: 'In %s wird ''%s'' benötigt'
SORTASC: 'Aufsteigend sortieren'
SORTDESC: 'Absteigend sortieren'
TableListField:
@ -457,21 +457,21 @@ de:
LESS: weniger
MORE: mehr
UploadField:
ATTACHFILE: 'Attach a file'
ATTACHFILES: 'Attach files'
AttachFile: 'Attach a file'
ATTACHFILE: 'Datei anhängen'
ATTACHFILES: 'Dateien anhängen'
AttachFile: 'Datei anhängen'
DELETEINFO: 'Löscht die Datei dauerhaft aus dem Dateisystem'
DOEDIT: Speichern
DROPFILE: 'drop a file'
DROPFILES: 'drop files'
Dimensions: Dimensions
DROPFILE: 'Datei hier ablegen'
DROPFILES: 'Dateien hier ablegen'
Dimensions: Dimensionen
EDITINFO: 'Diese Datei bearbeiten'
FIELDNOTSET: 'File information not found'
FIELDNOTSET: 'Dateiinformationen nicht gefunden'
FROMCOMPUTER: 'Von Ihrem Computer'
FROMFILES: 'From files'
FROMFILES: 'Von "Dateien"'
MAXNUMBEROFFILES: 'Max number of {count} file(s) exceeded.'
MAXNUMBEROFFILESSHORT: 'Can only upload {count} files'
REMOVE: Remove
REMOVE: Entfernen
REMOVEERROR: 'Fehler beim Entfernen der Datei'
REMOVEINFO: 'Entfernt die Datei von hier, löscht Sie aber nicht aus dem Dateisystem.'
STARTALL: 'Alle starten'

View File

@ -61,7 +61,7 @@ el:
ACCESS: 'Access to ''{title}'' section'
ACCESSALLINTERFACES: 'Access to all CMS sections'
ACCESSALLINTERFACESHELP: 'Overrules more specific access settings.'
SAVE: 'Αποθήκευση'
SAVE: Αποθήκευση
CMSProfileController:
MENUTITLE: CMSProfileController
CheckboxField:

View File

@ -5,7 +5,7 @@ es_MX:
CREATED: 'Agregado por primera vez'
DIM: Dimensiones
FILENAME: 'Nombre del archivo'
FOLDER: Folder
FOLDER: Carpeta
LASTEDIT: 'Modificado por última vez'
OWNER: Propietario
SIZE: Tamaño
@ -13,16 +13,16 @@ es_MX:
TYPE: Tipo
URL: URL
AssetUploadField:
ChooseFiles: 'Choose files'
DRAGFILESHERE: 'Drag files here'
DROPAREA: 'Drop Area'
EDITALL: 'Edit all'
EDITANDORGANIZE: 'Edit & organize'
FILES: Files
ChooseFiles: 'Seleccionar archivos'
DRAGFILESHERE: 'Arrastrar archivos acá'
DROPAREA: 'Área de arrastre'
EDITALL: 'Editar todos'
EDITANDORGANIZE: 'Editar y organizar'
FILES: Archivos
TOTAL: Total
TOUPLOAD: 'Choose file(s) to upload...'
UPLOADINPROGRESS: 'Please wait… upload in progress'
UPLOADOR: OR
TOUPLOAD: 'Seleccionar archivos para subir'
UPLOADINPROGRESS: 'Por favor espera, subida de archivos en progreso'
UPLOADOR: o
BBCodeParser:
ALIGNEMENT: Alineación
ALIGNEMENTEXAMPLE: 'alineado a la derecha'
@ -63,7 +63,7 @@ es_MX:
ACCESSALLINTERFACESHELP: 'Anula la configuració de acceso más específica.'
SAVE: Guardar
CMSProfileController:
MENUTITLE: CMSProfileController
MENUTITLE: 'Controladores de perfil del CMS'
CheckboxField:
- No
-
@ -97,19 +97,19 @@ es_MX:
MONTHS: meses
SEC: segundo
SECS: segundos
TIMEDIFFAGO: '{difference} ago'
TIMEDIFFIN: 'in {difference}'
TIMEDIFFAGO: '{difference} atrás'
TIMEDIFFIN: 'en {difference}'
YEAR: año
YEARS: años
DateField:
NOTSET: 'no especificada'
TODAY: ahora
VALIDDATEFORMAT2: 'Please enter a valid date format ({format})'
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})'
VALIDDATEFORMAT2: 'Por favor ingresar un formato válido de fecha ({format})'
VALIDDATEMAXDATE: 'Tu fecha tiene que ser más antigua o al menos coincidir con la fecha mínima permitida ({date})'
VALIDDATEMINDATE: 'Tu fecha tiene que ser nueva o al menos coincidir con la fecha mínima permitida ({date})'
Director:
ADD: Agregar
INVALID_REQUEST: 'Invalid request'
INVALID_REQUEST: 'Solicitud no válida'
DropdownField:
CHOOSE: (Seleccione)
EmailField:
@ -119,7 +119,7 @@ es_MX:
SINGULARNAME: 'Correo electrónico devuelto'
Enum:
ANY: Cualquiera
LOADING: Loading...
LOADING: Cargando...
File:
Content: Contenido
Filename: 'Nombre de Archivo'
@ -138,7 +138,7 @@ es_MX:
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.'
DELETE: 'Delete {type}'
DISALLOWEDFILETYPE: 'This filetype is not allowed to be uploaded'
DISALLOWEDFILETYPE: 'Este tipo de archivo no se puede subir'
FILE: Archivo
FROMCOMPUTER: 'Desde su Ordenador'
FROMFILESTORE: 'Desde el almacén de archivos'
@ -150,7 +150,7 @@ es_MX:
SYNCRESULTS: 'Sync complete: {createdcount} items created, {deletedcount} items deleted'
Form:
FIELDISREQUIRED: '%s es obligatorio'
TITLE: 'Image Uploading Iframe'
TITLE: 'Subidor de imágenes por iFrame'
VALIDATIONCREDITNUMBER: 'Please ensure you have entered the {number} credit card number correctly'
VALIDATIONNOTUNIQUE: 'El valor ingresado no es único'
VALIDATIONPASSWORDSDONTMATCH: 'Las contraeñas no son iguales'
@ -162,25 +162,25 @@ es_MX:
NONE: ninguno
GridAction:
DELETE_DESCRIPTION: Delete
Delete: Delete
UnlinkRelation: Unlink
Delete: Eliminar
UnlinkRelation: Desvincular
GridField:
Add: 'Add {name}'
Filter: Filter
FilterBy: 'Filter by '
Find: Find
LEVELUP: 'Level up'
LinkExisting: 'Link Existing'
NewRecord: 'New %s'
NoItemsFound: 'No items found'
PRINTEDAT: 'Printed at'
PRINTEDBY: 'Printed by'
PlaceHolder: 'Find {type}'
PlaceHolderWithLabels: 'Find {type} by {name}'
RelationSearch: 'Relation search'
ResetFilter: Reset
Add: 'Agregar {name}'
Filter: Filtro
FilterBy: 'Filtrar por'
Find: Buscar
LEVELUP: 'Subir de nivel'
LinkExisting: 'Enlazar existente'
NewRecord: 'Nuevo %s'
NoItemsFound: 'No hay ítems encontrados'
PRINTEDAT: 'Impreso en'
PRINTEDBY: 'Imprimir por'
PlaceHolder: 'Buscar {type}'
PlaceHolderWithLabels: 'Buscar {type} por {name}'
RelationSearch: 'Buscar relación'
ResetFilter: Resetear
GridFieldAction_Delete:
DeletePermissionsFailure: 'No delete permissions'
DeletePermissionsFailure: 'No borrar permisos'
NEXT: Siguiente
PREVIOUS: Anterior
GridFieldDetailForm:
@ -195,7 +195,7 @@ es_MX:
TEXT2: 'vínculo para restablecer la contraseña'
TEXT3: para
Group:
AddRole: 'Add a role for this group'
AddRole: 'Agrega un rol para este grupo'
CHANGEPASSWORDTEXT1: 'Usted ha cambiado su contraseña'
CHANGEPASSWORDTEXT2: 'Ahora puedes utilizar las siguientes credenciales para ingresar:'
Code: 'Código del grupo'
@ -203,10 +203,10 @@ es_MX:
DefaultGroupTitleContentAuthors: 'Autores de Contenido'
Description: Descripción
EMAIL: 'Correo Electrónico'
GroupReminder: 'If you choose a parent group, this group will take all it''s roles'
GroupReminder: 'Si eliges el grupo superior, este grupo tomará todos sus roles'
HELLO: Hey
Locked: '¿Bloqueado?'
NoRoles: 'No roles found'
NoRoles: 'No se encontraron roles'
PASSWORD: Contraseña
Parent: 'Grupo ascendente'
RolesAddEditLink: 'Agregar/modificar roles'
@ -215,8 +215,8 @@ es_MX:
has_many_Permissions: Permisos
many_many_Members: Miembros
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>'
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>'
Help1: "<p>Importar usuarios en <em>formato CSV</em> (valores separados por comas). <small><a href=\"#\" class=\"toggle-advanced\">Mostrar uso avanzado</a></small></p>\\n"
Help2: '<div class="advanced"><h4>Uso Avanzado</h4><ul><li>Columnas permitidas: <em>%s</em></li><li>Usuarios existents son relacionados por su <em>Código</em> único, y actualizados con cualquier valor nuevo desde el archivo importado.</li><li>Grupos pueden see asignados por la columna Grupos. Los grupos son identificados por su <em>código</em>, multiples grupos pueden ser separados por comas. Grupos existentes no son eliminados.</li></ul></div>'
ResultCreated: 'Created {count} groups'
ResultDeleted: '%d grupos eliminados'
ResultUpdated: '%d grupos actualizados'
@ -226,7 +226,7 @@ es_MX:
ADDURL: 'Add URL'
ADJUSTDETAILSDIMENSIONS: 'Details &amp; dimensions'
ANCHORVALUE: Anclar
BUTTONINSERT: Insert
BUTTONINSERT: Insertar
BUTTONINSERTLINK: 'Insertar enlace'
BUTTONREMOVELINK: 'Quitar enlace'
BUTTONUpdate: Update
@ -236,12 +236,12 @@ es_MX:
CSSCLASSLEFT: 'A la izquierda, justificando texto.'
CSSCLASSLEFTALONE: 'A la izquierda, en él mismo.'
CSSCLASSRIGHT: 'A la derecha, justificando texto.'
DETAILS: Details
DETAILS: Detalles
EMAIL: 'Dirección de correo-e'
FILE: Archivo
FOLDER: Carpeta
FROMCMS: 'From the CMS'
FROMCOMPUTER: 'From your computer'
FROMCMS: 'Desde el CMS'
FROMCOMPUTER: 'Desde tu computador'
FROMWEB: 'From the web'
FindInFolder: 'Find in Folder'
IMAGEALT: 'Alternative text (alt)'
@ -249,7 +249,7 @@ es_MX:
IMAGEALTTEXTDESC: 'Shown to screen readers or if image can not be displayed'
IMAGEDIMENSIONS: Dimensiones
IMAGEHEIGHTPX: Alto
IMAGETITLE: 'Title text (tooltip) - for additional information about the image'
IMAGETITLE: 'Título del tooltip - para información adicional acerca de la imagen'
IMAGETITLETEXT: 'Title text (tooltip)'
IMAGETITLETEXTDESC: 'For additional information about the image'
IMAGEWIDTHPX: Ancho
@ -269,12 +269,12 @@ es_MX:
UpdateMEDIA: 'Update Media'
ImageField:
IMAGE: Imagen
Image_iframe.ss: 'ChangePasswordEmail.ss: BackLink_Button.ss: CMSLoadingScreen.ss: RelationComplexTableField.ss: ForgotPasswordEmail.ss: APPLY FILTER: "Apply Filter" GridFieldItemEditView.ss: Go back: "Go back" ModelSidebar.ss: TableListField_PageControls.ss: ModelAdmin_Tools.ss: ComplexTableField_popup.ss: TableField.ss: FileIFrameField_iframe.ss: ComplexTableField.ss: TableListField.ss: ModelAdmin_ImportSpec.ss: LeftAndMain_Menu.ss:'
Image_iframe.ss: 'ChangePasswordEmail.ss: BackLink_Button.ss: CMSLoadingScreen.ss: RelationComplexTableField.ss: ForgotPasswordEmail.ss: APPLY FILTER: "Filtro" GridFieldItemEditView.ss: Go back: "Volver" ModelSidebar.ss: TableListField_PageControls.ss: ModelAdmin_Tools.ss: ComplexTableField_popup.ss: TableField.ss: FileIFrameField_iframe.ss: ComplexTableField.ss: TableListField.ss: ModelAdmin_ImportSpec.ss: LeftAndMain_Menu.ss:'
LeftAndMain:
ADD: 'Agregar un nuevo renglón'
CANT_REORGANISE: 'You do not have permission to alter Top level pages. Your change was not saved.'
DELETED: Deleted.
DropdownBatchActionsDefault: Actions
DropdownBatchActionsDefault: Acciones
HELP: Ayuda
PAGETYPE: 'Tipo de página:'
PERMAGAIN: 'Usted ha sido desconectado del CMS. Si quiere volver a entrar, introduzca su nombre de usuario y contraseña.'
@ -284,13 +284,13 @@ es_MX:
PreviewButton: Preview
REORGANISATIONSUCCESSFUL: 'Reorganised the site tree successfully.'
SAVEDUP: Saved.
VersionUnknown: unknown
VersionUnknown: desconocido
LoginAttempt:
Email: 'Dirección de Correo Electrónico'
IP: 'Dirección IP'
Status: Estado
Member:
ADDGROUP: 'Add group'
ADDGROUP: 'Agregar grupo'
BUTTONCHANGEPASSWORD: 'Cambiar Contraseña'
BUTTONLOGIN: Ingresar
BUTTONLOGINOTHER: 'Ingresar como alguien más'
@ -298,7 +298,7 @@ es_MX:
CONFIRMNEWPASSWORD: 'Confirmar Nueva Contraseña'
CONFIRMPASSWORD: 'Confirmar contraseña'
DefaultAdminFirstname: 'Administrador Predeterminado'
DefaultDateTime: default
DefaultDateTime: 'Por defecto'
EMAIL: 'Correo electrónico'
EMPTYNEWPASSWORD: 'La nueva contraseña no puede estar vacía, por favor, inténtelo de nuevo'
ENTEREMAIL: 'Por favor ingresa una dirección de correo electrónico para conseguir una contraseña y reiniciar el enlace.'
@ -308,8 +308,8 @@ es_MX:
ERRORWRONGCRED: 'No parece correcta la dirección de correo-e o la contraseña. Por favor inténtalo de nuevo.'
FIRSTNAME: 'Primer Nombre'
INTERFACELANG: 'Lenguaje de la interfaz'
INVALIDNEWPASSWORD: 'We couldn''t accept that password: {password}'
LOGGEDINAS: 'You''re logged in as {name}.'
INVALIDNEWPASSWORD: 'No podemos acceptar see pasword: {password}'
LOGGEDINAS: 'Conectado como {name}.'
NEWPASSWORD: 'Nueva contraseña'
PASSWORD: Contraseña
PLURALNAME: Miembros
@ -320,8 +320,8 @@ es_MX:
SUBJECTPASSWORDRESET: 'Enlace para reasignar su contraseña'
SURNAME: Apellido
VALIDATIONMEMBEREXISTS: 'Ya existe un miembro con el mismo %s'
ValidationIdentifierFailed: 'Can''t overwrite existing member #{id} with identical identifier ({name} = {value}))'
WELCOMEBACK: 'Welcome Back, {firstname}'
ValidationIdentifierFailed: 'No se puede sobreescribir el miembro existente #{id} con el identificador idéntico ({name} = {value}))'
WELCOMEBACK: 'Bienvenido nuevamente, {firstname}'
YOUROLDPASSWORD: 'Contraseña anterior'
belongs_many_many_Groups: Grupos
db_LastVisited: 'Fecha de Última Visita'
@ -333,28 +333,28 @@ es_MX:
MemberAuthenticator:
TITLE: 'Correo-e y Contraseña'
MemberDatetimeOptionsetField:
AMORPM: 'AM (Ante meridiem) or PM (Post meridiem)'
Custom: Custom
DATEFORMATBAD: 'Date format is invalid'
DAYNOLEADING: 'Day of month without leading zero'
DIGITSDECFRACTIONSECOND: 'One or more digits representing a decimal fraction of a second'
FOURDIGITYEAR: 'Four-digit year'
FULLNAMEMONTH: 'Full name of month (e.g. June)'
HOURNOLEADING: 'Hour without leading zero'
MINUTENOLEADING: 'Minute without leading zero'
MONTHNOLEADING: 'Month digit without leading zero'
Preview: Preview
SHORTMONTH: 'Short name of month (e.g. Jun)'
TOGGLEHELP: 'Toggle formatting help'
TWODIGITDAY: 'Two-digit day of month'
TWODIGITHOUR: 'Two digits of hour (00 through 23)'
TWODIGITMINUTE: 'Two digits of minute (00 through 59)'
TWODIGITMONTH: 'Two-digit month (01=January, etc.)'
TWODIGITSECOND: 'Two digits of second (00 through 59)'
TWODIGITYEAR: 'Two-digit year'
AMORPM: 'AM (ante meridian) o PM (post meridiano)'
Custom: 'A medida'
DATEFORMATBAD: 'El formato de fecha es invalido'
DAYNOLEADING: 'Dia del mes sin cero a la izquierda'
DIGITSDECFRACTIONSECOND: 'Uno o más dígitos representando una fracción decimal de un segundo'
FOURDIGITYEAR: 'Año de 4 dígitos'
FULLNAMEMONTH: 'Nombre completo del mes (ej: Junio)'
HOURNOLEADING: 'Hora sin cero a la izquierda'
MINUTENOLEADING: 'Minuto sin cero a la izquierda'
MONTHNOLEADING: 'Dígito del mes sin cero'
Preview: Previo
SHORTMONTH: 'Nombre corto del mes (ej: Jun)'
TOGGLEHELP: 'Mostrar la ayuda de formato'
TWODIGITDAY: 'Dia del mes de dos dígitos'
TWODIGITHOUR: 'Dos dígitos de la hora (00 a 23)'
TWODIGITMINUTE: 'Dos dígitos de los minutos (00 a 59)'
TWODIGITMONTH: 'Mes de 2 dígitos (01=Enero, etc.)'
TWODIGITSECOND: 'Dos dígitos de los segundos (00 a 59)'
TWODIGITYEAR: 'Año en 2 dígitos'
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>'
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>'
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\">\\n<h4>Uso Avanzado</h4>\\n<ul>\\n<li>Columnas permitidas: <em>%s</em></li>\\n<li>Usuarios existents son relacionados por su <em>Código</em> único, y actualizados con cualquier valor nuevo desde el archivo importado.</li>\\n<li>Grupos pueden see asignados por la column Grupos. Los grupos son identificados por su <em>código</em>, multiples grupos pueden ser separados por comas. Grupos existentes no son eliminados.</li>\\n</ul>\\n</div>"
ResultCreated: 'Created {count} members'
ResultDeleted: '%d miembros eliminados'
ResultNone: 'Sin cambios'
@ -362,21 +362,21 @@ es_MX:
MemberTableField: null
ModelAdmin:
DELETE: Eliminar
DELETEDRECORDS: 'Deleted {count} records.'
DELETEDRECORDS: 'Borrados {count} registros'
IMPORT: 'Importar desde CSV'
IMPORTEDRECORDS: 'Imported {count} records.'
IMPORTEDRECORDS: 'Importados {count} registros'
NOCSVFILE: 'Por favor navegue hasta el archivo CSV a importar'
NOIMPORT: 'Nada por Importar'
RESET: Reset
Title: 'Data Models'
UPDATEDRECORDS: 'Updated {count} records.'
RESET: Reiniciar
Title: 'Modelo de datos'
UPDATEDRECORDS: 'Actualizados {count} registros'
MoneyField:
FIELDLABELAMOUNT: Importe
FIELDLABELCURRENCY: Moneda
NullableField:
IsNullLabel: 'Es Nulo'
NumericField:
VALIDATION: '''{value}'' is not a number, only numbers can be accepted for this field'
VALIDATION: '''{value}'' no es un número, solo números son aceptados por este campo'
Permission:
AdminGroup: Administrador
CMS_ACCESS_CATEGORY: 'Acceder al CMS'
@ -392,7 +392,7 @@ es_MX:
Permissions:
PERMISSIONS_CATEGORY: 'Roles y permisos de acceso'
PhoneNumberField:
Back: Back
Back: Volver
VALIDATION: 'Por favor ingresa un número telefónico válido'
Security:
ALREADYLOGGEDIN: 'Usted no tiene acceso a esta página. Si tiene otra cuenta que pueda tener acceso a ésta página, puede <a href="%s">abrir una sesión abajo</a>.'
@ -409,23 +409,23 @@ es_MX:
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.'
SecurityAdmin:
ACCESS_HELP: 'Allow viewing, adding and editing users, as well as assigning permissions and roles to them.'
ACCESS_HELP: 'Permitir la visualización, agregar y editar usuarios, así como asignar permisos y roles a ellos'
APPLY_ROLES: 'Aplicar roles a grupos'
APPLY_ROLES_HELP: 'Ability to edit the roles assigned to a group. Requires the "Access to ''Users'' section" permission.'
APPLY_ROLES_HELP: 'Habilidad para editar los roles asignados a un grupo. Requiere el permiso "acceso a la sección de usuarios"'
EDITPERMISSIONS: 'Editar permisos para grupos'
EDITPERMISSIONS_HELP: 'Habilidad para modificar Permisos y Direcciones IP para un grupo. Requiere permiso para "Acceder a la sección de ''Seguridad´".'
GROUPNAME: 'Nombre de grupo'
IMPORTGROUPS: 'Import groups'
IMPORTUSERS: 'Import users'
IMPORTGROUPS: 'Importar grupos'
IMPORTUSERS: 'Importar usuarios'
MEMBERS: Miembros
MENUTITLE: Security
MENUTITLE: Seguridad
MemberListCaution: 'Precaución: Al remover miembros de esta lista, debe eliminarlos de todos los grupos y de la base de datos.'
NEWGROUP: 'Nuevo grupo'
PERMISSIONS: Permisos
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: 'Los roles son sets de permisos predefinidos y pueden ser asignados a grupos. <br/> Ellos son heredados desde los grupos superiores si es requerido.'
TABROLES: Roles
Users: Users
Users: Usuarios
SecurityAdmin_MemberImportForm:
BtnImport: Importar
FileFieldLabel: 'Archivo CSV <small>(Extensiones permitidas: *.csv)'
@ -452,29 +452,29 @@ es_MX:
Print: Imprimir
SELECT: 'Seleccione:'
TimeField:
VALIDATEFORMAT: 'Please enter a valid time format ({format})'
VALIDATEFORMAT: 'Por favor ingresar un formato válido de fecha ({format})'
ToggleField:
LESS: menos
MORE: más
UploadField:
ATTACHFILE: 'Attach a file'
ATTACHFILES: 'Attach files'
AttachFile: 'Attach a file'
DELETEINFO: 'Permanently delete this file from the file store'
DOEDIT: Save
DROPFILE: 'drop a file'
DROPFILES: 'drop files'
Dimensions: Dimensions
EDITINFO: 'Edit this file'
FIELDNOTSET: 'File information not found'
FROMCOMPUTER: 'From your computer'
FROMFILES: 'From files'
MAXNUMBEROFFILES: 'Max number of {count} file(s) exceeded.'
MAXNUMBEROFFILESSHORT: 'Can only upload {count} files'
REMOVE: Remove
REMOVEERROR: 'Error removing file'
REMOVEINFO: 'Remove this file from here, but do not delete it from the file store'
STARTALL: 'Start all'
Saved: Saved
ATTACHFILE: 'Adjuntar un archivo'
ATTACHFILES: 'Adjuntar archivos'
AttachFile: 'Adjuntar un archivo'
DELETEINFO: 'Eliminar permanentemente este archivo desde el almacén'
DOEDIT: Guardar
DROPFILE: 'Arrastrar un archivo'
DROPFILES: 'arrastrar archivo aquí'
Dimensions: Dimensiones
EDITINFO: 'Editar este archivo'
FIELDNOTSET: 'Información acerca del archivo no encontrada'
FROMCOMPUTER: 'Desde tu computador'
FROMFILES: 'Desde archivos'
MAXNUMBEROFFILES: 'Máximo número {count} de archivos sobrepasado'
MAXNUMBEROFFILESSHORT: 'Solo puedes subir {count} archivos'
REMOVE: Remover
REMOVEERROR: 'Error removiendo archivo'
REMOVEINFO: 'Remover este archivo de aquí, pero no borrarlo del almacén de archivos'
STARTALL: 'Comenzar todas'
Saved: Guardado
Versioned:
has_many_Versions: Versiones

View File

@ -8,7 +8,7 @@ fa_IR:
FOLDER: Folder
LASTEDIT: 'آخرین تغییرات'
OWNER: دارنده
SIZE: 'حجم'
SIZE: حجم
TITLE: عنوان
TYPE: نوع
URL: نشانی
@ -78,9 +78,9 @@ fa_IR:
SHOWONCLICKTITLE: 'تغيير كلمه عبور'
CreditCardField:
FIRST: نخست
FOURTH: 'چهارم'
SECOND: 'دوم'
THIRD: 'سوم'
FOURTH: چهارم
SECOND: دوم
THIRD: سوم
CurrencyField:
CURRENCYSYMBOL: $
DataObject:
@ -93,7 +93,7 @@ fa_IR:
HOURS: ساعت
MIN: دقیقه
MINS: دقیقه
MONTH: 'ماه'
MONTH: ماه
MONTHS: 'ماه ها'
SEC: ثانیه
SECS: ثانیه
@ -103,7 +103,7 @@ fa_IR:
YEARS: سال
DateField:
NOTSET: 'not set'
TODAY: 'امروز'
TODAY: امروز
VALIDDATEFORMAT2: 'Please enter a valid date format ({format})'
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})'
@ -121,13 +121,13 @@ fa_IR:
ANY: Any
LOADING: Loading...
File:
Content: 'محتوا'
Content: محتوا
Filename: 'نام پرونده'
INVALIDEXTENSION: 'Extension is not allowed (valid: {extensions})'
INVALIDEXTENSIONSHORT: 'Extension is not allowed'
NOFILESIZE: 'Filesize is zero bytes.'
NOVALIDUPLOAD: 'File is not a valid upload'
Name: 'نام'
Name: نام
PLURALNAME: 'فايل ها'
SINGULARNAME: فايل
TOOLARGE: 'Filesize is too large, maximum {size} allowed'
@ -202,7 +202,7 @@ fa_IR:
DefaultGroupTitleAdministrators: 'مدیران کل'
DefaultGroupTitleContentAuthors: 'نویسندگان مطالب'
Description: توضحیات
EMAIL: 'ايميل'
EMAIL: ايميل
GroupReminder: 'If you choose a parent group, this group will take all it''s roles'
HELLO: درود
Locked: 'بسته شده است؟'
@ -212,7 +212,7 @@ fa_IR:
RolesAddEditLink: 'اضافه/ویرایش وظیفه'
Sort: 'تربیت چیدن'
TITLE: 'Image Uploading Iframe'
has_many_Permissions: 'مجوز‌ها'
has_many_Permissions: مجوز‌ها
many_many_Members: اعضاء
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>'
@ -275,7 +275,7 @@ fa_IR:
CANT_REORGANISE: 'You do not have permission to alter Top level pages. Your change was not saved.'
DELETED: Deleted.
DropdownBatchActionsDefault: Actions
HELP: 'کمک'
HELP: کمک
PAGETYPE: 'نوع صفحه'
PERMAGAIN: 'شما از سیستم مدیریت محتوا خارج شده اید.اگر میخواهید دوباره وارد شوید نام کاربری و رمز عبور خود را در قسمت زیر وارد کنید'
PERMALREADY: 'من متاسفم، شما نمی توانید به آن قسمت از سیستم مدیریت محتوا دسترسی پیدا کنید. اگر میخواهید به عنوان شخص دیگری وارد شوید از قسمت زیر تلاش کنید'
@ -306,7 +306,7 @@ fa_IR:
ERRORNEWPASSWORD: 'You have entered your new password differently, 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.'
FIRSTNAME: 'نام'
FIRSTNAME: نام
INTERFACELANG: 'زبان برنامه'
INVALIDNEWPASSWORD: 'We couldn''t accept that password: {password}'
LOGGEDINAS: 'You''re logged in as {name}.'

View File

@ -16,12 +16,12 @@ fi:
ChooseFiles: 'Valitse tiedostot'
DRAGFILESHERE: 'Raahaa tiedotot tähän'
DROPAREA: Pudotusalue
EDITALL: 'Edit all'
EDITALL: 'Muokkaa kaikkia'
EDITANDORGANIZE: 'Muokkaa & järjestele'
FILES: Files
TOTAL: Total
TOUPLOAD: 'Choose file(s) to upload...'
UPLOADINPROGRESS: 'Please wait… upload in progress'
FILES: Tiedostot
TOTAL: Yhteensä
TOUPLOAD: 'Valitse siirrettävä(t) tiedosto(t)...'
UPLOADINPROGRESS: 'Ole hyvä ja odota... siirto käynnissä'
UPLOADOR: TAI
BBCodeParser:
ALIGNEMENT: Tasaus
@ -55,10 +55,10 @@ fi:
Boolean:
ANY: Yhtään
0: Ei
LOGOUT: 'Log out'
LOGOUT: 'Kirjaudu ulos'
1: Kyllä
CMSMain:
ACCESS: 'Access to ''{title}'' section'
ACCESS: 'Pääsy ''{title}'' -osioon'
ACCESSALLINTERFACES: 'Pääsy kaikkiin CMS-osioihin'
ACCESSALLINTERFACESHELP: 'Ohittaa tarkemmat käyttöoikeudet.'
SAVE: Tallenna
@ -69,12 +69,12 @@ fi:
- Kyllä
ComplexTableField:
CLOSEPOPUP: 'Sulje ponnahdusikkuna'
SUCCESSADD2: 'Added {name}'
SUCCESSADD2: 'Lisättiin {name}'
SUCCESSEDIT: 'Tallennettu %s %s %s'
ConfirmedPasswordField:
ATLEAST: 'Passwords must be at least {min} characters long.'
BETWEEN: 'Passwords must be {min} to {max} characters long.'
MAXIMUM: 'Passwords must be at most {max} characters long.'
ATLEAST: 'Salasanan on oltava vähintään {min} merkkiä pitkä.'
BETWEEN: 'Salasanan on oltava väh. {min} ja enintään {max} merkkiä pitkä.'
MAXIMUM: 'Salasanan voi olla enintään {max} merkkiä pitkä.'
SHOWONCLICKTITLE: 'Vaihda salasana'
CreditCardField:
FIRST: ensimmäinen
@ -97,86 +97,86 @@ fi:
MONTHS: kuukaudet
SEC: sek.
SECS: sek.
TIMEDIFFAGO: '{difference} ago'
TIMEDIFFIN: 'in {difference}'
TIMEDIFFAGO: '{difference} sitten'
TIMEDIFFIN: '&raquo; {difference}'
YEAR: vuosi
YEARS: vuodet
DateField:
NOTSET: 'ei asetettu'
TODAY: tänään
VALIDDATEFORMAT2: 'Please enter a valid date format ({format})'
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})'
VALIDDATEFORMAT2: 'Ole hyvä ja kirjaa päivämäärä sallitussa muodossa ({format})'
VALIDDATEMAXDATE: 'Päivämäärän on oltava vanhempi tai sovittava asetettuun maksimiin ({date})'
VALIDDATEMINDATE: 'Päivämäärän on oltava uudempi tai sovittava vähintään asetettuun minimiin ({date})'
Director:
ADD: Lisää
INVALID_REQUEST: 'Invalid request'
INVALID_REQUEST: 'Pyyntö on virheellinen'
DropdownField:
CHOOSE: (Valitse)
EmailField:
VALIDATION: 'Please enter an email address'
VALIDATION: 'Anna sähköpostiosoite, ole hyvä.'
Email_BounceRecord:
PLURALNAME: 'Palautetut sähköpostiviestit'
SINGULARNAME: 'Palautettu sähköpostiviesti'
Enum:
ANY: Yhtään
LOADING: Loading...
LOADING: Ladataan...
File:
Content: Sisältö
Filename: Tiedostonimi
INVALIDEXTENSION: 'Extension is not allowed (valid: {extensions})'
INVALIDEXTENSIONSHORT: 'Extension is not allowed'
INVALIDEXTENSION: 'Tiedostopääte ei ole sallittu (sallitut muodot: {extensions})'
INVALIDEXTENSIONSHORT: 'Tiedostopääte ei ole sallittu'
NOFILESIZE: 'Tiedostokoko on nolla tavua.'
NOVALIDUPLOAD: 'Tiedosto ei ole kelvollinen ladattavaksi'
Name: Nimi
PLURALNAME: Tiedostot
SINGULARNAME: Tiedosto
TOOLARGE: 'Filesize is too large, maximum {size} allowed'
TOOLARGESHORT: 'Filesize exceeds {size}'
TOOLARGE: 'Tiedostokoko on liian suuri: maks. sallittu koko on {size}'
TOOLARGESHORT: 'Sallittu tiedostokoko ylitetty {size}'
Title: Otsikko
FileIFrameField:
ATTACH: 'Attach {type}'
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.'
DELETE: 'Delete {type}'
ATTACH: 'Liitä {type}'
ATTACHONCESAVED: '{type} voidaan liittää, kun olet tallentanut tietueen ensimmäistä kertaa.'
ATTACHONCESAVED2: 'Tiedostoja voidaan liittää, kun olet tallentanut tietueen ensimmäisen kerran.'
DELETE: 'Poista {type}'
DISALLOWEDFILETYPE: 'Tiedostotyyppin siirtoa ei ole sallittu'
FILE: Tiedosto
FROMCOMPUTER: tietokoneeltasi
FROMFILESTORE: Tiedostovarastosta
NOSOURCE: 'Valitse lähdetiedosto liitettäväksi'
REPLACE: 'Replace {type}'
REPLACE: 'Korvaa {type}'
Filesystem:
IMPORT_TAB_HEADER: Import
SEARCHLISTINGS: Search
SYNCRESULTS: 'Sync complete: {createdcount} items created, {deletedcount} items deleted'
IMPORT_TAB_HEADER: Tuo
SEARCHLISTINGS: Etsi
SYNCRESULTS: 'Synkronointi valmis: {createdcount} kohdetta luotu, {deletedcount} kohdetta poistettu'
Form:
FIELDISREQUIRED: '%s on pakollinen.'
TITLE: 'Kuvansiirtoikkuna (iFrame)'
VALIDATIONCREDITNUMBER: 'Please ensure you have entered the {number} credit card number correctly'
VALIDATIONCREDITNUMBER: 'Tarkista, ovatko antamasi luottokortin numerot ({number}) oikein'
VALIDATIONNOTUNIQUE: 'Syötetty arvo ei ole yksilöllinen'
VALIDATIONPASSWORDSDONTMATCH: 'Salasanat eivät täsmää'
VALIDATIONPASSWORDSNOTEMPTY: 'Salasana ei voi olla tyhjä'
VALIDATIONSTRONGPASSWORD: 'Passwords must have at least one digit and one alphanumeric character'
VALIDATIONSTRONGPASSWORD: 'Salasanassa on oltava vähintään yksi numero ja yksi kirjain'
VALIDATOR: Tarkistin
VALIDCURRENCY: 'Please enter a valid currency'
VALIDCURRENCY: 'Ole hyvä ja valitse voimassa oleva valuutta'
FormField:
NONE: 'Ei yhtään'
GridAction:
DELETE_DESCRIPTION: Delete
DELETE_DESCRIPTION: Poista
Delete: Poista
UnlinkRelation: 'Pura linkitys'
GridField:
Add: 'Add {name}'
Add: 'Lisää {name}'
Filter: Suodatin
FilterBy: 'Filter by '
FilterBy: 'Suodata &raquo;'
Find: Etsi
LEVELUP: 'Level up'
LEVELUP: 'Taso ylös'
LinkExisting: 'Linkitä olemassaoleva'
NewRecord: 'Uusi %s'
NoItemsFound: 'Ei kohteita'
PRINTEDAT: Tulostettu
PRINTEDBY: Tulostaja
PlaceHolder: 'Find {type}'
PlaceHolderWithLabels: 'Find {type} by {name}'
PlaceHolder: 'Etsi {type}'
PlaceHolderWithLabels: 'Etsi {type} &raquo; {name}'
RelationSearch: Relaatiohaku
ResetFilter: Nollaa
GridFieldAction_Delete:
@ -184,13 +184,13 @@ fi:
NEXT: Seuraava
PREVIOUS: Edellinen
GridFieldDetailForm:
Create: Create
Delete: Delete
DeletePermissionsFailure: 'No delete permissions'
Deleted: 'Deleted %s %s'
Create: Luo
Delete: Poista
DeletePermissionsFailure: 'Ei oikeuksia poistamiseen'
Deleted: 'Poistettiin %s %s'
HELLO: Hei
Save: Save
Saved: 'Saved %s %s'
Save: Tallenna
Saved: 'Tallennettu %s %s'
TEXT1: 'Tässä on sinun'
TEXT2: 'salasanan tyhjäys -linkki'
TEXT3: henkilölle
@ -206,7 +206,7 @@ fi:
GroupReminder: 'Valitessasi isäntäryhmän, roolit periytyvät tähän ryhmään'
HELLO: Hei
Locked: 'Lukittu?'
NoRoles: 'Roolia ei löytynyt'
NoRoles: 'Rooleja ei löytynyt'
PASSWORD: Salasana
Parent: Yliryhmä
RolesAddEditLink: 'Lisää/muokkaa rooleja'
@ -217,19 +217,19 @@ fi:
GroupImportForm:
Help1: '<p>Tuo yksi tai useampi ryhmä <em>CSV</em>-muotoisena (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 ryhmät kohdistetaan niiden uniikin <em>Code</em>-arvolla, ja päivitetään uudet arvot tuodusta tiedostosta.</li>\\n<li>Ryhmien hierarkiat voidaan luoda <em>ParentCode</em>-palstalla.</li>\\n<li>Oikeustasot voidaan kohdistaa <em>PermissionCode</em>-palstalla. Olemassa olevia oikeustasoja ei poisteta.</li>\\n</ul>\\n</div>"
ResultCreated: 'Created {count} groups'
ResultCreated: 'Luotiin {count} ryhmä(ä)'
ResultDeleted: 'Poistettu %d ryhmää'
ResultUpdated: 'Päivitetty %d ryhmää'
Hierarchy:
InfiniteLoopNotAllowed: 'Infinite loop found within the "{type}" hierarchy. Please change the parent to resolve this'
InfiniteLoopNotAllowed: '"{type}" -hierarkiasta löytyi loputon silmukka. Ole hyvä ja muuta isäntää korjataksesi ongelman.'
HtmlEditorField:
ADDURL: 'Add URL'
ADJUSTDETAILSDIMENSIONS: 'Details &amp; dimensions'
ADDURL: 'Lisää URL-osoite'
ADJUSTDETAILSDIMENSIONS: 'Tarkat tiedot &amp; mitat'
ANCHORVALUE: Ankkuri
BUTTONINSERT: Liitä
BUTTONINSERTLINK: 'Lisää linkki'
BUTTONREMOVELINK: 'Poista linkki'
BUTTONUpdate: Update
BUTTONUpdate: Päivitä
CAPTIONTEXT: Kuvateksti
CSSCLASS: Tasaus/tyyli
CSSCLASSCENTER: 'Keskellä omillaan.'
@ -242,18 +242,18 @@ fi:
FOLDER: Kansio
FROMCMS: CMS-järjestelmästä
FROMCOMPUTER: 'Omalta tietokoneeltasi'
FROMWEB: 'From the web'
FindInFolder: 'Find in Folder'
IMAGEALT: 'Alternative text (alt)'
FROMWEB: Webistä
FindInFolder: 'Etsi kansiosta'
IMAGEALT: 'Vaihtoehtoinen teksti (alt)'
IMAGEALTTEXT: 'Vaihtoehtoinen teksti (alt) - näytetään jos kuvaa ei voida näyttää'
IMAGEALTTEXTDESC: 'Shown to screen readers or if image can not be displayed'
IMAGEALTTEXTDESC: 'Näytetään ruudunlukuohjelmille tai jos kuvia ei voi näyttää'
IMAGEDIMENSIONS: Mitat
IMAGEHEIGHTPX: Korkeus
IMAGETITLE: 'Otsikko (tooltip) - kuvan lisätietoja varten'
IMAGETITLETEXT: 'Title text (tooltip)'
IMAGETITLETEXTDESC: 'For additional information about the image'
IMAGETITLETEXT: 'Otsikkoteksti (tooltip)'
IMAGETITLETEXTDESC: 'Kuvan lisätiedot'
IMAGEWIDTHPX: Leveys
INSERTMEDIA: 'Insert Media'
INSERTMEDIA: 'Liitä media'
LINK: 'Lisää/muokkaa linkki(ä) valittuun tekstiin'
LINKANCHOR: 'Ankkuroi tähän sivuun'
LINKDESCR: 'Linkin kuvaus'
@ -265,15 +265,15 @@ fi:
LINKTO: Linkki
PAGE: Sivu
URL: URL-osoite
URLNOTANOEMBEDRESOURCE: 'The URL ''{url}'' could not be turned into a media resource.'
UpdateMEDIA: 'Update Media'
URLNOTANOEMBEDRESOURCE: 'URL-osoitetteesta ''{url}'' ei voitu liittää mediaa'
UpdateMEDIA: 'Päivitä media'
ImageField:
IMAGE: Kuva
Image_iframe.ss: 'ChangePasswordEmail.ss: BackLink_Button.ss: CMSLoadingScreen.ss: RelationComplexTableField.ss: ForgotPasswordEmail.ss: APPLY FILTER: "Suodata" GridFieldItemEditView.ss: Go back: "Takaisin" ModelSidebar.ss: TableListField_PageControls.ss: ModelAdmin_Tools.ss: ComplexTableField_popup.ss: TableField.ss: FileIFrameField_iframe.ss: ComplexTableField.ss: TableListField.ss: ModelAdmin_ImportSpec.ss: LeftAndMain_Menu.ss:'
LeftAndMain:
ADD: 'Lisää uusi rivi'
CANT_REORGANISE: 'You do not have permission to alter Top level pages. Your change was not saved.'
DELETED: Deleted.
CANT_REORGANISE: 'Sinulla ei ole oikeuksia mennä ylemmän tason sivuille. Muutoksiasi ei tallennettu.'
DELETED: Poistettu.
DropdownBatchActionsDefault: Toimenpiteet
HELP: Ohje
PAGETYPE: 'Sivun tyyppi:'
@ -281,16 +281,16 @@ fi:
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.'
PLEASESAVE: 'Tätä sivua ei voitu päivittää, koska sitä ei ole vielä tallennettu. Tallenna sivu.'
PreviewButton: Preview
REORGANISATIONSUCCESSFUL: 'Reorganised the site tree successfully.'
SAVEDUP: Saved.
PreviewButton: Esikatselu
REORGANISATIONSUCCESSFUL: 'Hakemistopuu järjestettiin uudelleen onnistuneesti.'
SAVEDUP: Tallennettu.
VersionUnknown: tuntematon
LoginAttempt:
Email: Sähköpostiosoite
IP: IP-osoite
Status: Tila
Member:
ADDGROUP: 'Add group'
ADDGROUP: 'Lisää ryhmä'
BUTTONCHANGEPASSWORD: 'Vaihda salasana'
BUTTONLOGIN: 'Kirjaudu sisään'
BUTTONLOGINOTHER: 'Kirjaudu jonain muuna'
@ -308,8 +308,8 @@ fi:
ERRORWRONGCRED: 'Tämä ei näytä oikealta sähköpostiosoitteelta tai salasanalta. Yritä uudelleen.'
FIRSTNAME: Etunimi
INTERFACELANG: 'Käyttöliittymän kieli'
INVALIDNEWPASSWORD: 'We couldn''t accept that password: {password}'
LOGGEDINAS: 'You''re logged in as {name}.'
INVALIDNEWPASSWORD: 'Salasana ({password}) ei ole kelvollinen'
LOGGEDINAS: 'Olet kirjautuneena nimellä {name}.'
NEWPASSWORD: 'Uusi salasana'
PASSWORD: Salasana
PLURALNAME: Jäsenet
@ -320,8 +320,8 @@ fi:
SUBJECTPASSWORDRESET: 'Salasanasi palautuslinkki'
SURNAME: Sukunimi
VALIDATIONMEMBEREXISTS: 'Rekisteröityneellä käyttäjällä on jo käytössä tämä sähköpostiosoite.'
ValidationIdentifierFailed: 'Can''t overwrite existing member #{id} with identical identifier ({name} = {value}))'
WELCOMEBACK: 'Welcome Back, {firstname}'
ValidationIdentifierFailed: 'Olemassa olevan käyttäjän id:n #{id} päälle ei voida kirjoittaa samalla tunnisteella ({name} = {value}))'
WELCOMEBACK: 'Tervetuloa takaisin, {firstname}'
YOUROLDPASSWORD: 'Vanha salasanasi'
belongs_many_many_Groups: Ryhmät
db_LastVisited: 'Viimeisin vierailu:'
@ -355,44 +355,44 @@ fi:
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>'
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>"
ResultCreated: 'Created {count} members'
ResultCreated: 'Luotiin {count} käyttäjä(ä)'
ResultDeleted: 'Poistettu %d jäsentä'
ResultNone: 'Ei muutoksia'
ResultUpdated: 'Updated {count} members'
ResultUpdated: 'Päivitettiin {count} käyttäjä(ä)'
MemberTableField: null
ModelAdmin:
DELETE: Poista
DELETEDRECORDS: 'Deleted {count} records.'
DELETEDRECORDS: 'Poistettiin {count} tietuetta'
IMPORT: 'Tuo CSV:stä'
IMPORTEDRECORDS: 'Imported {count} records.'
IMPORTEDRECORDS: 'Tuotiin {count} tietuetta'
NOCSVFILE: 'Selaa ja tuo CSV-tiedosto'
NOIMPORT: 'Ei tuotavia'
RESET: Nollaa
Title: 'Data Models'
UPDATEDRECORDS: 'Updated {count} records.'
Title: Datamallit
UPDATEDRECORDS: 'Päivitettiin {count} tietuetta'
MoneyField:
FIELDLABELAMOUNT: Määrä
FIELDLABELCURRENCY: Valuutta
NullableField:
IsNullLabel: 'On nolla'
NumericField:
VALIDATION: '''{value}'' is not a number, only numbers can be accepted for this field'
VALIDATION: '''{value}'' ei ole numero: tähän kenttään hyväksytään vain numeroita'
Permission:
AdminGroup: Järjestelmänvalvoja
CMS_ACCESS_CATEGORY: CMS-pääsy
FULLADMINRIGHTS: 'Täydet ylläpitäjän oikeudet'
FULLADMINRIGHTS_HELP: 'Merkitsee ja ohittaa kaikki muut määritellyt käyttöoikeudet.'
IMPORTSPECFIELDS: 'Database columns'
IMPORTSPECRELATIONS: Relations
IMPORTSPECFIELDS: 'Tietokannan sarakkeet'
IMPORTSPECRELATIONS: Yhteydet
PermissionCheckboxSetField:
AssignedTo: 'assigned to "{title}"'
FromGroup: 'inherited from group "{title}"'
FromRole: 'inherited from role "{title}"'
AssignedTo: 'valittiin "{title}"'
FromGroup: 'periytyivät ryhmästä "{title}"'
FromRole: 'periytyivät roolista "{title}"'
FromRoleOnGroup: 'periytynyt roolista "%s" ryhmässä "%s"'
Permissions:
PERMISSIONS_CATEGORY: 'Roolit ja käyttöoikeudet'
PhoneNumberField:
Back: Back
Back: Takaisin
VALIDATION: 'Kirjoita pätevä puhelinnumero'
Security:
ALREADYLOGGEDIN: 'Sinulla ei ole oikeuksia tälle sivulle. Jos sinulla on toinen tili, jolla on oikeudet tälle sivulle, voit kirjautua niillä sisään.'
@ -404,10 +404,10 @@ fi:
LOGGEDOUT: 'Kirjauduit ulos. Jos haluat kirjautua sisään, syötä tietosi alle.'
LOGIN: 'Kirjaudu sisään'
NOTEPAGESECURED: 'Tämä sivu on suojattu. Syötä tunnistetietosi alle ja annamme sinulle oikeat oikeudet.'
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>Salasanan nollauslinkki on virheellinen tai vanhentunut.</p><p>Voit pyytää uuden <a href="{link1}">napsauttamalla tästä</a> tai vaihtaa salasanasi <a href="{link2}">kirjautumisen jälkeen</a>.</p>'
NOTERESETPASSWORD: 'Syötä sähköpostiosoitteesi ja lähetämme sinulle linkin, jonka avulla saat palautettua salasanasi'
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.'
PASSWORDSENTHEADER: 'Salasanan palautuslinkki lähetettiin osoitteeseen ''{email}'''
PASSWORDSENTTEXT: 'Kiitos! Salasanan palautuslinkki lähetettiin osoitteeseen ''{email}'', joka on liitettynä tähän käyttäjätiliin.'
SecurityAdmin:
ACCESS_HELP: 'Oikeuttaa käyttäjien katselun, lisäämisen ja muokkaamisen, kuten myös käyttöoikeuksien ja roolien määrittämisen heille.'
APPLY_ROLES: 'Aseta roolit ryhmille'
@ -418,7 +418,7 @@ fi:
IMPORTGROUPS: 'Tuo ryhmiä'
IMPORTUSERS: 'Tuo käyttäjiä'
MEMBERS: Jäsenet
MENUTITLE: Security
MENUTITLE: Tietosuoja
MemberListCaution: 'Varoitus: Jäsenten poistaminen listalta poistaa ne kaikista ryhmistä ja tietokannasta'
NEWGROUP: 'Uusi ryhmä'
PERMISSIONS: Oikeudet
@ -430,9 +430,9 @@ fi:
BtnImport: Tuonti
FileFieldLabel: 'CSV-tiedosto <small>(Sallitut päätteet: *.csv)</small>'
SilverStripeNavigator:
Edit: Edit
FILTER: Filter
IMPORT: Import
Edit: Muokkaa
FILTER: Suodin
IMPORT: Tuo
VIEWFIRST: 'Näytä ensimmäinen'
VIEWLAST: 'Näytä viimeinen'
VIEWNEXT: 'Näytä seuraava'
@ -443,7 +443,7 @@ fi:
TABMAIN: Yleiset
TableField:
ADDITEM: 'Lisää %s'
ISREQUIRED: 'In %s ''%s'' is required'
ISREQUIRED: 'Kohteessa %s on ''%s'' pakollinen'
SORTASC: 'Järjestä nousevasti'
SORTDESC: 'Järjestä laskevasti'
TableListField:
@ -452,7 +452,7 @@ fi:
Print: Tulosta
SELECT: 'Valitse:'
TimeField:
VALIDATEFORMAT: 'Please enter a valid time format ({format})'
VALIDATEFORMAT: 'Ole hyvä ja kirjaa päivämäärä sallitussa muodossa ({format})'
ToggleField:
LESS: vähemmän
MORE: lisää
@ -464,14 +464,14 @@ fi:
DOEDIT: Tallenna
DROPFILE: 'Pudota tiedosto'
DROPFILES: 'pudota tiedostot'
Dimensions: Dimensions
Dimensions: Mitat
EDITINFO: 'Muokkaa tätä tiedostoa'
FIELDNOTSET: 'Tietoja tiedostosta ei löytynyt'
FROMCOMPUTER: 'Omalta tietokoneeltasi'
FROMFILES: Tiedostoista
MAXNUMBEROFFILES: 'Max number of {count} file(s) exceeded.'
MAXNUMBEROFFILESSHORT: 'Can only upload {count} files'
REMOVE: Remove
MAXNUMBEROFFILES: 'Suurin sallittu määrä ({count}) tiedostoja ylitetty.'
MAXNUMBEROFFILESSHORT: 'Voidaan siirtää vain {count} tiedostoa'
REMOVE: Poista
REMOVEERROR: 'Virhe poistettaessa tiedostoa'
REMOVEINFO: 'Poista tiedosto, mutta säilytä se tiedostovarastossa'
STARTALL: 'Aloita kaikki'

View File

@ -21,7 +21,7 @@ fr:
FILES: Fichiers
TOTAL: Total
TOUPLOAD: 'Choisissez les fichiers à télécharger'
UPLOADINPROGRESS: 'Please wait… upload in progress'
UPLOADINPROGRESS: 'Patientez s''il vous plaît… téléchargement en cours '
UPLOADOR: OU
BBCodeParser:
ALIGNEMENT: Alignement
@ -69,7 +69,7 @@ fr:
- Oui
ComplexTableField:
CLOSEPOPUP: 'Ferme Popup'
SUCCESSADD2: 'Added {name}'
SUCCESSADD2: '{name} ajouté'
SUCCESSEDIT: 'Sauvegardé %s %s %s'
ConfirmedPasswordField:
ATLEAST: 'Passwords must be at least {min} characters long.'
@ -97,16 +97,16 @@ fr:
MONTHS: mois
SEC: seconde
SECS: secondes
TIMEDIFFAGO: '{difference} ago'
TIMEDIFFIN: 'in {difference}'
TIMEDIFFAGO: 'Il y a {difference}'
TIMEDIFFIN: 'Dans {difference}'
YEAR: année
YEARS: années
DateField:
NOTSET: 'pas d''ensemble'
TODAY: 'aujourd''hui'
VALIDDATEFORMAT2: 'Please enter a valid date format ({format})'
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})'
VALIDDATEFORMAT2: 'Saisissez la date au format valide ({format})'
VALIDDATEMAXDATE: 'La date doit être antérieure ou égale à celle qui a été autorisée ({date})'
VALIDDATEMINDATE: 'La date doit être plus récente ou égale à celle qui a été autorisée ({date})'
Director:
ADD: Ajouter
INVALID_REQUEST: 'Requête non valide'
@ -123,7 +123,7 @@ fr:
File:
Content: Contenu
Filename: 'Nom du fichier'
INVALIDEXTENSION: 'Extension is not allowed (valid: {extensions})'
INVALIDEXTENSION: 'Cette extension nest pas autorisée (les valides sont&nbsp;: {extensions})'
INVALIDEXTENSIONSHORT: 'Extension is not allowed'
NOFILESIZE: 'La taille du fichier est de zéro bytes.'
NOVALIDUPLOAD: 'Le fichier nest pas valide pour le téléversement'
@ -147,7 +147,7 @@ fr:
Filesystem:
IMPORT_TAB_HEADER: Importer
SEARCHLISTINGS: Rechercher
SYNCRESULTS: 'Sync complete: {createdcount} items created, {deletedcount} items deleted'
SYNCRESULTS: 'Synchronisation terminée&nbsp;: {createdcount} éléments créés, {deletedcount} éléments supprimés '
Form:
FIELDISREQUIRED: '%s est requis'
TITLE: 'Iframe de chargement dimages'
@ -169,14 +169,14 @@ fr:
Filter: Filtrer
FilterBy: 'Filtrer par'
Find: Trouver
LEVELUP: 'Level up'
LEVELUP: 'Monter dun niveau'
LinkExisting: 'Lien existant'
NewRecord: 'Nouveau %s'
NoItemsFound: 'Aucun élément na été trouvé.'
PRINTEDAT: 'Imprimé le'
PRINTEDBY: 'Imprimé par'
PlaceHolder: 'Find {type}'
PlaceHolderWithLabels: 'Find {type} by {name}'
PlaceHolder: 'Rechercher {type}'
PlaceHolderWithLabels: 'Rechercher {type} par {name}'
RelationSearch: 'Rechercher relations'
ResetFilter: Réinitialiser
GridFieldAction_Delete:
@ -186,8 +186,8 @@ fr:
GridFieldDetailForm:
Create: Créer
Delete: Supprimer
DeletePermissionsFailure: 'No delete permissions'
Deleted: 'Deleted %s %s'
DeletePermissionsFailure: 'Vous navez pas les autorisations pour supprimer'
Deleted: '%s %s supprimés'
HELLO: Salut
Save: Enregistrer
Saved: '%s %s sauvegardés'
@ -197,7 +197,7 @@ fr:
Group:
AddRole: 'Ajouter un rôle à ce groupe '
CHANGEPASSWORDTEXT1: 'Vous avez modifié votre mot de passe pour'
CHANGEPASSWORDTEXT2: 'Vous pouvez maintenant utiliser les détails suivants pour vous connecter :'
CHANGEPASSWORDTEXT2: 'Vous pouvez maintenant utiliser les identifiants suivants pour vous connecter&nbsp;:'
Code: 'Code de groupe'
DefaultGroupTitleAdministrators: Administrateur
DefaultGroupTitleContentAuthors: 'Auteurs du contenu'
@ -212,11 +212,11 @@ fr:
RolesAddEditLink: 'Ajouter/éditer les rôles'
Sort: 'Ordre de tri'
TITLE: 'Fenêtre de chargement d''images'
has_many_Permissions: Permissions
has_many_Permissions: Autorisations
many_many_Members: Membres
GroupImportForm:
Help1: '<p>Importer un ou plusieurs groupe(s) au format <em>CSV</em> (comma-separated values). <small><a href="#" class="toggle-advanced">Montrer l''usage avancé</a></small></p>'
Help2: '<div class="advanced"><h4>Advanced usage</h4><ul><li>Colonnes permises : <em>%s</em></li><li>Les groupes existants dont le <em>Code</em> valeur concorde, sont mis à jour avec les nouvelles valeurs du fichier importé.</li><li>Une hiérarchie de groupe peut être créé avec la colonne <em>ParentCode</em>.</li><li>Les codes de permissions peuvent être assignés grâce à la colonne <em>PermissionCode</em>. Les codes permissions ne sont pas effacés. </li></ul></div>'
Help2: "<div class=\"advanced\">\\n<h4>Utilisations avancée</h4>\\n<ul>\\n<li>Colonnes autorisées&nbsp;: <em>%s</em></li>\\n<li>Les groupes existants dont la valeur <em>Code</em> concorde seront mis à jour avec les données du fichier importé.</li>\\n<li>Des hiérarchies entre groupes peuvent être créées à laide de la colonne <em>ParentCode</em>.</li>\\n<li>Des autorisations peuvent être assignées par la colonne <em>PermissionCode</em>. Les autorisations existantes ne seront pas effacées.</li>\\n</ul>\\n</div>"
ResultCreated: 'Created {count} groups'
ResultDeleted: '%d groupes supprimés'
ResultUpdated: '%d groupes mises à jour'
@ -224,7 +224,7 @@ fr:
InfiniteLoopNotAllowed: 'Infinite loop found within the "{type}" hierarchy. Please change the parent to resolve this'
HtmlEditorField:
ADDURL: 'Add URL'
ADJUSTDETAILSDIMENSIONS: 'Details &amp; dimensions'
ADJUSTDETAILSDIMENSIONS: 'Détails &amp; dimensions'
ANCHORVALUE: Ancre
BUTTONINSERT: Insérer
BUTTONINSERTLINK: 'Insérer un lien'
@ -243,17 +243,17 @@ fr:
FROMCMS: 'Depuis le SGC'
FROMCOMPUTER: 'Depuis votre ordinateur'
FROMWEB: 'From the web'
FindInFolder: 'Find in Folder'
FindInFolder: 'Trouver dans un dossier'
IMAGEALT: 'Alternative text (alt)'
IMAGEALTTEXT: 'Texte alternatif (alt) - s''affiche si l''image ne peut être affichée.'
IMAGEALTTEXTDESC: 'Shown to screen readers or if image can not be displayed'
IMAGEDIMENSIONS: Dimensions
IMAGEHEIGHTPX: Hauteur
IMAGETITLE: 'Texte du titre (tooltip) - informations à propos de l''image'
IMAGETITLETEXT: 'Title text (tooltip)'
IMAGETITLETEXTDESC: 'For additional information about the image'
IMAGETITLETEXT: 'Texte du titre (info-bulle)'
IMAGETITLETEXTDESC: 'Autres informations à propos de limage'
IMAGEWIDTHPX: Largeur
INSERTMEDIA: 'Insert Media'
INSERTMEDIA: 'Insérer un support audiovisuel'
LINK: Lien
LINKANCHOR: 'Ancre sur cette page'
LINKDESCR: 'Description du lien'
@ -266,21 +266,21 @@ fr:
PAGE: Page
URL: URL
URLNOTANOEMBEDRESOURCE: 'The URL ''{url}'' could not be turned into a media resource.'
UpdateMEDIA: 'Update Media'
UpdateMEDIA: 'Mettre à jour le support audiovisuel'
ImageField:
IMAGE: Image
Image_iframe.ss: 'ChangePasswordEmail.ss: BackLink_Button.ss: CMSLoadingScreen.ss: RelationComplexTableField.ss: ForgotPasswordEmail.ss: APPLY FILTER: "Appliquer le filtre" GridFieldItemEditView.ss: Go back: "Revenir en arrière" ModelSidebar.ss: TableListField_PageControls.ss: ModelAdmin_Tools.ss: ComplexTableField_popup.ss: TableField.ss: FileIFrameField_iframe.ss: ComplexTableField.ss: TableListField.ss: ModelAdmin_ImportSpec.ss: LeftAndMain_Menu.ss:'
LeftAndMain:
ADD: 'Ajouter une nouvelle ligne'
CANT_REORGANISE: 'You do not have permission to alter Top level pages. Your change was not saved.'
CANT_REORGANISE: 'Vous navez pas lautorisation de modifier les pages de premier niveau. Vos modifications nont pas été enregistrées.'
DELETED: Deleted.
DropdownBatchActionsDefault: Actions
HELP: Aide
PAGETYPE: 'Type de page :'
PAGETYPE: 'Type de page&nbsp;:'
PERMAGAIN: 'Vous avez été déconnecté du CMS. Si vous voulez vous reconnecter, entrez un nom d''utilisateur et un mot de passe ci-dessous.'
PERMALREADY: 'Désolé, mais vous ne pouvez pas accéder à cette partie du CMS. Si vous voulez changer d''identité, faites le ci-dessous'
PERMDEFAULT: 'Saisissez votre adresse de courriel et votre mot de passe pour accéder au CMS.'
PLEASESAVE: 'Enregistez la page s''il vous plaît : Cette page ne pouvait pas être actualisée, car elle n''a pas encore été enregistrée.'
PLEASESAVE: 'Enregistrez la page sil vous plaît&nbsp;: elle ne pouvait pas être mise à jour car elle navait pas encore été sauvegardée.'
PreviewButton: Preview
REORGANISATIONSUCCESSFUL: 'Reorganised the site tree successfully.'
SAVEDUP: Saved.
@ -308,8 +308,8 @@ fr:
ERRORWRONGCRED: 'Il semble que ce ne soit pas le bon email ou mot de passe. Essayez encore s''il vous plaît.'
FIRSTNAME: Prénom
INTERFACELANG: 'Langue de l''interface'
INVALIDNEWPASSWORD: 'We couldn''t accept that password: {password}'
LOGGEDINAS: 'You''re logged in as {name}.'
INVALIDNEWPASSWORD: 'Nous ne pouvons pas accepter le mot de passe {password}'
LOGGEDINAS: 'Vous êtes connecté comme {name}.'
NEWPASSWORD: 'Nouveau mot de passe'
PASSWORD: 'Mot de passe'
PLURALNAME: Membres
@ -320,8 +320,8 @@ fr:
SUBJECTPASSWORDRESET: 'Lien pour modifier votre mot de passe'
SURNAME: 'Nom de famille'
VALIDATIONMEMBEREXISTS: 'Il existe déjà un membre avec cet email'
ValidationIdentifierFailed: 'Can''t overwrite existing member #{id} with identical identifier ({name} = {value}))'
WELCOMEBACK: 'Welcome Back, {firstname}'
ValidationIdentifierFailed: 'On ne peut pas réenregistrer le membre nº {id} avec un identifiant identique ({name} = {value}))'
WELCOMEBACK: 'Bienvenue {firstname}'
YOUROLDPASSWORD: 'Votre ancien mot de passe'
belongs_many_many_Groups: Groupes
db_LastVisited: 'Date de la dernière visite'
@ -354,7 +354,7 @@ fr:
TWODIGITYEAR: 'Lannée sur deux chiffres'
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>'
Help2: '<div class="advanced"><h4>Advanced usage</h4><ul><li>Colonnes permises : <em>%s</em></li><li>Les membres existants dont le <em>Code</em> valeur concorde, sont mis à jour avec les nouvelles valeurs du fichier importé.</li><li>Les groupes peuvent être assignés par la colonne <em>Groups</em>. Les groupes sont identifiés par <em>Code</em> , les groupes multiples sont séparés par une virgule. Les groupes existants ne sont pas effacés.</li></ul></div>'
Help2: "<div class=\"advanced\">\\n<h4>Utilisations avancée</h4>\\n<ul>\\n<li>Colonnes autorisées&nbsp;: <em>%s</em></li>\\n<li>Les membres existants dont la valeur <em>Code</em> concorde seront mis à jour avec les données du fichier importé.</li>\\n<li>Des groupes peuvent être assignés par la colonne <em>Groups</em>. Plusieurs groupes, identifiés par leur <em>Code</em>, peuvent être assignés en les séparant par des virgules. Les groupes existants ne seront pas effacés.</li>\\n</ul>\\n</div>\\n"
ResultCreated: 'Created {count} members'
ResultDeleted: '%d membres supprimés'
ResultNone: 'Aucun changements'
@ -376,18 +376,18 @@ fr:
NullableField:
IsNullLabel: 'Est Null'
NumericField:
VALIDATION: '''{value}'' is not a number, only numbers can be accepted for this field'
VALIDATION: '« {value} » nest pas un chiffre, seule donnée acceptée dans ce champ '
Permission:
AdminGroup: Administrateur
CMS_ACCESS_CATEGORY: 'Accès au CMS'
FULLADMINRIGHTS: 'Droits d''administration complets'
FULLADMINRIGHTS_HELP: 'Implique et écrase toute les autres permissions assignées.'
FULLADMINRIGHTS_HELP: 'Implique et prévaut sur toutes les autres autorisations assignées.'
IMPORTSPECFIELDS: 'Database columns'
IMPORTSPECRELATIONS: Relations
PermissionCheckboxSetField:
AssignedTo: 'assigned to "{title}"'
FromGroup: 'inherited from group "{title}"'
FromRole: 'inherited from role "{title}"'
AssignedTo: 'assignée au groupe « {title} »'
FromGroup: 'hérité du groupe « {title} »'
FromRole: 'héritée du rôle « {title} »'
FromRoleOnGroup: 'hérité du rôle "%s" du groupe "%s"'
Permissions:
PERMISSIONS_CATEGORY: 'Rôles et autorisations daccès'
@ -409,26 +409,26 @@ fr:
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.'
SecurityAdmin:
ACCESS_HELP: 'Permettre la visualisation, l''addition et l''édition des utilisateurs, aussi bien que leur assigner des permissions et des rôles.'
ACCESS_HELP: 'Permet de consulter, dajouter et déditer les utilisateurs, aussi bien que de leur assigner des autorisations et des rôles.'
APPLY_ROLES: 'Appliquer des rôles aux groupes'
APPLY_ROLES_HELP: 'Possibilité d''éditer les rôles assignés à un groupe. Nécessite "Access to ''Security'' section".'
EDITPERMISSIONS: 'Gérer les permissions des groupes'
EDITPERMISSIONS_HELP: 'Possibilité d''éditer les permissions et les l''adresses IP pour un groupe. Nécessite "Access to ''Security'' section".'
APPLY_ROLES_HELP: 'Possibilité d''éditer les rôle assignés à un groupe. Nécessite lautorisation « Accès à la section “Utilisateurs” ».'
EDITPERMISSIONS: 'Gérer les autorisations des groupes'
EDITPERMISSIONS_HELP: 'Possibilité d''éditer les autorisations et les adresses IP pour un groupe. Nécessite lautorisation « Accès à la section “Securité” ».'
GROUPNAME: 'Nom du group'
IMPORTGROUPS: 'Importer groupes'
IMPORTUSERS: 'Importer utilisateurs'
MEMBERS: Membres
MENUTITLE: Sécurité
MemberListCaution: 'Attention : Enlever des membres de cette liste va les enlever de tous les groupes et de la base de donnée'
NEWGROUP: 'Nouveau Groupe'
PERMISSIONS: Permissions
MemberListCaution: 'Attention&nbsp;: en supprimant des membres de cette liste vous les enlèverez de tous les groupes ainsi que de la base de données'
NEWGROUP: 'Nouveau groupe'
PERMISSIONS: Autorisations
ROLES: Rôles
ROLESDESCRIPTION: 'Cette section vous permet d''ajouter des rôles à ce groupe. Les rôles sont des regroupements logiques d''autorisations, qui peuvent être modifiés dans l''onglet Rôles'
ROLESDESCRIPTION: 'Les rôles sont des regroupements logiques dautorisations qui peuvent être assignés à des groupes.<br />Ils peuvent être hérités de groupes parents, si nécessaire.'
TABROLES: Rôles
Users: Utilisateurs
SecurityAdmin_MemberImportForm:
BtnImport: Importer
FileFieldLabel: 'Fichier CSV <small>(Extension permise: *.csv)</small>'
FileFieldLabel: 'Fichier CSV <small>(extension autorisée&nbsp;: *.csv)</small>'
SilverStripeNavigator:
Edit: 'Tout modifier'
FILTER: Filtrer
@ -450,9 +450,9 @@ fr:
CSVEXPORT: 'Exporter vers un fichier CSV'
PRINT: Imprimer
Print: Imprimer
SELECT: 'Sélectionner:'
SELECT: 'Sélectionner&nbsp;:'
TimeField:
VALIDATEFORMAT: 'Please enter a valid time format ({format})'
VALIDATEFORMAT: 'Saisissez lheure au format valide ({format})'
ToggleField:
LESS: moins
MORE: plus
@ -469,8 +469,8 @@ fr:
FIELDNOTSET: 'Aucune information sur le fichier n''a été trouvée '
FROMCOMPUTER: 'Depuis votre ordinateur'
FROMFILES: 'Depuis les fichiers'
MAXNUMBEROFFILES: 'Max number of {count} file(s) exceeded.'
MAXNUMBEROFFILESSHORT: 'Can only upload {count} files'
MAXNUMBEROFFILES: 'Le nombre maximal de {count} fichiers a été dépassé.'
MAXNUMBEROFFILESSHORT: 'On ne peut pas télécharger plus de {count} fichiers'
REMOVE: Supprimer
REMOVEERROR: 'Le fichier na pas pu être supprimé'
REMOVEINFO: 'Supprimer ce fichier ici sans leffacer des archives'

View File

@ -95,12 +95,12 @@ he_IL:
MINS: דקות
MONTH: חודש
MONTHS: חודשים
SEC: 'שניה'
SECS: 'שניות'
SEC: שניה
SECS: שניות
TIMEDIFFAGO: '{difference} ago'
TIMEDIFFIN: 'in {difference}'
YEAR: 'שנה'
YEARS: 'שנים'
YEAR: שנה
YEARS: שנים
DateField:
NOTSET: 'not set'
TODAY: today
@ -231,7 +231,7 @@ he_IL:
BUTTONREMOVELINK: 'הסר קישור'
BUTTONUpdate: Update
CAPTIONTEXT: 'Caption text'
CSSCLASS: 'יישור/סגנון'
CSSCLASS: יישור/סגנון
CSSCLASSCENTER: 'ממורכז, ללא טקסט בצדדים.'
CSSCLASSLEFT: 'לשמאל, עם טקסט מסודר מסביב.'
CSSCLASSLEFTALONE: 'On the left, on its own.'

View File

@ -252,7 +252,7 @@ hr:
IMAGETITLE: 'Title text (tooltip) - for additional information about the image'
IMAGETITLETEXT: 'Title text (tooltip)'
IMAGETITLETEXTDESC: 'For additional information about the image'
IMAGEWIDTHPX: 'Širina'
IMAGEWIDTHPX: Širina
INSERTMEDIA: 'Insert Media'
LINK: 'Ubaci/editiraj link za označeni tekst'
LINKANCHOR: 'Anchor on this page'

View File

@ -40,7 +40,7 @@ ja_JP:
ITALIC: テキストを斜体にする
ITALICEXAMPLE: 斜体
LINK: ウェブサイトのリンク
LINKDESCRIPTION: '別のウェブサイトかURLにリンクしてください'
LINKDESCRIPTION: 別のウェブサイトかURLにリンクしてください
STRUCK: テキストに取り消し線を引く
STRUCKEXAMPLE: 取り消し線
UNDERLINE: テキストに下線を引く
@ -49,8 +49,8 @@ ja_JP:
UNORDEREDDESCRIPTION: 不規則なリストです
UNORDEREDEXAMPLE1: '不規則なアイテム 1'
BasicAuth:
ENTERINFO: 'ユーザー名とパスワードを入力してください'
ERRORNOTADMIN: 'このユーザーは管理者(アドミニストレーター)ではありません'
ENTERINFO: ユーザー名とパスワードを入力してください
ERRORNOTADMIN: このユーザーは管理者(アドミニストレーター)ではありません
ERRORNOTREC: 'ユーザー名 / パスワードは認識されませんでした'
Boolean:
ANY: Any
@ -108,7 +108,7 @@ ja_JP:
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})'
Director:
ADD: '追加'
ADD: 追加
INVALID_REQUEST: 'Invalid request'
DropdownField:
CHOOSE: (選択)
@ -121,7 +121,7 @@ ja_JP:
ANY: Any
LOADING: Loading...
File:
Content: '内容'
Content: 内容
Filename: ファイル名
INVALIDEXTENSION: 'Extension is not allowed (valid: {extensions})'
INVALIDEXTENSIONSHORT: 'Extension is not allowed'
@ -152,7 +152,7 @@ ja_JP:
FIELDISREQUIRED: '%s が必要です'
TITLE: 'Image Uploading Iframe'
VALIDATIONCREDITNUMBER: 'Please ensure you have entered the {number} credit card number correctly'
VALIDATIONNOTUNIQUE: '入力された値はユニークではありません'
VALIDATIONNOTUNIQUE: 入力された値はユニークではありません
VALIDATIONPASSWORDSDONTMATCH: パスワードが一致しません
VALIDATIONPASSWORDSNOTEMPTY: パスワードが空欄です
VALIDATIONSTRONGPASSWORD: 'Passwords must have at least one digit and one alphanumeric character'
@ -199,7 +199,7 @@ ja_JP:
CHANGEPASSWORDTEXT1: このサイトのパスワードが変更されました。
CHANGEPASSWORDTEXT2: '貴方は現在以下の証明書を使ってログインしています:'
Code: グループコード
DefaultGroupTitleAdministrators: '管理者'
DefaultGroupTitleAdministrators: 管理者
DefaultGroupTitleContentAuthors: 'Content Authors'
Description: 説明文
EMAIL: メールアドレス
@ -208,9 +208,9 @@ ja_JP:
Locked: ロックしますか?
NoRoles: 'No roles found'
PASSWORD: パスワード
Parent: '元グループ'
Parent: 元グループ
RolesAddEditLink: 'Manage roles'
Sort: '並び順'
Sort: 並び順
TITLE: イメージアップロードIframe
has_many_Permissions: 承認
many_many_Members: メンバー
@ -227,15 +227,15 @@ ja_JP:
ADJUSTDETAILSDIMENSIONS: 'Details &amp; dimensions'
ANCHORVALUE: アンカー
BUTTONINSERT: Insert
BUTTONINSERTLINK: 'リンクを追加'
BUTTONINSERTLINK: リンクを追加
BUTTONREMOVELINK: リンクを削除
BUTTONUpdate: Update
CAPTIONTEXT: タイトル
CSSCLASS: '調整 / スタイル'
CSSCLASSCENTER: 中央はテキストのみ
CSSCLASSLEFT: '左側にテキストと一緒に処理してください'
CSSCLASSLEFT: 左側にテキストと一緒に処理してください
CSSCLASSLEFTALONE: 中央はテキストのみ
CSSCLASSRIGHT: '右側にテキストと一緒に処理してください'
CSSCLASSRIGHT: 右側にテキストと一緒に処理してください
DETAILS: Details
EMAIL: メールアドレス
FILE: ファイル
@ -254,7 +254,7 @@ ja_JP:
IMAGETITLETEXTDESC: 'For additional information about the image'
IMAGEWIDTHPX: Width
INSERTMEDIA: 'Insert Media'
LINK: 'ハイライトテキストへのリンクの挿入/削除'
LINK: ハイライトテキストへのリンクの挿入/削除
LINKANCHOR: このページにアンカーを置く
LINKDESCR: リンクの説明
LINKEMAIL: メールアドレス
@ -271,7 +271,7 @@ ja_JP:
IMAGE: 画像
Image_iframe.ss: 'ChangePasswordEmail.ss: BackLink_Button.ss: CMSLoadingScreen.ss: RelationComplexTableField.ss: ForgotPasswordEmail.ss: APPLY FILTER: "Apply Filter" GridFieldItemEditView.ss: Go back: "Go back" ModelSidebar.ss: TableListField_PageControls.ss: ModelAdmin_Tools.ss: ComplexTableField_popup.ss: TableField.ss: FileIFrameField_iframe.ss: ComplexTableField.ss: TableListField.ss: ModelAdmin_ImportSpec.ss: LeftAndMain_Menu.ss:'
LeftAndMain:
ADD: '新しい行を追加'
ADD: 新しい行を追加
CANT_REORGANISE: 'You do not have permission to alter Top level pages. Your change was not saved.'
DELETED: Deleted.
DropdownBatchActionsDefault: Actions
@ -300,12 +300,12 @@ ja_JP:
DefaultAdminFirstname: 'Default Admin'
DefaultDateTime: default
EMAIL: メールアドレス
EMPTYNEWPASSWORD: 'パスワードが空です。もう一度入力して下さい。'
ENTEREMAIL: 'パスワードをリセットするためにメールアドレスを入力してください。'
ERRORLOCKEDOUT: 'あなたのアカウントは何度もログインに失敗したため一時的に利用できなくなっています。20分後に試してください。'
ERRORNEWPASSWORD: '入力されたパスワードが一致しません。再度お試しください'
ERRORPASSWORDNOTMATCH: '登録されているパスワードと一致しません、もう一度入力し直してください'
ERRORWRONGCRED: 'メールアドレスまたはパスワードが正しくありません、もう一度入力し直してください'
EMPTYNEWPASSWORD: パスワードが空です。もう一度入力して下さい。
ENTEREMAIL: パスワードをリセットするためにメールアドレスを入力してください。
ERRORLOCKEDOUT: あなたのアカウントは何度もログインに失敗したため一時的に利用できなくなっています。20分後に試してください。
ERRORNEWPASSWORD: 入力されたパスワードが一致しません。再度お試しください
ERRORPASSWORDNOTMATCH: 登録されているパスワードと一致しません、もう一度入力し直してください
ERRORWRONGCRED: メールアドレスまたはパスワードが正しくありません、もう一度入力し直してください
FIRSTNAME:
INTERFACELANG: 画面言語
INVALIDNEWPASSWORD: 'We couldn''t accept that password: {password}'
@ -319,7 +319,7 @@ ja_JP:
SUBJECTPASSWORDCHANGED: パスワードが変わりました。
SUBJECTPASSWORDRESET: パスワード再発行
SURNAME:
VALIDATIONMEMBEREXISTS: '入力したメールアドレス(%sは、他のメンバーにすでに使用されています。'
VALIDATIONMEMBEREXISTS: 入力したメールアドレス(%sは、他のメンバーにすでに使用されています。
ValidationIdentifierFailed: 'Can''t overwrite existing member #{id} with identical identifier ({name} = {value}))'
WELCOMEBACK: 'Welcome Back, {firstname}'
YOUROLDPASSWORD: 古いパスワード
@ -327,7 +327,7 @@ ja_JP:
db_LastVisited: 最終訪問日
db_Locale: インターフェースの言語地域
db_LockedOutUntil: DBロックがされています。
db_NumVisit: '訪問者数'
db_NumVisit: 訪問者数
db_Password: パスワード
db_PasswordExpiry: パスワードの有効期限
MemberAuthenticator:
@ -378,9 +378,9 @@ ja_JP:
NumericField:
VALIDATION: '''{value}'' is not a number, only numbers can be accepted for this field'
Permission:
AdminGroup: '管理者'
AdminGroup: 管理者
CMS_ACCESS_CATEGORY: 'CMS Access'
FULLADMINRIGHTS: '完全な管理権'
FULLADMINRIGHTS: 完全な管理権
FULLADMINRIGHTS_HELP: 'Implies and overrules all other assigned permissions.'
IMPORTSPECFIELDS: 'Database columns'
IMPORTSPECRELATIONS: Relations
@ -393,19 +393,19 @@ ja_JP:
PERMISSIONS_CATEGORY: 'Roles and access permissions'
PhoneNumberField:
Back: Back
VALIDATION: '電話番号を入力してください'
VALIDATION: 電話番号を入力してください
Security:
ALREADYLOGGEDIN: 'あなたはこのページにアクセスできません。別のアカウントを持っていたら <a href="%s">再ログイン</a>を行ってください。'
BUTTONSEND: 'パスワードリセットのリンクを送信してください'
BUTTONSEND: パスワードリセットのリンクを送信してください
CHANGEPASSWORDBELOW: 以下のパスワードを変更できます
CHANGEPASSWORDHEADER: パスワードを変更しました
ENTERNEWPASSWORD: '新しいパスワードを入力してください'
ENTERNEWPASSWORD: 新しいパスワードを入力してください
ERRORPASSWORDPERMISSION: パスワードを変更する為に、ログインしなければなりません!
LOGGEDOUT: 'ログアウトしました。再度ログインする場合は証明書キーを入力してください'
LOGGEDOUT: ログアウトしました。再度ログインする場合は証明書キーを入力してください
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>'
NOTERESETPASSWORD: 'メールアドレスを入力してください、パスワードをリセットするURLを送信致します'
NOTERESETPASSWORD: メールアドレスを入力してください、パスワードをリセットするURLを送信致します
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.'
SecurityAdmin:
@ -455,7 +455,7 @@ ja_JP:
VALIDATEFORMAT: 'Please enter a valid time format ({format})'
ToggleField:
LESS: 減少
MORE: '増加'
MORE: 増加
UploadField:
ATTACHFILE: 'Attach a file'
ATTACHFILES: 'Attach files'

View File

@ -205,10 +205,10 @@ km:
EMAIL: Email
GroupReminder: 'If you choose a parent group, this group will take all it''s roles'
HELLO: Hi
Locked: 'មិនអាចប្រើ'
Locked: មិនអាចប្រើ
NoRoles: 'No roles found'
PASSWORD: Password
Parent: 'ចំណាត់ក្រុមដើម'
Parent: ចំណាត់ក្រុមដើម
RolesAddEditLink: 'Manage roles'
Sort: 'Sort Order'
TITLE: 'Image Uploading Iframe'
@ -323,13 +323,13 @@ km:
ValidationIdentifierFailed: 'Can''t overwrite existing member #{id} with identical identifier ({name} = {value}))'
WELCOMEBACK: 'Welcome Back, {firstname}'
YOUROLDPASSWORD: 'Your old password'
belongs_many_many_Groups: 'ចំណាត់ក្រុម'
belongs_many_many_Groups: ចំណាត់ក្រុម
db_LastVisited: 'Last Visited Date'
db_Locale: 'Interface Locale'
db_LockedOutUntil: 'ដោះចេញរហូតដល់'
db_LockedOutUntil: ដោះចេញរហូតដល់
db_NumVisit: 'Number of Visits'
db_Password: Password
db_PasswordExpiry: 'កាលបរិច្ឆេទផុតកំណត់ពាក្យសំងាត់'
db_PasswordExpiry: កាលបរិច្ឆេទផុតកំណត់ពាក្យសំងាត់
MemberAuthenticator:
TITLE: 'E-mail &amp; Password'
MemberDatetimeOptionsetField:

View File

@ -89,7 +89,7 @@ lt:
Date:
DAY: diena
DAYS: dienas
HOUR: 'valandą'
HOUR: valandą
HOURS: valandas
MIN: minutę
MINS: minutes

View File

@ -13,16 +13,16 @@ nb:
TYPE: 'File type'
URL: URL
AssetUploadField:
ChooseFiles: 'Choose files'
DRAGFILESHERE: 'Drag files here'
DROPAREA: 'Drop Area'
EDITALL: 'Edit all'
EDITANDORGANIZE: 'Edit & organize'
FILES: Files
ChooseFiles: 'Velg filer'
DRAGFILESHERE: 'Dra filer hit'
DROPAREA: Droppunkt
EDITALL: 'Endre alle'
EDITANDORGANIZE: 'Rediger & organiser'
FILES: Filer
TOTAL: Total
TOUPLOAD: 'Choose file(s) to upload...'
UPLOADINPROGRESS: 'Please wait… upload in progress'
UPLOADOR: OR
UPLOADOR: ELLER
BBCodeParser:
ALIGNEMENT: Stilling
ALIGNEMENTEXAMPLE: 'Stilt til høyre'
@ -55,7 +55,7 @@ nb:
Boolean:
ANY: Any
0: 'False'
LOGOUT: 'Log out'
LOGOUT: 'Logg ut'
1: 'True'
CMSMain:
ACCESS: 'Access to ''{title}'' section'
@ -72,9 +72,9 @@ nb:
SUCCESSADD2: 'Added {name}'
SUCCESSEDIT: 'Lagret %s %s %s'
ConfirmedPasswordField:
ATLEAST: 'Passwords must be at least {min} characters long.'
BETWEEN: 'Passwords must be {min} to {max} characters long.'
MAXIMUM: 'Passwords must be at most {max} characters long.'
ATLEAST: 'Passordet må inneholde minst {min} skrifttegn'
BETWEEN: 'Passord må inneholde {min} til {max} skrifttegn'
MAXIMUM: 'Passord må inneholde maks {max} skrifttegn'
SHOWONCLICKTITLE: 'Endre Passord'
CreditCardField:
FIRST: første
@ -130,16 +130,16 @@ nb:
Name: Navn
PLURALNAME: Filer
SINGULARNAME: Fil
TOOLARGE: 'Filesize is too large, maximum {size} allowed'
TOOLARGESHORT: 'Filesize exceeds {size}'
TOOLARGE: 'Filstørrelse for stor, maksimum {size} tillatt '
TOOLARGESHORT: 'Filstørrelse overstiger {size}'
Title: Tittel
FileIFrameField:
ATTACH: 'Attach {type}'
ATTACH: 'Legg ved {type}'
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.'
DELETE: 'Delete {type}'
DELETE: 'Slett {type}'
DISALLOWEDFILETYPE: 'This filetype is not allowed to be uploaded'
FILE: File
FILE: Fil
FROMCOMPUTER: 'From your Computer'
FROMFILESTORE: 'From the File Store'
NOSOURCE: 'Please select a source file to attach'
@ -151,13 +151,13 @@ nb:
Form:
FIELDISREQUIRED: 'mangler %s'
TITLE: 'Image Uploading Iframe'
VALIDATIONCREDITNUMBER: 'Please ensure you have entered the {number} credit card number correctly'
VALIDATIONCREDITNUMBER: 'Vennligst sjekk at du har skrevet inn {number} korrekt kortnummer'
VALIDATIONNOTUNIQUE: 'Den spesifiserte verdien er ikke unik'
VALIDATIONPASSWORDSDONTMATCH: 'Passordene passer ikke med hverandre'
VALIDATIONPASSWORDSNOTEMPTY: 'Passord kan ikke være tomt'
VALIDATIONSTRONGPASSWORD: 'Passwords must have at least one digit and one alphanumeric character'
VALIDATOR: Validator
VALIDCURRENCY: 'Please enter a valid currency'
VALIDCURRENCY: 'Vennligst skriv inn gyldig valuta'
FormField:
NONE: ingen
GridAction:
@ -165,7 +165,7 @@ nb:
Delete: Delete
UnlinkRelation: Unlink
GridField:
Add: 'Add {name}'
Add: 'Legg til {name}'
Filter: Filter
FilterBy: 'Filter by '
Find: Find
@ -195,21 +195,21 @@ nb:
TEXT2: 'passord resett link'
TEXT3: for
Group:
AddRole: 'Add a role for this group'
AddRole: 'Legg en rolle til denne gruppen'
CHANGEPASSWORDTEXT1: 'Du har byttet passordet for'
CHANGEPASSWORDTEXT2: 'Du kan nå bruke følgende informasjon for å logge deg inn:'
Code: 'Gruppe Kode'
DefaultGroupTitleAdministrators: Administrators
DefaultGroupTitleContentAuthors: 'Content Authors'
DefaultGroupTitleAdministrators: Administratorer
DefaultGroupTitleContentAuthors: Innholdsforfattere
Description: Beskrivelse
EMAIL: Epost
GroupReminder: 'If you choose a parent group, this group will take all it''s roles'
GroupReminder: 'Hvis du velger en overordnet gruppe, vil denne gruppen arve alle rollene'
HELLO: Hei
Locked: 'Låst?'
NoRoles: 'No roles found'
NoRoles: 'Ingen roller funnet'
PASSWORD: Passord
Parent: 'Foreldre Gruppe'
RolesAddEditLink: 'Manage roles'
RolesAddEditLink: 'Administrer roller'
Sort: Sorteringsrekkefølge
TITLE: 'Bildeopplasnings ramme'
has_many_Permissions: Tillatelser
@ -226,17 +226,17 @@ nb:
ADDURL: 'Add URL'
ADJUSTDETAILSDIMENSIONS: 'Details &amp; dimensions'
ANCHORVALUE: Lenke
BUTTONINSERT: Insert
BUTTONINSERT: 'Sett inn'
BUTTONINSERTLINK: 'Sett inn lenke'
BUTTONREMOVELINK: 'Fjern lenke'
BUTTONUpdate: Update
BUTTONUpdate: Oppdater
CAPTIONTEXT: 'Caption text'
CSSCLASS: 'Stille opp / stil'
CSSCLASSCENTER: 'Sentrert, alene.'
CSSCLASSLEFT: 'På venstre side, med tekst rundt.'
CSSCLASSLEFTALONE: 'På venstre side, alene.'
CSSCLASSRIGHT: 'På høyde side, med tekst rundt.'
DETAILS: Details
DETAILS: Detaljer
EMAIL: 'Epost adresse'
FILE: Fil
FOLDER: Mappe
@ -268,37 +268,37 @@ nb:
URLNOTANOEMBEDRESOURCE: 'The URL ''{url}'' could not be turned into a media resource.'
UpdateMEDIA: 'Update Media'
ImageField:
IMAGE: Image
IMAGE: Bilde
Image_iframe.ss: 'ChangePasswordEmail.ss: BackLink_Button.ss: CMSLoadingScreen.ss: RelationComplexTableField.ss: ForgotPasswordEmail.ss: APPLY FILTER: "Apply Filter" GridFieldItemEditView.ss: Go back: "Go back" ModelSidebar.ss: TableListField_PageControls.ss: ModelAdmin_Tools.ss: ComplexTableField_popup.ss: TableField.ss: FileIFrameField_iframe.ss: ComplexTableField.ss: TableListField.ss: ModelAdmin_ImportSpec.ss: LeftAndMain_Menu.ss:'
LeftAndMain:
ADD: 'Legg til en rad'
CANT_REORGANISE: 'You do not have permission to alter Top level pages. Your change was not saved.'
DELETED: Deleted.
DropdownBatchActionsDefault: Actions
HELP: Help
HELP: Hjelp
PAGETYPE: 'Page type: '
PERMAGAIN: 'You have been logged out of the CMS. If you would like to log in again, enter a username and password below.'
PERMAGAIN: 'Du har blitt logget ut av CMS. Hvis du vil logge deg på igjen, skriv inn brukernavn og passord under.'
PERMALREADY: 'I''m sorry, but you can''t access that part of the CMS. If you want to log in as someone else, do so below'
PERMDEFAULT: 'Please choose an authentication method and enter your credentials to access the CMS.'
PLEASESAVE: 'Please Save Page: This page could not be upated because it hasn''t been saved yet.'
PreviewButton: Preview
PreviewButton: Forhåndsvisning
REORGANISATIONSUCCESSFUL: 'Reorganised the site tree successfully.'
SAVEDUP: Saved.
VersionUnknown: unknown
VersionUnknown: Ukjent
LoginAttempt:
Email: Epostadresse
IP: 'IP adresse'
Status: Status
Member:
ADDGROUP: 'Add group'
ADDGROUP: 'Legg til en gruppe'
BUTTONCHANGEPASSWORD: 'Bytt Passord'
BUTTONLOGIN: 'Logg inn'
BUTTONLOGINOTHER: 'Logg inn med en annen brukerkonto'
BUTTONLOSTPASSWORD: 'Jeg har mistet passordet'
CONFIRMNEWPASSWORD: 'Bekreft Nytt Passord'
CONFIRMPASSWORD: 'Bekreft passord'
DefaultAdminFirstname: 'Default Admin'
DefaultDateTime: default
DefaultAdminFirstname: 'Standard admin'
DefaultDateTime: Standard
EMAIL: Epost
EMPTYNEWPASSWORD: 'The new password can''t be empty, please try again'
ENTEREMAIL: 'Vennligst skriv inne en epostadresse for å få tilsendt en lenke til å resette passord.'
@ -308,8 +308,8 @@ nb:
ERRORWRONGCRED: 'Det der ser ikke ut til å være riktig epost adresse eller passord. Vennligst prøv igjen.'
FIRSTNAME: Fornavn
INTERFACELANG: 'Språk på grensesnitt'
INVALIDNEWPASSWORD: 'We couldn''t accept that password: {password}'
LOGGEDINAS: 'You''re logged in as {name}.'
INVALIDNEWPASSWORD: 'Vi kunne ikke godkjenne passordet: {password}'
LOGGEDINAS: 'Du er logget inn som {name}'
NEWPASSWORD: 'Nytt Passord'
PASSWORD: Passord
PLURALNAME: Medlemmer
@ -321,7 +321,7 @@ nb:
SURNAME: Etternavn
VALIDATIONMEMBEREXISTS: 'Det eksisterer allerede et medlem med denne epost-kontoen.'
ValidationIdentifierFailed: 'Can''t overwrite existing member #{id} with identical identifier ({name} = {value}))'
WELCOMEBACK: 'Welcome Back, {firstname}'
WELCOMEBACK: 'Velkommen tilbake, {firstname}'
YOUROLDPASSWORD: 'Ditt gamle passord'
belongs_many_many_Groups: Grupper
db_LastVisited: 'Siste besøkte dato'
@ -343,8 +343,8 @@ nb:
HOURNOLEADING: 'Hour without leading zero'
MINUTENOLEADING: 'Minute without leading zero'
MONTHNOLEADING: 'Month digit without leading zero'
Preview: Preview
SHORTMONTH: 'Short name of month (e.g. Jun)'
Preview: Forhåndsvisning
SHORTMONTH: 'Forkortelse av måned (f.eks. jun)'
TOGGLEHELP: 'Toggle formatting help'
TWODIGITDAY: 'Two-digit day of month'
TWODIGITHOUR: 'Two digits of hour (00 through 23)'
@ -357,7 +357,7 @@ nb:
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'
ResultDeleted: 'Deleted %d members'
ResultNone: 'No changes'
ResultNone: 'Ingen endringer'
ResultUpdated: 'Updated {count} members'
MemberTableField: null
ModelAdmin:
@ -371,7 +371,7 @@ nb:
Title: 'Data Models'
UPDATEDRECORDS: 'Updated {count} records.'
MoneyField:
FIELDLABELAMOUNT: Amount
FIELDLABELAMOUNT: Mengde
FIELDLABELCURRENCY: Currency
NullableField:
IsNullLabel: 'Is Null'
@ -392,7 +392,7 @@ nb:
Permissions:
PERMISSIONS_CATEGORY: 'Roles and access permissions'
PhoneNumberField:
Back: Back
Back: Tilbake
VALIDATION: 'Vennligst skriv inn et gyldig tlf nummer'
Security:
ALREADYLOGGEDIN: 'Du har ikke adgang til denne siden. Hvis du har en annen konto som har adgang til denne siden, kan du logge inn med den under.'
@ -415,17 +415,17 @@ nb:
EDITPERMISSIONS: 'Manage permissions for groups'
EDITPERMISSIONS_HELP: 'Ability to edit Permissions and IP Addresses for a group. Requires the "Access to ''Security'' section" permission.'
GROUPNAME: Gruppenavn
IMPORTGROUPS: 'Import groups'
IMPORTUSERS: 'Import users'
IMPORTGROUPS: 'Importer grupper'
IMPORTUSERS: 'Importer brukere'
MEMBERS: Medlemmer
MENUTITLE: Security
MemberListCaution: 'Caution: Removing members from this list will remove them from all groups and the database'
NEWGROUP: 'New Group'
MemberListCaution: 'Advarsel: Hvis du fjerner medlemmer fra denne listen vil det samtidig fjerne dem fra alle grupper og databasen'
NEWGROUP: 'Ny gruppe'
PERMISSIONS: Tilganger
ROLES: Roles
ROLES: Roller
ROLESDESCRIPTION: 'Roles are predefined sets of permissions, and can be assigned to groups.<br />They are inherited from parent groups if required.'
TABROLES: Roles
Users: Users
TABROLES: Roller
Users: Brukere
SecurityAdmin_MemberImportForm:
BtnImport: 'Import from CSV'
FileFieldLabel: 'CSV File <small>(Allowed extensions: *.csv)</small>'
@ -450,31 +450,31 @@ nb:
CSVEXPORT: 'Eksporter til CSV'
PRINT: 'Skriv ut'
Print: 'Skriv ut'
SELECT: 'Select:'
SELECT: 'Velg:'
TimeField:
VALIDATEFORMAT: 'Please enter a valid time format ({format})'
ToggleField:
LESS: mindre
MORE: mer
UploadField:
ATTACHFILE: 'Attach a file'
ATTACHFILES: 'Attach files'
AttachFile: 'Attach a file'
ATTACHFILE: 'Legg ved fil'
ATTACHFILES: 'Legg ved filer'
AttachFile: 'Legg ved fil'
DELETEINFO: 'Permanently delete this file from the file store'
DOEDIT: Save
DROPFILE: 'drop a file'
DROPFILES: 'drop files'
DOEDIT: Lagre
DROPFILE: 'Slipp en fil'
DROPFILES: 'Slipp filer'
Dimensions: Dimensions
EDITINFO: 'Edit this file'
FIELDNOTSET: 'File information not found'
FROMCOMPUTER: 'From your computer'
FROMFILES: 'From files'
EDITINFO: 'Rediger denne filen'
FIELDNOTSET: 'Filinformasjon ikke funnet'
FROMCOMPUTER: 'Fra din pc'
FROMFILES: 'Fra filer'
MAXNUMBEROFFILES: 'Max number of {count} file(s) exceeded.'
MAXNUMBEROFFILESSHORT: 'Can only upload {count} files'
REMOVE: Remove
REMOVEERROR: 'Error removing file'
REMOVE: Fjern
REMOVEERROR: 'Feil ved fjerning av fil'
REMOVEINFO: 'Remove this file from here, but do not delete it from the file store'
STARTALL: 'Start all'
Saved: Saved
Saved: Lagret
Versioned:
has_many_Versions: Versjoner

View File

@ -13,16 +13,16 @@ nl:
TYPE: Type
URL: URL
AssetUploadField:
ChooseFiles: 'Choose files'
DRAGFILESHERE: 'Drag files here'
ChooseFiles: 'Selecteer bestanden'
DRAGFILESHERE: 'Sleep bestanden hiernaar toe'
DROPAREA: 'Drop Area'
EDITALL: 'Edit all'
EDITANDORGANIZE: 'Edit & organize'
EDITANDORGANIZE: 'Bewerk en beheer'
FILES: Files
TOTAL: Total
TOUPLOAD: 'Choose file(s) to upload...'
UPLOADINPROGRESS: 'Please wait… upload in progress'
UPLOADOR: OR
UPLOADOR: OF
BBCodeParser:
ALIGNEMENT: Uitlijning
ALIGNEMENTEXAMPLE: 'rechts uitgelijnd'
@ -69,7 +69,7 @@ nl:
- Ja
ComplexTableField:
CLOSEPOPUP: 'Sluit Popup'
SUCCESSADD2: 'Added {name}'
SUCCESSADD2: 'Toegevoegd {name}'
SUCCESSEDIT: '%s %s %s Opgeslagen'
ConfirmedPasswordField:
ATLEAST: 'Passwords must be at least {min} characters long.'
@ -138,19 +138,19 @@ nl:
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.'
DELETE: 'Delete {type}'
DISALLOWEDFILETYPE: 'This filetype is not allowed to be uploaded'
DISALLOWEDFILETYPE: 'Dit type bestand mag niet worden opgeslagen'
FILE: Bestand
FROMCOMPUTER: 'Vanaf computer'
FROMFILESTORE: 'Vanaf de website''s bestandsopslag'
NOSOURCE: 'Selecteer een bron bestand om toe te voegen'
REPLACE: 'Replace {type}'
Filesystem:
IMPORT_TAB_HEADER: Import
SEARCHLISTINGS: Search
SYNCRESULTS: 'Sync complete: {createdcount} items created, {deletedcount} items deleted'
IMPORT_TAB_HEADER: Importeer
SEARCHLISTINGS: Zoeken
SYNCRESULTS: 'Synchroniseren compleet: {createdcount} bestanden aangemaakt, {deletedcount} bestanden verwijderd.'
Form:
FIELDISREQUIRED: '%s is verplicht'
TITLE: 'Image Uploading Iframe'
TITLE: 'Afbeelding uploaden'
VALIDATIONCREDITNUMBER: 'Please ensure you have entered the {number} credit card number correctly'
VALIDATIONNOTUNIQUE: 'De ingevoerde waarde is niet uniek'
VALIDATIONPASSWORDSDONTMATCH: 'Wachtwoorden komen niet overeen'
@ -162,40 +162,40 @@ nl:
NONE: geen
GridAction:
DELETE_DESCRIPTION: Delete
Delete: Delete
UnlinkRelation: Unlink
Delete: Verwijder
UnlinkRelation: Ontkoppelen
GridField:
Add: 'Add {name}'
Filter: Filter
FilterBy: 'Filter by '
Find: Find
Find: Zoek
LEVELUP: 'Level up'
LinkExisting: 'Link Existing'
NewRecord: 'New %s'
NoItemsFound: 'No items found'
PRINTEDAT: 'Printed at'
PRINTEDBY: 'Printed by'
NewRecord: 'Nieuw %s'
NoItemsFound: 'Geen items gevonden.'
PRINTEDAT: 'Geprint om'
PRINTEDBY: 'Geprint door'
PlaceHolder: 'Find {type}'
PlaceHolderWithLabels: 'Find {type} by {name}'
RelationSearch: 'Relation search'
ResetFilter: Reset
GridFieldAction_Delete:
DeletePermissionsFailure: 'No delete permissions'
DeletePermissionsFailure: 'Onvoldoende rechten om te verwijderen'
NEXT: Volgende
PREVIOUS: Vorige
GridFieldDetailForm:
Create: Create
Delete: Delete
Delete: Verwijder
DeletePermissionsFailure: 'No delete permissions'
Deleted: 'Deleted %s %s'
HELLO: Hallo
Save: Save
Saved: 'Saved %s %s'
Save: Opslaan
Saved: '%s %s %s Opgeslagen'
TEXT1: 'Hier is uw'
TEXT2: 'wachtwoord reset link'
TEXT3: voor
Group:
AddRole: 'Add a role for this group'
AddRole: 'Voeg een rol toe aan deze groep'
CHANGEPASSWORDTEXT1: 'U heeft het wachtwoord veranderd voor'
CHANGEPASSWORDTEXT2: 'U kunt nu onderstaande gegevens gebruiken om in te loggen:'
Code: 'Groep code'
@ -203,10 +203,10 @@ nl:
DefaultGroupTitleContentAuthors: 'Inhoud Auteurs'
Description: 'Omschrijving '
EMAIL: E-mail
GroupReminder: 'If you choose a parent group, this group will take all it''s roles'
GroupReminder: 'Als je de bovenliggende groep selecteert, neemt deze groep alle rollen over'
HELLO: Hallo
Locked: 'Gesloten?'
NoRoles: 'No roles found'
NoRoles: 'Geen rollen gevonden'
PASSWORD: Wachtwoord
Parent: 'Bovenliggende groep'
RolesAddEditLink: 'Toevoegen/wijzigingen rollen'
@ -223,10 +223,10 @@ nl:
Hierarchy:
InfiniteLoopNotAllowed: 'Infinite loop found within the "{type}" hierarchy. Please change the parent to resolve this'
HtmlEditorField:
ADDURL: 'Add URL'
ADJUSTDETAILSDIMENSIONS: 'Details &amp; dimensions'
ADDURL: 'Voeg URL toe'
ADJUSTDETAILSDIMENSIONS: 'Details $amp; afmeting'
ANCHORVALUE: Anker
BUTTONINSERT: Insert
BUTTONINSERT: Invoegen
BUTTONINSERTLINK: 'Link invoegen'
BUTTONREMOVELINK: 'Link verwijderen'
BUTTONUpdate: Update
@ -240,20 +240,20 @@ nl:
EMAIL: Emailadres
FILE: Bestand
FOLDER: Map
FROMCMS: 'From the CMS'
FROMCOMPUTER: 'From your computer'
FROMWEB: 'From the web'
FindInFolder: 'Find in Folder'
IMAGEALT: 'Alternative text (alt)'
FROMCMS: 'Vanaf CMS'
FROMCOMPUTER: 'Vanaf computer'
FROMWEB: 'Vanaf een website'
FindInFolder: 'Zoek in map'
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'
IMAGEALTTEXTDESC: 'Shown to screen readers or if image can not be displayed'
IMAGEDIMENSIONS: Dimensies
IMAGEHEIGHTPX: Hoogte
IMAGETITLE: 'Titel tekst (tooltip) - Toon extra informatie over de afbeelding'
IMAGETITLETEXT: 'Title text (tooltip)'
IMAGETITLETEXTDESC: 'For additional information about the image'
IMAGETITLETEXT: 'Titel tekst (tooltip) - Toon extra informatie over de afbeelding'
IMAGETITLETEXTDESC: 'Titel tekst (tooltip) - Toon extra informatie over de afbeelding'
IMAGEWIDTHPX: Breedte
INSERTMEDIA: 'Insert Media'
INSERTMEDIA: Invoegen
LINK: Link
LINKANCHOR: 'Anker op deze pagina'
LINKDESCR: 'Link omschrijving'
@ -269,12 +269,12 @@ nl:
UpdateMEDIA: 'Update Media'
ImageField:
IMAGE: Afbeelding
Image_iframe.ss: 'ChangePasswordEmail.ss: BackLink_Button.ss: CMSLoadingScreen.ss: RelationComplexTableField.ss: ForgotPasswordEmail.ss: APPLY FILTER: "Apply Filter" GridFieldItemEditView.ss: Go back: "Go back" ModelSidebar.ss: TableListField_PageControls.ss: ModelAdmin_Tools.ss: ComplexTableField_popup.ss: TableField.ss: FileIFrameField_iframe.ss: ComplexTableField.ss: TableListField.ss: ModelAdmin_ImportSpec.ss: LeftAndMain_Menu.ss:'
Image_iframe.ss: 'ChangePasswordEmail.ss: BackLink_Button.ss: CMSLoadingScreen.ss: RelationComplexTableField.ss: ForgotPasswordEmail.ss: APPLY FILTER: "Filter toepassen" GridFieldItemEditView.ss: Go back: "Ga terug" ModelSidebar.ss: TableListField_PageControls.ss: ModelAdmin_Tools.ss: ComplexTableField_popup.ss: TableField.ss: FileIFrameField_iframe.ss: ComplexTableField.ss: TableListField.ss: ModelAdmin_ImportSpec.ss: LeftAndMain_Menu.ss:'
LeftAndMain:
ADD: 'Nieuwe rij toevoegen'
CANT_REORGANISE: 'You do not have permission to alter Top level pages. Your change was not saved.'
DELETED: Deleted.
DropdownBatchActionsDefault: Actions
DropdownBatchActionsDefault: Acties
HELP: Help
PAGETYPE: 'Pagina type: '
PERMAGAIN: 'U bent uitgelogd uit het CMS. Als U weer wilt inloggen vul dan uw gebruikersnaam en wachtwoord hier beneden in.'
@ -284,7 +284,7 @@ nl:
PreviewButton: Preview
REORGANISATIONSUCCESSFUL: 'Reorganised the site tree successfully.'
SAVEDUP: Saved.
VersionUnknown: unknown
VersionUnknown: onbekend
LoginAttempt:
Email: 'Email adres '
IP: 'IP Adres'
@ -298,7 +298,7 @@ nl:
CONFIRMNEWPASSWORD: 'Bevestig het nieuwe wachtwoord'
CONFIRMPASSWORD: 'Bevestig wachtwoord'
DefaultAdminFirstname: 'Standaard Beheerder'
DefaultDateTime: default
DefaultDateTime: Standaard
EMAIL: Email
EMPTYNEWPASSWORD: 'Het nieuwe wachtwoord mag niet leeg zijn, probeer opnieuw'
ENTEREMAIL: 'Typ uw e-mailadres om een link te ontvangen waarmee u uw wachtwoord kunt resetten.'
@ -334,24 +334,24 @@ nl:
TITLE: 'Email &amp; Wachtwoord'
MemberDatetimeOptionsetField:
AMORPM: 'AM (Ante meridiem) or PM (Post meridiem)'
Custom: Custom
DATEFORMATBAD: 'Date format is invalid'
DAYNOLEADING: 'Day of month without leading zero'
Custom: Aangepast
DATEFORMATBAD: 'Datum is niet correct opgegeven'
DAYNOLEADING: 'Dag van de maand zonder voorloop-nul'
DIGITSDECFRACTIONSECOND: 'One or more digits representing a decimal fraction of a second'
FOURDIGITYEAR: 'Four-digit year'
FULLNAMEMONTH: 'Full name of month (e.g. June)'
HOURNOLEADING: 'Hour without leading zero'
MINUTENOLEADING: 'Minute without leading zero'
MONTHNOLEADING: 'Month digit without leading zero'
Preview: Preview
Preview: Voorbeeld
SHORTMONTH: 'Short name of month (e.g. Jun)'
TOGGLEHELP: 'Toggle formatting help'
TWODIGITDAY: 'Two-digit day of month'
TWODIGITHOUR: 'Two digits of hour (00 through 23)'
TWODIGITHOUR: 'Twee cijfer van het uur (00 tot 23)'
TWODIGITMINUTE: 'Two digits of minute (00 through 59)'
TWODIGITMONTH: 'Two-digit month (01=January, etc.)'
TWODIGITSECOND: 'Two digits of second (00 through 59)'
TWODIGITYEAR: 'Two-digit year'
TWODIGITYEAR: 'Twee-cijferig jaar'
MemberImportForm:
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>Geavanceerd gebruik</h4><ul><li>Toegestane kolommen: <em>%s</em></li><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><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></ul></div></ul></div>'
@ -415,8 +415,8 @@ nl:
EDITPERMISSIONS: 'Bewerk rechten en IP-adressen bij elke groep'
EDITPERMISSIONS_HELP: 'Bewerkingsmogelijkheid van Rechten en IP adressen voor groepen. Heeft rechten voor "Beveiligingsectie" nodig.'
GROUPNAME: 'Groep naam'
IMPORTGROUPS: 'Import groups'
IMPORTUSERS: 'Import users'
IMPORTGROUPS: Groepen
IMPORTUSERS: 'Importeer gebruikers'
MEMBERS: Leden
MENUTITLE: Security
MemberListCaution: 'Let op: Verwijderen van leden van deze lijst heeft als gevolg dat deze uit alle groepen en de database worden verwijderd'
@ -425,14 +425,14 @@ nl:
ROLES: Rollen
ROLESDESCRIPTION: 'In deze sectie kan je rollen toevoegen aan deze groep. Rollen zijn logische groeperingen van rechten die in het Rollen tapblad gewijzigd kunnen worden.'
TABROLES: Rollen
Users: Users
Users: Gebruikers
SecurityAdmin_MemberImportForm:
BtnImport: Importeer
FileFieldLabel: 'CSV Bestand <small>(Toegestane extensies: *.csv)</small>'
SilverStripeNavigator:
Edit: Edit
Edit: Bewerken
FILTER: Filter
IMPORT: Import
IMPORT: Importeer
VIEWFIRST: 'Bekijk eerste'
VIEWLAST: 'Bekijk laatste'
VIEWNEXT: 'Bekijk volgende'
@ -457,24 +457,24 @@ nl:
LESS: minder
MORE: meer
UploadField:
ATTACHFILE: 'Attach a file'
ATTACHFILES: 'Attach files'
AttachFile: 'Attach a file'
DELETEINFO: 'Permanently delete this file from the file store'
DOEDIT: Save
DROPFILE: 'drop a file'
DROPFILES: 'drop files'
ATTACHFILE: 'Voeg een bestand toe'
ATTACHFILES: 'Voeg bestanden toe'
AttachFile: 'Voeg een bestand toe'
DELETEINFO: 'Verwijder dit bestand uit bestandsopslag van de website.'
DOEDIT: Bewaar
DROPFILE: 'Bestand hiernaar toe slepen'
DROPFILES: 'Sleep hier je bestanden'
Dimensions: Dimensions
EDITINFO: 'Edit this file'
FIELDNOTSET: 'File information not found'
FROMCOMPUTER: 'From your computer'
FROMFILES: 'From files'
EDITINFO: 'Bewerk dit bestand'
FIELDNOTSET: 'Bestandsinformatie niet gevonden'
FROMCOMPUTER: 'Vanaf computer'
FROMFILES: 'Bestaande bestanden'
MAXNUMBEROFFILES: 'Max number of {count} file(s) exceeded.'
MAXNUMBEROFFILESSHORT: 'Can only upload {count} files'
REMOVE: Remove
REMOVEERROR: 'Error removing file'
REMOVEINFO: 'Remove this file from here, but do not delete it from the file store'
STARTALL: 'Start all'
Saved: Saved
REMOVEERROR: 'Fout bij verwijderen'
REMOVEINFO: 'Verwijder (ontkoppel) dit bestand, maar behoud het in bestandsopslag van de website.'
STARTALL: 'Start alles'
Saved: 'Succesvol opgeslagen'
Versioned:
has_many_Versions: Versies

View File

@ -181,7 +181,7 @@ pa:
ResetFilter: Reset
GridFieldAction_Delete:
DeletePermissionsFailure: 'No delete permissions'
NEXT: 'ਅਗਲਾ'
NEXT: ਅਗਲਾ
PREVIOUS: ਪਿਛਲਾ
GridFieldDetailForm:
Create: Create

View File

@ -1,27 +1,27 @@
pl:
AssetAdmin:
NEWFOLDER: NewFolder
NEWFOLDER: NowyFolder
AssetTableField:
CREATED: 'First uploaded'
DIM: Dimensions
FILENAME: Filename
CREATED: 'Po raz pierwszy wgrany'
DIM: Rozmiar
FILENAME: 'Nazwa pliku'
FOLDER: Folder
LASTEDIT: 'Last changed'
OWNER: Owner
SIZE: 'File size'
TITLE: Title
TYPE: 'File type'
URL: URL
LASTEDIT: 'Ostatnio zmieniony'
OWNER: Właściciel
SIZE: 'Rozmiar pliku'
TITLE: Tytuł
TYPE: 'Typ pliku'
URL: 'Adres URL'
AssetUploadField:
ChooseFiles: 'Wybierz pliki'
DRAGFILESHERE: 'Przeciągnij tu pliki'
DROPAREA: 'Obszar upuszczania'
EDITALL: 'Edit all'
EDITALL: 'Edytuj wszystkie'
EDITANDORGANIZE: 'Edytuj i organizuj'
FILES: Files
TOTAL: Total
TOUPLOAD: 'Choose file(s) to upload...'
UPLOADINPROGRESS: 'Please wait… upload in progress'
FILES: Pliki
TOTAL: Razem
TOUPLOAD: 'Wybierz pliki do przesłania...'
UPLOADINPROGRESS: 'Pliki są przesyłane... proszę czekać'
UPLOADOR: LUB
BBCodeParser:
ALIGNEMENT: Wyrównanie
@ -55,12 +55,12 @@ pl:
Boolean:
ANY: Jakikolwiek
0: Nie
LOGOUT: 'Log out'
LOGOUT: 'Wyloguj się'
1: Tak
CMSMain:
ACCESS: 'Access to ''{title}'' section'
ACCESSALLINTERFACES: 'Access to all CMS sections'
ACCESSALLINTERFACESHELP: 'Overrules more specific access settings.'
ACCESS: 'Dostęp do sekcji ''{title}'''
ACCESSALLINTERFACES: 'Dostęp do wszystkich sekcji CMSa'
ACCESSALLINTERFACESHELP: 'Nadpisuje bardziej specyficzne ustawienia dostępu.'
SAVE: Zapisz
CMSProfileController:
MENUTITLE: CMSProfileController
@ -69,12 +69,12 @@ pl:
- Tak
ComplexTableField:
CLOSEPOPUP: 'Zamknij Okienko'
SUCCESSADD2: 'Added {name}'
SUCCESSADD2: 'Dodano {name}'
SUCCESSEDIT: 'Zapisano %s %s %s'
ConfirmedPasswordField:
ATLEAST: 'Passwords must be at least {min} characters long.'
BETWEEN: 'Passwords must be {min} to {max} characters long.'
MAXIMUM: 'Passwords must be at most {max} characters long.'
ATLEAST: 'Hasła muszą mieć przynajmniej {min} znaków.'
BETWEEN: 'Hasła muszą mieć długość pomiędzy {min} a {max} znaków.'
MAXIMUM: 'Hasła mogą mieć co najwyżej {max} znaków.'
SHOWONCLICKTITLE: 'Zmiana Hasła'
CreditCardField:
FIRST: pierwszy
@ -84,8 +84,8 @@ pl:
CurrencyField:
CURRENCYSYMBOL: $
DataObject:
PLURALNAME: 'Data Objects'
SINGULARNAME: 'Data Object'
PLURALNAME: 'Obiekty danych'
SINGULARNAME: 'Obiekt danych'
Date:
DAY: dzień
DAYS: dni
@ -93,90 +93,90 @@ pl:
HOURS: godziny
MIN: min
MINS: minuty
MONTH: 'miesiąc'
MONTHS: 'miesiące'
MONTH: miesiąc
MONTHS: miesiące
SEC: sekunda
SECS: sekundy
TIMEDIFFAGO: '{difference} ago'
TIMEDIFFIN: 'in {difference}'
TIMEDIFFAGO: '{difference} temu'
TIMEDIFFIN: 'w {difference}'
YEAR: rok
YEARS: lata
DateField:
NOTSET: 'nie ustawiono'
TODAY: dzisiaj
VALIDDATEFORMAT2: 'Please enter a valid date format ({format})'
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})'
VALIDDATEFORMAT2: 'Proszę wprowadź prawidłowy format daty ({format})'
VALIDDATEMAXDATE: 'Twoja data musi być wcześniejsza lub taka sama, jak maksymalna dozwolona data ({date})'
VALIDDATEMINDATE: 'Twoja data musi być późniejsza lub taka sama, jak minimalna dozwolona data ({date})'
Director:
ADD: Dodaj
INVALID_REQUEST: 'Invalid request'
INVALID_REQUEST: 'Nieprawidłowe żądanie'
DropdownField:
CHOOSE: (wybierz)
EmailField:
VALIDATION: 'Please enter an email address'
VALIDATION: 'Proszę podaj adres e-mail'
Email_BounceRecord:
PLURALNAME: 'Email Bounce Records'
SINGULARNAME: 'Email Bounce Record'
PLURALNAME: 'Historia odrzuconych e-maili'
SINGULARNAME: 'Odrzucony e-mail'
Enum:
ANY: Jakikolwiek
LOADING: Loading...
LOADING: Wczytywanie...
File:
Content: Zawartość
Filename: 'Nazwa pliku'
INVALIDEXTENSION: 'Extension is not allowed (valid: {extensions})'
INVALIDEXTENSIONSHORT: 'Extension is not allowed'
INVALIDEXTENSION: 'Rozszerzenie niedozwolone (dozwolone: {extensions})'
INVALIDEXTENSIONSHORT: 'Rozszerzenie niedozwolone'
NOFILESIZE: 'Rozmiar pliku to zero bajtów.'
NOVALIDUPLOAD: 'File is not a valid upload'
NOVALIDUPLOAD: 'Plik nie został poprawnie przesłany'
Name: Nazwa
PLURALNAME: Pliki
SINGULARNAME: Plik
TOOLARGE: 'Filesize is too large, maximum {size} allowed'
TOOLARGESHORT: 'Filesize exceeds {size}'
TOOLARGE: 'Plik jest za duży, maksymalnie dozwolone jest {size}'
TOOLARGESHORT: 'Rozmiar pliku przekracza {size}'
Title: Tytuł
FileIFrameField:
ATTACH: 'Attach {type}'
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.'
DELETE: 'Delete {type}'
DISALLOWEDFILETYPE: 'This filetype is not allowed to be uploaded'
ATTACH: 'Dołącz {type}'
ATTACHONCESAVED: 'Element {type} może zostać dołączony dopiero po pierwszym zapisaniu rekordu.'
ATTACHONCESAVED2: 'Pliki mogą zostać dołączone dopiero po pierwszym zapisaniu rekordu.'
DELETE: 'Usuń {type}'
DISALLOWEDFILETYPE: 'Wgrywanie plików tego typu nie jest dozwolone'
FILE: Plik
FROMCOMPUTER: 'From your Computer'
FROMFILESTORE: 'From the File Store'
FROMCOMPUTER: 'Z Twojego Komputera'
FROMFILESTORE: 'Ze Składnicy Plików'
NOSOURCE: 'Wybierz źródło pliku do załaczenia'
REPLACE: 'Replace {type}'
REPLACE: 'Zastąp {type}'
Filesystem:
IMPORT_TAB_HEADER: Import
SEARCHLISTINGS: Search
SYNCRESULTS: 'Sync complete: {createdcount} items created, {deletedcount} items deleted'
SEARCHLISTINGS: Znajdź
SYNCRESULTS: 'Synchronizacja zakończona: stworzono {createdcount} i usunięto {deletedcount} pozycji'
Form:
FIELDISREQUIRED: '%s jest wymagane'
TITLE: 'Image Uploading Iframe'
VALIDATIONCREDITNUMBER: 'Please ensure you have entered the {number} credit card number correctly'
TITLE: 'Iframe wgrywania zdjęć'
VALIDATIONCREDITNUMBER: 'Proszę upewnij się, że wprowadzony numer karty kredytowej {number} jest prawidłowy'
VALIDATIONNOTUNIQUE: 'Wprowadzona wartość nie jest unikalna'
VALIDATIONPASSWORDSDONTMATCH: 'Hasła nie są takie same'
VALIDATIONPASSWORDSNOTEMPTY: 'Hasło nie może być puste'
VALIDATIONSTRONGPASSWORD: 'Passwords must have at least one digit and one alphanumeric character'
VALIDATIONSTRONGPASSWORD: 'Hasła muszą mieć przynajmniej jedną cyfrę oraz jeden znak alfanumeryczny.'
VALIDATOR: Walidator
VALIDCURRENCY: 'Please enter a valid currency'
VALIDCURRENCY: 'Proszę podaj prawidłową walutę'
FormField:
NONE: brak
GridAction:
DELETE_DESCRIPTION: Delete
Delete: Delete
UnlinkRelation: Unlink
DELETE_DESCRIPTION: Usuń
Delete: Usuń
UnlinkRelation: 'Usuń łącze'
GridField:
Add: 'Add {name}'
Add: 'Dodaj {name}'
Filter: Filtr
FilterBy: 'Filter by '
FilterBy: 'Filtruj wg'
Find: Wyszukaj
LEVELUP: 'Level up'
LinkExisting: 'Link Existing'
LEVELUP: 'W górę'
LinkExisting: 'Linkuj istniejący'
NewRecord: 'Nowy %s'
NoItemsFound: 'Nie znaleziono elementów'
PRINTEDAT: 'Wydrukowane na'
PRINTEDBY: 'Wydrukowane przez'
PlaceHolder: 'Find {type}'
PlaceHolderWithLabels: 'Find {type} by {name}'
PlaceHolder: 'Znajdź {type}'
PlaceHolderWithLabels: 'Znajdź {type} wg {name}'
RelationSearch: 'Wyszukiwanie powiązań'
ResetFilter: Resetuj
GridFieldAction_Delete:
@ -184,13 +184,13 @@ pl:
NEXT: Następny
PREVIOUS: Poprzedni
GridFieldDetailForm:
Create: Create
Delete: Delete
DeletePermissionsFailure: 'No delete permissions'
Deleted: 'Deleted %s %s'
Create: Stwórz
Delete: Usuń
DeletePermissionsFailure: 'Brak uprawnień do usuwania'
Deleted: 'Usunięto %s %s'
HELLO: Cześć
Save: Save
Saved: 'Saved %s %s'
Save: Zapisz
Saved: 'Zapisano %s %s'
TEXT1: 'Oto twój'
TEXT2: 'link zmiany hasła'
TEXT3: dla
@ -215,21 +215,21 @@ pl:
has_many_Permissions: Zezwolenia
many_many_Members: Członkowie
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>'
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'
ResultDeleted: 'Deleted %d groups'
ResultUpdated: 'Updated %d groups'
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\">\\n\\n<h4>Zaawansowane użycie</h4>\\n\\n<ul>\\n\\n<li>Dozwolone kolumny: <em>%s</em></li>\\n\\n<li>Istniejące grupy są dopasowywane poprzez ich unikalną wartość <em>Kod</em> i aktualizowane nowymi wartościami z zaimportowanego pliku.</li>\\n\\n<li>Można tworzyć hierarchie Grup za pomocą kolumny <em>KodNadrzędny</em>.</li>\\n\\n<li>Kody uprawnień mogą być przypisywane za pomocą kolumny <em>KodUprawnienia</em>. Istniejące kody uprawnień nie są usuwane.</li>\\n\\n</ul>\\n\\n</div>"
ResultCreated: 'Stworzono grup: {count}'
ResultDeleted: 'Usunięto grup: %d'
ResultUpdated: 'Zaktualizowano grup: %d'
Hierarchy:
InfiniteLoopNotAllowed: 'Infinite loop found within the "{type}" hierarchy. Please change the parent to resolve this'
InfiniteLoopNotAllowed: 'Znaleziono nieskończoną pętlę wewnątrz hierarchii "{type}". Proszę zmień rodzica by to rozwiązać.'
HtmlEditorField:
ADDURL: 'Add URL'
ADJUSTDETAILSDIMENSIONS: 'Details &amp; dimensions'
ADDURL: 'Dodaj adres URL'
ADJUSTDETAILSDIMENSIONS: 'Szczegóły i rozmiar'
ANCHORVALUE: Odnośnik
BUTTONINSERT: Wstaw
BUTTONINSERTLINK: 'Wstaw link'
BUTTONREMOVELINK: 'Zmień link'
BUTTONUpdate: Update
BUTTONUpdate: Aktualizuj
CAPTIONTEXT: Tekst
CSSCLASS: Wyrównanie/styl
CSSCLASSCENTER: Wyśrodkowane
@ -242,18 +242,18 @@ pl:
FOLDER: Folder
FROMCMS: 'Z systemu CMS'
FROMCOMPUTER: 'Z komputera'
FROMWEB: 'From the web'
FindInFolder: 'Find in Folder'
IMAGEALT: 'Alternative text (alt)'
FROMWEB: 'Z WWW'
FindInFolder: 'Znajdź w Folderze'
IMAGEALT: 'Tekst alternatywny (alt)'
IMAGEALTTEXT: 'Tekst alternatywny (alt) - pokazywany gdy obrazek nie może być wyświetlony'
IMAGEALTTEXTDESC: 'Shown to screen readers or if image can not be displayed'
IMAGEALTTEXTDESC: 'Używane przez czytniki dla niewidomych oraz gdy nie można pobrać obrazu'
IMAGEDIMENSIONS: Rozmiar
IMAGEHEIGHTPX: 'Wysokość (px)'
IMAGETITLE: 'Tytuł (tooltip) - dodatkowe informacje o obrazku'
IMAGETITLETEXT: 'Title text (tooltip)'
IMAGETITLETEXTDESC: 'For additional information about the image'
IMAGETITLETEXT: 'Tytuł (wyskakujący dymek)'
IMAGETITLETEXTDESC: 'Po dodatkowe informacje o obrazku'
IMAGEWIDTHPX: 'Szerokość (px)'
INSERTMEDIA: 'Insert Media'
INSERTMEDIA: 'Wstaw Media'
LINK: 'Wstaw/edytuj link z podświetlonego tekstu '
LINKANCHOR: 'Odnośnik na tej stronie'
LINKDESCR: 'Opis linku'
@ -265,32 +265,32 @@ pl:
LINKTO: 'Linkuj do'
PAGE: Strona
URL: URL
URLNOTANOEMBEDRESOURCE: 'The URL ''{url}'' could not be turned into a media resource.'
UpdateMEDIA: 'Update Media'
URLNOTANOEMBEDRESOURCE: 'Adres URL ''{url}'' nie mógł zostać przekształcony w zasób medialny'
UpdateMEDIA: 'Zaktualizuj Media'
ImageField:
IMAGE: Obraz
Image_iframe.ss: 'ChangePasswordEmail.ss: BackLink_Button.ss: CMSLoadingScreen.ss: RelationComplexTableField.ss: ForgotPasswordEmail.ss: APPLY FILTER: "Zastosuj filtr" GridFieldItemEditView.ss: Go back: "Wstecz" ModelSidebar.ss: TableListField_PageControls.ss: ModelAdmin_Tools.ss: ComplexTableField_popup.ss: TableField.ss: FileIFrameField_iframe.ss: ComplexTableField.ss: TableListField.ss: ModelAdmin_ImportSpec.ss: LeftAndMain_Menu.ss:'
LeftAndMain:
ADD: 'Dodaj nowy rząd'
CANT_REORGANISE: 'You do not have permission to alter Top level pages. Your change was not saved.'
DELETED: Deleted.
DropdownBatchActionsDefault: Actions
HELP: Help
PAGETYPE: 'Page type: '
PERMAGAIN: 'You have been logged out of the CMS. If you would like to log in again, enter a username and password below.'
PERMALREADY: 'I''m sorry, but you can''t access that part of the CMS. If you want to log in as someone else, do so below'
PERMDEFAULT: 'Please choose an authentication method and enter your credentials to access the CMS.'
PLEASESAVE: 'Please Save Page: This page could not be upated because it hasn''t been saved yet.'
PreviewButton: Preview
REORGANISATIONSUCCESSFUL: 'Reorganised the site tree successfully.'
SAVEDUP: Saved.
VersionUnknown: unknown
CANT_REORGANISE: 'Nie masz uprawnień by zmieniać strony na najwyższym poziomie. Twoje zmiany nie zostały zapisane.'
DELETED: Usunięto.
DropdownBatchActionsDefault: Akcje
HELP: Pomoc
PAGETYPE: 'Rodzaj strony:'
PERMAGAIN: 'Zostałeś wylogowany z CMSa. Jeśli chcesz zalogować się ponownie, wpisz login i hasło 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.'
PLEASESAVE: 'Proszę Zapisz Stronę: Ta strona nie mogła zostać uaktualniona ponieważ nie została jeszcze zapisana.'
PreviewButton: Podgląd
REORGANISATIONSUCCESSFUL: 'Pomyślnie zreorganizowano drzewo serwisu.'
SAVEDUP: Zapisano.
VersionUnknown: nieznany
LoginAttempt:
Email: 'Adres E-mail'
IP: 'Adres IP'
Status: Status
Member:
ADDGROUP: 'Add group'
ADDGROUP: 'Dodaj grupę'
BUTTONCHANGEPASSWORD: 'Zmień hasło'
BUTTONLOGIN: Zaloguj
BUTTONLOGINOTHER: 'Zaloguj jako ktoś inny'
@ -308,8 +308,8 @@ pl:
ERRORWRONGCRED: 'E-mail lub hasło są nieprawidłowe, Spróbuj ponownie'
FIRSTNAME: Imię
INTERFACELANG: 'Język interfejsu'
INVALIDNEWPASSWORD: 'We couldn''t accept that password: {password}'
LOGGEDINAS: 'You''re logged in as {name}.'
INVALIDNEWPASSWORD: 'Nie możesz użyć takiego hasła: {password}'
LOGGEDINAS: 'Zostałeś zalogowany jako {name}.'
NEWPASSWORD: 'Nowe hasło'
PASSWORD: Hasło
PLURALNAME: Członkowie
@ -320,8 +320,8 @@ pl:
SUBJECTPASSWORDRESET: 'Twój link do zmiany hasła'
SURNAME: Nazwisko
VALIDATIONMEMBEREXISTS: 'Użytkownik z tym adresem już istnieje'
ValidationIdentifierFailed: 'Can''t overwrite existing member #{id} with identical identifier ({name} = {value}))'
WELCOMEBACK: 'Welcome Back, {firstname}'
ValidationIdentifierFailed: 'Nie można nadpisać istniejącego członka #{id} identycznym identyfikatorem ({name} = {value})'
WELCOMEBACK: 'Witaj ponownie, {firstname}'
YOUROLDPASSWORD: 'Twoje stare hasło'
belongs_many_many_Groups: Grupy
db_LastVisited: 'Data Ostatniej Wizyty'
@ -333,66 +333,66 @@ pl:
MemberAuthenticator:
TITLE: 'E-mail i Hasło'
MemberDatetimeOptionsetField:
AMORPM: 'AM (Ante meridiem) or PM (Post meridiem)'
Custom: Custom
DATEFORMATBAD: 'Date format is invalid'
DAYNOLEADING: 'Day of month without leading zero'
DIGITSDECFRACTIONSECOND: 'One or more digits representing a decimal fraction of a second'
FOURDIGITYEAR: 'Four-digit year'
FULLNAMEMONTH: 'Full name of month (e.g. June)'
HOURNOLEADING: 'Hour without leading zero'
MINUTENOLEADING: 'Minute without leading zero'
MONTHNOLEADING: 'Month digit without leading zero'
Preview: Preview
SHORTMONTH: 'Short name of month (e.g. Jun)'
TOGGLEHELP: 'Toggle formatting help'
TWODIGITDAY: 'Two-digit day of month'
TWODIGITHOUR: 'Two digits of hour (00 through 23)'
TWODIGITMINUTE: 'Two digits of minute (00 through 59)'
TWODIGITMONTH: 'Two-digit month (01=January, etc.)'
TWODIGITSECOND: 'Two digits of second (00 through 59)'
TWODIGITYEAR: 'Two-digit year'
AMORPM: 'AM (przed południem) lub PM (po południu)'
Custom: Własny
DATEFORMATBAD: 'Nieprawidłowy format daty'
DAYNOLEADING: 'Dzień miesiąca bez wiodącego zera'
DIGITSDECFRACTIONSECOND: 'Jedna lub więcej cyfr reprezentujących ułamek sekundy'
FOURDIGITYEAR: 'Czterocyfrowy rok'
FULLNAMEMONTH: 'Pełna nazwa miesiąca (np. Czerwiec)'
HOURNOLEADING: 'Godzina bez wiodącego zera'
MINUTENOLEADING: 'Minuta bez wiodącego zera'
MONTHNOLEADING: 'Miesiąc bez wiodącego zera'
Preview: Podgląd
SHORTMONTH: 'Skrócona nazwa miesiąca (np. Cze)'
TOGGLEHELP: 'Przełącz pomoc formatowania'
TWODIGITDAY: 'Dwucyfrowy dzień miesiąca'
TWODIGITHOUR: 'Dwucyfrowa godzina (od 00 do 23)'
TWODIGITMINUTE: 'Dwucyfrowa minuta (od 00 do 59)'
TWODIGITMONTH: 'Dwucyfrowy miesiąc (01=Styczeń, itd.)'
TWODIGITSECOND: 'Dwucyfrowa sekunda (od 00 do 59)'
TWODIGITYEAR: 'Dwucyfrowy rok'
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>'
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'
ResultDeleted: 'Deleted %d members'
ResultNone: 'No changes'
ResultUpdated: 'Updated {count} members'
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\">\\n<h4>Zaawansowane użycie</h4>\\n<ul>\\n<li>Dozwolone kolumny: <em>%s</em></li>\\n<li>Istniejący użytkownicy są dopasowani poprzez unikalną właściwość <em>Kod</em> i uaktualniani nowymi wartościami z zaimportowanego pliku.</li>\\n<li>Grupy mogą być przypisane poprzez kolumnę <em>Grupy</em>. Grupy identyfikowane są poprzez unikalną właściwość <em>Kod</em>, grupy mogą być oddzielone od siebie przecinkiem. Przypisania użytkowników do grup nie są usuwane.</li>\\n</ul>\\n</div>"
ResultCreated: 'Stworzono członków: {count}'
ResultDeleted: 'Usunięto %d użytkowników'
ResultNone: 'Bez zmian'
ResultUpdated: 'Zaktualizowano członków: {count}'
MemberTableField: null
ModelAdmin:
DELETE: Delete
DELETEDRECORDS: 'Deleted {count} records.'
IMPORT: 'Import from CSV'
IMPORTEDRECORDS: 'Imported {count} records.'
NOCSVFILE: 'Please browse for a CSV file to import'
NOIMPORT: 'Nothing to import'
RESET: Reset
Title: 'Data Models'
UPDATEDRECORDS: 'Updated {count} records.'
DELETE: Usuń
DELETEDRECORDS: 'Usunięto rekordów: {count}'
IMPORT: 'Import z CSV'
IMPORTEDRECORDS: 'Zaimportowano rekordów: {count}'
NOCSVFILE: 'Wybierz plik CSV do zaimportowania'
NOIMPORT: 'Nie ma niczego do zaimportowania'
RESET: Zresetuj
Title: 'Modele danych'
UPDATEDRECORDS: 'Zaktualizowano {count} rekordów.'
MoneyField:
FIELDLABELAMOUNT: Ilość
FIELDLABELCURRENCY: waluta
NullableField:
IsNullLabel: 'Jest Pusty'
NumericField:
VALIDATION: '''{value}'' is not a number, only numbers can be accepted for this field'
VALIDATION: '''{value}'' nie jest liczbą, to pole przyjmuje tylko liczby'
Permission:
AdminGroup: Administrator
CMS_ACCESS_CATEGORY: 'CMS Access'
CMS_ACCESS_CATEGORY: 'Dostęp do CMSa'
FULLADMINRIGHTS: 'Pełne prawa administracyjne'
FULLADMINRIGHTS_HELP: 'Zatwierdza i nadpisuje wszystkie istniejące uprawnienia'
IMPORTSPECFIELDS: 'Database columns'
IMPORTSPECRELATIONS: Relations
IMPORTSPECFIELDS: 'Kolumny bazy danych'
IMPORTSPECRELATIONS: Relacje
PermissionCheckboxSetField:
AssignedTo: 'assigned to "{title}"'
FromGroup: 'inherited from group "{title}"'
FromRole: 'inherited from role "{title}"'
AssignedTo: 'przypisany do "{title}"'
FromGroup: 'odziedziczone z grupy "{title}"'
FromRole: 'odziedziczone z roli "{title}"'
FromRoleOnGroup: 'odziedziczone z roli "%s" w grupie "%s"'
Permissions:
PERMISSIONS_CATEGORY: 'Uprawnienia ról i dostępu'
PhoneNumberField:
Back: Back
Back: Wstecz
VALIDATION: 'Wprowadź poprawny numer telefonu'
Security:
ALREADYLOGGEDIN: 'Nie masz dostępu do tej strony. Jeśli posiadasz inne konto, które umożliwi Ci dostęp do tej strony, możesz się zalogować poniżej'
@ -404,10 +404,10 @@ pl:
LOGGEDOUT: 'Zostałeś wylogowany. Jeśli chcesz się zalogować ponownie wpisz dane poniżej'
LOGIN: Logowanie
NOTEPAGESECURED: 'Ta strona jest zabezpieczona. Wpisz swoje dane a my wyślemy Ci potwierdzenie niebawem'
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>Link resetujący hasło wygasł lub jest nieprawidłowy.</p><p>Możesz poprosić o nowy <a href="{link1}">tutaj</a> lub zmień swoje hasło po <a href="{link2}">zalogowaniu się</a>.</p>'
NOTERESETPASSWORD: 'Wpisz adres e-mail, na który mamy wysłać link gdzie możesz zresetować swoje hasło'
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.'
PASSWORDSENTHEADER: 'Link resetujący hasła został wysłany do ''{email}'''
PASSWORDSENTTEXT: 'Dziękujemy! Link resetujący hasło został wysłany do ''{email}'', o ile konto użytkownika dla takiego e-maila istnieje.'
SecurityAdmin:
ACCESS_HELP: 'Pozwala na przeglądanie, dodawanie i edycję użytkowników, jak również przypisywanie im uprawnień i ról.'
APPLY_ROLES: 'Zatwierdź role dla grup'
@ -418,7 +418,7 @@ pl:
IMPORTGROUPS: 'Importuj grupy'
IMPORTUSERS: 'Importuj użytkowników'
MEMBERS: Użytkownicy
MENUTITLE: Security
MENUTITLE: Bezpieczeństwo
MemberListCaution: 'Uwaga: Usunięcie użytkowników z tej listy spowoduje również usunięcie ich ze wszystkich grup oraz z bazy danych'
NEWGROUP: 'Nowa grupa'
PERMISSIONS: Zezwolenia
@ -427,11 +427,11 @@ pl:
TABROLES: Role
Users: Użytkownicy
SecurityAdmin_MemberImportForm:
BtnImport: 'Import from CSV'
FileFieldLabel: 'CSV File <small>(Allowed extensions: *.csv)</small>'
BtnImport: 'Import z CSV'
FileFieldLabel: 'Plik CSV <small>(Dozwolone rozszerzenia: *.csv)</small>'
SilverStripeNavigator:
Edit: Edit
FILTER: Filter
Edit: Edycja
FILTER: Filtr
IMPORT: Import
VIEWFIRST: 'Zobacz pierwsze'
VIEWLAST: 'Zobacz ostatnie'
@ -443,7 +443,7 @@ pl:
TABMAIN: Główny
TableField:
ADDITEM: 'Dodaj %s'
ISREQUIRED: 'In %s ''%s'' is required'
ISREQUIRED: 'W %s ''%s'' jest wymagany'
SORTASC: 'Sortuj w porządku rosnącym'
SORTDESC: 'Sortuj w porządku malejącym'
TableListField:
@ -452,7 +452,7 @@ pl:
Print: Drukuj
SELECT: 'Wybierz:'
TimeField:
VALIDATEFORMAT: 'Please enter a valid time format ({format})'
VALIDATEFORMAT: 'Proszę wprowadź prawidłowy format czasu ({format})'
ToggleField:
LESS: mniej
MORE: więcej
@ -464,14 +464,14 @@ pl:
DOEDIT: Zapisz
DROPFILE: 'upuść plik'
DROPFILES: 'upuść pliki'
Dimensions: Dimensions
Dimensions: Rozmiar
EDITINFO: 'Edytuj plik'
FIELDNOTSET: 'Nie znaleziono informacji o pliku'
FROMCOMPUTER: 'Z komputera'
FROMFILES: 'Z plików'
MAXNUMBEROFFILES: 'Max number of {count} file(s) exceeded.'
MAXNUMBEROFFILESSHORT: 'Can only upload {count} files'
REMOVE: Remove
MAXNUMBEROFFILES: 'Osiągnięto maksymalną liczbę {count} plików.'
MAXNUMBEROFFILESSHORT: 'Można wgrać tylko {count} plik(ów/i)'
REMOVE: Usuń
REMOVEERROR: 'Błąd podczas usuwania pliku'
REMOVEINFO: 'Usuń pliki z tego miejsca, ale nie usuwaj ich z magazynu'
STARTALL: 'Rozpocznij wszystko'

View File

@ -13,7 +13,7 @@ ro:
TYPE: 'File type'
URL: URL
AssetUploadField:
ChooseFiles: 'Choose files'
ChooseFiles: 'Alegeti fisierele'
DRAGFILESHERE: 'Drag files here'
DROPAREA: 'Drop Area'
EDITALL: 'Edit all'
@ -31,8 +31,8 @@ ro:
CODE: 'Code Block'
CODEDESCRIPTION: 'Unformatted code block'
CODEEXAMPLE: 'Code block'
COLORED: 'Colored text'
COLOREDEXAMPLE: 'blue text'
COLORED: 'Text colorat'
COLOREDEXAMPLE: 'Text albastru'
EMAILLINK: 'Email link'
EMAILLINKDESCRIPTION: 'Create link to an email address'
IMAGE: Image
@ -44,13 +44,13 @@ ro:
STRUCK: 'Struck-out Text'
STRUCKEXAMPLE: Struck-out
UNDERLINE: 'Underlined Text'
UNDERLINEEXAMPLE: Underlined
UNDERLINEEXAMPLE: Subliniat
UNORDERED: 'Unordered list'
UNORDEREDDESCRIPTION: 'Unordered list'
UNORDEREDEXAMPLE1: 'unordered item 1'
BasicAuth:
ENTERINFO: 'Va rugam introduceţi un user si o parolă.'
ERRORNOTADMIN: 'That user is not an administrator.'
ERRORNOTADMIN: 'Acest utilizator nu este un administrator.'
ERRORNOTREC: 'That username / password isn''t recognised'
Boolean:
ANY: Any
@ -77,10 +77,10 @@ ro:
MAXIMUM: 'Passwords must be at most {max} characters long.'
SHOWONCLICKTITLE: 'Schimba Parola'
CreditCardField:
FIRST: first
FOURTH: fourth
SECOND: second
THIRD: third
FIRST: primul
FOURTH: 'al patrulea'
SECOND: 'al doilea'
THIRD: 'al treilea'
CurrencyField:
CURRENCYSYMBOL: $
DataObject:
@ -103,12 +103,12 @@ ro:
YEARS: ani
DateField:
NOTSET: 'not set'
TODAY: today
TODAY: astazi
VALIDDATEFORMAT2: 'Please enter a valid date format ({format})'
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})'
Director:
ADD: Add
ADD: Adauga
INVALID_REQUEST: 'Invalid request'
DropdownField:
CHOOSE: (Alege)
@ -118,7 +118,7 @@ ro:
PLURALNAME: 'Email Bounce Records'
SINGULARNAME: 'Email Bounce Record'
Enum:
ANY: Any
ANY: Oricare
LOADING: Loading...
File:
Content: Content
@ -166,23 +166,23 @@ ro:
UnlinkRelation: Unlink
GridField:
Add: 'Add {name}'
Filter: Filter
Filter: Filtru
FilterBy: 'Filter by '
Find: Find
Find: Gaseste
LEVELUP: 'Level up'
LinkExisting: 'Link Existing'
NewRecord: 'New %s'
NoItemsFound: 'No items found'
PRINTEDAT: 'Printed at'
PRINTEDBY: 'Printed by'
PRINTEDAT: 'Imprimat la'
PRINTEDBY: 'Imprimat de'
PlaceHolder: 'Find {type}'
PlaceHolderWithLabels: 'Find {type} by {name}'
RelationSearch: 'Relation search'
ResetFilter: Reset
ResetFilter: Reseteaza
GridFieldAction_Delete:
DeletePermissionsFailure: 'No delete permissions'
NEXT: Next
PREVIOUS: Previous
NEXT: Urmatorul
PREVIOUS: Anteriorul
GridFieldDetailForm:
Create: Create
Delete: Delete
@ -192,25 +192,25 @@ ro:
Save: Save
Saved: 'Saved %s %s'
TEXT1: 'Here is your'
TEXT2: 'password reset link'
TEXT3: for
TEXT2: 'link de resetare a parolei'
TEXT3: pentru
Group:
AddRole: 'Add a role for this group'
CHANGEPASSWORDTEXT1: 'Ti-ai schimbat parola in'
CHANGEPASSWORDTEXT2: 'You can now use the following credentials to log in:'
Code: 'Cod Grup'
DefaultGroupTitleAdministrators: Administrators
DefaultGroupTitleAdministrators: Administratori
DefaultGroupTitleContentAuthors: 'Content Authors'
Description: Description
Description: Descriere
EMAIL: Email
GroupReminder: 'If you choose a parent group, this group will take all it''s roles'
HELLO: Salut
Locked: 'Blocat?'
NoRoles: 'No roles found'
PASSWORD: Password
PASSWORD: Parola
Parent: 'Grup de Baza'
RolesAddEditLink: 'Manage roles'
Sort: 'Sort Order'
Sort: 'Ordine de sortare'
TITLE: 'Image Uploading Iframe'
has_many_Permissions: Permisiuni
many_many_Members: Membri
@ -268,8 +268,8 @@ ro:
URLNOTANOEMBEDRESOURCE: 'The URL ''{url}'' could not be turned into a media resource.'
UpdateMEDIA: 'Update Media'
ImageField:
IMAGE: Image
Image_iframe.ss: 'ChangePasswordEmail.ss: BackLink_Button.ss: CMSLoadingScreen.ss: RelationComplexTableField.ss: ForgotPasswordEmail.ss: APPLY FILTER: "Apply Filter" GridFieldItemEditView.ss: Go back: "Go back" ModelSidebar.ss: TableListField_PageControls.ss: ModelAdmin_Tools.ss: ComplexTableField_popup.ss: TableField.ss: FileIFrameField_iframe.ss: ComplexTableField.ss: TableListField.ss: ModelAdmin_ImportSpec.ss: LeftAndMain_Menu.ss:'
IMAGE: Imagine
Image_iframe.ss: 'ChangePasswordEmail.ss: BackLink_Button.ss: CMSLoadingScreen.ss: RelationComplexTableField.ss: ForgotPasswordEmail.ss: APPLY FILTER: "Aplica filtru" GridFieldItemEditView.ss: Go back: "Go back" ModelSidebar.ss: TableListField_PageControls.ss: ModelAdmin_Tools.ss: ComplexTableField_popup.ss: TableField.ss: FileIFrameField_iframe.ss: ComplexTableField.ss: TableListField.ss: ModelAdmin_ImportSpec.ss: LeftAndMain_Menu.ss:'
LeftAndMain:
ADD: 'Add a new row'
CANT_REORGANISE: 'You do not have permission to alter Top level pages. Your change was not saved.'
@ -287,7 +287,7 @@ ro:
VersionUnknown: unknown
LoginAttempt:
Email: 'Email Address'
IP: 'IP Address'
IP: 'Adresa IP'
Status: Status
Member:
ADDGROUP: 'Add group'
@ -295,40 +295,40 @@ ro:
BUTTONLOGIN: Autentificare
BUTTONLOGINOTHER: 'Log in as someone else'
BUTTONLOSTPASSWORD: 'Am uitat parola'
CONFIRMNEWPASSWORD: 'Confirm New Password'
CONFIRMPASSWORD: 'Confirm Password'
DefaultAdminFirstname: 'Default Admin'
DefaultDateTime: default
CONFIRMNEWPASSWORD: 'Confirmati noua parola'
CONFIRMPASSWORD: 'Confirmati parola'
DefaultAdminFirstname: 'Administrator implicit'
DefaultDateTime: implicit
EMAIL: Email
EMPTYNEWPASSWORD: 'The new password can''t be empty, please try again'
ENTEREMAIL: 'Please enter an email address to get a password reset link.'
ENTEREMAIL: 'Va rog introduceti o adresa de email pentru a obtine un link de resetare a parolei'
ERRORLOCKEDOUT: 'Your account has been temporarily disabled because of too many failed attempts at logging in. Please try again in 20 minutes.'
ERRORNEWPASSWORD: 'You have entered your new password differently, 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.'
FIRSTNAME: 'First Name'
FIRSTNAME: Prenume
INTERFACELANG: 'Limba interfetei'
INVALIDNEWPASSWORD: 'We couldn''t accept that password: {password}'
LOGGEDINAS: 'You''re logged in as {name}.'
NEWPASSWORD: 'New Password'
PASSWORD: Password
NEWPASSWORD: 'Noua parola'
PASSWORD: Parola
PLURALNAME: Membri
PROFILESAVESUCCESS: 'Successfully saved.'
REMEMBERME: 'Remember me next time?'
REMEMBERME: 'Tine-ma minte?'
SINGULARNAME: Membru
SUBJECTPASSWORDCHANGED: 'Parola dumneavoastra a fost schimbata'
SUBJECTPASSWORDRESET: 'Link-ul de resetare a parolei'
SURNAME: Surname
SURNAME: Nume
VALIDATIONMEMBEREXISTS: 'A member already exists with the same %s'
ValidationIdentifierFailed: 'Can''t overwrite existing member #{id} with identical identifier ({name} = {value}))'
WELCOMEBACK: 'Welcome Back, {firstname}'
YOUROLDPASSWORD: 'Your old password'
YOUROLDPASSWORD: 'Vechea parola'
belongs_many_many_Groups: Grupuri
db_LastVisited: 'Last Visited Date'
db_LastVisited: 'Data ultimei vizite'
db_Locale: 'Interface Locale'
db_LockedOutUntil: 'Blocat pana cand'
db_NumVisit: 'Number of Visits'
db_Password: Password
db_LockedOutUntil: 'Blocat pana la'
db_NumVisit: 'Numarul de vizite'
db_Password: Parola
db_PasswordExpiry: 'Data de Expirare a Parolei'
MemberAuthenticator:
TITLE: 'E-mail si Parolă'
@ -414,18 +414,18 @@ ro:
APPLY_ROLES_HELP: 'Ability to edit the roles assigned to a group. Requires the "Access to ''Users'' section" permission.'
EDITPERMISSIONS: 'Manage permissions for groups'
EDITPERMISSIONS_HELP: 'Ability to edit Permissions and IP Addresses for a group. Requires the "Access to ''Security'' section" permission.'
GROUPNAME: 'Group name'
IMPORTGROUPS: 'Import groups'
IMPORTUSERS: 'Import users'
MEMBERS: Members
GROUPNAME: 'Numele grupului'
IMPORTGROUPS: 'Importati grupuri'
IMPORTUSERS: 'Importa utilizatori'
MEMBERS: Membri
MENUTITLE: Security
MemberListCaution: 'Caution: Removing members from this list will remove them from all groups and the database'
NEWGROUP: 'New Group'
NEWGROUP: 'Grup nou'
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.'
TABROLES: Roles
Users: Users
Users: Utilizatori
SecurityAdmin_MemberImportForm:
BtnImport: 'Import from CSV'
FileFieldLabel: 'CSV File <small>(Allowed extensions: *.csv)</small>'
@ -433,12 +433,12 @@ ro:
Edit: Edit
FILTER: Filter
IMPORT: Import
VIEWFIRST: 'View first'
VIEWLAST: 'View last'
VIEWNEXT: 'View next'
VIEWPREVIOUS: 'View previous'
VIEWFIRST: 'Vezi primul'
VIEWLAST: 'Vezi ultimul'
VIEWNEXT: 'Vezi urmator'
VIEWPREVIOUS: 'Vezi anterior'
SimpleImageField:
NOUPLOAD: 'No Image Uploaded'
NOUPLOAD: 'Nici o imagine incarcata'
SiteTree:
TABMAIN: Pincipal
TableField:
@ -447,27 +447,27 @@ ro:
SORTASC: 'Sort in ascending order'
SORTDESC: 'Sort in descending order'
TableListField:
CSVEXPORT: 'Export to CSV'
PRINT: Print
Print: Print
SELECT: 'Select:'
CSVEXPORT: 'Exportati ca CSV'
PRINT: Imprima
Print: Imprima
SELECT: Selecteaza
TimeField:
VALIDATEFORMAT: 'Please enter a valid time format ({format})'
ToggleField:
LESS: 'mai puţin '
MORE: 'mai mult'
UploadField:
ATTACHFILE: 'Attach a file'
ATTACHFILE: 'Atasati un fisier'
ATTACHFILES: 'Attach files'
AttachFile: 'Attach a file'
AttachFile: 'Atasati un fisier'
DELETEINFO: 'Permanently delete this file from the file store'
DOEDIT: Save
DOEDIT: Salveaza
DROPFILE: 'drop a file'
DROPFILES: 'drop files'
Dimensions: Dimensions
EDITINFO: 'Edit this file'
EDITINFO: 'Editeaza acest fisier'
FIELDNOTSET: 'File information not found'
FROMCOMPUTER: 'From your computer'
FROMCOMPUTER: 'Din calculatorul dumneavoastra'
FROMFILES: 'From files'
MAXNUMBEROFFILES: 'Max number of {count} file(s) exceeded.'
MAXNUMBEROFFILESSHORT: 'Can only upload {count} files'
@ -475,6 +475,6 @@ ro:
REMOVEERROR: 'Error removing file'
REMOVEINFO: 'Remove this file from here, but do not delete it from the file store'
STARTALL: 'Start all'
Saved: Saved
Saved: Salvat
Versioned:
has_many_Versions: Versiune

View File

@ -3,12 +3,12 @@ ru:
NEWFOLDER: 'Новая папка'
AssetTableField:
CREATED: 'Первая загрузка'
DIM: 'Размеры'
DIM: Размеры
FILENAME: 'Имя файла'
FOLDER: Folder
LASTEDIT: 'Последнее изменение'
OWNER: Владелец
SIZE: 'Размер'
SIZE: Размер
TITLE: Название
TYPE: Тип
URL: URL
@ -61,7 +61,7 @@ ru:
ACCESS: 'Access to ''{title}'' section'
ACCESSALLINTERFACES: 'Доступ ко всему интерфейсу CMS'
ACCESSALLINTERFACESHELP: 'Overrules more specific access settings.'
SAVE: 'Сохранить'
SAVE: Сохранить
CMSProfileController:
MENUTITLE: CMSProfileController
CheckboxField:
@ -247,7 +247,7 @@ ru:
IMAGEALT: 'Alternative text (alt)'
IMAGEALTTEXT: 'Alternative text (alt) - shown if image cannot be displayed'
IMAGEALTTEXTDESC: 'Shown to screen readers or if image can not be displayed'
IMAGEDIMENSIONS: 'Размеры'
IMAGEDIMENSIONS: Размеры
IMAGEHEIGHTPX: Высота
IMAGETITLE: 'Title text (tooltip) - for additional information about the image'
IMAGETITLETEXT: 'Title text (tooltip)'
@ -402,7 +402,7 @@ ru:
ENTERNEWPASSWORD: 'Пожалуйста, введите новый пароль.'
ERRORPASSWORDPERMISSION: 'Вы должны войти в систему, чтобы изменить Ваш пароль!'
LOGGEDOUT: 'Вы вышли. Если Вы хотите войти снова, введите ваши учетные данные ниже.'
LOGIN: 'Вход'
LOGIN: Вход
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>'
NOTERESETPASSWORD: 'Введите Ваш адрес email, и Вам будет отправлена ссылка, по которой Вы сможете переустановить свой пароль'

View File

@ -77,7 +77,7 @@ si:
MAXIMUM: 'Passwords must be at most {max} characters long.'
SHOWONCLICKTITLE: 'මුර පදය වෙනස් කිරීම'
CreditCardField:
FIRST: 'පළමු'
FIRST: පළමු
FOURTH: fourth
SECOND: දෙවන
THIRD: third
@ -99,8 +99,8 @@ si:
SECS: 'තත්පර '
TIMEDIFFAGO: '{difference} ago'
TIMEDIFFIN: 'in {difference}'
YEAR: 'අවුරුද්ද'
YEARS: 'අවුරුදු'
YEAR: අවුරුද්ද
YEARS: අවුරුදු
DateField:
NOTSET: 'not set'
TODAY: today
@ -212,7 +212,7 @@ si:
RolesAddEditLink: 'Manage roles'
Sort: 'Sort Order'
TITLE: 'පිංතූර අප්ලෝඩ් කරන Iframe ඵක'
has_many_Permissions: 'අවසර'
has_many_Permissions: අවසර
many_many_Members: සාමාජිකයින්
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>'
@ -454,7 +454,7 @@ si:
TimeField:
VALIDATEFORMAT: 'Please enter a valid time format ({format})'
ToggleField:
LESS: 'අඩු'
LESS: අඩු
MORE: වැඩි
UploadField:
ATTACHFILE: 'Attach a file'

View File

@ -252,7 +252,7 @@ sk:
IMAGETITLE: 'Text titulky (tooltip) - pre doplňujúce informácie o obrázku'
IMAGETITLETEXT: 'Title text (tooltip)'
IMAGETITLETEXTDESC: 'For additional information about the image'
IMAGEWIDTHPX: 'Šírka'
IMAGEWIDTHPX: Šírka
INSERTMEDIA: 'Insert Media'
LINK: 'Vložiť/upraviť odkaz na zvýraznený text'
LINKANCHOR: 'Odkaz na tejto stranke'

View File

@ -252,7 +252,7 @@ sl:
IMAGETITLE: 'Naslov (tooltip) bo izpisan kot dopolnitev k vsebini slike'
IMAGETITLETEXT: 'Title text (tooltip)'
IMAGETITLETEXTDESC: 'For additional information about the image'
IMAGEWIDTHPX: 'Širina'
IMAGEWIDTHPX: Širina
INSERTMEDIA: 'Insert Media'
LINK: Povezava
LINKANCHOR: 'Sidro na tej strani'

View File

@ -182,7 +182,7 @@ sr:
GridFieldAction_Delete:
DeletePermissionsFailure: 'No delete permissions'
NEXT: Следеће
PREVIOUS: 'Претходно'
PREVIOUS: Претходно
GridFieldDetailForm:
Create: Create
Delete: Delete

View File

@ -16,12 +16,12 @@ sv:
ChooseFiles: 'Välj filer'
DRAGFILESHERE: 'Dra filer hit'
DROPAREA: 'Släpp här'
EDITALL: 'Edit all'
EDITALL: 'Redigera alla'
EDITANDORGANIZE: 'Redigera och organisera'
FILES: Files
TOTAL: Total
TOUPLOAD: 'Choose file(s) to upload...'
UPLOADINPROGRESS: 'Please wait… upload in progress'
FILES: Filer
TOTAL: Totalt
TOUPLOAD: 'Välj fil(er) att ladda upp...'
UPLOADINPROGRESS: 'Var god dröj... uppladdning pågår'
UPLOADOR: ELLER
BBCodeParser:
ALIGNEMENT: Justering
@ -55,7 +55,7 @@ sv:
Boolean:
ANY: 'Vilken som helst'
0: Falskt
LOGOUT: 'Log out'
LOGOUT: 'Logga ut'
1: Sant
CMSMain:
ACCESS: 'Access to ''{title}'' section'
@ -69,7 +69,7 @@ sv:
- Sant
ComplexTableField:
CLOSEPOPUP: 'Stäng popup'
SUCCESSADD2: 'Added {name}'
SUCCESSADD2: 'Lade till {name}'
SUCCESSEDIT: 'Sparade %s %s %s'
ConfirmedPasswordField:
ATLEAST: 'Passwords must be at least {min} characters long.'
@ -97,29 +97,29 @@ sv:
MONTHS: 'månader '
SEC: sek
SECS: sekunder
TIMEDIFFAGO: '{difference} ago'
TIMEDIFFIN: 'in {difference}'
TIMEDIFFAGO: '{difference} sen'
TIMEDIFFIN: 'om {difference}'
YEAR: år
YEARS: år
DateField:
NOTSET: 'inte angivet'
TODAY: 'i dag'
VALIDDATEFORMAT2: 'Please enter a valid date format ({format})'
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})'
VALIDDATEFORMAT2: 'Var god att ange datumet i ett giltigt format ({format})'
VALIDDATEMAXDATE: 'Angivet datum måste vara tidigare eller samma som det senaste godkända datumet ({date})'
VALIDDATEMINDATE: 'Angivet datum måste vara senare eller samma som det tidigaste godkända datumet ({date})'
Director:
ADD: 'Lägg till'
INVALID_REQUEST: 'Invalid request'
INVALID_REQUEST: 'Ogiltig förfrågan'
DropdownField:
CHOOSE: (Välj)
EmailField:
VALIDATION: 'Please enter an email address'
VALIDATION: 'Var snäll och ange en epostadress'
Email_BounceRecord:
PLURALNAME: 'Studsade e-brev'
SINGULARNAME: 'Studsade e-brev'
Enum:
ANY: 'Vilken som helst'
LOADING: Loading...
LOADING: Laddar...
File:
Content: Innehåll
Filename: Filnamn
@ -131,22 +131,22 @@ sv:
PLURALNAME: Filer
SINGULARNAME: Fil
TOOLARGE: 'Filesize is too large, maximum {size} allowed'
TOOLARGESHORT: 'Filesize exceeds {size}'
TOOLARGESHORT: 'Filstorlek överskriden {size}'
Title: Titel
FileIFrameField:
ATTACH: 'Attach {type}'
ATTACH: 'Bifoga {type}'
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.'
DELETE: 'Delete {type}'
DELETE: 'Radera {type}'
DISALLOWEDFILETYPE: 'Filtypen är inte tillåten för uppladdning'
FILE: Fil
FROMCOMPUTER: 'Från din dator'
FROMFILESTORE: 'Från filarkivet'
NOSOURCE: 'Välj filen du vill bifoga'
REPLACE: 'Replace {type}'
REPLACE: 'Ersätt {type}'
Filesystem:
IMPORT_TAB_HEADER: Import
SEARCHLISTINGS: Search
IMPORT_TAB_HEADER: Importera
SEARCHLISTINGS: Sök
SYNCRESULTS: 'Sync complete: {createdcount} items created, {deletedcount} items deleted'
Form:
FIELDISREQUIRED: '%s är obligatorisk'
@ -165,18 +165,18 @@ sv:
Delete: Radera
UnlinkRelation: Avlänka
GridField:
Add: 'Add {name}'
Add: 'Lägg till {name}'
Filter: Filtrera
FilterBy: 'Filter by '
FilterBy: 'Filtrera på'
Find: Hitta
LEVELUP: 'Level up'
LEVELUP: 'Upp en nivå'
LinkExisting: 'Länk finns'
NewRecord: 'Ny %s'
NoItemsFound: 'Inget hittades'
PRINTEDAT: Utskrivet
PRINTEDBY: 'Utskrivet av'
PlaceHolder: 'Find {type}'
PlaceHolderWithLabels: 'Find {type} by {name}'
PlaceHolder: 'Hitta {type}'
PlaceHolderWithLabels: 'Hitta {type} efter {name}'
RelationSearch: Relationssökning
ResetFilter: Rensa
GridFieldAction_Delete:
@ -184,13 +184,13 @@ sv:
NEXT: Nästa
PREVIOUS: Föregående
GridFieldDetailForm:
Create: Create
Delete: Delete
DeletePermissionsFailure: 'No delete permissions'
Deleted: 'Deleted %s %s'
Create: Skapa
Delete: Radera
DeletePermissionsFailure: 'Rättighet för att radera saknas'
Deleted: 'Raderade %s %s'
HELLO: Hej
Save: Save
Saved: 'Saved %s %s'
Save: Spara
Saved: 'Sparade %s %s'
TEXT1: 'Här är din'
TEXT2: 'Återställningslänk för lösenord'
TEXT3: för
@ -223,13 +223,13 @@ sv:
Hierarchy:
InfiniteLoopNotAllowed: 'Infinite loop found within the "{type}" hierarchy. Please change the parent to resolve this'
HtmlEditorField:
ADDURL: 'Add URL'
ADDURL: 'Lägg till URL'
ADJUSTDETAILSDIMENSIONS: 'Details &amp; dimensions'
ANCHORVALUE: Ankare
BUTTONINSERT: Infoga
BUTTONINSERTLINK: 'Infoga länk'
BUTTONREMOVELINK: 'Ta bort länk'
BUTTONUpdate: Update
BUTTONUpdate: Uppdatera
CAPTIONTEXT: Rubriktext
CSSCLASS: 'Placering / stil'
CSSCLASSCENTER: 'Centrerad, för sig själv'
@ -242,9 +242,9 @@ sv:
FOLDER: Mapp
FROMCMS: 'Från CMSet'
FROMCOMPUTER: 'Från din dator'
FROMWEB: 'From the web'
FindInFolder: 'Find in Folder'
IMAGEALT: 'Alternative text (alt)'
FROMWEB: 'Från webben'
FindInFolder: 'Hitta i mapp'
IMAGEALT: 'Alternativ text (alt)'
IMAGEALTTEXT: 'Alternativ text (alt) - visas om bilden inte kan visas'
IMAGEALTTEXTDESC: 'Shown to screen readers or if image can not be displayed'
IMAGEDIMENSIONS: Dimensioner
@ -266,31 +266,31 @@ sv:
PAGE: Sida
URL: URL
URLNOTANOEMBEDRESOURCE: 'The URL ''{url}'' could not be turned into a media resource.'
UpdateMEDIA: 'Update Media'
UpdateMEDIA: 'Uppdatera media'
ImageField:
IMAGE: Bild
Image_iframe.ss: 'ChangePasswordEmail.ss: BackLink_Button.ss: CMSLoadingScreen.ss: RelationComplexTableField.ss: ForgotPasswordEmail.ss: APPLY FILTER: "Använd filter" GridFieldItemEditView.ss: Go back: "Gå tillbaka" ModelSidebar.ss: TableListField_PageControls.ss: ModelAdmin_Tools.ss: ComplexTableField_popup.ss: TableField.ss: FileIFrameField_iframe.ss: ComplexTableField.ss: TableListField.ss: ModelAdmin_ImportSpec.ss: LeftAndMain_Menu.ss:'
LeftAndMain:
ADD: 'Lägg till ny rad'
CANT_REORGANISE: 'You do not have permission to alter Top level pages. Your change was not saved.'
DELETED: Deleted.
DropdownBatchActionsDefault: 'Åtgärder'
DELETED: Raderad
DropdownBatchActionsDefault: Åtgärder
HELP: Hjälp
PAGETYPE: Sidtyp
PERMAGAIN: 'Du har blivit utloggad. Om du vill logga in igen anger du dina uppgifter nedan.'
PERMALREADY: 'Tyvärr så har du inte tillträde till den delen av CMSet. Om du vill logga in med en annan användare kan du göra det nedan'
PERMDEFAULT: 'Var god välj en inloggningsmetod och fyll i dina uppgifter för att logga in i CMSet.'
PLEASESAVE: 'Var god spara sidan. Den kan inte uppdateras för att den har inte sparats ännu.'
PreviewButton: Preview
PreviewButton: Förhandsgranska
REORGANISATIONSUCCESSFUL: 'Reorganised the site tree successfully.'
SAVEDUP: Saved.
SAVEDUP: Sparad.
VersionUnknown: okänd
LoginAttempt:
Email: E-postadress
IP: IP-adress
Status: Status
Member:
ADDGROUP: 'Add group'
ADDGROUP: 'Lägg till grupp'
BUTTONCHANGEPASSWORD: 'Ändra lösenord'
BUTTONLOGIN: 'Logga in'
BUTTONLOGINOTHER: 'Logga in som annan användare'
@ -308,8 +308,8 @@ sv:
ERRORWRONGCRED: 'Antingen e-postadressen eller lösenordet är fel. Försök igen.'
FIRSTNAME: Förnamn
INTERFACELANG: Gränssnittsspråk
INVALIDNEWPASSWORD: 'We couldn''t accept that password: {password}'
LOGGEDINAS: 'You''re logged in as {name}.'
INVALIDNEWPASSWORD: 'Vi kunde inte godkänna det lösenordet: {password}'
LOGGEDINAS: 'Du är inloggad som {name}.'
NEWPASSWORD: 'Nytt lösenord'
PASSWORD: Lösenord
PLURALNAME: Medlemmar
@ -320,8 +320,8 @@ sv:
SUBJECTPASSWORDRESET: 'Din återställningslänk'
SURNAME: Efternamn
VALIDATIONMEMBEREXISTS: 'Det finns redan en medlem med samma %s'
ValidationIdentifierFailed: 'Can''t overwrite existing member #{id} with identical identifier ({name} = {value}))'
WELCOMEBACK: 'Welcome Back, {firstname}'
ValidationIdentifierFailed: 'Kan inte skriva över medlem #{id} med samma identifierare ({name} = {value}))'
WELCOMEBACK: 'Välkommen tillbaka, {firstname}'
YOUROLDPASSWORD: 'Ditt gamla lösenord'
belongs_many_many_Groups: Grupper
db_LastVisited: 'Datum för senaste besöket'
@ -376,23 +376,23 @@ sv:
NullableField:
IsNullLabel: 'Är NULL'
NumericField:
VALIDATION: '''{value}'' is not a number, only numbers can be accepted for this field'
VALIDATION: '''{value}'' är inget nummer, bara nummer kan accepteras för det här fältet'
Permission:
AdminGroup: Administratör
CMS_ACCESS_CATEGORY: CMS-tillgång
FULLADMINRIGHTS: 'Fulla administrativa rättigheter'
FULLADMINRIGHTS_HELP: 'Implicerar och gäller över alla andra tillskrivna rättigheter.'
IMPORTSPECFIELDS: 'Database columns'
IMPORTSPECRELATIONS: Relations
IMPORTSPECRELATIONS: Relationer
PermissionCheckboxSetField:
AssignedTo: 'assigned to "{title}"'
FromGroup: 'inherited from group "{title}"'
FromRole: 'inherited from role "{title}"'
AssignedTo: 'tilldelad till "{title}"'
FromGroup: 'ärvde från grupp "{title}"'
FromRole: 'ärvde från roll "{title}"'
FromRoleOnGroup: 'ärvt från roll "%s" i grupp "%s"'
Permissions:
PERMISSIONS_CATEGORY: 'Roller och tillgångsinställningar'
PhoneNumberField:
Back: Back
Back: Tillbaka
VALIDATION: 'Var god ange ett giltigt telefonnummer'
Security:
ALREADYLOGGEDIN: 'Du har inte tillträde till den här sidan. Om du har ett annat konto som har rätt behörighet kan du logga in igen nedan.'
@ -418,7 +418,7 @@ sv:
IMPORTGROUPS: 'Importera grupper'
IMPORTUSERS: 'Importera användare'
MEMBERS: Medlemmar
MENUTITLE: Security
MENUTITLE: Säkerhet
MemberListCaution: 'Varning: Att radera medlemmar från den här listan kommer också att radera dem från alla grupper och från databasen helt och hållet'
NEWGROUP: 'Ny grupp'
PERMISSIONS: Tillstånd
@ -430,9 +430,9 @@ sv:
BtnImport: 'Importera från CSV'
FileFieldLabel: 'CSV-fil <small>(Tillåtna filtyper: *.csv)</small>'
SilverStripeNavigator:
Edit: Edit
FILTER: Filter
IMPORT: Import
Edit: Ändra
FILTER: 'Filtrera på'
IMPORT: Importera
VIEWFIRST: 'Visa första'
VIEWLAST: 'Visa sista'
VIEWNEXT: 'Visa nästa'
@ -452,7 +452,7 @@ sv:
Print: 'Skriv ut'
SELECT: 'Välj:'
TimeField:
VALIDATEFORMAT: 'Please enter a valid time format ({format})'
VALIDATEFORMAT: 'Var god att ange tid i ett giltigt format ({format})'
ToggleField:
LESS: mindre
MORE: mer
@ -464,14 +464,14 @@ sv:
DOEDIT: Spara
DROPFILE: 'Släpp en fil'
DROPFILES: 'släpp filer'
Dimensions: Dimensions
Dimensions: Dimensioner
EDITINFO: 'Redigera filen'
FIELDNOTSET: 'Hittade ingen filinformation'
FROMCOMPUTER: 'Från din dator'
FROMFILES: 'Från filer'
MAXNUMBEROFFILES: 'Max number of {count} file(s) exceeded.'
MAXNUMBEROFFILESSHORT: 'Can only upload {count} files'
REMOVE: Remove
MAXNUMBEROFFILES: 'Max antal ({count}) filer överstiget.'
MAXNUMBEROFFILESSHORT: 'Kan bara ladda upp {count} files'
REMOVE: 'Ta bort'
REMOVEERROR: 'Fel när filen skulle tas bort'
REMOVEINFO: 'Ta bort filen härifrån, men radera den inte från filarkivet'
STARTALL: 'Starta alla'

View File

@ -35,8 +35,8 @@ th:
COLOREDEXAMPLE: 'blue text'
EMAILLINK: 'Email link'
EMAILLINKDESCRIPTION: สร้างลิงค์ให้กับที่อยู่อีเมล์
IMAGE: 'รูปภาพ'
IMAGEDESCRIPTION: 'แสดงรูปภาพในหน้าบทความของคุณ'
IMAGE: รูปภาพ
IMAGEDESCRIPTION: แสดงรูปภาพในหน้าบทความของคุณ
ITALIC: 'Italic Text'
ITALICEXAMPLE: Italics
LINK: 'Website link'
@ -230,7 +230,7 @@ th:
BUTTONINSERTLINK: แทรกลิงค์
BUTTONREMOVELINK: ลบลิงค์
BUTTONUpdate: Update
CAPTIONTEXT: 'ข้อความคำอธิบายใต้ภาพ'
CAPTIONTEXT: ข้อความคำอธิบายใต้ภาพ
CSSCLASS: 'การจัดวาง / รูปแบบ'
CSSCLASSCENTER: 'Centered, on its own.'
CSSCLASSLEFT: 'On the left, with text wrapping around.'
@ -268,7 +268,7 @@ th:
URLNOTANOEMBEDRESOURCE: 'The URL ''{url}'' could not be turned into a media resource.'
UpdateMEDIA: 'Update Media'
ImageField:
IMAGE: 'รูปภาพ'
IMAGE: รูปภาพ
Image_iframe.ss: 'ChangePasswordEmail.ss: BackLink_Button.ss: CMSLoadingScreen.ss: RelationComplexTableField.ss: ForgotPasswordEmail.ss: APPLY FILTER: "Apply Filter" GridFieldItemEditView.ss: Go back: "Go back" ModelSidebar.ss: TableListField_PageControls.ss: ModelAdmin_Tools.ss: ComplexTableField_popup.ss: TableField.ss: FileIFrameField_iframe.ss: ComplexTableField.ss: TableListField.ss: ModelAdmin_ImportSpec.ss: LeftAndMain_Menu.ss:'
LeftAndMain:
ADD: เพิ่มแถวใหม่
@ -307,7 +307,7 @@ th:
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.'
FIRSTNAME: ชื่อจริง
INTERFACELANG: 'ภาษาสำหรับหน้าจอติดต่อผู้ใช้'
INTERFACELANG: ภาษาสำหรับหน้าจอติดต่อผู้ใช้
INVALIDNEWPASSWORD: 'We couldn''t accept that password: {password}'
LOGGEDINAS: 'You''re logged in as {name}.'
NEWPASSWORD: รหัสผ่านใหม่
@ -325,7 +325,7 @@ th:
YOUROLDPASSWORD: รหัสผ่านเก่าของคุณ
belongs_many_many_Groups: กลุ่ม
db_LastVisited: วันที่เยี่ยมชมล่าสุด
db_Locale: 'ภาษาสำหรับส่วนอินเทอร์เฟซ'
db_Locale: ภาษาสำหรับส่วนอินเทอร์เฟซ
db_LockedOutUntil: 'Locked out until'
db_NumVisit: จำนวนการเข้าชม
db_Password: รหัสผ่าน
@ -438,7 +438,7 @@ th:
VIEWNEXT: เปิดดูหน้าเว็บถัดไป
VIEWPREVIOUS: เปิดดูหน้าเว็บก่อนหน้า
SimpleImageField:
NOUPLOAD: 'ยังไม่มีรูปภาพที่ถูกอัพโหลด'
NOUPLOAD: ยังไม่มีรูปภาพที่ถูกอัพโหลด
SiteTree:
TABMAIN: หลัก
TableField:

View File

@ -8,7 +8,7 @@ uk:
FOLDER: Folder
LASTEDIT: 'Востаннє змінено'
OWNER: Власник
SIZE: 'Розмір'
SIZE: Розмір
TITLE: Назва
TYPE: Тип
URL: URL
@ -91,8 +91,8 @@ uk:
DAYS: дні
HOUR: година
HOURS: годин
MIN: 'хв'
MINS: 'хв'
MIN: хв
MINS: хв
MONTH: місяць
MONTHS: місяці
SEC: сек
@ -199,18 +199,18 @@ uk:
CHANGEPASSWORDTEXT1: 'Ви змінили свій пароль для'
CHANGEPASSWORDTEXT2: 'Тепер Ви можете використовувати наступні дані для входу:'
Code: 'Код групи'
DefaultGroupTitleAdministrators: Administrators
DefaultGroupTitleAdministrators: Адміністратори
DefaultGroupTitleContentAuthors: 'Content Authors'
Description: Description
Description: Опис
EMAIL: Email
GroupReminder: 'If you choose a parent group, this group will take all it''s roles'
HELLO: Привіт
Locked: 'Заблокувати?'
NoRoles: 'No roles found'
NoRoles: 'Ролі не знайдені'
PASSWORD: Password
Parent: 'Батьківська група'
RolesAddEditLink: 'Manage roles'
Sort: 'Sort Order'
Sort: 'Порядок сортування'
TITLE: 'АйФрейм завантаження зображення'
has_many_Permissions: Права
many_many_Members: Члени
@ -247,7 +247,7 @@ uk:
IMAGEALT: 'Alternative text (alt)'
IMAGEALTTEXT: 'Альтернативний текст (alt) - відображається якщо зображення не відображається'
IMAGEALTTEXTDESC: 'Shown to screen readers or if image can not be displayed'
IMAGEDIMENSIONS: 'Розміри'
IMAGEDIMENSIONS: Розміри
IMAGEHEIGHTPX: Висота
IMAGETITLE: 'Текст заголовку (tooltip) - для додаткової інформації про зображення'
IMAGETITLETEXT: 'Title text (tooltip)'
@ -298,10 +298,10 @@ uk:
CONFIRMNEWPASSWORD: 'Підтвердіть новий пароль'
CONFIRMPASSWORD: 'Підтвердіть пароль'
DefaultAdminFirstname: 'Default Admin'
DefaultDateTime: default
DefaultDateTime: типовий
EMAIL: Е-пошта
EMPTYNEWPASSWORD: 'The new password can''t be empty, please try again'
ENTEREMAIL: 'Please enter an email address to get a password reset link.'
EMPTYNEWPASSWORD: 'Новий пароль не може бути порожнім, будь-ласка, спробуйте ще раз'
ENTEREMAIL: 'Введіть, будь-ласка, електронну адресу щоб отримати посилання для відновлення паролю.'
ERRORLOCKEDOUT: 'Ваш екаунт тимчасово заблоковано, тому що було багато невдалих спроб входу. Будь ласка спробуйте знову через 20 хвилин.'
ERRORNEWPASSWORD: 'Ви ввели новий пароль із відмінностями, спробуйте знову'
ERRORPASSWORDNOTMATCH: 'Ваш теперішній пароль не збігається, будь ласка, повторіть'
@ -313,7 +313,7 @@ uk:
NEWPASSWORD: 'Новий пароль'
PASSWORD: Пароль
PLURALNAME: Члени
PROFILESAVESUCCESS: 'Successfully saved.'
PROFILESAVESUCCESS: 'Збереження пройшло успішно.'
REMEMBERME: 'Пам''ятати мене наступного разу?'
SINGULARNAME: Член
SUBJECTPASSWORDCHANGED: 'Ваш пароль змінено'
@ -324,10 +324,10 @@ uk:
WELCOMEBACK: 'Welcome Back, {firstname}'
YOUROLDPASSWORD: 'Ваш старий пароль'
belongs_many_many_Groups: Групи
db_LastVisited: 'Last Visited Date'
db_LastVisited: 'Дата останнього відвідування'
db_Locale: 'Interface Locale'
db_LockedOutUntil: 'Заблоковано поки'
db_NumVisit: 'Number of Visits'
db_NumVisit: 'Кількість відвідувань'
db_Password: Пароль
db_PasswordExpiry: 'Дата закінчення терміну дії пароля'
MemberAuthenticator:
@ -410,22 +410,22 @@ uk:
PASSWORDSENTTEXT: 'Thank you! A reset link has been sent to ''{email}'', provided an account exists for this email address.'
SecurityAdmin:
ACCESS_HELP: 'Allow viewing, adding and editing users, as well as assigning permissions and roles to them.'
APPLY_ROLES: 'Apply roles to groups'
APPLY_ROLES: 'Застосувати ролі до груп'
APPLY_ROLES_HELP: 'Ability to edit the roles assigned to a group. Requires the "Access to ''Users'' section" permission.'
EDITPERMISSIONS: 'Керувати дозволами для груп'
EDITPERMISSIONS_HELP: 'Ability to edit Permissions and IP Addresses for a group. Requires the "Access to ''Security'' section" permission.'
GROUPNAME: 'Group name'
IMPORTGROUPS: 'Import groups'
GROUPNAME: 'Назва групи'
IMPORTGROUPS: 'Імпортувати групи'
IMPORTUSERS: 'Import users'
MEMBERS: Members
MEMBERS: Члени
MENUTITLE: Security
MemberListCaution: 'Caution: Removing members from this list will remove them from all groups and the database'
NEWGROUP: 'Нова Група'
PERMISSIONS: Permissions
ROLES: Roles
PERMISSIONS: Дозволи
ROLES: Ролі
ROLESDESCRIPTION: 'Roles are predefined sets of permissions, and can be assigned to groups.<br />They are inherited from parent groups if required.'
TABROLES: Roles
Users: Users
TABROLES: Ролі
Users: Користувачі
SecurityAdmin_MemberImportForm:
BtnImport: 'Import from CSV'
FileFieldLabel: 'CSV File <small>(Allowed extensions: *.csv)</small>'
@ -450,29 +450,29 @@ uk:
CSVEXPORT: 'Експортувати в CSV'
PRINT: Друкувати
Print: Друкувати
SELECT: 'Select:'
SELECT: 'Вибрати:'
TimeField:
VALIDATEFORMAT: 'Please enter a valid time format ({format})'
ToggleField:
LESS: менше
MORE: більше
UploadField:
ATTACHFILE: 'Attach a file'
ATTACHFILES: 'Attach files'
AttachFile: 'Attach a file'
ATTACHFILE: 'Прикріпити файл'
ATTACHFILES: 'Прикріпити файли'
AttachFile: 'Прикріпити файл'
DELETEINFO: 'Permanently delete this file from the file store'
DOEDIT: Save
DOEDIT: Зберегти
DROPFILE: 'drop a file'
DROPFILES: 'drop files'
Dimensions: Dimensions
EDITINFO: 'Edit this file'
EDITINFO: 'Редагувати цей файл'
FIELDNOTSET: 'File information not found'
FROMCOMPUTER: 'From your computer'
FROMFILES: 'From files'
FROMFILES: 'З файлів'
MAXNUMBEROFFILES: 'Max number of {count} file(s) exceeded.'
MAXNUMBEROFFILESSHORT: 'Can only upload {count} files'
REMOVE: Remove
REMOVEERROR: 'Error removing file'
REMOVEERROR: 'Помилка видалення файла'
REMOVEINFO: 'Remove this file from here, but do not delete it from the file store'
STARTALL: 'Start all'
Saved: Saved

View File

@ -87,8 +87,8 @@ vi_VN:
PLURALNAME: 'Data Objects'
SINGULARNAME: 'Data Object'
Date:
DAY: 'ngày'
DAYS: 'ngày'
DAY: ngày
DAYS: ngày
HOUR: giờ
HOURS: giờ
MIN: phút

View File

@ -2,12 +2,12 @@ zh_CN:
AssetAdmin:
NEWFOLDER: 新建文件夹
AssetTableField:
CREATED: '第一次被上传'
CREATED: 第一次被上传
DIM: 尺寸
FILENAME: 文件名
FOLDER: Folder
LASTEDIT: 上一次被更改
OWNER: '拥有者'
OWNER: 拥有者
SIZE: 大小
TITLE: 文件名称
TYPE: 类型
@ -49,9 +49,9 @@ zh_CN:
UNORDEREDDESCRIPTION: 'Unordered list'
UNORDEREDEXAMPLE1: 'unordered item 1'
BasicAuth:
ENTERINFO: '请输入用户名和密码'
ENTERINFO: 请输入用户名和密码
ERRORNOTADMIN: 此用户没有管理员权限。
ERRORNOTREC: '没有找到此用户名/密码'
ERRORNOTREC: 没有找到此用户名/密码
Boolean:
ANY: Any
0: 'False'
@ -75,7 +75,7 @@ zh_CN:
ATLEAST: 'Passwords must be at least {min} characters long.'
BETWEEN: 'Passwords must be {min} to {max} characters long.'
MAXIMUM: 'Passwords must be at most {max} characters long.'
SHOWONCLICKTITLE: '更改密码'
SHOWONCLICKTITLE: 更改密码
CreditCardField:
FIRST: first
FOURTH: fourth
@ -152,9 +152,9 @@ zh_CN:
FIELDISREQUIRED: '%s是必需填写的'
TITLE: 'Image Uploading Iframe'
VALIDATIONCREDITNUMBER: 'Please ensure you have entered the {number} credit card number correctly'
VALIDATIONNOTUNIQUE: '输入值已被他人占用'
VALIDATIONPASSWORDSDONTMATCH: '(密码相互不匹配)'
VALIDATIONPASSWORDSNOTEMPTY: '密码不能空白'
VALIDATIONNOTUNIQUE: 输入值已被他人占用
VALIDATIONPASSWORDSDONTMATCH: (密码相互不匹配)
VALIDATIONPASSWORDSNOTEMPTY: 密码不能空白
VALIDATIONSTRONGPASSWORD: 'Passwords must have at least one digit and one alphanumeric character'
VALIDATOR: Validator
VALIDCURRENCY: 'Please enter a valid currency'
@ -196,9 +196,9 @@ zh_CN:
TEXT3: for
Group:
AddRole: 'Add a role for this group'
CHANGEPASSWORDTEXT1: '您已更改了登陆%s的密码'
CHANGEPASSWORDTEXT1: 您已更改了登陆%s的密码
CHANGEPASSWORDTEXT2: 您现在可以用下列权限信息进行登路:
Code: '团队代码'
Code: 团队代码
DefaultGroupTitleAdministrators: Administrators
DefaultGroupTitleContentAuthors: 'Content Authors'
Description: Description
@ -211,7 +211,7 @@ zh_CN:
Parent: 主团队
RolesAddEditLink: 'Manage roles'
Sort: 'Sort Order'
TITLE: '图象上传内嵌框架Iframe'
TITLE: 图象上传内嵌框架Iframe
has_many_Permissions: 权限
many_many_Members: 成员
GroupImportForm:
@ -227,12 +227,12 @@ zh_CN:
ADJUSTDETAILSDIMENSIONS: 'Details &amp; dimensions'
ANCHORVALUE: Anchor
BUTTONINSERT: Insert
BUTTONINSERTLINK: '插入链接'
BUTTONREMOVELINK: '删除链接'
BUTTONINSERTLINK: 插入链接
BUTTONREMOVELINK: 删除链接
BUTTONUpdate: Update
CAPTIONTEXT: 'Caption text'
CSSCLASS: '对齐/样式'
CSSCLASSCENTER: '自居中'
CSSCLASS: 对齐/样式
CSSCLASSCENTER: 自居中
CSSCLASSLEFT: 左端自动换行
CSSCLASSLEFTALONE: 'On the left, on its own.'
CSSCLASSRIGHT: 右端自动换行
@ -248,17 +248,17 @@ zh_CN:
IMAGEALTTEXT: 'Alternative text (alt) - shown if image cannot be displayed'
IMAGEALTTEXTDESC: 'Shown to screen readers or if image can not be displayed'
IMAGEDIMENSIONS: 尺寸
IMAGEHEIGHTPX: '高(像素)'
IMAGEHEIGHTPX: 高(像素)
IMAGETITLE: 'Title text (tooltip) - for additional information about the image'
IMAGETITLETEXT: 'Title text (tooltip)'
IMAGETITLETEXTDESC: 'For additional information about the image'
IMAGEWIDTHPX: '宽(像素)'
IMAGEWIDTHPX: 宽(像素)
INSERTMEDIA: 'Insert Media'
LINK: '对所选文字插入/编辑链接'
LINK: 对所选文字插入/编辑链接
LINKANCHOR: 'Anchor on this page'
LINKDESCR: 链接描述
LINKEMAIL: 电子邮件地址
LINKEXTERNAL: '其它网站'
LINKEXTERNAL: 其它网站
LINKFILE: 下载文件
LINKINTERNAL: 本站网页
LINKOPENNEWWIN: 在新窗口打开链接?
@ -277,10 +277,10 @@ zh_CN:
DropdownBatchActionsDefault: Actions
HELP: 帮助
PAGETYPE: 网页类型
PERMAGAIN: '您于CMS的登录已被注销请在下面输入用户名和密码重新登录。'
PERMALREADY: '对不起您无权登录CMS的这一部分。如果您要用另外的帐号请在下面登录。'
PERMDEFAULT: '请先选择一种验证方法并输入您的权限信息以登录CMS。'
PLEASESAVE: '请先保存:因为该网页还未保存,所以该页无法更新。'
PERMAGAIN: 您于CMS的登录已被注销请在下面输入用户名和密码重新登录。
PERMALREADY: 对不起您无权登录CMS的这一部分。如果您要用另外的帐号请在下面登录。
PERMDEFAULT: 请先选择一种验证方法并输入您的权限信息以登录CMS。
PLEASESAVE: 请先保存:因为该网页还未保存,所以该页无法更新。
PreviewButton: Preview
REORGANISATIONSUCCESSFUL: 'Reorganised the site tree successfully.'
SAVEDUP: Saved.
@ -291,47 +291,47 @@ zh_CN:
Status: Status
Member:
ADDGROUP: 'Add group'
BUTTONCHANGEPASSWORD: '更改密码'
BUTTONCHANGEPASSWORD: 更改密码
BUTTONLOGIN: 登录
BUTTONLOGINOTHER: '使用其他帐户登录'
BUTTONLOSTPASSWORD: '忘记密码'
CONFIRMNEWPASSWORD: '确认新密码'
CONFIRMPASSWORD: '确认密码'
BUTTONLOGINOTHER: 使用其他帐户登录
BUTTONLOSTPASSWORD: 忘记密码
CONFIRMNEWPASSWORD: 确认新密码
CONFIRMPASSWORD: 确认密码
DefaultAdminFirstname: 'Default Admin'
DefaultDateTime: default
EMAIL: 电子邮件
EMPTYNEWPASSWORD: 'The new password can''t be empty, please try again'
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.'
ERRORNEWPASSWORD: '您输入了一个不同的新密码,请重新输入'
ERRORPASSWORDNOTMATCH: '您当前的密码不正确,请再次输入'
ERRORWRONGCRED: '电邮地址或密码似乎不对。请重新输入。'
ERRORNEWPASSWORD: 您输入了一个不同的新密码,请重新输入
ERRORPASSWORDNOTMATCH: 您当前的密码不正确,请再次输入
ERRORWRONGCRED: 电邮地址或密码似乎不对。请重新输入。
FIRSTNAME:
INTERFACELANG: 界面语言
INVALIDNEWPASSWORD: 'We couldn''t accept that password: {password}'
LOGGEDINAS: 'You''re logged in as {name}.'
NEWPASSWORD: '新密码'
PASSWORD: '密码'
NEWPASSWORD: 新密码
PASSWORD: 密码
PLURALNAME: 成员
PROFILESAVESUCCESS: 'Successfully saved.'
REMEMBERME: 记住我的信息?
SINGULARNAME: 成员
SUBJECTPASSWORDCHANGED: '您的密码已更改'
SUBJECTPASSWORDRESET: '重设您的密码链接'
SUBJECTPASSWORDCHANGED: 您的密码已更改
SUBJECTPASSWORDRESET: 重设您的密码链接
SURNAME:
VALIDATIONMEMBEREXISTS: 已经存在用这个电子邮件的会员
ValidationIdentifierFailed: 'Can''t overwrite existing member #{id} with identical identifier ({name} = {value}))'
WELCOMEBACK: 'Welcome Back, {firstname}'
YOUROLDPASSWORD: '您的旧密码'
YOUROLDPASSWORD: 您的旧密码
belongs_many_many_Groups: 团队
db_LastVisited: 'Last Visited Date'
db_Locale: 'Interface Locale'
db_LockedOutUntil: 禁止直至
db_NumVisit: 'Number of Visits'
db_Password: Password
db_PasswordExpiry: '密码过期日期'
db_PasswordExpiry: 密码过期日期
MemberAuthenticator:
TITLE: '电邮地址和密码'
TITLE: 电邮地址和密码
MemberDatetimeOptionsetField:
AMORPM: 'AM (Ante meridiem) or PM (Post meridiem)'
Custom: Custom
@ -361,7 +361,7 @@ zh_CN:
ResultUpdated: 'Updated {count} members'
MemberTableField: null
ModelAdmin:
DELETE: '删除'
DELETE: 删除
DELETEDRECORDS: 'Deleted {count} records.'
IMPORT: 'Import from CSV'
IMPORTEDRECORDS: 'Imported {count} records.'
@ -393,19 +393,19 @@ zh_CN:
PERMISSIONS_CATEGORY: 'Roles and access permissions'
PhoneNumberField:
Back: Back
VALIDATION: '请输入有效电话号码'
VALIDATION: 请输入有效电话号码
Security:
ALREADYLOGGEDIN: '您无访问此页的权限。如果您拥有另一个可访问次页的帐户,请在下面登录。'
BUTTONSEND: '给我发送密码重设链接'
CHANGEPASSWORDBELOW: '您可在下面更改您的密码'
CHANGEPASSWORDHEADER: '更改您的密码'
ENTERNEWPASSWORD: '请输入新密码'
ERRORPASSWORDPERMISSION: '您必需登录以更改您的密码'
LOGGEDOUT: '您已被撤消登录。如果您想再次登录,在下面输入您的登录信息。'
ALREADYLOGGEDIN: 您无访问此页的权限。如果您拥有另一个可访问次页的帐户,请在下面登录。
BUTTONSEND: 给我发送密码重设链接
CHANGEPASSWORDBELOW: 您可在下面更改您的密码
CHANGEPASSWORDHEADER: 更改您的密码
ENTERNEWPASSWORD: 请输入新密码
ERRORPASSWORDPERMISSION: 您必需登录以更改您的密码
LOGGEDOUT: 您已被撤消登录。如果您想再次登录,在下面输入您的登录信息。
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>'
NOTERESETPASSWORD: '输入您的电邮地址,我们会给您发送一个您可重设密码的链接'
NOTERESETPASSWORD: 输入您的电邮地址,我们会给您发送一个您可重设密码的链接
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.'
SecurityAdmin:
@ -438,11 +438,11 @@ zh_CN:
VIEWNEXT: 'View next'
VIEWPREVIOUS: 'View previous'
SimpleImageField:
NOUPLOAD: '没有上传的图像'
NOUPLOAD: 没有上传的图像
SiteTree:
TABMAIN: 主要部分
TableField:
ADDITEM: '新加'
ADDITEM: 新加
ISREQUIRED: 'In %s ''%s'' is required'
SORTASC: 'Sort in ascending order'
SORTDESC: 'Sort in descending order'

View File

@ -7,7 +7,7 @@ zh_TW:
FILENAME: 檔案名稱
FOLDER: Folder
LASTEDIT: 最後一次更新
OWNER: '擁有者'
OWNER: 擁有者
SIZE: 大小
TITLE: 標題
TYPE: 類型
@ -49,8 +49,8 @@ zh_TW:
UNORDEREDDESCRIPTION: 'Unordered list'
UNORDEREDEXAMPLE1: 'unordered item 1'
BasicAuth:
ENTERINFO: '請輸入帳號密碼。'
ERRORNOTADMIN: '那個使用者不是管理員。'
ENTERINFO: 請輸入帳號密碼。
ERRORNOTADMIN: 那個使用者不是管理員。
ERRORNOTREC: 那組帳號密碼不對。
Boolean:
ANY: Any
@ -152,8 +152,8 @@ zh_TW:
FIELDISREQUIRED: '必須要填 %s'
TITLE: 'Image Uploading Iframe'
VALIDATIONCREDITNUMBER: 'Please ensure you have entered the {number} credit card number correctly'
VALIDATIONNOTUNIQUE: '您輸入的數值並不是獨特的。'
VALIDATIONPASSWORDSDONTMATCH: '密碼不相配'
VALIDATIONNOTUNIQUE: 您輸入的數值並不是獨特的。
VALIDATIONPASSWORDSDONTMATCH: 密碼不相配
VALIDATIONPASSWORDSNOTEMPTY: 密碼不能是空的
VALIDATIONSTRONGPASSWORD: 'Passwords must have at least one digit and one alphanumeric character'
VALIDATOR: Validator
@ -197,7 +197,7 @@ zh_TW:
Group:
AddRole: 'Add a role for this group'
CHANGEPASSWORDTEXT1: 您為這個帳戶改密碼:
CHANGEPASSWORDTEXT2: '您可以用下列的帳號密碼登入:'
CHANGEPASSWORDTEXT2: 您可以用下列的帳號密碼登入:
Code: 'Group Code'
DefaultGroupTitleAdministrators: Administrators
DefaultGroupTitleContentAuthors: 'Content Authors'
@ -227,15 +227,15 @@ zh_TW:
ADJUSTDETAILSDIMENSIONS: 'Details &amp; dimensions'
ANCHORVALUE: Anchor
BUTTONINSERT: Insert
BUTTONINSERTLINK: '插入連結'
BUTTONINSERTLINK: 插入連結
BUTTONREMOVELINK: 移除連結
BUTTONUpdate: Update
CAPTIONTEXT: 'Caption text'
CSSCLASS: 對齊/樣式
CSSCLASSCENTER: 獨立置中
CSSCLASSLEFT: '靠左被字包圍。'
CSSCLASSLEFT: 靠左被字包圍。
CSSCLASSLEFTALONE: 'On the left, on its own.'
CSSCLASSRIGHT: '靠右被字包圍。'
CSSCLASSRIGHT: 靠右被字包圍。
DETAILS: Details
EMAIL: 電子郵件地址
FILE: 檔案
@ -254,7 +254,7 @@ zh_TW:
IMAGETITLETEXTDESC: 'For additional information about the image'
IMAGEWIDTHPX:
INSERTMEDIA: 'Insert Media'
LINK: '插入或編輯選取的連結'
LINK: 插入或編輯選取的連結
LINKANCHOR: 'Anchor on this page'
LINKDESCR: 連結敘述
LINKEMAIL: 電子郵件地址
@ -263,7 +263,7 @@ zh_TW:
LINKINTERNAL: 此網站
LINKOPENNEWWIN: 在新視窗打開連結
LINKTO: 連結至
PAGE: '網頁'
PAGE: 網頁
URL: 網址
URLNOTANOEMBEDRESOURCE: 'The URL ''{url}'' could not be turned into a media resource.'
UpdateMEDIA: 'Update Media'
@ -276,11 +276,11 @@ zh_TW:
DELETED: Deleted.
DropdownBatchActionsDefault: Actions
HELP: 說明
PAGETYPE: '網頁類型:'
PERMAGAIN: '您已被登出,請在下面重新登入。'
PERMALREADY: '抱歉,您沒有權力使用這個部分。您可以用別的帳號登入。'
PERMDEFAULT: '請選擇一個認證方法並登入。'
PLEASESAVE: '請儲存:這個網頁沒有被更新因為尚未被儲存。'
PAGETYPE: 網頁類型:
PERMAGAIN: 您已被登出,請在下面重新登入。
PERMALREADY: 抱歉,您沒有權力使用這個部分。您可以用別的帳號登入。
PERMDEFAULT: 請選擇一個認證方法並登入。
PLEASESAVE: 請儲存:這個網頁沒有被更新因為尚未被儲存。
PreviewButton: Preview
REORGANISATIONSUCCESSFUL: 'Reorganised the site tree successfully.'
SAVEDUP: Saved.
@ -292,8 +292,8 @@ zh_TW:
Member:
ADDGROUP: 'Add group'
BUTTONCHANGEPASSWORD: 更改密碼
BUTTONLOGIN: '登入'
BUTTONLOGINOTHER: '用別的帳戶登入'
BUTTONLOGIN: 登入
BUTTONLOGINOTHER: 用別的帳戶登入
BUTTONLOSTPASSWORD: 忘記密碼
CONFIRMNEWPASSWORD: 確認新密碼
CONFIRMPASSWORD: 確認密碼
@ -303,7 +303,7 @@ zh_TW:
EMPTYNEWPASSWORD: 'The new password can''t be empty, please try again'
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.'
ERRORNEWPASSWORD: '新密碼不相配,請再試一次。'
ERRORNEWPASSWORD: 新密碼不相配,請再試一次。
ERRORPASSWORDNOTMATCH: 舊密碼不對,請再試一次。
ERRORWRONGCRED: 密碼或電子郵件地址錯誤。請再是一次。
FIRSTNAME:
@ -393,19 +393,19 @@ zh_TW:
PERMISSIONS_CATEGORY: 'Roles and access permissions'
PhoneNumberField:
Back: Back
VALIDATION: '請輸入有效的電話號碼'
VALIDATION: 請輸入有效的電話號碼
Security:
ALREADYLOGGEDIN: '你不能瀏覽此頁。請用別的帳戶登入。'
ALREADYLOGGEDIN: 你不能瀏覽此頁。請用別的帳戶登入。
BUTTONSEND: 寄給我密碼重設網址。
CHANGEPASSWORDBELOW: 請在下面更改密碼。
CHANGEPASSWORDHEADER: 更改密碼
ENTERNEWPASSWORD: '請輸入新的密碼。'
ERRORPASSWORDPERMISSION: '你必須先登入才能改密碼!'
LOGGEDOUT: '你已登出。您在下面再登入一次。'
ENTERNEWPASSWORD: 請輸入新的密碼。
ERRORPASSWORDPERMISSION: 你必須先登入才能改密碼!
LOGGEDOUT: 你已登出。您在下面再登入一次。
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>'
NOTERESETPASSWORD: '請輸入您的電子郵件。我們將寄給你重設密媽的網址。'
NOTERESETPASSWORD: 請輸入您的電子郵件。我們將寄給你重設密媽的網址。
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.'
SecurityAdmin:

View File

@ -4,6 +4,6 @@
*/
class ComponentSet extends DataObjectSet {
function setComponentInfo($type, $ownerObj, $ownerClass, $tableName, $childClass, $joinField = null) {
Deprecation::notice('3.0', 'Use ManyManyList or HasManyList instead.');
Deprecation::notice('3.0', 'ComponentSet is deprecated. Use ManyManyList or HasManyList instead.', Deprecation::SCOPE_CLASS);
}
}

View File

@ -41,7 +41,7 @@ abstract class DataExtension extends Extension {
$statics = Injector::inst()->get($extensionClass, true, $args)->$extraStaticsMethod($class, $extensionClass);
if ($statics) {
Deprecation::notice('3.1.0', "$extraStaticsMethod deprecated. Just define statics on your extension, or use add_to_class");
Deprecation::notice('3.1.0', "$extraStaticsMethod deprecated. Just define statics on your extension, or use add_to_class", Deprecation::SCOPE_GLOBAL);
// TODO: This currently makes extraStatics the MOST IMPORTANT config layer, not the least
foreach (self::$extendable_statics as $key => $merge) {

View File

@ -141,7 +141,7 @@ class DataList extends ViewableData implements SS_List, SS_Filterable, SS_Sortab
return $this;
}
if($limit && !is_numeric($limit)) {
Deprecation::notice('3.0', 'Please pass limits as 2 arguments, rather than an array or SQL fragment.');
Deprecation::notice('3.0', 'Please pass limits as 2 arguments, rather than an array or SQL fragment.', Deprecation::SCOPE_GLOBAL);
}
$this->dataQuery->limit($limit, $offset);
return $this;
@ -599,7 +599,7 @@ class DataList extends ViewableData implements SS_List, SS_Filterable, SS_Sortab
* @return DataList
*/
public function getRange($offset, $length) {
Deprecation::notice("3.0", 'getRange($offset, $length) is deprecated. Use limit($length, $offset) instead. Note the new argument order.');
Deprecation::notice("3.0", 'Use limit($length, $offset) instead. Note the new argument order.');
return $this->limit($length, $offset);
}

View File

@ -2596,7 +2596,7 @@ class DataObject extends ViewableData implements DataObjectInterface, i18nEntity
// Todo: Determine if we can deprecate for 3.0.0 and use DI or something instead
// Todo: Make the $containerClass method redundant
if($containerClass != 'DataList') {
Deprecation::notice('3.0', '$containerClass argument is deprecated.');
Deprecation::notice('3.0', 'DataObject::get() - $containerClass argument is deprecated.', Deprecation::SCOPE_GLOBAL);
}
$result = DataList::create($callerClass)->where($filter)->sort($sort);

View File

@ -7,7 +7,7 @@
abstract class DataObjectDecorator extends DataExtension {
public function __construct() {
Deprecation::notice('3.0', 'Use DataExtension instead.');
Deprecation::notice('3.0', 'DataObjectDecorator is deprecated. Use DataExtension instead.', Deprecation::SCOPE_CLASS);
parent::__construct();
}

View File

@ -10,7 +10,7 @@ class DataObjectSet extends ArrayList {
* @deprecated 3.0
*/
public function __construct($items = array()) {
Deprecation::notice('3.0', 'Use DataList or ArrayList instead');
Deprecation::notice('3.0', 'DataObjectSet is deprecated. Use DataList or ArrayList instead', Deprecation::SCOPE_CLASS);
if ($items) {
if (!is_array($items) || func_num_args() > 1) {

View File

@ -223,7 +223,7 @@ class DataQuery {
}
$query->selectField("\"$baseClass\".\"ID\"", "ID");
$query->selectField("CASE WHEN \"$baseClass\".\"ClassName\" IS NOT NULL THEN \"$baseClass\".\"ClassName\" ELSE '$baseClass' END", "RecordClassName");
$query->selectField("CASE WHEN \"$baseClass\".\"ClassName\" IS NOT NULL THEN \"$baseClass\".\"ClassName\" ELSE ".DB::getConn()->prepStringForDB($baseClass)." END", "RecordClassName");
// TODO: Versioned, Translatable, SiteTreeSubsites, etc, could probably be better implemented as subclasses of DataQuery

View File

@ -882,7 +882,15 @@ abstract class SS_Database {
* @return string SQL datetime expression to query for the interval between $date1 and $date2 in seconds which is the result of the substraction
*/
abstract function datetimeDifferenceClause($date1, $date2);
/**
* Can the database override timezone as a connection setting,
* or does it use the system timezone exclusively?
*
* @return Boolean
*/
abstract function supportsTimezoneOverride();
/*
* Does this database support transactions?
*

View File

@ -87,6 +87,10 @@ class MySQLDatabase extends SS_Database {
return true;
}
public function supportsTimezoneOverride() {
return true;
}
/**
* Get the version of MySQL.
* @return string

View File

@ -19,7 +19,7 @@ class SQLMap extends Object implements IteratorAggregate {
* @param SQLQuery $query The query to generate this map. THis isn't executed until it's needed.
*/
public function __construct(SQLQuery $query, $keyField = "ID", $titleField = "Title") {
Deprecation::notice('3.0', 'Use SS_Map or DataList::map() instead.');
Deprecation::notice('3.0', 'Use SS_Map or DataList::map() instead.', Deprecation::SCOPE_CLASS);
if(!$query) {
user_error('SQLMap constructed with null query.', E_USER_ERROR);

View File

@ -1,12 +1,13 @@
<?php
/**
* Class Enum represents an enumeration of a set of strings.
*
* See {@link DropdownField} for a {@link FormField} to select enum values.
*
* @package framework
* @subpackage model
*/
class Enum extends DBField {
class Enum extends StringField {
protected $enum, $default;
@ -15,22 +16,28 @@ class Enum extends DBField {
/**
* Create a new Enum field.
*
* Example usage in {@link DataObject::$db} with comma-separated string notation ('Val1' is default)
* Example usage in {@link DataObject::$db} with comma-separated string
* notation ('Val1' is default)
*
* <code>
* "MyField" => "Enum('Val1, Val2, Val3', 'Val1')"
* </code>
*
* Example usage in in {@link DataObject::$db} with array notation ('Val1' is default)
* Example usage in in {@link DataObject::$db} with array notation
* ('Val1' is default)
*
* <code>
* "MyField" => "Enum(array('Val1', 'Val2', 'Val3'), 'Val1')"
* </code>
*
* @param enum: A string containing a comma separated list of options or an array of Vals.
* @param default The default option, which is either NULL or one of the items in the enumeration.
* @param enum: A string containing a comma separated list of options or an
* array of Vals.
* @param string The default option, which is either NULL or one of the
* items in the enumeration.
*/
function __construct($name = null, $enum = NULL, $default = NULL) {
public function __construct($name = null, $enum = NULL, $default = NULL) {
if($enum) {
if(!is_array($enum)){
if(!is_array($enum)) {
$enum = preg_split("/ *, */", trim($enum));
}
@ -49,19 +56,38 @@ class Enum extends DBField {
$this->default = reset($enum);
}
}
parent::__construct($name);
}
function requireField(){
$parts=Array('datatype'=>'enum', 'enums'=>Convert::raw2sql($this->enum), 'character set'=>'utf8', 'collate'=> 'utf8_general_ci', 'default'=>Convert::raw2sql($this->default), 'table'=>$this->tableName, 'arrayValue'=>$this->arrayValue);
$values=Array('type'=>'enum', 'parts'=>$parts);
/**
* @return void
*/
public function requireField() {
$parts = array(
'datatype' => 'enum',
'enums' => Convert::raw2sql($this->enum),
'character set' => 'utf8',
'collate' => 'utf8_general_ci',
'default' => Convert::raw2sql($this->default),
'table' => $this->tableName,
'arrayValue' => $this->arrayValue
);
$values = array(
'type' => 'enum',
'parts' => $parts
);
DB::requireField($this->tableName, $this->name, $values);
}
}
/**
* Return a dropdown field suitable for editing this field
* Return a dropdown field suitable for editing this field.
*
* @return DropdownField
*/
function formField($title = null, $name = null, $hasEmpty = false, $value = "", $form = null, $emptyString = null) {
public function formField($title = null, $name = null, $hasEmpty = false, $value = "", $form = null, $emptyString = null) {
if(!$title) $title = $this->name;
if(!$name) $name = $this->name;
@ -71,28 +97,32 @@ class Enum extends DBField {
return $field;
}
/**
* @return DropdownField
*/
public function scaffoldFormField($title = null, $params = null) {
return $this->formField($title);
}
function scaffoldSearchField($title = null) {
/**
* @param string
*
* @return DropdownField
*/
public function scaffoldSearchField($title = null) {
$anyText = _t('Enum.ANY', 'Any');
return $this->formField($title, null, false, '', null, "($anyText)");
}
/**
* Return the values of this enum, suitable for insertion into a dropdown field.
* Returns the values of this enum as an array, suitable for insertion into
* a {@link DropdownField}
*
* @param boolean
*
* @return array
*/
function enumValues($hasEmpty = false) {
public function enumValues($hasEmpty = false) {
return ($hasEmpty) ? array_merge(array('' => ''), ArrayLib::valuekey($this->enum)) : ArrayLib::valuekey($this->enum);
}
function Lower() {
return StringField::LowerCase();
}
function Upper() {
return StringField::UpperCase();
}
}
}

View File

@ -64,65 +64,67 @@ class BBCodeParser extends TextParser {
static function usable_tags() {
return new ArrayList(
new ArrayData(array(
"Title" => _t('BBCodeParser.BOLD', 'Bold Text'),
"Example" => '[b]<b>'._t('BBCodeParser.BOLDEXAMPLE', 'Bold').'</b>[/b]'
)),
new ArrayData(array(
"Title" => _t('BBCodeParser.ITALIC', 'Italic Text'),
"Example" => '[i]<i>'._t('BBCodeParser.ITALICEXAMPLE', 'Italics').'</i>[/i]'
)),
new ArrayData(array(
"Title" => _t('BBCodeParser.UNDERLINE', 'Underlined Text'),
"Example" => '[u]<u>'._t('BBCodeParser.UNDERLINEEXAMPLE', 'Underlined').'</u>[/u]'
)),
new ArrayData(array(
"Title" => _t('BBCodeParser.STRUCK', 'Struck-out Text'),
"Example" => '[s]<s>'._t('BBCodeParser.STRUCKEXAMPLE', 'Struck-out').'</s>[/s]'
)),
new ArrayData(array(
"Title" => _t('BBCodeParser.COLORED', 'Colored text'),
"Example" => '[color=blue]'._t('BBCodeParser.COLOREDEXAMPLE', 'blue text').'[/color]'
)),
new ArrayData(array(
"Title" => _t('BBCodeParser.ALIGNEMENT', 'Alignment'),
"Example" => '[align=right]'._t('BBCodeParser.ALIGNEMENTEXAMPLE', 'right aligned').'[/align]'
)),
new ArrayData(array(
"Title" => _t('BBCodeParser.CODE', 'Code Block'),
"Description" => _t('BBCodeParser.CODEDESCRIPTION', 'Unformatted code block'),
"Example" => '[code]'._t('BBCodeParser.CODEEXAMPLE', 'Code block').'[/code]'
)),
new ArrayData(array(
"Title" => _t('BBCodeParser.EMAILLINK', 'Email link'),
"Description" => _t('BBCodeParser.EMAILLINKDESCRIPTION', 'Create link to an email address'),
"Example" => "[email]you@yoursite.com[/email]"
)),
new ArrayData(array(
"Title" => _t('BBCodeParser.EMAILLINK', 'Email link'),
"Description" => _t('BBCodeParser.EMAILLINKDESCRIPTION', 'Create link to an email address'),
"Example" => "[email=you@yoursite.com]Email[/email]"
)),
new ArrayData(array(
"Title" => _t('BBCodeParser.UNORDERED', 'Unordered list'),
"Description" => _t('BBCodeParser.UNORDEREDDESCRIPTION', 'Unordered list'),
"Example" => '[ulist][*]'._t('BBCodeParser.UNORDEREDEXAMPLE1', 'unordered item 1').'[/ulist]'
)),
new ArrayData(array(
"Title" => _t('BBCodeParser.IMAGE', 'Image'),
"Description" => _t('BBCodeParser.IMAGEDESCRIPTION', 'Show an image in your post'),
"Example" => "[img]http://www.website.com/image.jpg[/img]"
)),
new ArrayData(array(
"Title" => _t('BBCodeParser.LINK', 'Website link'),
"Description" => _t('BBCodeParser.LINKDESCRIPTION', 'Link to another website or URL'),
"Example" => '[url]http://www.website.com/[/url]'
)),
new ArrayData(array(
"Title" => _t('BBCodeParser.LINK', 'Website link'),
"Description" => _t('BBCodeParser.LINKDESCRIPTION', 'Link to another website or URL'),
"Example" => "[url=http://www.website.com/]Website[/url]"
))
array(
new ArrayData(array(
"Title" => _t('BBCodeParser.BOLD', 'Bold Text'),
"Example" => '[b]<b>'._t('BBCodeParser.BOLDEXAMPLE', 'Bold').'</b>[/b]'
)),
new ArrayData(array(
"Title" => _t('BBCodeParser.ITALIC', 'Italic Text'),
"Example" => '[i]<i>'._t('BBCodeParser.ITALICEXAMPLE', 'Italics').'</i>[/i]'
)),
new ArrayData(array(
"Title" => _t('BBCodeParser.UNDERLINE', 'Underlined Text'),
"Example" => '[u]<u>'._t('BBCodeParser.UNDERLINEEXAMPLE', 'Underlined').'</u>[/u]'
)),
new ArrayData(array(
"Title" => _t('BBCodeParser.STRUCK', 'Struck-out Text'),
"Example" => '[s]<s>'._t('BBCodeParser.STRUCKEXAMPLE', 'Struck-out').'</s>[/s]'
)),
new ArrayData(array(
"Title" => _t('BBCodeParser.COLORED', 'Colored text'),
"Example" => '[color=blue]'._t('BBCodeParser.COLOREDEXAMPLE', 'blue text').'[/color]'
)),
new ArrayData(array(
"Title" => _t('BBCodeParser.ALIGNEMENT', 'Alignment'),
"Example" => '[align=right]'._t('BBCodeParser.ALIGNEMENTEXAMPLE', 'right aligned').'[/align]'
)),
new ArrayData(array(
"Title" => _t('BBCodeParser.CODE', 'Code Block'),
"Description" => _t('BBCodeParser.CODEDESCRIPTION', 'Unformatted code block'),
"Example" => '[code]'._t('BBCodeParser.CODEEXAMPLE', 'Code block').'[/code]'
)),
new ArrayData(array(
"Title" => _t('BBCodeParser.EMAILLINK', 'Email link'),
"Description" => _t('BBCodeParser.EMAILLINKDESCRIPTION', 'Create link to an email address'),
"Example" => "[email]you@yoursite.com[/email]"
)),
new ArrayData(array(
"Title" => _t('BBCodeParser.EMAILLINK', 'Email link'),
"Description" => _t('BBCodeParser.EMAILLINKDESCRIPTION', 'Create link to an email address'),
"Example" => "[email=you@yoursite.com]Email[/email]"
)),
new ArrayData(array(
"Title" => _t('BBCodeParser.UNORDERED', 'Unordered list'),
"Description" => _t('BBCodeParser.UNORDEREDDESCRIPTION', 'Unordered list'),
"Example" => '[ulist][*]'._t('BBCodeParser.UNORDEREDEXAMPLE1', 'unordered item 1').'[/ulist]'
)),
new ArrayData(array(
"Title" => _t('BBCodeParser.IMAGE', 'Image'),
"Description" => _t('BBCodeParser.IMAGEDESCRIPTION', 'Show an image in your post'),
"Example" => "[img]http://www.website.com/image.jpg[/img]"
)),
new ArrayData(array(
"Title" => _t('BBCodeParser.LINK', 'Website link'),
"Description" => _t('BBCodeParser.LINKDESCRIPTION', 'Link to another website or URL'),
"Example" => '[url]http://www.website.com/[/url]'
)),
new ArrayData(array(
"Title" => _t('BBCodeParser.LINK', 'Website link'),
"Description" => _t('BBCodeParser.LINKDESCRIPTION', 'Link to another website or URL'),
"Example" => "[url=http://www.website.com/]Website[/url]"
))
)
);
}

View File

@ -29,7 +29,7 @@
*
* <b>Inbuilt Shortcodes</b>
*
* From 2.4 onwards links inserted via the CMS into a content field are in the form ''<a href="[sitetree_link id=n]">''. At runtime this is replaced by a plain link to the page with the ID in question.
* From 2.4 onwards links inserted via the CMS into a content field are in the form ''<a href="[sitetree_link id=n]">'', and from 3.0 the comma is used as a separator instead ''<a href="[sitetree_link,id=n]">''. At runtime this is replaced by a plain link to the page with the ID in question.
*
* <b>Limitations</b>
*

View File

@ -226,7 +226,7 @@ $gf_grid_x: 16px;
border: none;
background: none;
margin: 0 0 0 2px;
padding: 6px 0;
padding: 1px 0;
width: auto;
text-shadow: none;
&.ui-state-hover {

View File

@ -42,9 +42,6 @@ if(isset($_SERVER['argv'][2])) {
$_REQUEST = array_merge($_REQUEST, $_GET);
}
// Always flush the manifest for phpunit test runs
$_GET['flush'] = 1;
// Connect to database
require_once $frameworkPath . '/core/Core.php';
require_once $frameworkPath . '/tests/FakeController.php';
@ -66,3 +63,11 @@ TestRunner::use_test_manifest();
// Remove the error handler so that PHPUnit can add its own
restore_error_handler();
if(!isset($_GET['flush']) || !$_GET['flush']) {
Debug::message(
"WARNING: Manifest not flushed. " .
"Add flush=1 as an argument to discover new classes or files.\n",
false
);
}

View File

@ -66,13 +66,40 @@ class DeprecationTest extends SapphireTest {
$this->callThatOriginatesFromFramework();
}
function testMethodNameCalculation() {
$this->assertEquals(DeprecationTest_Deprecation::get_method(), 'DeprecationTest->testMethodNameCalculation');
}
/**
* @expectedException PHPUnit_Framework_Error
* @expectedExceptionMessage DeprecationTest->testScopeMethod is deprecated. Method scope
*/
function testScopeMethod() {
Deprecation::notification_version('2.0.0');
Deprecation::notice('2.0.0', 'Method scope', Deprecation::SCOPE_METHOD);
}
/**
* @expectedException PHPUnit_Framework_Error
* @expectedExceptionMessage DeprecationTest is deprecated. Class scope
*/
function testScopeClass() {
Deprecation::notification_version('2.0.0');
Deprecation::notice('2.0.0', 'Class scope', Deprecation::SCOPE_CLASS);
}
/**
* @expectedException PHPUnit_Framework_Error
* @expectedExceptionMessage Global scope
*/
function testScopeGlobal() {
Deprecation::notification_version('2.0.0');
Deprecation::notice('2.0.0', 'Global scope', Deprecation::SCOPE_GLOBAL);
}
protected function callThatOriginatesFromFramework() {
$this->assertEquals(DeprecationTest_Deprecation::get_module(), FRAMEWORK_DIR);
Deprecation::notice('2.0', 'Deprecation test passed');
}
function testMethodNameCalculation() {
$this->assertEquals(DeprecationTest_Deprecation::get_method(), 'DeprecationTest->testMethodNameCalculation');
}
}

View File

@ -15,7 +15,7 @@ class GridFieldAddExistingAutocompleterTest extends FunctionalTest {
$btns = $parser->getBySelector('.ss-gridfield #action_gridfield_relationfind');
$response = $this->post(
'GridFieldAddExistingAutocompleterTest_Controller/Form/field/testfield/search/Team 2',
'GridFieldAddExistingAutocompleterTest_Controller/Form/field/testfield/search/?gridfield_relationsearch=Team 2',
array(
(string)$btns[0]['name'] => 1
)
@ -26,7 +26,7 @@ class GridFieldAddExistingAutocompleterTest extends FunctionalTest {
$this->assertEquals(array($team2->ID => 'Team 2'), $result);
$response = $this->post(
'GridFieldAddExistingAutocompleterTest_Controller/Form/field/testfield/search/Unknown',
'GridFieldAddExistingAutocompleterTest_Controller/Form/field/testfield/search/?gridfield_relationsearch=Unknown',
array(
(string)$btns[0]['name'] => 1
)

View File

@ -63,8 +63,8 @@ class GridFieldDetailFormTest extends FunctionalTest {
$surname = $parser->getBySelector('#Form_ItemEditForm_Surname');
$this->assertFalse($response->isError());
$this->assertEquals('Joe', (string) $firstName[0]);
$this->assertEquals('Bloggs', (string) $surname[0]);
$this->assertEquals('Jane', (string) $firstName[0]);
$this->assertEquals('Doe', (string) $surname[0]);
}
function testEditForm() {
@ -188,6 +188,8 @@ class GridFieldDetailFormTest_Person extends DataObject implements TestOnly {
'Categories' => 'GridFieldDetailFormTest_Category'
);
static $default_sort = 'FirstName';
function getCMSFields() {
$fields = parent::getCMSFields();
// TODO No longer necessary once FormScaffolder uses GridField
@ -209,7 +211,9 @@ class GridFieldDetailFormTest_PeopleGroup extends DataObject implements TestOnly
static $has_many = array(
'People' => 'GridFieldDetailFormTest_Person'
);
static $default_sort = 'Name';
function getCMSFields() {
$fields = parent::getCMSFields();
// TODO No longer necessary once FormScaffolder uses GridField
@ -232,6 +236,8 @@ class GridFieldDetailFormTest_Category extends DataObject implements TestOnly {
'People' => 'GridFieldDetailFormTest_Person'
);
static $default_sort = 'Name';
function getCMSFields() {
$fields = parent::getCMSFields();
// TODO No longer necessary once FormScaffolder uses GridField

View File

@ -76,7 +76,6 @@ class DBFieldTest extends SapphireTest {
/* Varchar behaviour */
$this->assertEquals($db->prepStringForDB("0"), singleton('Varchar')->prepValueForDB(0));
$this->assertEquals("'0'", singleton('Varchar')->prepValueForDB(0));
$this->assertEquals("null", singleton('Varchar')->prepValueForDB(null));
$this->assertEquals("null", singleton('Varchar')->prepValueForDB(false));
$this->assertEquals("null", singleton('Varchar')->prepValueForDB(''));

View File

@ -65,22 +65,25 @@ class DataListTest extends SapphireTest {
}
function testSql() {
$db = DB::getConn();
$list = DataObjectTest_TeamComment::get();
$expected = 'SELECT DISTINCT "DataObjectTest_TeamComment"."ClassName", "DataObjectTest_TeamComment"."Created", "DataObjectTest_TeamComment"."LastEdited", "DataObjectTest_TeamComment"."Name", "DataObjectTest_TeamComment"."Comment", "DataObjectTest_TeamComment"."TeamID", "DataObjectTest_TeamComment"."ID", CASE WHEN "DataObjectTest_TeamComment"."ClassName" IS NOT NULL THEN "DataObjectTest_TeamComment"."ClassName" ELSE \'DataObjectTest_TeamComment\' END AS "RecordClassName" FROM "DataObjectTest_TeamComment"';
$expected = 'SELECT DISTINCT "DataObjectTest_TeamComment"."ClassName", "DataObjectTest_TeamComment"."Created", "DataObjectTest_TeamComment"."LastEdited", "DataObjectTest_TeamComment"."Name", "DataObjectTest_TeamComment"."Comment", "DataObjectTest_TeamComment"."TeamID", "DataObjectTest_TeamComment"."ID", CASE WHEN "DataObjectTest_TeamComment"."ClassName" IS NOT NULL THEN "DataObjectTest_TeamComment"."ClassName" ELSE '.$db->prepStringForDB('DataObjectTest_TeamComment').' END AS "RecordClassName" FROM "DataObjectTest_TeamComment"';
$this->assertEquals($expected, $list->sql());
}
function testInnerJoin() {
$db = DB::getConn();
$list = DataObjectTest_TeamComment::get();
$list->innerJoin('DataObjectTest_Team', '"DataObjectTest_Team"."ID" = "DataObjectTest_TeamComment"."TeamID"', 'Team');
$expected = 'SELECT DISTINCT "DataObjectTest_TeamComment"."ClassName", "DataObjectTest_TeamComment"."Created", "DataObjectTest_TeamComment"."LastEdited", "DataObjectTest_TeamComment"."Name", "DataObjectTest_TeamComment"."Comment", "DataObjectTest_TeamComment"."TeamID", "DataObjectTest_TeamComment"."ID", CASE WHEN "DataObjectTest_TeamComment"."ClassName" IS NOT NULL THEN "DataObjectTest_TeamComment"."ClassName" ELSE \'DataObjectTest_TeamComment\' END AS "RecordClassName" FROM "DataObjectTest_TeamComment" INNER JOIN "DataObjectTest_Team" AS "Team" ON "DataObjectTest_Team"."ID" = "DataObjectTest_TeamComment"."TeamID"';
$expected = 'SELECT DISTINCT "DataObjectTest_TeamComment"."ClassName", "DataObjectTest_TeamComment"."Created", "DataObjectTest_TeamComment"."LastEdited", "DataObjectTest_TeamComment"."Name", "DataObjectTest_TeamComment"."Comment", "DataObjectTest_TeamComment"."TeamID", "DataObjectTest_TeamComment"."ID", CASE WHEN "DataObjectTest_TeamComment"."ClassName" IS NOT NULL THEN "DataObjectTest_TeamComment"."ClassName" ELSE '.$db->prepStringForDB('DataObjectTest_TeamComment').' END AS "RecordClassName" FROM "DataObjectTest_TeamComment" INNER JOIN "DataObjectTest_Team" AS "Team" ON "DataObjectTest_Team"."ID" = "DataObjectTest_TeamComment"."TeamID"';
$this->assertEquals($expected, $list->sql());
}
function testLeftJoin() {
$db = DB::getConn();
$list = DataObjectTest_TeamComment::get();
$list->leftJoin('DataObjectTest_Team', '"DataObjectTest_Team"."ID" = "DataObjectTest_TeamComment"."TeamID"', 'Team');
$expected = 'SELECT DISTINCT "DataObjectTest_TeamComment"."ClassName", "DataObjectTest_TeamComment"."Created", "DataObjectTest_TeamComment"."LastEdited", "DataObjectTest_TeamComment"."Name", "DataObjectTest_TeamComment"."Comment", "DataObjectTest_TeamComment"."TeamID", "DataObjectTest_TeamComment"."ID", CASE WHEN "DataObjectTest_TeamComment"."ClassName" IS NOT NULL THEN "DataObjectTest_TeamComment"."ClassName" ELSE \'DataObjectTest_TeamComment\' END AS "RecordClassName" FROM "DataObjectTest_TeamComment" LEFT JOIN "DataObjectTest_Team" AS "Team" ON "DataObjectTest_Team"."ID" = "DataObjectTest_TeamComment"."TeamID"';
$expected = 'SELECT DISTINCT "DataObjectTest_TeamComment"."ClassName", "DataObjectTest_TeamComment"."Created", "DataObjectTest_TeamComment"."LastEdited", "DataObjectTest_TeamComment"."Name", "DataObjectTest_TeamComment"."Comment", "DataObjectTest_TeamComment"."TeamID", "DataObjectTest_TeamComment"."ID", CASE WHEN "DataObjectTest_TeamComment"."ClassName" IS NOT NULL THEN "DataObjectTest_TeamComment"."ClassName" ELSE '.$db->prepStringForDB('DataObjectTest_TeamComment').' END AS "RecordClassName" FROM "DataObjectTest_TeamComment" LEFT JOIN "DataObjectTest_Team" AS "Team" ON "DataObjectTest_Team"."ID" = "DataObjectTest_TeamComment"."TeamID"';
$this->assertEquals($expected, $list->sql());
}

View File

@ -22,49 +22,53 @@ class DataObjectLazyLoadingTest extends SapphireTest {
);
function testQueriedColumnsID() {
$db = DB::getConn();
$playerList = new DataList('DataObjectTest_SubTeam');
$playerList = $playerList->setQueriedColumns(array('ID'));
$expected = 'SELECT DISTINCT "DataObjectTest_Team"."ClassName", "DataObjectTest_Team"."Created", ' .
'"DataObjectTest_Team"."LastEdited", "DataObjectTest_Team"."ID", CASE WHEN '.
'"DataObjectTest_Team"."ClassName" IS NOT NULL THEN "DataObjectTest_Team"."ClassName" ELSE ' .
'\'DataObjectTest_Team\' END AS "RecordClassName" FROM "DataObjectTest_Team" WHERE ' .
'("DataObjectTest_Team"."ClassName" IN (\'DataObjectTest_SubTeam\'))';
$db->prepStringForDB('DataObjectTest_Team').' END AS "RecordClassName" FROM "DataObjectTest_Team" WHERE ' .
'("DataObjectTest_Team"."ClassName" IN ('.$db->prepStringForDB('DataObjectTest_SubTeam').'))';
$this->assertEquals($expected, $playerList->sql());
}
function testQueriedColumnsFromBaseTableAndSubTable() {
$db = DB::getConn();
$playerList = new DataList('DataObjectTest_SubTeam');
$playerList = $playerList->setQueriedColumns(array('Title', 'SubclassDatabaseField'));
$expected = 'SELECT DISTINCT "DataObjectTest_Team"."ClassName", "DataObjectTest_Team"."Created", ' .
'"DataObjectTest_Team"."LastEdited", "DataObjectTest_Team"."Title", ' .
'"DataObjectTest_SubTeam"."SubclassDatabaseField", "DataObjectTest_Team"."ID", CASE WHEN ' .
'"DataObjectTest_Team"."ClassName" IS NOT NULL THEN "DataObjectTest_Team"."ClassName" ELSE ' .
'\'DataObjectTest_Team\' END AS "RecordClassName" FROM "DataObjectTest_Team" LEFT JOIN ' .
$db->prepStringForDB('DataObjectTest_Team').' END AS "RecordClassName" FROM "DataObjectTest_Team" LEFT JOIN ' .
'"DataObjectTest_SubTeam" ON "DataObjectTest_SubTeam"."ID" = "DataObjectTest_Team"."ID" WHERE ' .
'("DataObjectTest_Team"."ClassName" IN (\'DataObjectTest_SubTeam\'))';
'("DataObjectTest_Team"."ClassName" IN ('.$db->prepStringForDB('DataObjectTest_SubTeam').'))';
$this->assertEquals($expected, $playerList->sql());
}
function testQueriedColumnsFromBaseTable() {
$db = DB::getConn();
$playerList = new DataList('DataObjectTest_SubTeam');
$playerList = $playerList->setQueriedColumns(array('Title'));
$expected = 'SELECT DISTINCT "DataObjectTest_Team"."ClassName", "DataObjectTest_Team"."Created", ' .
'"DataObjectTest_Team"."LastEdited", "DataObjectTest_Team"."Title", "DataObjectTest_Team"."ID", ' .
'CASE WHEN "DataObjectTest_Team"."ClassName" IS NOT NULL THEN "DataObjectTest_Team"."ClassName" ELSE ' .
'\'DataObjectTest_Team\' END AS "RecordClassName" FROM "DataObjectTest_Team" WHERE ' .
'("DataObjectTest_Team"."ClassName" IN (\'DataObjectTest_SubTeam\'))';
$db->prepStringForDB('DataObjectTest_Team').' END AS "RecordClassName" FROM "DataObjectTest_Team" WHERE ' .
'("DataObjectTest_Team"."ClassName" IN ('.$db->prepStringForDB('DataObjectTest_SubTeam').'))';
$this->assertEquals($expected, $playerList->sql());
}
function testQueriedColumnsFromSubTable() {
$db = DB::getConn();
$playerList = new DataList('DataObjectTest_SubTeam');
$playerList = $playerList->setQueriedColumns(array('SubclassDatabaseField'));
$expected = 'SELECT DISTINCT "DataObjectTest_Team"."ClassName", "DataObjectTest_Team"."Created", ' .
'"DataObjectTest_Team"."LastEdited", "DataObjectTest_SubTeam"."SubclassDatabaseField", ' .
'"DataObjectTest_Team"."ID", CASE WHEN "DataObjectTest_Team"."ClassName" IS NOT NULL THEN ' .
'"DataObjectTest_Team"."ClassName" ELSE \'DataObjectTest_Team\' END AS "RecordClassName" FROM ' .
'"DataObjectTest_Team"."ClassName" ELSE '.$db->prepStringForDB('DataObjectTest_Team').' END AS "RecordClassName" FROM ' .
'"DataObjectTest_Team" LEFT JOIN "DataObjectTest_SubTeam" ON "DataObjectTest_SubTeam"."ID" = ' .
'"DataObjectTest_Team"."ID" WHERE ("DataObjectTest_Team"."ClassName" IN (\'DataObjectTest_SubTeam\'))';
'"DataObjectTest_Team"."ID" WHERE ("DataObjectTest_Team"."ClassName" IN ('.$db->prepStringForDB('DataObjectTest_SubTeam').'))';
$this->assertEquals($expected, $playerList->sql());
}

View File

@ -6,20 +6,16 @@ class DbDatetimeTest extends FunctionalTest {
protected $extraDataObjects = array('DbDatetimeTest_Team');
private static $offset = 0; // number of seconds of php and db time are out of sync
private static $offset_thresholds = array( // throw an error if the offset exceeds 30 minutes
E_USER_ERROR => 1800,
E_USER_NOTICE => 5,
);
protected $offset;
protected $adapter;
private $adapter;
/**
* Check if dates match more or less. This takes into the account the db query
* can overflow to the next second giving offset readings.
*/
private function matchesRoughly($date1, $date2, $comment = '') {
$allowedDifference = 5 + abs(self::$offset); // seconds
private function matchesRoughly($date1, $date2, $comment = '', $offset) {
$allowedDifference = 5 + abs($offset); // seconds
$time1 = is_numeric($date1) ? $date1 : strtotime($date1);
$time2 = is_numeric($date2) ? $date2 : strtotime($date2);
@ -31,104 +27,104 @@ class DbDatetimeTest extends FunctionalTest {
$query = 'SELECT ' . $this->adapter->formattedDatetimeClause('now', '%U');
return DB::query($query)->value();
}
function setUpOnce() {
parent::setUpOnce();
self::$offset = time() - strtotime(DB::query('SELECT ' . DB::getConn()->now())->value());
foreach(self::$offset_thresholds as $code => $offset) {
if(abs(self::$offset) > $offset) {
if($code == E_USER_NOTICE) {
Debug::show('The time of the database is out of sync with the webserver by ' . abs(self::$offset) . ' seconds.');
} else {
trigger_error('The time of the database is out of sync with the webserver by ' . abs(self::$offset) . ' seconds.', $code);
}
break;
}
/**
* Needs to be run within a test*() context.
*
* @return Int Offset in seconds
*/
private function checkPreconditions() {
// number of seconds of php and db time are out of sync
$offset = time() - strtotime(DB::query('SELECT ' . DB::getConn()->now())->value());
$threshold = 5; // seconds
if($offset > 5) {
$this->markTestSkipped('The time of the database is out of sync with the webserver by ' . abs($offset) . ' seconds.');
}
if(method_exists($this->adapter, 'supportsTimezoneOverride') && !$this->adapter->supportsTimezoneOverride()) {
$this->markTestSkipped("Database doesn't support timezone overrides");
}
return $offset;
}
function setUp() {
parent::setUp();
$this->adapter = DB::getConn();
$this->supportDbDatetime = method_exists($this->adapter, 'datetimeIntervalClause');
}
function testCorrectNow() {
if($this->supportDbDatetime) {
$clause = $this->adapter->formattedDatetimeClause('now', '%U');
$result = DB::query('SELECT ' . $clause)->value();
$this->assertRegExp('/^\d*$/', (string) $result);
$this->assertTrue($result>0);
}
$offset = $this->checkPreconditions();
$clause = $this->adapter->formattedDatetimeClause('now', '%U');
$result = DB::query('SELECT ' . $clause)->value();
$this->assertRegExp('/^\d*$/', (string) $result);
$this->assertTrue($result>0);
}
function testDbDatetimeFormat() {
if($this->supportDbDatetime) {
$clause = $this->adapter->formattedDatetimeClause('1973-10-14 10:30:00', '%H:%i, %d/%m/%Y');
$result = DB::query('SELECT ' . $clause)->value();
$this->matchesRoughly($result, date('H:i, d/m/Y', strtotime('1973-10-14 10:30:00')), 'nice literal time');
$offset = $this->checkPreconditions();
$clause = $this->adapter->formattedDatetimeClause('now', '%d');
$result = DB::query('SELECT ' . $clause)->value();
$this->matchesRoughly($result, date('d', $this->getDbNow()), 'todays day');
$clause = $this->adapter->formattedDatetimeClause('1973-10-14 10:30:00', '%H:%i, %d/%m/%Y');
$result = DB::query('SELECT ' . $clause)->value();
$this->matchesRoughly($result, date('H:i, d/m/Y', strtotime('1973-10-14 10:30:00')), 'nice literal time', $offset);
$clause = $this->adapter->formattedDatetimeClause('"Created"', '%U') . ' AS test FROM "DbDateTimeTest_Team"';
$result = DB::query('SELECT ' . $clause)->value();
$this->matchesRoughly($result, strtotime(DataObject::get_one('DbDateTimeTest_Team')->Created), 'fixture ->Created as timestamp');
}
$clause = $this->adapter->formattedDatetimeClause('now', '%d');
$result = DB::query('SELECT ' . $clause)->value();
$this->matchesRoughly($result, date('d', $this->getDbNow()), 'todays day', $offset);
$clause = $this->adapter->formattedDatetimeClause('"Created"', '%U') . ' AS test FROM "DbDateTimeTest_Team"';
$result = DB::query('SELECT ' . $clause)->value();
$this->matchesRoughly($result, strtotime(DataObject::get_one('DbDateTimeTest_Team')->Created), 'fixture ->Created as timestamp', $offset);
}
function testDbDatetimeInterval() {
if($this->supportDbDatetime) {
$offset = $this->checkPreconditions();
$clause = $this->adapter->datetimeIntervalClause('1973-10-14 10:30:00', '+18 Years');
$result = DB::query('SELECT ' . $clause)->value();
$this->matchesRoughly($result, '1991-10-14 10:30:00', 'add 18 years');
$clause = $this->adapter->datetimeIntervalClause('1973-10-14 10:30:00', '+18 Years');
$result = DB::query('SELECT ' . $clause)->value();
$this->matchesRoughly($result, '1991-10-14 10:30:00', 'add 18 years', $offset);
$clause = $this->adapter->datetimeIntervalClause('now', '+1 Day');
$result = DB::query('SELECT ' . $clause)->value();
$this->matchesRoughly($result, date('Y-m-d H:i:s', strtotime('+1 Day', $this->getDbNow())), 'tomorrow');
$clause = $this->adapter->datetimeIntervalClause('now', '+1 Day');
$result = DB::query('SELECT ' . $clause)->value();
$this->matchesRoughly($result, date('Y-m-d H:i:s', strtotime('+1 Day', $this->getDbNow())), 'tomorrow', $offset);
$query = new SQLQuery();
$query->setSelect(array());
$query->selectField($this->adapter->datetimeIntervalClause('"Created"', '-15 Minutes'), 'test')
->setFrom('"DbDateTimeTest_Team"')
->setLimit(1);
$query = new SQLQuery();
$query->setSelect(array());
$query->selectField($this->adapter->datetimeIntervalClause('"Created"', '-15 Minutes'), 'test')
->setFrom('"DbDateTimeTest_Team"')
->setLimit(1);
$result = $query->execute()->value();
$this->matchesRoughly($result, date('Y-m-d H:i:s', strtotime(DataObject::get_one('DbDateTimeTest_Team')->Created) - 900), '15 Minutes before creating fixture');
}
$result = $query->execute()->value();
$this->matchesRoughly($result, date('Y-m-d H:i:s', strtotime(DataObject::get_one('DbDateTimeTest_Team')->Created) - 900), '15 Minutes before creating fixture', $offset);
}
function testDbDatetimeDifference() {
if($this->supportDbDatetime) {
$offset = $this->checkPreconditions();
$clause = $this->adapter->datetimeDifferenceClause('1974-10-14 10:30:00', '1973-10-14 10:30:00');
$result = DB::query('SELECT ' . $clause)->value();
$this->matchesRoughly($result/86400, 365, '1974 - 1973 = 365 * 86400 sec');
$clause = $this->adapter->datetimeDifferenceClause('1974-10-14 10:30:00', '1973-10-14 10:30:00');
$result = DB::query('SELECT ' . $clause)->value();
$this->matchesRoughly($result/86400, 365, '1974 - 1973 = 365 * 86400 sec', $offset);
$clause = $this->adapter->datetimeDifferenceClause(date('Y-m-d H:i:s', strtotime('-15 seconds')), 'now');
$result = DB::query('SELECT ' . $clause)->value();
$this->matchesRoughly($result, -15, '15 seconds ago - now');
$clause = $this->adapter->datetimeDifferenceClause(date('Y-m-d H:i:s', strtotime('-15 seconds')), 'now');
$result = DB::query('SELECT ' . $clause)->value();
$this->matchesRoughly($result, -15, '15 seconds ago - now', $offset);
$clause = $this->adapter->datetimeDifferenceClause('now', $this->adapter->datetimeIntervalClause('now', '+45 Minutes'));
$result = DB::query('SELECT ' . $clause)->value();
$this->matchesRoughly($result, -45 * 60, 'now - 45 minutes ahead');
$clause = $this->adapter->datetimeDifferenceClause('now', $this->adapter->datetimeIntervalClause('now', '+45 Minutes'));
$result = DB::query('SELECT ' . $clause)->value();
$this->matchesRoughly($result, -45 * 60, 'now - 45 minutes ahead', $offset);
$query = new SQLQuery();
$query->setSelect(array());
$query->selectField($this->adapter->datetimeDifferenceClause('"LastEdited"', '"Created"'), 'test')
->setFrom('"DbDateTimeTest_Team"')
->setLimit(1);
$query = new SQLQuery();
$query->setSelect(array());
$query->selectField($this->adapter->datetimeDifferenceClause('"LastEdited"', '"Created"'), 'test')
->setFrom('"DbDateTimeTest_Team"')
->setLimit(1);
$result = $query->execute()->value();
$lastedited = Dataobject::get_one('DbDateTimeTest_Team')->LastEdited;
$created = Dataobject::get_one('DbDateTimeTest_Team')->Created;
$this->matchesRoughly($result, strtotime($lastedited) - strtotime($created), 'age of HomePage record in seconds since unix epoc');
}
$result = $query->execute()->value();
$lastedited = Dataobject::get_one('DbDateTimeTest_Team')->LastEdited;
$created = Dataobject::get_one('DbDateTimeTest_Team')->Created;
$this->matchesRoughly($result, strtotime($lastedited) - strtotime($created), 'age of HomePage record in seconds since unix epoc', $offset);
}
}
@ -137,4 +133,4 @@ class DbDateTimeTest_Team extends DataObject implements TestOnly {
static $db = array(
'Title' => 'Varchar'
);
}
}

View File

@ -7,6 +7,14 @@
*/
class PaginatedListTest extends SapphireTest {
static $fixture_file = 'DataObjectTest.yml';
protected $extraDataObjects = array(
'DataObjectTest_Team',
'DataObjectTest_SubTeam',
'DataObjectTest_Player'
);
public function testPageStart() {
$list = new PaginatedList(new ArrayList());
$this->assertEquals(0, $list->getPageStart(), 'The start defaults to 0.');
@ -84,6 +92,12 @@ class PaginatedListTest extends SapphireTest {
$list->setCurrentPage(999);
$this->assertDOSEquals(array(), $list->getIterator());
$players = DataObjectTest_Player::get();
$list = new PaginatedList($players);
$list->setPageLength(1);
$list->getIterator();
$this->assertEquals(4, $list->getTotalItems(), 'Getting an iterator should not trim the list to the page length.');
}
public function testPages() {