diff --git a/admin/code/LeftAndMain.php b/admin/code/LeftAndMain.php
index 0e488c48f..92f2eea6c 100644
--- a/admin/code/LeftAndMain.php
+++ b/admin/code/LeftAndMain.php
@@ -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;
+ }
+
+}
diff --git a/admin/code/LeftAndMainDecorator.php b/admin/code/LeftAndMainDecorator.php
index b9857dd08..59169bb9d 100644
--- a/admin/code/LeftAndMainDecorator.php
+++ b/admin/code/LeftAndMainDecorator.php
@@ -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();
}
diff --git a/admin/css/ie8.css b/admin/css/ie8.css
index 2102df8cd..45d71e722 100644
--- a/admin/css/ie8.css
+++ b/admin/css/ie8.css
@@ -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; }
diff --git a/admin/css/screen.css b/admin/css/screen.css
index 23e928911..990bfe290 100644
--- a/admin/css/screen.css
+++ b/admin/css/screen.css
@@ -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 */ }
diff --git a/admin/javascript/LeftAndMain.Preview.js b/admin/javascript/LeftAndMain.Preview.js
index ff371eafc..2fc7f65c1 100644
--- a/admin/javascript/LeftAndMain.Preview.js
+++ b/admin/javascript/LeftAndMain.Preview.js
@@ -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));
\ No newline at end of file
diff --git a/admin/javascript/LeftAndMain.js b/admin/javascript/LeftAndMain.js
index f31c82b60..0b69a1139 100644
--- a/admin/javascript/LeftAndMain.js
+++ b/admin/javascript/LeftAndMain.js
@@ -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);
}
});
diff --git a/admin/scss/_style.scss b/admin/scss/_style.scss
index 292e06910..c20482033 100644
--- a/admin/scss/_style.scss
+++ b/admin/scss/_style.scss
@@ -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;
- }
-
+ }
}
}
diff --git a/admin/scss/ie8.scss b/admin/scss/ie8.scss
index 8d74e7838..0fbe309bf 100644
--- a/admin/scss/ie8.scss
+++ b/admin/scss/ie8.scss
@@ -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;
+ }
+ }
}
\ No newline at end of file
diff --git a/admin/thirdparty/chosen/chosen/chosen.jquery.js b/admin/thirdparty/chosen/chosen/chosen.jquery.js
index 225754bc3..74b8b0b14 100644
--- a/admin/thirdparty/chosen/chosen/chosen.jquery.js
+++ b/admin/thirdparty/chosen/chosen/chosen.jquery.js
@@ -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 = $("
", {
id: this.container_id,
diff --git a/control/Director.php b/control/Director.php
index 421bae209..36c634283 100644
--- a/control/Director.php
+++ b/control/Director.php
@@ -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);
diff --git a/core/Object.php b/core/Object.php
index 08e3d165d..b37423762 100755
--- a/core/Object.php
+++ b/core/Object.php
@@ -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);
diff --git a/core/PaginatedList.php b/core/PaginatedList.php
index 5886182eb..0401063ef 100644
--- a/core/PaginatedList.php
+++ b/core/PaginatedList.php
@@ -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);
diff --git a/css/GridField.css b/css/GridField.css
index 8f965bbff..cce86ff1e 100644
--- a/css/GridField.css
+++ b/css/GridField.css
@@ -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; }
diff --git a/dev/Deprecation.php b/dev/Deprecation.php
index 071e31146..8e9a9399f 100644
--- a/dev/Deprecation.php
+++ b/dev/Deprecation.php
@@ -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);
+ }
+
}
}
diff --git a/dev/TestRunner.php b/dev/TestRunner.php
index a11ec5890..697370bae 100644
--- a/dev/TestRunner.php
+++ b/dev/TestRunner.php
@@ -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() {
diff --git a/docs/en/howto/extend-cms-interface.md b/docs/en/howto/extend-cms-interface.md
index 173035868..b074d1ead 100644
--- a/docs/en/howto/extend-cms-interface.md
+++ b/docs/en/howto/extend-cms-interface.md
@@ -85,9 +85,9 @@ Create a new file called `zzz_admin/code/BookmarkedPageExtension.php` and insert
:::php
'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?")
);
diff --git a/docs/en/misc/translation-process.md b/docs/en/misc/translation-process.md
index 0ef5e16e2..bd1096d35 100644
--- a/docs/en/misc/translation-process.md
+++ b/docs/en/misc/translation-process.md
@@ -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= -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= 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?
diff --git a/docs/en/topics/datamodel.md b/docs/en/topics/datamodel.md
index 76429d5ae..9b1bc388e 100755
--- a/docs/en/topics/datamodel.md
+++ b/docs/en/topics/datamodel.md
@@ -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
diff --git a/filesystem/Folder.php b/filesystem/Folder.php
index dc8ed5472..940981acd 100644
--- a/filesystem/Folder.php
+++ b/filesystem/Folder.php
@@ -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);
}
diff --git a/forms/DropdownField.php b/forms/DropdownField.php
index 09a111e55..ec62092fa 100644
--- a/forms/DropdownField.php
+++ b/forms/DropdownField.php
@@ -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);
diff --git a/forms/FieldList.php b/forms/FieldList.php
index 094d9a945..9ea578ecd 100644
--- a/forms/FieldList.php
+++ b/forms/FieldList.php
@@ -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;
}
}
diff --git a/forms/FileField.php b/forms/FileField.php
index e384ba342..21cf82dcc 100644
--- a/forms/FileField.php
+++ b/forms/FileField.php
@@ -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();
diff --git a/forms/HasManyComplexTableField.php b/forms/HasManyComplexTableField.php
index d6b25b56d..fdd569406 100644
--- a/forms/HasManyComplexTableField.php
+++ b/forms/HasManyComplexTableField.php
@@ -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;
diff --git a/forms/HtmlEditorField.php b/forms/HtmlEditorField.php
index 3afcaef81..d30176139 100644
--- a/forms/HtmlEditorField.php
+++ b/forms/HtmlEditorField.php
@@ -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);
diff --git a/forms/ImageField.php b/forms/ImageField.php
index eabdd6e8e..c49871d42 100644
--- a/forms/ImageField.php
+++ b/forms/ImageField.php
@@ -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)));');
diff --git a/forms/ImageFormAction.php b/forms/ImageFormAction.php
index d7fa72445..9932fcff1 100644
--- a/forms/ImageFormAction.php
+++ b/forms/ImageFormAction.php
@@ -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;
diff --git a/forms/ManyManyComplexTableField.php b/forms/ManyManyComplexTableField.php
index d14e9b731..9592a933e 100644
--- a/forms/ManyManyComplexTableField.php
+++ b/forms/ManyManyComplexTableField.php
@@ -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);
diff --git a/forms/PasswordField.php b/forms/PasswordField.php
index 44f8886b8..6e91190f9 100644
--- a/forms/PasswordField.php
+++ b/forms/PasswordField.php
@@ -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);
}
diff --git a/forms/SimpleImageField.php b/forms/SimpleImageField.php
index c7b79c543..3399b8ec8 100644
--- a/forms/SimpleImageField.php
+++ b/forms/SimpleImageField.php
@@ -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);
diff --git a/forms/TabSet.php b/forms/TabSet.php
index 01457e4dc..1162e204e 100644
--- a/forms/TabSet.php
+++ b/forms/TabSet.php
@@ -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');
diff --git a/forms/ToggleCompositeField.php b/forms/ToggleCompositeField.php
index 042cba8b3..7c8aaa2cb 100644
--- a/forms/ToggleCompositeField.php
+++ b/forms/ToggleCompositeField.php
@@ -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;
}
/**
diff --git a/forms/gridfield/GridFieldAddExistingAutocompleter.php b/forms/gridfield/GridFieldAddExistingAutocompleter.php
old mode 100755
new mode 100644
index 157eaa800..06b2bca68
--- a/forms/gridfield/GridFieldAddExistingAutocompleter.php
+++ b/forms/gridfield/GridFieldAddExistingAutocompleter.php
@@ -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
diff --git a/forms/gridfield/GridFieldDetailForm.php b/forms/gridfield/GridFieldDetailForm.php
index 6fd8233eb..7ee41101d 100644
--- a/forms/gridfield/GridFieldDetailForm.php
+++ b/forms/gridfield/GridFieldDetailForm.php
@@ -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();
diff --git a/forms/gridfield/GridFieldFilterHeader.php b/forms/gridfield/GridFieldFilterHeader.php
index 294db9d37..abfbdd6be 100644
--- a/forms/gridfield/GridFieldFilterHeader.php
+++ b/forms/gridfield/GridFieldFilterHeader.php
@@ -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('', '');
}
diff --git a/i18n/i18n.php b/i18n/i18n.php
index d16141e8a..7a518d3bb 100644
--- a/i18n/i18n.php
+++ b/i18n/i18n.php
@@ -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škai'),
'lmo' => array('Lombard', 'Lombardo'),
'mk' => array('Macedonian', 'македонски'),
- 'mi' => array('Maori', 'Maori'),
+ 'mi' => array('Maori', 'Māori'),
'ms' => array('Malay', 'Bahasa melayu'),
'mt' => array('Maltese', 'Malti'),
'mr' => array('Marathi', 'मराठी'),
@@ -777,7 +777,7 @@ class i18n extends Object implements TemplateGlobalProvider {
'lv_LV' => array('Latvian', 'latviešu'),
'lt_LT' => array('Lithuanian', 'lietuviškai'),
'mk_MK' => array('Macedonian', 'македонски'),
- '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', 'मराठी'),
@@ -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
);
}
diff --git a/i18n/i18nTextCollector.php b/i18n/i18nTextCollector.php
index b80315166..5c0b493b0 100644
--- a/i18n/i18nTextCollector.php
+++ b/i18n/i18nTextCollector.php
@@ -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));
}
}
diff --git a/javascript/GridField.js b/javascript/GridField.js
index a5d37752a..51f706620 100644
--- a/javascript/GridField.js
+++ b/javascript/GridField.js
@@ -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 ) {
diff --git a/javascript/HtmlEditorField.js b/javascript/HtmlEditorField.js
index 8bac10c0e..5c19463fd 100644
--- a/javascript/HtmlEditorField.js
+++ b/javascript/HtmlEditorField.js
@@ -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($(''));
}
},
+ /**
+ * 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;
}
}
});
diff --git a/javascript/ToggleCompositeField.js b/javascript/ToggleCompositeField.js
index a7ddbbaa1..d853bfbee 100644
--- a/javascript/ToggleCompositeField.js
+++ b/javascript/ToggleCompositeField.js
@@ -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();
},
diff --git a/javascript/TreeDropdownField.js b/javascript/TreeDropdownField.js
index ab9ce3c35..224733f85 100644
--- a/javascript/TreeDropdownField.js
+++ b/javascript/TreeDropdownField.js
@@ -29,7 +29,7 @@
* @todo Expand title height to fit all elements
*/
$('.TreeDropdownField').entwine({
- onmatch: function() {
+ onadd: function() {
this.append(
'' +
'
' +
@@ -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');
}
});
});
diff --git a/lang/ar.yml b/lang/ar.yml
index b7785930f..447f7e975 100644
--- a/lang/ar.yml
+++ b/lang/ar.yml
@@ -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:
diff --git a/lang/bg.yml b/lang/bg.yml
index 0c3b79523..f7f41ec2a 100644
--- a/lang/bg.yml
+++ b/lang/bg.yml
@@ -212,7 +212,7 @@ bg:
RolesAddEditLink: 'Manage roles'
Sort: Сортиране
TITLE: 'Качване на изображението Iрамка'
- has_many_Permissions: 'Разрешения'
+ has_many_Permissions: Разрешения
many_many_Members: Членове
GroupImportForm:
Help1: '
Import one or more groups in CSV format (comma-separated values). Show advanced usage
'
@@ -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: 'Ролите са предварително зададени сетове от разрешения и могат да бъдат присвоявани на групи. Ако е нужно, те се наследяват от родителските групи.'
- TABROLES: 'Роли'
+ TABROLES: Роли
Users: Users
SecurityAdmin_MemberImportForm:
BtnImport: 'Import from CSV'
diff --git a/lang/bs.yml b/lang/bs.yml
index d9dbeaa35..72bfb7ce1 100644
--- a/lang/bs.yml
+++ b/lang/bs.yml
@@ -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})'
diff --git a/lang/ca.yml b/lang/ca.yml
index f49df8f51..bf4a7fbf4 100644
--- a/lang/ca.yml
+++ b/lang/ca.yml
@@ -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'
diff --git a/lang/cs.yml b/lang/cs.yml
index 326d00b97..d00ce899e 100644
--- a/lang/cs.yml
+++ b/lang/cs.yml
@@ -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'
diff --git a/lang/de.yml b/lang/de.yml
index 00c009659..010ee2367 100644
--- a/lang/de.yml
+++ b/lang/de.yml
@@ -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 & dimensions'
+ ADDURL: 'URL hinzufügen'
+ ADJUSTDETAILSDIMENSIONS: 'Details & 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 & 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: '
Mitglieder im CSV-Format (kommaseparierte Werte) importieren. Erweiterte Nutzung
'
@@ -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 (Erlaubte Dateierweiterung: *.csv)'
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'
diff --git a/lang/el.yml b/lang/el.yml
index 2f24f873d..b6d9928ed 100644
--- a/lang/el.yml
+++ b/lang/el.yml
@@ -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:
diff --git a/lang/es_MX.yml b/lang/es_MX.yml
index 984539b6b..54cb85b18 100644
--- a/lang/es_MX.yml
+++ b/lang/es_MX.yml
@@ -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
- Sí
@@ -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: '
Import one or more groups in CSV format (comma-separated values). Show advanced usage
'
- Help2: '
Advanced usage
Allowed columns: %s
Existing groups are matched by their unique Code value, and updated with any new values from the imported file
Group hierarchies can be created by using a ParentCode column.
Permission codes can be assigned by the PermissionCode column. Existing permission codes are not cleared.
'
+ Help1: "
Importar usuarios en formato CSV (valores separados por comas). Mostrar uso avanzado
\\n"
+ Help2: '
Uso Avanzado
Columnas permitidas: %s
Usuarios existents son relacionados por su Código único, y actualizados con cualquier valor nuevo desde el archivo importado.
Grupos pueden see asignados por la columna Grupos. Los grupos son identificados por su código, multiples grupos pueden ser separados por comas. Grupos existentes no son eliminados.
'
ResultCreated: 'Created {count} groups'
ResultDeleted: '%d grupos eliminados'
ResultUpdated: '%d grupos actualizados'
@@ -226,7 +226,7 @@ es_MX:
ADDURL: 'Add URL'
ADJUSTDETAILSDIMENSIONS: 'Details & 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: '
Existing users are matched by their unique Code property, and updated with any new values from the imported file.
Groups can be assigned by the Groups column. Groups are identified by their Code property, multiple groups can be separated by comma. Existing group memberships are not cleared.
'
+ Help1: "
Importar usurious en format CSV (valores separados por comas). Mostrar uso avanzado
\\n"
+ Help2: "
\\n
Uso Avanzado
\\n
\\n
Columnas permitidas: %s
\\n
Usuarios existents son relacionados por su Código único, y actualizados con cualquier valor nuevo desde el archivo importado.
\\n
Grupos pueden see asignados por la column Grupos. Los grupos son identificados por su código, multiples grupos pueden ser separados por comas. Grupos existentes no son eliminados.
\\n
\\n
"
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 abrir una sesión abajo.'
@@ -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. They are inherited from parent groups if required.'
+ ROLESDESCRIPTION: 'Los roles son sets de permisos predefinidos y pueden ser asignados a grupos. Ellos son heredados desde los grupos superiores si es requerido.'
TABROLES: Roles
- Users: Users
+ Users: Usuarios
SecurityAdmin_MemberImportForm:
BtnImport: Importar
FileFieldLabel: 'Archivo CSV (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
diff --git a/lang/fa_IR.yml b/lang/fa_IR.yml
index 533e56684..9b2c89f22 100644
--- a/lang/fa_IR.yml
+++ b/lang/fa_IR.yml
@@ -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: '
Import one or more groups in CSV format (comma-separated values). Show advanced usage
'
@@ -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}.'
diff --git a/lang/fi.yml b/lang/fi.yml
index 3d9df9ef2..fd93d3201 100644
--- a/lang/fi.yml
+++ b/lang/fi.yml
@@ -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: '» {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 »'
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} » {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: '
Olemassa olevat ryhmät kohdistetaan niiden uniikin Code-arvolla, ja päivitetään uudet arvot tuodusta tiedostosta.
\\n
Ryhmien hierarkiat voidaan luoda ParentCode-palstalla.
\\n
Oikeustasot voidaan kohdistaa PermissionCode-palstalla. Olemassa olevia oikeustasoja ei poisteta.
\\n
\\n
"
- 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 & dimensions'
+ ADDURL: 'Lisää URL-osoite'
+ ADJUSTDETAILSDIMENSIONS: 'Tarkat tiedot & 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: '
Olemassa olevat käyttäjät kohdistetaan uniikilla Code-arvolla, ja päivitetään uudet arvot tuodusta tiedostosta.
\\n
Ryhmät voidaan kohdistaa Ryhmät-palstaan. Ryhmät tunnistetaan Code-arvosta, useat ryhmät voidaan erottaa pilkulla. Olemassa olevat ryhmäjäsenyydet säilytetään.
\\n
\\n
"
- 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: '
The password reset link is invalid or expired.
You can request a new one here or change your password after you logged in.
'
+ NOTERESETLINKINVALID: '
Salasanan nollauslinkki on virheellinen tai vanhentunut.
'
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 (Sallitut päätteet: *.csv)'
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'
diff --git a/lang/fr.yml b/lang/fr.yml
index 0a377b443..4ec96c9a7 100644
--- a/lang/fr.yml
+++ b/lang/fr.yml
@@ -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 n’est pas autorisée (les valides sont : {extensions})'
INVALIDEXTENSIONSHORT: 'Extension is not allowed'
NOFILESIZE: 'La taille du fichier est de zéro bytes.'
NOVALIDUPLOAD: 'Le fichier n’est 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 : {createdcount} éléments créés, {deletedcount} éléments supprimés '
Form:
FIELDISREQUIRED: '%s est requis'
TITLE: 'Iframe de chargement d’images'
@@ -169,14 +169,14 @@ fr:
Filter: Filtrer
FilterBy: 'Filtrer par'
Find: Trouver
- LEVELUP: 'Level up'
+ LEVELUP: 'Monter d’un niveau'
LinkExisting: 'Lien existant'
NewRecord: 'Nouveau %s'
NoItemsFound: 'Aucun élément n’a é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 n’avez 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 :'
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: '
Importer un ou plusieurs groupe(s) au format CSV (comma-separated values). Montrer l''usage avancé
'
- Help2: '
Advanced usage
Colonnes permises : %s
Les groupes existants dont le Code valeur concorde, sont mis à jour avec les nouvelles valeurs du fichier importé.
Une hiérarchie de groupe peut être créé avec la colonne ParentCode.
Les codes de permissions peuvent être assignés grâce à la colonne PermissionCode. Les codes permissions ne sont pas effacés.
'
+ Help2: "
\\n
Utilisations avancée
\\n
\\n
Colonnes autorisées : %s
\\n
Les groupes existants dont la valeur Code concorde seront mis à jour avec les données du fichier importé.
\\n
Des hiérarchies entre groupes peuvent être créées à l’aide de la colonne ParentCode.
\\n
Des autorisations peuvent être assignées par la colonne PermissionCode. Les autorisations existantes ne seront pas effacées.
\\n
\\n
"
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 & dimensions'
+ ADJUSTDETAILSDIMENSIONS: 'Détails & 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 l’image'
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 n’avez pas l’autorisation de modifier les pages de premier niveau. Vos modifications n’ont pas été enregistrées.'
DELETED: Deleted.
DropdownBatchActionsDefault: Actions
HELP: Aide
- PAGETYPE: 'Type de page :'
+ PAGETYPE: 'Type de page :'
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 s’il vous plaît : elle ne pouvait pas être mise à jour car elle n’avait 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: 'L’année sur deux chiffres'
MemberImportForm:
Help1: '
Les membres existants dont le Code valeur concorde, sont mis à jour avec les nouvelles valeurs du fichier importé.
Les groupes peuvent être assignés par la colonne Groups. Les groupes sont identifiés par Code , les groupes multiples sont séparés par une virgule. Les groupes existants ne sont pas effacés.
'
+ Help2: "
\\n
Utilisations avancée
\\n
\\n
Colonnes autorisées : %s
\\n
Les membres existants dont la valeur Code concorde seront mis à jour avec les données du fichier importé.
\\n
Des groupes peuvent être assignés par la colonne Groups. Plusieurs groupes, identifiés par leur Code, peuvent être assignés en les séparant par des virgules. Les groupes existants ne seront pas effacés.
\\n
\\n
\\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} » n’est 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 d’accè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, d’ajouter 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 l’autorisation « 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 l’autorisation « 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 : 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 d’autorisations qui peuvent être assignés à des groupes. Ils peuvent être hérités de groupes parents, si nécessaire.'
TABROLES: Rôles
Users: Utilisateurs
SecurityAdmin_MemberImportForm:
BtnImport: Importer
- FileFieldLabel: 'Fichier CSV (Extension permise: *.csv)'
+ FileFieldLabel: 'Fichier CSV (extension autorisée : *.csv)'
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 :'
TimeField:
- VALIDATEFORMAT: 'Please enter a valid time format ({format})'
+ VALIDATEFORMAT: 'Saisissez l’heure 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 n’a pas pu être supprimé'
REMOVEINFO: 'Supprimer ce fichier ici sans l’effacer des archives'
diff --git a/lang/he_IL.yml b/lang/he_IL.yml
index 8d36f2091..d31313bfb 100644
--- a/lang/he_IL.yml
+++ b/lang/he_IL.yml
@@ -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.'
diff --git a/lang/hr.yml b/lang/hr.yml
index a6d7ee515..235acb463 100644
--- a/lang/hr.yml
+++ b/lang/hr.yml
@@ -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'
diff --git a/lang/ja_JP.yml b/lang/ja_JP.yml
index 9aae53e12..01feeabea 100644
--- a/lang/ja_JP.yml
+++ b/lang/ja_JP.yml
@@ -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 & 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: 'あなたはこのページにアクセスできません。別のアカウントを持っていたら 再ログインを行ってください。'
- BUTTONSEND: 'パスワードリセットのリンクを送信してください'
+ BUTTONSEND: パスワードリセットのリンクを送信してください
CHANGEPASSWORDBELOW: 以下のパスワードを変更できます
CHANGEPASSWORDHEADER: パスワードを変更しました
- ENTERNEWPASSWORD: '新しいパスワードを入力してください'
+ ENTERNEWPASSWORD: 新しいパスワードを入力してください
ERRORPASSWORDPERMISSION: パスワードを変更する為に、ログインしなければなりません!
- LOGGEDOUT: 'ログアウトしました。再度ログインする場合は証明書キーを入力してください'
+ LOGGEDOUT: ログアウトしました。再度ログインする場合は証明書キーを入力してください
LOGIN: ログイン
- NOTEPAGESECURED: 'このページはセキュリティで保護されております証明書キーを下記に入力してください。こちらからすぐに送信します'
+ NOTEPAGESECURED: このページはセキュリティで保護されております証明書キーを下記に入力してください。こちらからすぐに送信します
NOTERESETLINKINVALID: '
The password reset link is invalid or expired.
You can request a new one here or change your password after you logged in.
'
- 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'
diff --git a/lang/km.yml b/lang/km.yml
index 95d01eee7..ed37fc774 100644
--- a/lang/km.yml
+++ b/lang/km.yml
@@ -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 & Password'
MemberDatetimeOptionsetField:
diff --git a/lang/lt.yml b/lang/lt.yml
index 0f4636c9b..9b8dfe521 100644
--- a/lang/lt.yml
+++ b/lang/lt.yml
@@ -89,7 +89,7 @@ lt:
Date:
DAY: diena
DAYS: dienas
- HOUR: 'valandą'
+ HOUR: valandą
HOURS: valandas
MIN: minutę
MINS: minutes
diff --git a/lang/nb.yml b/lang/nb.yml
index 86c342f27..c99df4a10 100644
--- a/lang/nb.yml
+++ b/lang/nb.yml
@@ -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 & 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: '
Advanced usage
Allowed columns: %s
Existing users are matched by their unique Code property, and updated with any new values from the imported file.
Groups can be assigned by the Groups column. Groups are identified by their Code property, multiple groups can be separated by comma. Existing group memberships are not cleared.
'
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. 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 (Allowed extensions: *.csv)'
@@ -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
diff --git a/lang/nl.yml b/lang/nl.yml
index 8a10b30b7..0120a19bd 100644
--- a/lang/nl.yml
+++ b/lang/nl.yml
@@ -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 & 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 & 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: '
Bestaande leden worden geïdentificeerd door middel van hun unieke Code waarde en aangepast met de nieuwe waarden van het geïmporteerde bestand
Groepen kunnen toegewezen worden met de Groups kolom. Groepen worden geïdentificeerd met hun Code waarde en meerdere groepen kunnen worden gescheiden met een komma. Bestaande groep lidmaatschappen worden niet gewist.
'
@@ -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 (Toegestane extensies: *.csv)'
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
diff --git a/lang/pa.yml b/lang/pa.yml
index 154cd2442..80f9fd598 100644
--- a/lang/pa.yml
+++ b/lang/pa.yml
@@ -181,7 +181,7 @@ pa:
ResetFilter: Reset
GridFieldAction_Delete:
DeletePermissionsFailure: 'No delete permissions'
- NEXT: 'ਅਗਲਾ'
+ NEXT: ਅਗਲਾ
PREVIOUS: ਪਿਛਲਾ
GridFieldDetailForm:
Create: Create
diff --git a/lang/pl.yml b/lang/pl.yml
index 31af57eec..5d475ea50 100644
--- a/lang/pl.yml
+++ b/lang/pl.yml
@@ -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: '
Import one or more groups in CSV format (comma-separated values). Show advanced usage
'
- Help2: '
Advanced usage
Allowed columns: %s
Existing groups are matched by their unique Code value, and updated with any new values from the imported file
Group hierarchies can be created by using a ParentCode column.
Permission codes can be assigned by the PermissionCode column. Existing permission codes are not cleared.
Zaimportuj użytkowników w formacie CSV (tekst rozdzielany przecinkami). Zaawansowane
'
+ Help2: "
\\n\\n
Zaawansowane użycie
\\n\\n
\\n\\n
Dozwolone kolumny: %s
\\n\\n
Istniejące grupy są dopasowywane poprzez ich unikalną wartość Kod i aktualizowane nowymi wartościami z zaimportowanego pliku.
\\n\\n
Można tworzyć hierarchie Grup za pomocą kolumny KodNadrzędny.
\\n\\n
Kody uprawnień mogą być przypisywane za pomocą kolumny KodUprawnienia. Istniejące kody uprawnień nie są usuwane.
\\n\\n
\\n\\n
"
+ 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 & 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: '
Existing users are matched by their unique Code property, and updated with any new values from the imported file.
Groups can be assigned by the Groups column. Groups are identified by their Code property, multiple groups can be separated by comma. Existing group memberships are not cleared.
Zaimportuj użytkowników w formacie CSV (tekst rozdzielany przecinkami). Zaawansowane
'
+ Help2: "
\\n
Zaawansowane użycie
\\n
\\n
Dozwolone kolumny: %s
\\n
Istniejący użytkownicy są dopasowani poprzez unikalną właściwość Kod i uaktualniani nowymi wartościami z zaimportowanego pliku.
\\n
Grupy mogą być przypisane poprzez kolumnę Grupy. Grupy identyfikowane są poprzez unikalną właściwość Kod, grupy mogą być oddzielone od siebie przecinkiem. Przypisania użytkowników do grup nie są usuwane.
\\n
\\n
"
+ 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: '
The password reset link is invalid or expired.
You can request a new one here or change your password after you logged in.
'
+ NOTERESETLINKINVALID: '
Link resetujący hasło wygasł lub jest nieprawidłowy.