diff --git a/_config/routes.yml b/_config/routes.yml index 95273ebc4..947adfbe7 100644 --- a/_config/routes.yml +++ b/_config/routes.yml @@ -7,8 +7,10 @@ Director: '': 'Controller' --- Name: coreroutes -After: cms/routes#modelascontrollerroutes Before: '*' +After: + - framework/routes#rootroutes + - cms/routes#modelascontrollerroutes --- Director: rules: @@ -21,7 +23,11 @@ Director: 'interactive': 'SapphireREPL' --- Name: adminroutes -After: framework/routes#coreroutes +Before: '*' +After: + - framework/routes#rootroutes + - framework/routes#coreroutes + - cms/routes#modelascontrollerroutes --- Director: rules: diff --git a/admin/code/LeftAndMain.php b/admin/code/LeftAndMain.php index e96b1c665..e789450cc 100644 --- a/admin/code/LeftAndMain.php +++ b/admin/code/LeftAndMain.php @@ -336,9 +336,8 @@ class LeftAndMain extends Controller implements PermissionProvider { } function handleRequest(SS_HTTPRequest $request, DataModel $model = null) { - $title = $this->Title(); - $response = parent::handleRequest($request, $model); + $title = $this->Title(); if(!$response->getHeader('X-Controller')) $response->addHeader('X-Controller', $this->class); if(!$response->getHeader('X-Title')) $response->addHeader('X-Title', $title); @@ -1342,8 +1341,10 @@ class LeftAndMain extends Controller implements PermissionProvider { * @return string */ function SectionTitle() { - if($title = $this->stat('menu_title')) return $title; - + $class = get_class($this); + $defaultTitle = LeftAndMain::menu_title_for_class($class); + if($title = _t("{$class}.MENUTITLE", $defaultTitle)) return $title; + foreach($this->MainMenu() as $menuItem) { if($menuItem->LinkingMode != 'link') return $menuItem->Title; } diff --git a/core/ClassInfo.php b/core/ClassInfo.php index 39baa1765..7aa17fa56 100644 --- a/core/ClassInfo.php +++ b/core/ClassInfo.php @@ -231,6 +231,25 @@ class ClassInfo { return $matchedClasses; } + + private static $method_from_cache = array(); + + static function has_method_from($class, $method, $compclass) { + if (!isset(self::$method_from_cache[$class])) self::$method_from_cache[$class] = array(); + + if (!array_key_exists($method, self::$method_from_cache[$class])) { + self::$method_from_cache[$class][$method] = false; + + $classRef = new ReflectionClass($class); + + if ($classRef->hasMethod($method)) { + $methodRef = $classRef->getMethod($method); + self::$method_from_cache[$class][$method] = $methodRef->getDeclaringClass()->getName(); + } + } + + return self::$method_from_cache[$class][$method] == $compclass; + } } diff --git a/core/Config.php b/core/Config.php index 6bc413be3..4cf55611b 100644 --- a/core/Config.php +++ b/core/Config.php @@ -173,12 +173,6 @@ class Config { $this->collectConfigPHPSettings = false; } - static $extra_static_sources = array(); - - static function add_static_source($forclass, $donorclass) { - self::$extra_static_sources[$forclass][] = $donorclass; - } - /** @var [Config_ForClass] - The list of Config_ForClass instances, keyed off class */ static protected $for_class_instances = array(); @@ -371,14 +365,17 @@ class Config { // Then look at the static variables $nothing = new stdClass(); - $classes = array($class); + + $sources = array($class); // Include extensions only if not flagged not to, and some have been set - if ((($sourceOptions & self::EXCLUDE_EXTRA_SOURCES) != self::EXCLUDE_EXTRA_SOURCES) && isset(self::$extra_static_sources[$class])) { - $classes = array_merge($classes, self::$extra_static_sources[$class]); + if (($sourceOptions & self::EXCLUDE_EXTRA_SOURCES) != self::EXCLUDE_EXTRA_SOURCES) { + $extraSources = Object::get_extra_config_sources($class); + if ($extraSources) $sources = array_merge($sources, $extraSources); } - foreach ($classes as $staticSource) { - $value = Object::static_lookup($staticSource, $name, $nothing); + foreach ($sources as $staticSource) { + if (is_array($staticSource)) $value = isset($staticSource[$name]) ? $staticSource[$name] : $nothing; + else $value = Object::static_lookup($staticSource, $name, $nothing); if ($value !== $nothing) { self::merge_low_into_high($result, $value, $suppress); diff --git a/core/DAG.php b/core/DAG.php index 9988af21a..c2acc7f31 100644 --- a/core/DAG.php +++ b/core/DAG.php @@ -4,7 +4,7 @@ * A Directed Acyclic Graph - used for doing topological sorts on dependencies, such as the before/after conditions * in config yaml fragments */ -class SS_DAG { +class SS_DAG implements IteratorAggregate { /** @var array|null - The nodes/vertices in the graph. Should be a numeric sequence of items (no string keys, no gaps). */ protected $data; @@ -68,7 +68,68 @@ class SS_DAG { $dag = $withedges; } - if ($dag) throw new Exception("DAG has cyclic requirements"); + if ($dag) { + $remainder = new SS_DAG($data); $remainder->dag = $dag; + throw new SS_DAG_CyclicException("DAG has cyclic requirements", $remainder); + } return $sorted; } + + function getIterator() { + return new SS_DAG_Iterator($this->data, $this->dag); + } +} + +class SS_DAG_CyclicException extends Exception { + + public $dag; + + function __construct($message, $dag) { + $this->dag = $dag; + parent::__construct($message); + } + +} + +class SS_DAG_Iterator implements Iterator { + + protected $data; + protected $dag; + + protected $dagkeys; + protected $i; + + function __construct($data, $dag) { + $this->data = $data; + $this->dag = $dag; + $this->rewind(); + } + + function key() { + return $this->i; + } + + function current() { + $res = array(); + + $res['from'] = $this->data[$this->i]; + + $res['to'] = array(); + foreach ($this->dag[$this->i] as $to) $res['to'][] = $this->data[$to]; + + return $res; + } + + function next() { + $this->i = array_shift($this->dagkeys); + } + + function rewind() { + $this->dagkeys = array_keys($this->dag); + $this->next(); + } + + function valid() { + return $this->i !== null; + } } diff --git a/core/Extension.php b/core/Extension.php index 7eb2a8ce7..70072616f 100644 --- a/core/Extension.php +++ b/core/Extension.php @@ -46,14 +46,11 @@ abstract class Extension { /** * Called when this extension is added to a particular class * - * TODO: This is likely to be replaced by event sytem before 3.0 final, so be aware - * this API is fairly unstable. - * * @static * @param $class */ static function add_to_class($class, $extensionClass, $args = null) { - Config::add_static_source($class, $extensionClass); + // NOP } /** diff --git a/core/Object.php b/core/Object.php index b37423762..1b7f98a07 100755 --- a/core/Object.php +++ b/core/Object.php @@ -463,6 +463,7 @@ abstract class Object { if($subclasses) foreach($subclasses as $subclass) { unset(self::$classes_constructed[$subclass]); unset(self::$extra_methods[$subclass]); + unset(self::$extension_sources[$subclass]); } Config::inst()->update($class, 'extensions', array($extension)); @@ -505,6 +506,7 @@ abstract class Object { if($subclasses) foreach($subclasses as $subclass) { unset(self::$classes_constructed[$subclass]); unset(self::$extra_methods[$subclass]); + unset(self::$extension_sources[$subclass]); } } @@ -531,38 +533,66 @@ abstract class Object { // ----------------------------------------------------------------------------------------------------------------- - private static $_added_extensions = array(); + private static $extension_sources = array(); + + // Don't bother checking some classes that should never be extended + private static $unextendable_classes = array('Object', 'ViewableData', 'RequestHandler'); + + static public function get_extra_config_sources($class = null) { + if($class === null) $class = get_called_class(); + + // If this class is unextendable, NOP + if(in_array($class, self::$unextendable_classes)) return; + + // If we have a pre-cached version, use that + if(array_key_exists($class, self::$extension_sources)) return self::$extension_sources[$class]; + + // Variable to hold sources in + $sources = null; + + // Get a list of extensions + $extensions = Config::inst()->get($class, 'extensions', Config::UNINHERITED | Config::EXCLUDE_EXTRA_SOURCES); + + if($extensions) { + // Build a list of all sources; + $sources = array(); + + foreach($extensions as $extension) { + list($extensionClass, $extensionArgs) = self::parse_class_spec($extension); + $sources[] = $extensionClass; + + if(!ClassInfo::has_method_from($extensionClass, 'add_to_class', 'Extension')) { + Deprecation::notice('3.1.0', "add_to_class deprecated on $extensionClass. Use get_extra_config instead"); + } + + call_user_func(array($extensionClass, 'add_to_class'), $class, $extensionClass, $extensionArgs); + + foreach(array_reverse(ClassInfo::ancestry($extensionClass)) as $extensionClassParent) { + if (ClassInfo::has_method_from($extensionClassParent, 'get_extra_config', $extensionClassParent)) { + $extras = $extensionClassParent::get_extra_config($class, $extensionClass, $extensionArgs); + if ($extras) $sources[] = $extras; + } + } + } + } + + return self::$extension_sources[$class] = $sources; + } public function __construct() { $this->class = get_class($this); - // Don't bother checking some classes that should never be extended - static $notExtendable = array('Object', 'ViewableData', 'RequestHandler'); - - if($extensionClasses = ClassInfo::ancestry($this->class)) foreach($extensionClasses as $class) { - if(in_array($class, $notExtendable)) continue; - if($extensions = Config::inst()->get($class, 'extensions', Config::UNINHERITED)) { - foreach($extensions as $extension) { - // Get the extension class for this extension - list($extensionClass, $extensionArgs) = self::parse_class_spec($extension); + foreach(ClassInfo::ancestry(get_called_class()) as $class) { + if(in_array($class, self::$unextendable_classes)) continue; + $extensions = Config::inst()->get($class, 'extensions', Config::UNINHERITED | Config::EXCLUDE_EXTRA_SOURCES); - // If we haven't told that extension it's attached to this class yet, do that now - if (!isset(self::$_added_extensions[$extensionClass][$class])) { - // First call the add_to_class method - this will inherit down & is defined on Extension, so if not defined, no worries - call_user_func(array($extensionClass, 'add_to_class'), $class, $extensionClass, $extensionArgs); - - // Then register it as having been told about us - if (!isset(self::$_added_extensions[$extensionClass])) self::$_added_extensions[$extensionClass] = array($class => true); - else self::$_added_extensions[$extensionClass][$class] = true; - } - - $instance = self::create_from_string($extension); - $instance->setOwner(null, $class); - $this->extension_instances[$instance->class] = $instance; - } + if($extensions) foreach($extensions as $extension) { + $instance = self::create_from_string($extension); + $instance->setOwner(null, $class); + $this->extension_instances[$instance->class] = $instance; } } - + if(!isset(self::$classes_constructed[$this->class])) { $this->defineMethods(); self::$classes_constructed[$this->class] = true; diff --git a/core/manifest/ConfigManifest.php b/core/manifest/ConfigManifest.php index fcf894a26..076bc98e2 100644 --- a/core/manifest/ConfigManifest.php +++ b/core/manifest/ConfigManifest.php @@ -217,7 +217,8 @@ class SS_ConfigManifest { foreach (array('before', 'after') as $order) { if (isset($header[$order])) { // First, splice into parts (multiple before or after parts are allowed, comma separated) - $orderparts = preg_split('/\s+,\s+/', $header[$order], PREG_SPLIT_NO_EMPTY); + if (is_array($header[$order])) $orderparts = $header[$order]; + else $orderparts = preg_split('/\s*,\s*/', $header[$order], -1, PREG_SPLIT_NO_EMPTY); // For each, parse out into module/file#name, and set any missing to "*" $header[$order] = array(); @@ -267,7 +268,30 @@ class SS_ConfigManifest { } } - $this->yamlConfigFragments = $dag->sort(); + try { + $this->yamlConfigFragments = $dag->sort(); + } + catch (SS_DAG_CyclicException $e) { + + if (!Director::isLive() && isset($_REQUEST['debug'])) { + $res = '

Remaining config fragment graph

'; + $res .= '
'; + + foreach ($e->dag as $node) { + $res .= "
{$node['from']['module']}/{$node['from']['file']}#{$node['from']['name']} marked to come after
"; + } + + $res .= '
'; + echo $res; + } + + throw $e; + } + } /** @@ -279,46 +303,55 @@ class SS_ConfigManifest { * @return string "after", "before" or "undefined" */ protected function relativeOrder($a, $b) { - $matchesSomeRule = array(); - + $matches = array(); + // Do the same thing for after and before - foreach (array('after'=>'before', 'before'=>'after') as $rulename => $opposite) { - $matchesSomeRule[$rulename] = false; - - // If no rule specified, we don't match it - if (isset($a[$rulename])) { - - foreach ($a[$rulename] as $rule) { - $matchesRule = true; - - foreach(array('module', 'file', 'name') as $part) { - $partMatches = true; - - // If part is *, we match _unless_ the opposite rule has a non-* matcher than also matches $b - if ($rule[$part] == '*') { - if (isset($a[$opposite])) foreach($a[$opposite] as $oppositeRule) { - if ($oppositeRule[$part] == $b[$part]) { $partMatches = false; break; } - } - } - else { - $partMatches = ($rule[$part] == $b[$part]); - } - - $matchesRule = $matchesRule && $partMatches; - if (!$matchesRule) break; + foreach (array('before', 'after') as $rulename) { + $matches[$rulename] = array(); + + // Figure out for each rule, which part matches + if (isset($a[$rulename])) foreach ($a[$rulename] as $rule) { + $match = array(); + + foreach(array('module', 'file', 'name') as $part) { + // If part is *, we match _unless_ the opposite rule has a non-* matcher than also matches $b + if ($rule[$part] == '*') { + $match[$part] = 'wild'; + } + else { + $match[$part] = ($rule[$part] == $b[$part]); } - - $matchesSomeRule[$rulename] = $matchesSomeRule[$rulename] || $matchesRule; } + + $matches[$rulename][] = $match; } } - - // Check if it matches both rules - problem if so - if ($matchesSomeRule['before'] && $matchesSomeRule['after']) { + + // Figure out the specificness of each match. 1 an actual match, 0 for a wildcard match, remove if no match + $matchlevel = array('before' => -1, 'after' => -1); + + foreach (array('before', 'after') as $rulename) { + foreach ($matches[$rulename] as $i => $rule) { + $level = 0; + + foreach ($rule as $part => $partmatches) { + if ($partmatches === false) continue 2; + if ($partmatches === true) $level += 1; + } + + if ($matchlevel[$rulename] === false || $level > $matchlevel[$rulename]) $matchlevel[$rulename] = $level; + } + } + + if ($matchlevel['before'] === -1 && $matchlevel['after'] === -1) { + return 'undefined'; + } + else if ($matchlevel['before'] === $matchlevel['after']) { user_error('Config fragment requires itself to be both before _and_ after another fragment', E_USER_ERROR); } - - return $matchesSomeRule['before'] ? 'before' : ($matchesSomeRule['after'] ? 'after' : 'undefined'); + else { + return ($matchlevel['before'] > $matchlevel['after']) ? 'before' : 'after'; + } } /** diff --git a/filesystem/File.php b/filesystem/File.php index 730401c48..c09cc0364 100644 --- a/filesystem/File.php +++ b/filesystem/File.php @@ -749,27 +749,27 @@ class File extends DataObject { */ function getFileType() { $types = array( - 'gif' => 'GIF image - good for diagrams', - 'jpg' => 'JPEG image - good for photos', - 'jpeg' => 'JPEG image - good for photos', - 'png' => 'PNG image - good general-purpose format', - 'ico' => 'Icon image', - 'tiff' => 'Tagged image format', - 'doc' => 'Word document', - 'xls' => 'Excel spreadsheet', - 'zip' => 'ZIP compressed file', - 'gz' => 'GZIP compressed file', - 'dmg' => 'Apple disk image', - 'pdf' => 'Adobe Acrobat PDF file', - 'mp3' => 'MP3 audio file', - 'wav' => 'WAV audo file', - 'avi' => 'AVI video file', - 'mpg' => 'MPEG video file', - 'mpeg' => 'MPEG video file', - 'js' => 'Javascript file', - 'css' => 'CSS file', - 'html' => 'HTML file', - 'htm' => 'HTML file' + 'gif' => _t('File.GifType', 'GIF image - good for diagrams'), + 'jpg' => _t('File.JpgType', 'JPEG image - good for photos'), + 'jpeg' => _t('File.JpgType', 'JPEG image - good for photos'), + 'png' => _t('File.PngType', 'PNG image - good general-purpose format'), + 'ico' => _t('File.IcoType', 'Icon image'), + 'tiff' => _t('File.TiffType', 'Tagged image format'), + 'doc' => _t('File.DocType', 'Word document'), + 'xls' => _t('File.XlsType', 'Excel spreadsheet'), + 'zip' => _t('File.ZipType', 'ZIP compressed file'), + 'gz' => _t('File.GzType', 'GZIP compressed file'), + 'dmg' => _t('File.DmgType', 'Apple disk image'), + 'pdf' => _t('File.PdfType', 'Adobe Acrobat PDF file'), + 'mp3' => _t('File.Mp3Type', 'MP3 audio file'), + 'wav' => _t('File.WavType', 'WAV audo file'), + 'avi' => _t('File.AviType', 'AVI video file'), + 'mpg' => _t('File.MpgType', 'MPEG video file'), + 'mpeg' => _t('File.MpgType', 'MPEG video file'), + 'js' => _t('File.JsType', 'Javascript file'), + 'css' => _t('File.CssType', 'CSS file'), + 'html' => _t('File.HtmlType', 'HTML file'), + 'htm' => _t('File.HtlType', 'HTML file') ); $ext = $this->getExtension(); diff --git a/javascript/HtmlEditorField.js b/javascript/HtmlEditorField.js index 5c19463fd..d99cdcdde 100644 --- a/javascript/HtmlEditorField.js +++ b/javascript/HtmlEditorField.js @@ -599,7 +599,11 @@ ss.editorWrappers['default'] = ss.editorWrappers.tinyMCE; } selector.empty(); - selector.append($('')); + selector.append($( + '' + )); for (var j = 0; j < anchors.length; j++) { selector.append($('')); } diff --git a/javascript/lang/en_US.js b/javascript/lang/en_US.js index ec022a545..5432118e0 100644 --- a/javascript/lang/en_US.js +++ b/javascript/lang/en_US.js @@ -18,6 +18,7 @@ if(typeof(ss) == 'undefined' || typeof(ss.i18n) == 'undefined') { 'FILEIFRAMEFIELD.CONFIRMDELETE': 'Are you sure you want to delete this file?', 'LeftAndMain.IncompatBrowserWarning': 'Your browser is not compatible with the CMS interface. Please use Internet Explorer 7+, Google Chrome 10+ or Mozilla Firefox 3.5+.', 'GRIDFIELD.ERRORINTRANSACTION': 'An error occured while fetching data from the server\n Please try again later.', + 'HtmlEditorField.SelectAnchor': 'Select an anchor', 'UploadField.ConfirmDelete': 'Are you sure you want to remove this file from the server filesystem?', 'UploadField.PHP_MAXFILESIZE': 'File exceeds upload_max_filesize (php.ini directive)', 'UploadField.HTML_MAXFILESIZE': 'File exceeds MAX_FILE_SIZE (HTML form directive)', diff --git a/lang/de.yml.orig b/lang/de.yml.orig deleted file mode 100644 index cc94e8843..000000000 --- a/lang/de.yml.orig +++ /dev/null @@ -1,591 +0,0 @@ -de: - AssetAdmin: -<<<<<<< HEAD - ADDFILES: 'Add files' -======= - ADDFILES: 'Dateien hinzufügen' ->>>>>>> origin/translation-staging - EditOrgMenu: 'Edit & organize' - NEWFOLDER: 'Neuer Ordner' - AssetTableField: - CREATED: 'Erstmalig hochgeladen' - DIM: Dimensionen - FILENAME: Dateiname - FOLDER: Ordner - LASTEDIT: 'Letzte Änderung' - OWNER: Eigentümer - SIZE: Größe - TITLE: Titel - TYPE: Typ - URL: URL - AssetUploadField: - ChooseFiles: 'Dateien auswählen' - DRAGFILESHERE: 'Dateien hier ablegen' - DROPAREA: Dateiablage - EDITALL: 'Alle Bearbeiten' - EDITANDORGANIZE: Bearbeiten - EDITINFO: 'Dateien bearbeiten' - FILES: Dateien - FROMCOMPUTER: 'Dateien auf Ihrem Computer auswählen' - FROMCOMPUTERINFO: 'Von ihrem Computer hochladen' - TOTAL: Gesamt - UPLOADINPROGRESS: 'Bitte warten sie... Upload im Gang' - UPLOADOR: ODER - BBCodeParser: - ALIGNEMENT: Ausrichtung - ALIGNEMENTEXAMPLE: 'Rechts ausgerichtet' - BOLD: 'Fett gedruckter Text' - BOLDEXAMPLE: Fett - CODE: 'Code Block' - CODEDESCRIPTION: 'Unformatierter Code Block' - CODEEXAMPLE: 'Code Block' - COLORED: 'Farbiger Text' - COLOREDEXAMPLE: 'Blauer Text' - EMAILLINK: 'E-Mail Link' - EMAILLINKDESCRIPTION: 'Link zu einer E-Mail Adresse erzeugen' - IMAGE: Bild - IMAGEDESCRIPTION: 'Bild im Post anzeigen' - ITALIC: 'Kursiv gedruckter Text' - ITALICEXAMPLE: Kursiv - LINK: 'Webseiten Link' - LINKDESCRIPTION: 'Link auf eine andere Webseite oder URL' - STRUCK: 'Durchgestrichener Text' - STRUCKEXAMPLE: Durchgestrichen - UNDERLINE: 'Unterstrichener Text' - UNDERLINEEXAMPLE: Unterstrichen - UNORDERED: 'Ungeordnete Liste' - UNORDEREDDESCRIPTION: 'Ungeordnete Liste' - UNORDEREDEXAMPLE1: 'Ungeordneter Eintrag 1' - BackLink_Button.ss: - Back: Zurück - BasicAuth: - ENTERINFO: 'Bitte geben Sie einen Nutzernamen und ein Passwort ein' - ERRORNOTADMIN: 'Dieser Nutzer ist kein Administrator' - ERRORNOTREC: 'Dieser/s Nutzername/Passwort wurde nicht erkannt' - Boolean: - 0: Falsch - ANY: alle - 1: Wahr - CMSLoadingScreen.ss: - LOADING: 'Lade Daten ...' - REQUIREJS: 'Für die Benutzung des CMS wird JavaScript benötigt.' - CMSMain: - ACCESS: 'Zugang zum Bereich ''{title}''' - ACCESSALLINTERFACES: 'Zugriff auf alle Bereiche des CMS' - ACCESSALLINTERFACESHELP: 'Hebt alle bereichspezifischen Berechtigungen auf.' - SAVE: Speichern - CMSProfileController: - MENUTITLE: CMSProfileController - ChangePasswordEmail.ss: - CHANGEPASSWORDTEXT1: 'Sie haben Ihr Passwort geändert für' - CHANGEPASSWORDTEXT2: 'Sie können nun folgende Angaben benutzen um sich einzuloggen' - EMAIL: E-Mail - HELLO: Hi - PASSWORD: Passwort - CheckboxField: - - Falsch - - Wahr - ComplexTableField: - CLOSEPOPUP: 'Popup schließen' - SUCCESSADD2: '{name} hinzugefügt' - SUCCESSEDIT: 'Gespeichert %s %s %s' - ComplexTableField.ss: - ADDITEM: '%s hinzufügen' - NOITEMSFOUND: 'Keine Elemente gefunden' - SORTASC: 'Aufsteigend sortieren' - SORTDESC: 'Absteigend sortieren' - ComplexTableField_popup.ss: - NEXT: nächste - PREVIOUS: vorherige - ConfirmedPasswordField: - ATLEAST: 'Passwörter müssen mindestens {min} Zeichen lang sein.' - BETWEEN: 'Passwörter müssen mindestens {min} bis maximal {max} Zeichen lang sein.' - MAXIMUM: 'Passwörter dürfen maxinal {max} Zeichen lang sein.' - SHOWONCLICKTITLE: 'Passwort ändern' - CreditCardField: - FIRST: Zuerst - FOURTH: vierte - SECOND: erste - THIRD: dritte - CurrencyField: - CURRENCYSYMBOL: € - DataObject: - PLURALNAME: DataObjects - SINGULARNAME: DataObject - Date: - DAY: Tag - DAYS: Tage - HOUR: Stunde - HOURS: Stunden - MIN: Minuten - MINS: Minuten - MONTH: Monat - MONTHS: Monat - SEC: Sekunden - SECS: Sekunden - TIMEDIFFAGO: 'vor {difference}' - TIMEDIFFIN: 'in {difference}' - YEAR: Jahr - YEARS: Jahre - DateField: - NOTSET: 'nicht gesetzt' - TODAY: heute - VALIDDATEFORMAT2: 'Bitte geben sie das Datum im korrekten Format ein ({format})' - VALIDDATEMAXDATE: 'Ihr Datum muss nach dem erlaubtem Datum ({date}) liegen oder gleich sein' - VALIDDATEMINDATE: 'Ihr Datum muss vor dem erlaubtem Datum ({date}) liegen oder gleich sein' - DatetimeField: -<<<<<<< HEAD - NOTSET: 'Not set' -======= - NOTSET: 'nicht gesetzt' ->>>>>>> origin/translation-staging - Director: - INVALID_REQUEST: 'Ungültige Anfrage' - DropdownField: - CHOOSE: (Auswahl) - EmailField: - 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 - File: - Content: Inhalt - Filename: Dateiname - INVALIDEXTENSION: 'Dateityp ist nicht erlaubt (erlaubt sind: {extensions})' - INVALIDEXTENSIONSHORT: 'Dateityp ist nicht erlaubt' - NOFILESIZE: 'Dateigröße ist 0 bytes' - NOVALIDUPLOAD: 'Datei ist kein gültiger Upload' - Name: Dateiname - PLURALNAME: Dateien - SINGULARNAME: Datei - TOOLARGE: 'Die Datei ist zu groß, maximal sind {size} erlaubt' - TOOLARGESHORT: 'Dateigröße übersteigt {size}' - Title: Titel - FileIFrameField: - ATTACH: '{type} anhängen' - ATTACHONCESAVED: '{type}s können angehängt werden, sobald das Dokument zum ersten Mal gespeichert wurde.' - ATTACHONCESAVED2: 'Dateien können angehängt werden, sobald das Dokument zum ersten Mal gespeichert wurde.' - DELETE: 'Lösche {type}' - DISALLOWEDFILETYPE: 'Der Upload dieses Dateityps ist nicht erlaubt' - FILE: Datei - FROMCOMPUTER: 'Von Ihrem Computer' - FROMFILESTORE: 'Aus dem Datei-Storage' - NOSOURCE: 'Bitte wählen Sie eine Datei aus' - REPLACE: '{type} ersetzen' - FileIFrameField_iframe.ss: - TITLE: 'Iframe Bilderupload' - Filesystem: - SYNCRESULTS: 'Synchronisation beendet: {createdcount} Objekte erstellt, {deletedcount} Objekte gelöscht' - Folder: - PLURALNAME: Folders - SINGULARNAME: Folder - ForgotPasswordEmail.ss: - HELLO: Hallo - TEXT1: 'Hier ist Ihr' - TEXT2: 'Link zum Zurücksetzen des Passworts' - TEXT3: für - Form: - FIELDISREQUIRED: '%s wird benötigt' -<<<<<<< HEAD - SubmitBtnLabel: Go -======= - SubmitBtnLabel: Los ->>>>>>> origin/translation-staging - VALIDATIONCREDITNUMBER: 'Bitte stellen Sie sicher, dass Sie die Kreditkartennummer ({number}) korrekt eingegeben haben' - VALIDATIONNOTUNIQUE: 'Der eingegebene Wert ist nicht einzigartig' - VALIDATIONPASSWORDSDONTMATCH: 'Passwörter stimmen nicht überein' - VALIDATIONPASSWORDSNOTEMPTY: 'Passwortfelder dürfen nicht leer sein' - VALIDATIONSTRONGPASSWORD: 'Passwörter müssen mindestens eine Zahl und ein alphanumerisches Zeichen enthalten' - VALIDATOR: Prüfer - VALIDCURRENCY: 'Bitte geben Sie einen korrekten Betrag ein' - FormField: - NONE: keine - GridAction: - DELETE_DESCRIPTION: Löschen - Delete: Löschen - UnlinkRelation: 'Verbindung entfernen' - GridField: - Add: '{name} hinzufügen' - Filter: Filter - FilterBy: 'Filter nach' - Find: Suchen - LEVELUP: 'Eine Ebene hoch' - LinkExisting: Verknüpfen - NewRecord: 'Neue(r) %s' - NoItemsFound: 'Keine Elemente gefunden' - PRINTEDAT: 'Gedruckt am' - PRINTEDBY: 'Gedruckt von' - PlaceHolder: '{type} Suchen' - PlaceHolderWithLabels: 'Suche {type} über {name}' - RelationSearch: Relationssuche - ResetFilter: Zurücksetzen - GridFieldAction_Delete: - DeletePermissionsFailure: 'Keine Berechtigung zum Löschen' - GridFieldDetailForm: - Create: Erstellen - Delete: Löschen - DeletePermissionsFailure: 'Keine Berechtigung zum Löschen' - Deleted: 'Gelöscht %s %s' - Save: Speichern - Saved: 'Gespeichert %s %s' - GridFieldItemEditView.ss: null - Group: - AddRole: 'Rolle für die Gruppe hinzufügen' - Code: 'Gruppen Code' - DefaultGroupTitleAdministrators: Administratoren - DefaultGroupTitleContentAuthors: Inhaltsautoren - Description: Beschreibung - GroupReminder: 'Bei Zuweisung einer Übergruppe werden alle ihre Rollen übernommen' - Locked: 'Gesperrt?' - NoRoles: 'Keine Rollen gefunden' - PLURALNAME: Groups - Parent: Elterngruppe - RolesAddEditLink: 'Rollen hinzufügen/editieren' - SINGULARNAME: Group - Sort: Sortierreihenfolge - has_many_Permissions: Berechtigungen - many_many_Members: Mitglieder - GroupImportForm: - Help1: '

Eine oder mehrere Gruppen im CSV-Format (kommaseparierte Werte) importieren. Erweiterte Nutzung

' - Help2: '

Erweiterte Nutzung

' - ResultCreated: '{count} Gruppe(n) wurden erstellt' - ResultDeleted: '%d Gruppen gelöscht' - ResultUpdated: '%d Gruppen aktualisiert' - Hierarchy: - InfiniteLoopNotAllowed: 'Es wurde eine Endlosschleife innerhalb der "{type}"-Hierarchie gefunden. Bitte ändern Sie die übergeordnete Seite, um den Fehler zu beheben' - HtmlEditorField: - ADDURL: 'URL hinzufügen' - ADJUSTDETAILSDIMENSIONS: 'Details & Dimensionen' - ANCHORVALUE: Anker - BUTTONINSERT: Einfügen - BUTTONINSERTLINK: 'Verweis einfügen' - BUTTONREMOVELINK: 'Verweise entfernen' - BUTTONUpdate: Aktualisieren - CAPTIONTEXT: Beschriftungstext - CSSCLASS: Ausrichtung/Stil - CSSCLASSCENTER: 'Zentriert, selbstständig' - CSSCLASSLEFT: 'Links, mit umfließendem Text' - CSSCLASSLEFTALONE: 'Links, alleinstehend' - CSSCLASSRIGHT: 'Rechts, mit umfließendem Text' - DETAILS: Details - EMAIL: E-Mail-Adresse - FILE: Datei - FOLDER: Ordner - FROMCMS: 'Aus dem CMS' - 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: 'Wird von Screenreadern vorgelesen oder angezeigt, falls das Bild nicht dargestellt werden kann' - IMAGEDIMENSIONS: Dimensionen - IMAGEHEIGHTPX: 'Höhe (px)' - IMAGETITLE: 'Titeltext (Tooltip) - für zusätzliche Informationen über das Bild' - IMAGETITLETEXT: 'Titeltext (Tooltip)' - IMAGETITLETEXTDESC: 'Weiterführende Informationen über das Bild' - IMAGEWIDTHPX: 'Breite (px)' - INSERTMEDIA: 'Medienobject einfügen' - LINK: Verweis - LINKANCHOR: 'Anker auf dieser Seite' - LINKDESCR: 'Beschreibung des Verweises' - LINKEMAIL: E-Mail-Adresse - LINKEXTERNAL: 'Andere Website' - LINKFILE: 'Datei herunterladen' - LINKINTERNAL: 'Seite auf der Website' - LINKOPENNEWWIN: 'Verweis in neuem Fenster öffnen?' - LINKTO: 'Verweis zu' - PAGE: Seite - URL: URL - URLNOTANOEMBEDRESOURCE: 'Die URL ''{url}'' konnte nicht in eine Medienquelle umgewandelt werden' - UpdateMEDIA: 'Medienobjekt aktualisieren' - Image: - PLURALNAME: Files -<<<<<<< HEAD - SINGULARNAME: File -======= - SINGULARNAME: Datei ->>>>>>> origin/translation-staging - ImageField: - IMAGE: Bild - Image_Cached: - PLURALNAME: Files - SINGULARNAME: File - Image_iframe.ss: - TITLE: 'Iframe Bilder hochladen' - LeftAndMain: - CANT_REORGANISE: 'Sie besitzen nicht die benötigten Zugriffsrechte um Seiten der höchsten Ebene zu bearbeiten. Ihre Änderungen wurden nicht gespeichert.' - DELETED: Gelöscht. - 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: Vorschau - REORGANISATIONSUCCESSFUL: 'Der Seitenbaum wurde erfolgreich sortiert.' - SAVEDUP: Gespeichert. - VersionUnknown: Unbekannt - LeftAndMain_Menu.ss: - Hello: Hi - LOGOUT: Ausloggen - LoginAttempt: - Email: E-Mail-Adresse - IP: IP-Adresse - PLURALNAME: 'Login Attempts' - SINGULARNAME: 'Login Attempt' - Status: Status - Member: - ADDGROUP: 'Gruppe hinzufügen' - BUTTONCHANGEPASSWORD: 'Passwort ändern' - BUTTONLOGIN: Einloggen - BUTTONLOGINOTHER: 'Als jemand anders einloggen' - BUTTONLOSTPASSWORD: 'Ich habe mein Passwort vergessen' - CONFIRMNEWPASSWORD: 'Neues Passwort bestätigen' - CONFIRMPASSWORD: 'Passwort bestätigen' -<<<<<<< HEAD - DATEFORMAT: 'Date format' -======= - DATEFORMAT: 'Bitte geben sie das Datum im korrekten Format ein ({format})' ->>>>>>> origin/translation-staging - DefaultAdminFirstname: Standardadmin - DefaultDateTime: Standard - EMAIL: E-Mail - EMPTYNEWPASSWORD: 'Das neue Passwort darf nicht leer sein. Bitte versuchen Sie es erneut.' - ENTEREMAIL: 'Bitte geben Sie eine E-Mail-Adresse ein, um einen Link zum Zurücksetzen des Passworts zu erhalten.' - ERRORLOCKEDOUT: 'Ihr Zugang wurde auf Grund von einer unzulässig hohen Anzahl von falschen Zugangsversuchen gesperrt. Bitte versuchen Sie es in 20 Minuten noch einmal.' - ERRORNEWPASSWORD: 'Sie haben Ihr neues Passwort unterschiedlich eingegeben, bitte versuchen Sie es erneut.' - ERRORPASSWORDNOTMATCH: 'Das Passwort stimmt nicht mit dem hinterlegten Passwort überein, bitte versuchen Sie es noch einmal' - ERRORWRONGCRED: 'Das Passwort oder die E-Mail-Adresse scheinen nicht richtig zu sein. Bitte versuchen Sie es erneut.' - FIRSTNAME: Vorname - INTERFACELANG: CMS-Sprache - INVALIDNEWPASSWORD: 'Das Passwort konnte nicht akzeptiert werden: {password}' - LOGGEDINAS: 'Sie sind als {name} eingeloggt.' - NEWPASSWORD: 'Neues Passwort' - PASSWORD: Passwort - PLURALNAME: Benutzer - PROFILESAVESUCCESS: 'Erfolgreich gespeichert.' - REMEMBERME: 'Für das nächste Mal merken?' - SINGULARNAME: Benutzer - SUBJECTPASSWORDCHANGED: 'Ihr Passwort wurde geändert' - SUBJECTPASSWORDRESET: 'Ihr Link zur Passwortrücksetzung' - SURNAME: Nachname -<<<<<<< HEAD - TIMEFORMAT: 'Time format' -======= - TIMEFORMAT: 'Bitte geben Sie die Uhrzeit im korrekten Format ein ({format})' ->>>>>>> origin/translation-staging - VALIDATIONMEMBEREXISTS: 'Es gibt bereits ein Mitglied mit dieser E-Mail-Adresse' - ValidationIdentifierFailed: 'Das vorhandene Mitglied #{id} mit identischer Bezeichnung kann nicht überschrieben werden ({name} = {value}))' - WELCOMEBACK: 'Hallo {firstname}. Schön, dass du wieder da bist' - YOUROLDPASSWORD: 'Ihr alten Passwort' - belongs_many_many_Groups: Gruppe - db_LastVisited: 'Zuletzt Besucht' - db_Locale: 'Interface Sprachumgebung' - db_LockedOutUntil: 'Gesperrt bis' - db_NumVisit: 'Anzahl der Besuche' - db_Password: Passwort - db_PasswordExpiry: 'Ablaufdatum des Passworts' - MemberAuthenticator: - TITLE: 'E-Mail & Passwort' - MemberDatetimeOptionsetField: - AMORPM: 'AM (vormittag) oder PM (nachmittag)' - 'APPLY FILTER': 'Filter anwenden' - Custom: Benutzerdefiniert - DATEFORMATBAD: 'Ungültiges Datumsformat' - DAYNOLEADING: 'Tag des Monats ohne führende Null' - DIGITSDECFRACTIONSECOND: 'Eine oder mehrere Ziffern, die einen Dezimalbruch einer Sekunde darstellen' - FOURDIGITYEAR: 'Vierstellige Jahreszahl' - FULLNAMEMONTH: 'Volle Monatsbezeichnung (z.B. Juni)' - HOURNOLEADING: 'Stunde ohne führende Null' - MINUTENOLEADING: Minute - MONTHNOLEADING: 'Monat ohne führende Null' - Preview: Vorschau - SHORTMONTH: 'Kurzname des Monats (z.B. Jun)' - TOGGLEHELP: 'Formatierungshilfe anzeigen' - TWODIGITDAY: 'Tag des Monats mit führender Null' - TWODIGITHOUR: 'Stunde im 24-Stunden-Format, mit führenden Nullen' - TWODIGITMINUTE: 'Minute mit führenden Nullen' - TWODIGITMONTH: 'Monat mit führender Null (z.B. 01 = Januar, usw.)' - TWODIGITSECOND: Sekunde - TWODIGITYEAR: 'Zweistellige Jahreszahl' - MemberImportForm: - Help1: '

Mitglieder im CSV-Format (kommaseparierte Werte) importieren. Erweiterte Nutzung

' - Help2: '

Advanced usage

' - ResultCreated: '{count} Mitglied(er) wurden erstellt' - ResultDeleted: '%d Mitglieder gelöscht' - ResultNone: 'Keine Änderungen' - ResultUpdated: '{count} Mitglied(er) wurde(n) aktualisiert' - MemberPassword: -<<<<<<< HEAD - PLURALNAME: 'Member Passwords' - SINGULARNAME: 'Member Password' -======= - PLURALNAME: Benutzerpasswörter - SINGULARNAME: Benutzerpasswort ->>>>>>> origin/translation-staging - MemberTableField: null - ModelAdmin: - DELETE: Löschen - DELETEDRECORDS: '{count} Datensätze wurden gelöscht.' - IMPORT: 'CSV Import' - IMPORTEDRECORDS: '{count} Datensätze wurden importiert.' - NOCSVFILE: 'Wählen Sie eine CSV-Datei zum Importieren' - NOIMPORT: 'Kein Import notwendig.' - RESET: Zurücksetzen - Title: Datenmodelle - UPDATEDRECORDS: '{count} Datensätze wurden aktualisiert.' - ModelAdmin_ImportSpec.ss: - IMPORTSPECFIELDS: Datenbankspalten - IMPORTSPECLINK: 'Show Specification for %s' - IMPORTSPECRELATIONS: Relationen - IMPORTSPECTITLE: 'Specification for %s' - ModelAdmin_Tools.ss: - FILTER: Filter - IMPORT: Importieren - ModelSidebar.ss: - IMPORT_TAB_HEADER: Importieren - SEARCHLISTINGS: Suche - MoneyField: - FIELDLABELAMOUNT: Betrag - FIELDLABELCURRENCY: Währung - NullableField: - IsNullLabel: 'ist NULL' - NumericField: - VALIDATION: '''{value}'' ist kein numerischer Wert, nur nummerische Werte sind in diesem Feld erlaubt' - Pagination: -<<<<<<< HEAD - Page: Page - View: View -======= - Page: Seite - View: Anzeige ->>>>>>> origin/translation-staging - Permission: - AdminGroup: Administrator - CMS_ACCESS_CATEGORY: 'CMS Zugriff' - FULLADMINRIGHTS: 'Unbeschränkte Administratorenrechte' - FULLADMINRIGHTS_HELP: 'Schließt alle anderen verfügbaren Berechtigungen ein' -<<<<<<< HEAD - PLURALNAME: Permissions - SINGULARNAME: Permission -======= - PLURALNAME: Berechtigungen - SINGULARNAME: Berechtigung ->>>>>>> origin/translation-staging - PermissionCheckboxSetField: - AssignedTo: 'Zugewiesen an "{title}"' - FromGroup: 'abgeleited von Gruppe "{title}"' - FromRole: 'abgeleited von Rolle "{title}"' - FromRoleOnGroup: 'geerbt von Rolle "%s" für die Gruppe "%s"' - PermissionRole: - PLURALNAME: Roles - SINGULARNAME: Role - PermissionRoleCode: - PLURALNAME: 'Permission Role Cods' - SINGULARNAME: 'Permission Role Code' - Permissions: - PERMISSIONS_CATEGORY: 'Rollen und Zugriffsberechtigungen' - PhoneNumberField: - VALIDATION: 'Bitte geben Sie eine gültige Telefonnummer ein' - RelationComplexTableField.ss: - ADD: Hinzufügen - CSVEXPORT: 'Als CSV exportieren' - NOTFOUND: 'Keine Elemente gefunden.' - 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.' - BUTTONSEND: 'Senden Sie mir den Link zur Passwortrücksetzung' - CHANGEPASSWORDBELOW: 'Sie können Ihr Passwort unten ändern.' - CHANGEPASSWORDHEADER: 'Passwort ändern' - ENTERNEWPASSWORD: 'Bitte geben Sie ein neues Passwort ein' - ERRORPASSWORDPERMISSION: 'Sie müssen eingeloggt sein, um Ihr Passwort ändern zu können!' - LOGGEDOUT: 'Sie wurden ausgeloggt. Wenn Sie sich wieder einloggen möchten, geben Sie bitte unten Ihre Zugangsdaten ein.' - LOGIN: Anmelden - NOTEPAGESECURED: 'Diese Seite ist geschützt. Bitte melden Sie sich an und Sie werden sofort weitergeleitet.' - NOTERESETLINKINVALID: '

Der Link zum Zurücksetzen des Passworts ist entweder nicht korrekt oder abgelaufen

Sie können einen neuen Link anfordern oder Ihr Passwort nach dem einloggen ändern.

' - NOTERESETPASSWORD: 'Geben Sie Ihre E-Mail-Adresse ein und wir werden Ihnen einen Link zuschicken, mit dem Sie Ihr Passwort zurücksetzen können.' - PASSWORDSENTHEADER: 'Der Link zum Zurücksetzen des Passworts wurde an {email} gesendet' - PASSWORDSENTTEXT: 'Vielen Dank! Wenn ein Account zu der E-Mail Adresse {email} existiert, wurde eine E-Mail mit dem Link zum Zurücksetzen des Passworts verschickt.' - SecurityAdmin: - ACCESS_HELP: 'Benutzer hinzufügen, anzeigen und editieren sowie diesen Berechtigungen und Rollen zuweisen.' - APPLY_ROLES: 'Rollen zu Gruppen zuweisen' - APPLY_ROLES_HELP: 'Möglichkeit die Zuweisungen von Rollen zu Gruppen zu editieren. Erfordert Zugriff auf den Bereich "Sicherheit".' - 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: 'Gruppen importieren' - IMPORTUSERS: 'Benutzer importieren' - MEMBERS: Mitglieder - MENUTITLE: Sicherheit - MemberListCaution: 'Achtung: Das Entfernen von Mitgliedern aus dieser Liste löscht diese auch aus der Datenbank sowie die entsprechenden Gruppenzuweisungen.' - NEWGROUP: 'Neue Gruppe' - PERMISSIONS: Berechtigungen - ROLES: Rollen - ROLESDESCRIPTION: 'Hier können Sie der Gruppe Rollen zuweisen. Rollen sind logische Gruppierungen von Berechtigungen.' - TABROLES: Rollen - Users: Benutzer - SecurityAdmin_MemberImportForm: - BtnImport: Import - FileFieldLabel: 'CSV Datei (Erlaubte Dateierweiterung: *.csv)' - SilverStripeNavigator: - Edit: Bearbeiten - SimpleImageField: - NOUPLOAD: 'Es wurde kein Bild hochgeladen' - SiteTree: - TABMAIN: Hauptteil - TableField: - ISREQUIRED: 'In %s wird ''%s'' benötigt' - TableField.ss: - ADD: 'Eine neue Zeile hinzufügen' - ADDITEM: '%s hinzufügen' - TableListField: - CSVEXPORT: 'Als CSV-Datei exportieren' - PRINT: drucken - Print: Drucken - SELECT: 'Auswählen:' - TableListField.ss: - NOITEMSFOUND: 'Keine Elemente gefunden' - SORTASC: 'Aufsteigend sortieren' - SORTDESC: 'Absteigend sortieren' - TableListField_PageControls.ss: - DISPLAYING: Zeige - OF: von - TO: bis - VIEWFIRST: 'Ersten anzeigen' - VIEWLAST: 'Letzten anzeigen' - VIEWNEXT: 'Nächsten anzeigen' - VIEWPREVIOUS: 'Vorherigen anzeigen' - TimeField: - VALIDATEFORMAT: 'Bitte geben Sie die Uhrzeit im korrekten Format ein ({format})' - ToggleField: - LESS: weniger - MORE: mehr - UploadField: - ATTACHFILE: 'Datei anhängen' - ATTACHFILES: 'Dateien anhängen' - AttachFile: 'Dateien anhängen' - DELETE: 'Aus Dateien löschen' - DELETEINFO: 'Löscht die Datei dauerhaft aus dem Dateisystem' - DOEDIT: Speichern - DROPFILE: 'Datei hier ablegen' - DROPFILES: 'Dateien hier ablegen' - Dimensions: Dimensionen - EDIT: Bearbeiten - EDITINFO: 'Diese Datei bearbeiten' - FIELDNOTSET: 'Dateiinformationen nicht gefunden' - FROMCOMPUTER: 'Von Ihrem Computer' - FROMCOMPUTERINFO: 'Aus Dateien auswählen' - FROMFILES: 'Von "Dateien"' - HOTLINKINFO: 'Info: This image will be hotlinked. Please ensure you have permissions from the original site creator to do so.' - MAXNUMBEROFFILES: 'Maximale Anzahl an {count} Datei(en) überschritten' - MAXNUMBEROFFILESSHORT: 'SIe können maximal {count} Datei(en) hochladen' - 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' - STARTALLINFO: 'Alle Uploads starten' - Saved: Gespeichert - Versioned: - has_many_Versions: Versionen diff --git a/lang/en.yml b/lang/en.yml index b297716bb..b0f861b33 100644 --- a/lang/en.yml +++ b/lang/en.yml @@ -25,6 +25,7 @@ en: FROMCOMPUTER: 'Choose files from your computer' FROMCOMPUTERINFO: 'Upload from your computer' TOTAL: Total + TOUPLOAD: 'Choose files to upload...' UPLOADINPROGRESS: 'Please wait… upload in progress' UPLOADOR: OR BBCodeParser: @@ -143,18 +144,37 @@ en: Enum: ANY: Any File: + AviType: 'AVI video file' Content: Content + CssType: 'CSS file' + DmgType: 'Apple disk image' + DocType: 'Word document' Filename: Filename + GifType: 'GIF image - good for diagrams' + GzType: 'GZIP compressed file' + HtlType: 'HTML file' + HtmlType: 'HTML file' INVALIDEXTENSION: 'Extension is not allowed (valid: {extensions})' INVALIDEXTENSIONSHORT: 'Extension is not allowed' + IcoType: 'Icon image' + JpgType: 'JPEG image - good for photos' + JsType: 'Javascript file' + Mp3Type: 'MP3 audio file' + MpgType: 'MPEG video file' NOFILESIZE: 'Filesize is zero bytes.' NOVALIDUPLOAD: 'File is not a valid upload' Name: Name PLURALNAME: Files + PdfType: 'Adobe Acrobat PDF file' + PngType: 'PNG image - good general-purpose format' SINGULARNAME: File TOOLARGE: 'Filesize is too large, maximum {size} allowed' TOOLARGESHORT: 'Filesize exceeds {size}' + TiffType: 'Tagged image format' Title: Title + WavType: 'WAV audo file' + XlsType: 'Excel spreadsheet' + ZipType: 'ZIP compressed file' FileIFrameField: ATTACH: 'Attach {type}' ATTACHONCESAVED: '{type}s can be attached once you have saved the record for the first time.' diff --git a/lang/mi_NZ.yml.orig b/lang/mi_NZ.yml.orig deleted file mode 100644 index 6c9b13023..000000000 --- a/lang/mi_NZ.yml.orig +++ /dev/null @@ -1,586 +0,0 @@ -mi_NZ: - AssetAdmin: - ADDFILES: 'Tāpiri Kōnae' - EditOrgMenu: 'Whakatika me te Whakaraupapa' - NEWFOLDER: KōpakiHōu - AssetTableField: - CREATED: 'Tukuatu tuatahi' - DIM: 'Ngā Rahinga' - FILENAME: 'Ingoa Kōnae' - FOLDER: Kōpaki - LASTEDIT: 'Hurihanga tōmuri' - OWNER: Kaiūmanga - SIZE: Nuinga - TITLE: Taitara - TYPE: 'Tūmomo ' - URL: PRO - AssetUploadField: - ChooseFiles: 'Kōwhiri kōnae' - DRAGFILESHERE: 'Tōia mai ngā kōnae ki konei' - DROPAREA: 'Wāhi Taka' - EDITALL: 'Whakatika katoa' - EDITANDORGANIZE: 'Whakatika me te Whakaraupapa' - EDITINFO: 'Whakatika kōnae' - FILES: 'Ngā kōnae' - FROMCOMPUTER: 'Kōwhiri kōnae mai i tō rorohiko' - FROMCOMPUTERINFO: 'Tukuatu i tō rorohiko' - TOTAL: Tapeke - UPLOADINPROGRESS: 'Taihoa...he tukuatu kei te haere' - UPLOADOR: 'TĒNEI RĀNEI' - BBCodeParser: - ALIGNEMENT: Tiaroaro - ALIGNEMENTEXAMPLE: 'i tiaro matautia' - BOLD: 'Tuhinga Taekaha' - BOLDEXAMPLE: Taekaha - CODE: 'Paraka Waehere' - CODEDESCRIPTION: 'Paraka waehere kāore hōpututia' - CODEEXAMPLE: 'Paraka Waehere' - COLORED: 'Tuhinga whaikano' - COLOREDEXAMPLE: 'tuhinga kikorangi' - EMAILLINK: 'Hono īmēra' - EMAILLINKDESCRIPTION: 'Hanga hononga ki tētahi wāhitau īmēra' - IMAGE: Atahanga - IMAGEDESCRIPTION: 'Whakaaturia tētahi atahanga i tō tare' - ITALIC: 'Tuhinga Tītaha' - ITALICEXAMPLE: Tītaha - LINK: 'Hono paetukutuku' - LINKDESCRIPTION: 'Hono ki tētahi atu paetukutuku, PRO rānei' - STRUCK: 'Tuhinga i Tāhīpaetia' - STRUCKEXAMPLE: 'I tāhīpaetia' - UNDERLINE: 'Tuhinga i tōrarotia' - UNDERLINEEXAMPLE: 'I tōrarotia' - UNORDERED: 'Rārangi kāore i raupapatia' - UNORDEREDDESCRIPTION: 'Rārangi kāore i raupapatia' - UNORDEREDEXAMPLE1: 'tūemi 1 kāore i raupapatia' - BackLink_Button.ss: - Back: Hoki - BasicAuth: - ENTERINFO: 'Tāurua he ingoa kaiwhakamahi me te kupuhipa' - ERRORNOTADMIN: 'Ehara tēnā kaiwhakamahi i te kaiwhakahaere' - ERRORNOTREC: 'Kāore i te mōhiotia tēnā ingoa kaiwhakamahi / kupuhipa' - Boolean: - 0: Hē - ANY: 'Ko tētahi' - 1: Pono - CMSLoadingScreen.ss: - LOADING: 'Uta ana...' - REQUIREJS: 'Ka hiahia te CMS kia whakahohea te JavaScript' - CMSMain: - ACCESS: 'Uru ki te wāhanga ''{title}''' - ACCESSALLINTERFACES: 'Uru ki ngā wāhanga CMS katoa' - ACCESSALLINTERFACESHELP: 'Ka takahi i ngā tautuhinga uru tauwhāiti ake' - SAVE: Tiaki - CMSProfileController: - MENUTITLE: PūwhakamanaKōtahaCMS - ChangePasswordEmail.ss: - CHANGEPASSWORDTEXT1: 'Kua hurihia tō kupuhipa mō' - CHANGEPASSWORDTEXT2: 'Ka taea te whakamahi i ēnei taipitopito tuakiri ināianei hei takiuru:' - EMAIL: Īmēra - HELLO: 'Kia ora' - PASSWORD: Kupuhipa - CheckboxField: - - Hē - - Pono - ComplexTableField: - CLOSEPOPUP: 'Kati Pakū-Ake' - SUCCESSADD2: 'Kua tāpiritia a {name}' - SUCCESSEDIT: 'I tiakina a %s %s %s' - ComplexTableField.ss: - ADDITEM: 'Tāpiri %s' - NOITEMSFOUND: 'Kāore i kitea he tūemi' - SORTASC: 'Kōmaka aupiki' - SORTDESC: 'Kōmaka auheke' - ComplexTableField_popup.ss: - NEXT: Panuku - PREVIOUS: Tōmua - ConfirmedPasswordField: - ATLEAST: 'Kia {min} pūāhua i te iti rawa te roa o ngā kupuhipa.' - BETWEEN: 'Me noho te roa o ngā kupuhipa i waenga i te {min} ki te {max} ngā pūāhua' - MAXIMUM: 'Kaua i hipa i te {max} pūāhua te roa o ngā kupuhipa.' - SHOWONCLICKTITLE: 'Huri Kupuhipa' - CreditCardField: - FIRST: tuatahi - FOURTH: tuawhā - SECOND: tuarua - THIRD: tuatoru - CurrencyField: - CURRENCYSYMBOL: $ - DataObject: - PLURALNAME: 'Ngā Ahanoa Raraunga' - SINGULARNAME: 'Ahanoa Raraunga' - Date: - DAY: rā - DAYS: 'ngā rā' - HOUR: haora - HOURS: 'ngā haora' - MIN: meneti - MINS: 'ngā meneti' - MONTH: marama - MONTHS: 'ngā marama' - SEC: hēkona - SECS: 'ngā hēkona' - TIMEDIFFAGO: '{difference} i mua' - TIMEDIFFIN: 'i roto i te {difference}' - YEAR: tau - YEARS: 'ngā tau' - DateField: - NOTSET: 'kāore i tautuhia' - TODAY: 'i tēnei rā' - VALIDDATEFORMAT2: 'Tāurua he hōputu rā tika ({format})' - VALIDDATEMAXDATE: 'Me tawhito ake tō rā, kia ōrite rānei ki te rā mōrahi ({date}) kua whakaaetia' - VALIDDATEMINDATE: 'Me hōu ake tō rā, kia ōrite rānei ki te rā moroiti ({date}) kua whakaaetia' - DatetimeField: - NOTSET: 'Kāore i tautuhia' - Director: - INVALID_REQUEST: 'Tono muhu' - DropdownField: - CHOOSE: (Kōwhiri) - EmailField: - VALIDATION: 'Tāurua he wāhitau īmēra ' - Email_BounceRecord: - PLURALNAME: 'Ngā Pūrongo Tāwhana Īmēra' - SINGULARNAME: 'Pūrongo Tāwhana Īmēra' - Enum: - ANY: 'Ko tētahi' - File: - Content: 'Ngā Ihirangi' - Filename: 'Ingoa Kōnae' - INVALIDEXTENSION: 'Kāore e whakaaetia te toronga (valid: {extensions})' - INVALIDEXTENSIONSHORT: 'Kāore e whakaaetia te toronga' - NOFILESIZE: 'He kore ngā paita kei te kōnae' - NOVALIDUPLOAD: 'Ehara te kōnae i te tukuatu pono' - Name: Ingoa - PLURALNAME: 'Ngā Kōnae' - SINGULARNAME: Kōnae - TOOLARGE: 'He rahi rawa te rahi kōnae, he {size} te rahi mōrahi ka taea' - TOOLARGESHORT: 'Ka hipa te {size} i te rahi kōnae' - Title: Taitara - FileIFrameField: - ATTACH: 'Āpiti {type}' - ATTACHONCESAVED: 'Ka taea te āpiti i ngā {type} ina oti te tiaki tuatahi o te pūkete.' - ATTACHONCESAVED2: 'Ka taea te āpiti kōnae ina oti te tiaki tuatahi o te pūkete.' - DELETE: 'Muku {type}' - DISALLOWEDFILETYPE: 'Kāore e whakaaetia ki te tukuatu i tēnei momo kōnae' - FILE: Kōnae - FROMCOMPUTER: 'Mai i tō Rorohiko' - FROMFILESTORE: 'Mai i te pātaka kōnae' - NOSOURCE: 'Kōwhiria he kōnae pūtake hei tāpiri' - REPLACE: 'Whakakapi {type}' - FileIFrameField_iframe.ss: - TITLE: 'Iframe Tukuatu Atahanga' - Filesystem: - SYNCRESULTS: 'Kua oti te tukutahi: e {createdcount} ngā tūemi i hangaia, e {deletedcount} ngā tūemi i mukua' - Folder: -<<<<<<< HEAD - PLURALNAME: Folders - SINGULARNAME: Folder -======= - PLURALNAME: 'Ngā Kōpaki' - SINGULARNAME: Kōpaki ->>>>>>> origin/translation-staging - ForgotPasswordEmail.ss: - HELLO: 'Kia ora' - TEXT1: 'Anei tō' - TEXT2: 'hono tautuhi kupuhipa anō' - TEXT3: mā - Form: - FIELDISREQUIRED: 'Ka hiahiatia a %s' - SubmitBtnLabel: Haere - VALIDATIONCREDITNUMBER: 'Tirohia kua tika tō tāuru i te tau kāri nama {number}' - VALIDATIONNOTUNIQUE: 'Ehara te uara i tāurua i te ahurei' - VALIDATIONPASSWORDSDONTMATCH: 'Kāore ngā kupuhipa i te ōrite' - VALIDATIONPASSWORDSNOTEMPTY: 'Kia kaua e noho piako ngā kupuhipa' - VALIDATIONSTRONGPASSWORD: 'Kia kotahi tonu te mati, kia tahi hoki te pūāhua retawhika i te iti rawa o ngā kupuhipa' - VALIDATOR: Pūwhakamana - VALIDCURRENCY: 'Tāurua he moni tika' - FormField: - NONE: Kore - GridAction: - DELETE_DESCRIPTION: Muku - Delete: Muku - UnlinkRelation: Wetehono - GridField: - Add: 'Tāpiri {name}' - Filter: Tātari - FilterBy: 'Tātari mā' - Find: Rapu - LEVELUP: 'Whakaawhiwhi ki runga' - LinkExisting: 'Hono Tīari' - NewRecord: '%s hōu' - NoItemsFound: 'Kāore i kitea he tūemi' - PRINTEDAT: 'I tāngia i' - PRINTEDBY: 'I tāngia e' - PlaceHolder: 'Tapu {type}' - PlaceHolderWithLabels: 'Rapu {type} mā te {name}' - RelationSearch: 'Rapu whanaunga' - ResetFilter: 'Tautuhi anō' - GridFieldAction_Delete: - DeletePermissionsFailure: 'Kāore he muku whakaaetanga' - GridFieldDetailForm: - Create: Hanga - Delete: Muku - DeletePermissionsFailure: 'Kāore he muku whakaaetanga' - Deleted: 'Kua mukua %s %s' - Save: Tiaki - Saved: 'I tiakina a %s %s' - GridFieldItemEditView.ss: null - Group: - AddRole: 'Tāpiritia he tūnga mō tēnei rōpū' - Code: 'Waehere Rōpū' - DefaultGroupTitleAdministrators: 'Ngā Kaiwhakahaere' - DefaultGroupTitleContentAuthors: 'Ngā Kaituhi Ihirangi' - Description: Whakaahuatanga - GroupReminder: 'Mēnā ka kōwhiri koe i tētahi rōpū matua, ka whiwhi tēnei rōpū i ōna tūnga katoa' - Locked: 'Kua raka?' - NoRoles: 'Kāore i kitea he tūnga' -<<<<<<< HEAD - PLURALNAME: Groups - Parent: 'Rōpū Matua' - RolesAddEditLink: 'Whakahaere tūnga' - SINGULARNAME: Group -======= - PLURALNAME: 'Ngā Rōpū' - Parent: 'Rōpū Matua' - RolesAddEditLink: 'Whakahaere tūnga' - SINGULARNAME: Rōpū ->>>>>>> origin/translation-staging - Sort: 'Raupapa Kōmaka' - has_many_Permissions: 'Ngā Whakaaetanga' - many_many_Members: 'Ngā Mema' - GroupImportForm: - Help1: '

Kawea mai ngā kaiwhakamahi i te hōputu CSV (ngā uara ka wehea ki te piko). Whakaatu whakamahinga ara atu anō

' - Help2: "
\\n

Whakamahinga ara atu anō

\\n\\n
" - ResultCreated: 'I hangaia e {count} ngā rōpū' - ResultDeleted: 'Kua mukua e %d ngā rōpū' - ResultUpdated: 'Kua whakahōutia e %d ngā rōpū' - Hierarchy: - InfiniteLoopNotAllowed: 'Kua kitea he koromeke mutunga kore i roto i te aroākapanga "{type}". Hurihia te matua hei whakaea i tēnei' - HtmlEditorField: - ADDURL: 'Tāpiri PRO' - ADJUSTDETAILSDIMENSIONS: 'Ngā taipitopito & ngā rahinga' - ANCHORVALUE: Punga - BUTTONINSERT: Kōkohu - BUTTONINSERTLINK: 'Kōkuhu hono' - BUTTONREMOVELINK: 'Tango hono' - BUTTONUpdate: Whakahōu - CAPTIONTEXT: 'Tuhinga tapanga' - CSSCLASS: 'Tiaroaro / kāhua' - CSSCLASSCENTER: 'I tauwaengatia, i tōna kotahi' - CSSCLASSLEFT: 'I te taha mauī, me te tuhinga e takai huri noa ana' - CSSCLASSLEFTALONE: 'Kei te mauī, i tōna kotahi' - CSSCLASSRIGHT: 'I te taha matau, me te tuhinga e takai huri noa ana' - DETAILS: 'Ngā Taipitopito' - EMAIL: 'Wāhitau Īmēra' - FILE: 'Ngā kōnae' - FOLDER: Kōpaki - FROMCMS: 'Mai i te CMS' - FROMCOMPUTER: 'Mai i tō rorohiko' - FROMWEB: 'Mai i te tukutuku' - FindInFolder: 'Rapu i te Kōpaki' - IMAGEALT: 'Tuhinga kē (alt)' - IMAGEALTTEXT: 'Tuhinga kē - ka whakaaturia ki te kore e taea te whakaatu atahanga' - IMAGEALTTEXTDESC: 'Ka whakaaturia ki ngā pūpānui mata, mēnā rānei kāore e taea te atahanga te whakaatu' - IMAGEDIMENSIONS: 'Ngā Rahinga' - IMAGEHEIGHTPX: Teitei - IMAGETITLE: 'Tuhinga taitara (ākiutauta) - mō ngā mōhiohio tāpiri mō te atahanga' - IMAGETITLETEXT: 'Tuhinga taitara (ākiutauta) ' - IMAGETITLETEXTDESC: 'Mō ētahi atu mōhiohio mō te atahanga' - IMAGEWIDTHPX: Whānui - INSERTMEDIA: 'Kōkuhu Pāpāho' - LINK: 'Kōkuhu hono' - LINKANCHOR: 'He punga kei tēnei whārangi' - LINKDESCR: 'Whakaahuatanga hono' - LINKEMAIL: 'Wāhitau Īmēra' - LINKEXTERNAL: 'Tētahi atu paetukutuku' - LINKFILE: 'Tīkina ake he kōnae' - LINKINTERNAL: 'Whārangi kei te pae' - LINKOPENNEWWIN: 'Ka whakatuwhera hono i te matapihi hōu?' - LINKTO: 'Hono ki' - PAGE: Whārangi - URL: PRO - URLNOTANOEMBEDRESOURCE: 'Kāore e taea te huri i te PRO ''{url}'' hei rawa pāpāho.' - UpdateMEDIA: 'Whakahōu Pāpāho' - Image: - PLURALNAME: 'Ngā Kōnae' - SINGULARNAME: Kōnae - ImageField: - IMAGE: Atahanga - Image_Cached: - PLURALNAME: 'Ngā kōnae' - SINGULARNAME: Kōnae - Image_iframe.ss: - TITLE: 'Iframe Tukuatu Atahanga' - LeftAndMain: - CANT_REORGANISE: 'Kāore tō mana whakakē i ngā whārangi taumata Matua. Kāore tō huringa i tiakina.' - DELETED: 'I mukua' - DropdownBatchActionsDefault: 'Ngā Mahi' - HELP: Āwhina - PAGETYPE: 'Momo whārangi:' - PERMAGAIN: 'Kua takiputaina atu koe i te CMS. Ki te pīrangi koe ki te takiuru atu anō, tāurutia tētahi ingoa kaiwhakamahi me te kupuhipa. ' - PERMALREADY: 'Aroha mai, kāore e taea te whakauru i tērā wāhanga o te CMS. Ki te pīrangi koe ki te takiuru atu mā tētahi atu ingoa, whakamahia ki raro nei.' - PERMDEFAULT: 'Whiriwhiria koa tētahi aratuka motuhēhēnga me te tāuru i ō pūkenga ki te whakauru i te CMS.' - PLEASESAVE: 'Tiaki Whārangi: Kāore i taea tēnei whārangi te whakahōu nā te mea kāore anō kia tiakina.' - PreviewButton: Arokite - REORGANISATIONSUCCESSFUL: 'Kua momoho te whakaraupapa anō i te rākau pae' - SAVEDUP: 'Kua Tiakina' - VersionUnknown: 'tē mōhiotia' - LeftAndMain_Menu.ss: - Hello: 'Kia ora' - LOGOUT: Takiputa - LoginAttempt: - Email: 'Wāhitau Īmēra' - IP: 'Wāhitau KI' -<<<<<<< HEAD - PLURALNAME: 'Login Attempts' - SINGULARNAME: 'Login Attempt' -======= - PLURALNAME: 'Ngā Whakamātau Takiuru' - SINGULARNAME: 'Whakamātau Takiuru' ->>>>>>> origin/translation-staging - Status: Tūnga - Member: - ADDGROUP: 'Tāpiri rōpū' - BUTTONCHANGEPASSWORD: 'Huri Kupuhipa' - BUTTONLOGIN: Takiuru - BUTTONLOGINOTHER: 'Takiuru hei tangata kē' - BUTTONLOSTPASSWORD: 'Kua ngaro i a au taku kupuhipa' - CONFIRMNEWPASSWORD: 'Whakaū Kupuhipa Hōu' - CONFIRMPASSWORD: 'Whakaū Kupuhipa' - DATEFORMAT: 'Date format' - DefaultAdminFirstname: 'Kaiwhakahaere Taunoa' - DefaultDateTime: taunoa - EMAIL: Īmēra - EMPTYNEWPASSWORD: 'Kāore e whakaaetia kia piako te kupuhipa hōu, ngana anō' - ENTEREMAIL: 'Tāurua he wāhitau īmēra kia whiwhi i te hono tautuhi kupuhipa anō.' - ERRORLOCKEDOUT: 'Kua mono rangitahitia tō pūkete nā te nui rawa o ngā whakamātau hē ki te takiuru. Ngana anō ā te 20 meneti.' - ERRORNEWPASSWORD: 'Kua rerekē tō tāuru kupuhipa, whakamātau anō' - ERRORPASSWORDNOTMATCH: 'Kāore i te ōrite tō kupuhipa o nāianei, ngana anō' - ERRORWRONGCRED: 'Te āhua nei ehara i te wāhitau īmerā tika, i te kuphipa tika rānei. Ngana anō' - FIRSTNAME: 'Ingoa Tuatahi' - INTERFACELANG: 'Reo Atanga' - INVALIDNEWPASSWORD: 'Kāore i taea te whakaae ki taua kupuhipa: {password}' - LOGGEDINAS: 'Kua takiuru koe hei {name}.' - NEWPASSWORD: 'Kupuhipa Hōu' - PASSWORD: Kupuhipa - PLURALNAME: 'Ngā Mema' - PROFILESAVESUCCESS: 'I momoho te tiaki' - REMEMBERME: 'Ka maumahara mai ā muri atu?' - SINGULARNAME: Mema - SUBJECTPASSWORDCHANGED: 'Kua hurihia tō kupuhipa' - SUBJECTPASSWORDRESET: 'Tō hono tautuhi kupuhipa anō' - SURNAME: 'Ingoa Whānau' - TIMEFORMAT: 'Time format' - VALIDATIONMEMBEREXISTS: 'Tīari kē ana tētahi mema me te %s ōrite' - ValidationIdentifierFailed: 'Kāore e whakaaetia ki te tuhirua i te mema #{id} ki te pūtautuhi ōrite ({name} = {value}))' - WELCOMEBACK: 'Nau mai, hoki mai, {firstname}' - YOUROLDPASSWORD: 'Tō kupuhipa tawhito' - belongs_many_many_Groups: 'Ngā Rōpū' - db_LastVisited: 'Rā Toronga Tōmua' - db_Locale: 'Tauwāhi Atanga' - db_LockedOutUntil: 'Ka maukatia tae atu ki te' - db_NumVisit: 'Maha o ngā Toronga' - db_Password: Kupuhipa - db_PasswordExpiry: 'Rā Mōnehu Kupuhipa' - MemberAuthenticator: - TITLE: 'Īmērā & Kupuhipa' - MemberDatetimeOptionsetField: - AMORPM: 'AM (Ante meridiem), PM (Post meridiem) rānei' - 'APPLY FILTER': 'Hoatu Tātari' - Custom: Ritenga - DATEFORMATBAD: 'He muhu te hōputu rā' - DAYNOLEADING: 'Rā o te marama kāore he kore i mua' - DIGITSDECFRACTIONSECOND: 'Kotahi neke atu ngā mati e tohu ana i te hautau ā-ira o te hēkona' - FOURDIGITYEAR: 'Tau matiwhā' - FULLNAMEMONTH: 'Ingoa marama katoa (hei tauira, Pipiri)' - HOURNOLEADING: 'Haora, kāore he kore i mua' - MINUTENOLEADING: 'Meneti, kāore he kore i mua' - MONTHNOLEADING: 'Mati marama kāore he kore i mua' - Preview: Arokite - SHORTMONTH: 'Ingoa marama poto (hei tauira, Pip)' - TOGGLEHELP: 'Takahurihia te āwhina whakahōputu' - TWODIGITDAY: 'Rā marama matirua' - TWODIGITHOUR: 'Ngā mati haora e rua (00 ki te 23)' - TWODIGITMINUTE: 'Ngā mati meneti e rua (00 ki te 59)' - TWODIGITMONTH: 'Marama matirua (01=Kohitātea)' - TWODIGITSECOND: 'Ngā mati hēkona e rua (00 ki te 59)' - TWODIGITYEAR: 'Tau matirua' - MemberImportForm: - Help1: '

Kawea mai ngā kaiwhakamahi i te hōputu CSV (ngā uara ka wehea ki te piko). Whakaatu whakamahinga ara atu anō

' - Help2: "
\\n

Whakamahinga ara atu anō

\\n\\n
" - ResultCreated: 'I hangaia e {count} ngā mema' - ResultDeleted: 'Kua mukua e %d ngā mema' - ResultNone: 'Kāore he huringa' - ResultUpdated: 'I whakahōutia e {count} mhā mema' - MemberPassword: -<<<<<<< HEAD - PLURALNAME: 'Member Passwords' - SINGULARNAME: 'Member Password' -======= - PLURALNAME: 'Ngā Kupuhipa Mema' - SINGULARNAME: 'Kupuhipa Mema' ->>>>>>> origin/translation-staging - MemberTableField: null - ModelAdmin: - DELETE: Muku - DELETEDRECORDS: 'I mukua e {count} ngā pūkete.' - IMPORT: 'Kawemai i CSV' - IMPORTEDRECORDS: 'I kawea mai e {count} ngā pūkete.' - NOCSVFILE: 'Pūtirotiro kia kitea he kōnae CSV hei kawemai' - NOIMPORT: 'Kāore he mea hei kawemai' - RESET: 'Tautuhi Anō' - Title: 'Ngā Tauira Raraunga' - UPDATEDRECORDS: 'I whakahōutia e {count} ngā pūkete.' - ModelAdmin_ImportSpec.ss: - IMPORTSPECFIELDS: 'Ngā tīwae pātengi raraunga' - IMPORTSPECLINK: 'Whakaatu Whakapūtātanga mō %s' - IMPORTSPECRELATIONS: 'Ngā Pānga' - IMPORTSPECTITLE: 'Whakapūtātanga mō %s' - ModelAdmin_Tools.ss: - FILTER: Tātari - IMPORT: Kawemai - ModelSidebar.ss: - IMPORT_TAB_HEADER: Kawemai - SEARCHLISTINGS: Rapu - MoneyField: - FIELDLABELAMOUNT: Rahinga - FIELDLABELCURRENCY: Moni - NullableField: - IsNullLabel: 'He Kore Tēnei' - NumericField: - VALIDATION: 'Ehara te ''{value}'' i te tau, ka taea ngā tau anake ki tēnei āpure' - Pagination: - Page: Whārangi -<<<<<<< HEAD - View: View -======= - View: Tiro ->>>>>>> origin/translation-staging - Permission: - AdminGroup: Kaiwhakahaere - CMS_ACCESS_CATEGORY: 'Uru CMS' - FULLADMINRIGHTS: 'Ngā motika kaiwhakahaere katoa' - FULLADMINRIGHTS_HELP: 'Ka whakapae me te takahi i ērā atu whakaaetanga katoa kua tautapatia.' - PLURALNAME: Permissions -<<<<<<< HEAD - SINGULARNAME: Permission -======= - SINGULARNAME: Whakaaetanga ->>>>>>> origin/translation-staging - PermissionCheckboxSetField: - AssignedTo: 'kua tautapatia ki "{title}"' - FromGroup: 'I tukuna iho i te rōpū "{title}"' - FromRole: 'I tukuna iho i te tūnga "{title}"' - FromRoleOnGroup: 'i tukuna iho i "%s" i te rōpū "%s"' - PermissionRole: - PLURALNAME: 'Ngā Tūnga' -<<<<<<< HEAD - SINGULARNAME: Role -======= - SINGULARNAME: Tūranga ->>>>>>> origin/translation-staging - PermissionRoleCode: - PLURALNAME: 'Permission Role Cods' - SINGULARNAME: 'Permission Role Code' - Permissions: - PERMISSIONS_CATEGORY: 'Ngā tūnga me ngā whakaaetanga uru' - PhoneNumberField: - VALIDATION: 'Tāurua he tau waea tika' - RelationComplexTableField.ss: - ADD: Tāpiri - CSVEXPORT: 'Kaweatu ki CSV' - NOTFOUND: 'Kāore i kitea he tūemi' - Security: - ALREADYLOGGEDIN: 'Kāore i te whakaaetia kia uru koe ki tēnei whārangi. Mēnā he pūkete anō tōu e taea ai te uru ki tēnā whārangi, ka taea te takiuru anō i raro.' - BUTTONSEND: 'Tukuna mai te hono tautuhi kupuhipa anō' - CHANGEPASSWORDBELOW: 'Ka taea te huri i tō kupuhipa i raro' - CHANGEPASSWORDHEADER: 'Hurihia tō kupuhipa' - ENTERNEWPASSWORD: 'Tāurua he kupuhipa hōu' - ERRORPASSWORDPERMISSION: 'Me takiuru koe i mua i te huri i tō kupuhipa!' - LOGGEDOUT: 'Kua takiputaina atu koe. Ki te pīrangi koe ki te takiuru atu anō, tāurutia ō taipitopito tuakiri ki raro. ' - LOGIN: Takiuru - NOTEPAGESECURED: 'Kua ngita tēnā whārangi. Tāurua ō taipitoptio tuakiri ki raro, ā, mā mātou koe e tuku kia haere tonu.' - NOTERESETLINKINVALID: '

He muhu, kua mōnehu rānei te hono tautuhi kupuhipa anō.

Ka taea te tono i te mea hōui konei ka huri rānei i tō kupuhipa ā muri i tōtakiuru.

' - NOTERESETPASSWORD: 'Tāurua tō wāhitau īmēra, mā mātou e tuku tētahi hono ki a koe e taea ai te tautuhi anō i tō kupuhipa' - PASSWORDSENTHEADER: 'I tukuna he hono tautuhi kupuhipa anō ki ''{email}''' - PASSWORDSENTTEXT: 'Kia ora! Kua tukuna he hono tautuhi anō ki ''{email}'',engari rā kei te tīariari he pūkete mō taua wāhitau īmēra.' - SecurityAdmin: - ACCESS_HELP: 'Tukuna te tiro, te tāpiri me te whakatika i ngā kaiwhakamahi, me te tautapa anō hoki i ngā whakaaetanga me ngā tūnga ki a rātou.' - APPLY_ROLES: 'Hoatu tūnga ki ngā rōpū' - APPLY_ROLES_HELP: 'Te āhei ki te whakatika tūnga kua tautapatia ki tētahi rōpū. Ka hiahiatia te whakaaetanga "Uru ki te wāhanga ''Ngā Kaiwhakamahi''"' - EDITPERMISSIONS: 'Whakahaere whakaaetanga mō ngā rōpū' - EDITPERMISSIONS_HELP: 'Te āhei ki te whakatika i Ngā Whakaaetanga me Ngā Wāhitau KI mō tētahi rōpū. Ka hiahiatia te whakaaetanga "Uru ki te wāhanga ''Haumarutanga''".' - GROUPNAME: 'Ingoa rōpū' - IMPORTGROUPS: 'Kawea mai ngā rōpū' - IMPORTUSERS: 'Kawe kaiwhakamahi mai' - MEMBERS: 'Ngā Mema' - MENUTITLE: Haumarutanga - MemberListCaution: 'Whakatūpato: Mā te tango mema i tēnei rārangi, ka tangohia i ngā rōpū katoa me te pātengi raraunga' - NEWGROUP: 'Rōpū Hōu' - PERMISSIONS: 'Ngā Whakaaetanga' - ROLES: 'Ngā Tūnga' - ROLESDESCRIPTION: 'Ko ngā tūnga he huinga o ngā whakaaetanga i tautuhia i mua, ā, ka taea te tautapa i ēnei ki ngā rōpū.
I tukuna iho i ngā rōpū matua ki te hiahiatia.' - TABROLES: 'Ngā Tūnga' - Users: 'Ngā Kaiwhakamahi' - SecurityAdmin_MemberImportForm: - BtnImport: 'Kawemai i CSV' - FileFieldLabel: 'Kōnae CSV (Ngā toronga ka whakaaetia: *.csv)' - SilverStripeNavigator: - Edit: Whakatika - SimpleImageField: - NOUPLOAD: 'Kāore He Atahanga Tukuatu' - SiteTree: - TABMAIN: Matua - TableField: - ISREQUIRED: 'Ka hiahiatia te %s i te ''%s'' ' - TableField.ss: - ADD: 'Tāpiri haupae hōu' - ADDITEM: 'Tāpiri %s' - TableListField: - CSVEXPORT: 'Kaweake ki CSV' - PRINT: Tā - Print: Tā - SELECT: 'Tīpako:' - TableListField.ss: - NOITEMSFOUND: 'Kāore i kitea he tūemi' - SORTASC: 'Kōmakatia ki te raupapa aupiki' - SORTDESC: 'Kōmakatia ki te raupapa auheke' - TableListField_PageControls.ss: - DISPLAYING: 'Whakaatu ana' - OF: o - TO: ki - VIEWFIRST: 'Tirohia te tuatahi' - VIEWLAST: 'Tirohia te whakamutunga' - VIEWNEXT: 'Tiro panuku' - VIEWPREVIOUS: 'Tiro tōmua' - TimeField: - VALIDATEFORMAT: 'Tāurua he hōputu wā tika ({format})' - ToggleField: - LESS: 'iti iho' - MORE: 'nui ake' - UploadField: - ATTACHFILE: 'Tāpiritia tētahi kōnae' - ATTACHFILES: 'Tāpiri kōnae' - AttachFile: 'Tāpiritia t/ētahi kōnae' - DELETE: 'Muku i ngā kōnae' - DELETEINFO: 'Muku pūmautia tēnei kōnae i te pātaka kōnae' - DOEDIT: Tiaki - DROPFILE: 'whakamakeretia tētahi kōnae' - DROPFILES: 'taka kōnae' - Dimensions: 'Ngā Rahinga' - EDIT: Whakatika - EDITINFO: 'Whakatikatia tēnei kōnae' - FIELDNOTSET: 'Kāore i kitea te mōhiohio kōnae' - FROMCOMPUTER: 'Mai i tō rorohiko' - FROMCOMPUTERINFO: 'Tīpako mai i ngā kōnae' - FROMFILES: 'I ngā kōnae' - HOTLINKINFO: 'Info: This image will be hotlinked. Please ensure you have permissions from the original site creator to do so.' - MAXNUMBEROFFILES: 'Kua hipa te mōrahi o ngā kōnae {count}.' - MAXNUMBEROFFILESSHORT: 'Ka taea te tukuatu i ngā kōnae {count} anake ' - REMOVE: Tango - REMOVEERROR: 'Kua rarua te tango kōnae' - REMOVEINFO: 'Tangohia tēnei kōane i konei, engari kaua e muku i te pātaka kōnae' - STARTALL: 'Tīmata katoa' - STARTALLINFO: 'Tīmataria ngā tukuatu katoa' - Saved: 'Kua Tiakina' - Versioned: - has_many_Versions: 'Ngā Putanga' diff --git a/lang/nl.yml.orig b/lang/nl.yml.orig deleted file mode 100644 index 423ae54af..000000000 --- a/lang/nl.yml.orig +++ /dev/null @@ -1,556 +0,0 @@ -nl: - AssetAdmin: - ADDFILES: 'Add files' - EditOrgMenu: 'Edit & organize' - NEWFOLDER: 'Nieuwe Map' - AssetTableField: - CREATED: 'Eerste upload' - DIM: Dimensies - FILENAME: Bestandsnaam - FOLDER: Folder - LASTEDIT: 'Laatste wijziging' - OWNER: Eigenaar - SIZE: Grootte - TITLE: Titel - TYPE: Type - URL: URL - AssetUploadField: - ChooseFiles: 'Selecteer bestanden' - DRAGFILESHERE: 'Sleep bestanden hiernaar toe' - DROPAREA: 'Hierheen slepen' - EDITALL: 'Alles bewerken' - EDITANDORGANIZE: 'Bewerk en beheer' - EDITINFO: 'Edit files' - FILES: Bestanden - FROMCOMPUTER: 'Choose files from your computer' - FROMCOMPUTERINFO: 'Upload from your computer' - TOTAL: Totaal - UPLOADINPROGRESS: 'Ogenblikje... bezig met uploaden' - UPLOADOR: OF - BBCodeParser: - ALIGNEMENT: Uitlijning - ALIGNEMENTEXAMPLE: 'rechts uitgelijnd' - BOLD: 'Vetgedrukte tekst' - BOLDEXAMPLE: Vetgedrukt - CODE: 'Code Blok' - CODEDESCRIPTION: 'niet opgemaakt code blok' - CODEEXAMPLE: 'Code Blok' - COLORED: 'Gekleurde tekst' - COLOREDEXAMPLE: 'blauwe tekst' - EMAILLINK: 'Email link' - EMAILLINKDESCRIPTION: 'Maak een koppeling naar een e-mailadres' - IMAGE: Foto - IMAGEDESCRIPTION: 'Toon een afbeelding in uw bericht' - ITALIC: 'Cursieve tekst' - ITALICEXAMPLE: Cursief - LINK: 'Website link' - LINKDESCRIPTION: 'Link naar een andere website of URL' - STRUCK: 'Doorgehaalde tekst' - STRUCKEXAMPLE: Doorgehaald - UNDERLINE: 'Onderstreepte tekst' - UNDERLINEEXAMPLE: Onderstreept - UNORDERED: 'Ongesorteerde lijst' - UNORDEREDDESCRIPTION: 'Ongesorteerde lijst' - UNORDEREDEXAMPLE1: 'ongesorteerd item 1' - BackLink_Button.ss: - Back: Terug - BasicAuth: - ENTERINFO: 'Voer een gebruikers naam en wachtwoord in.' - ERRORNOTADMIN: 'Die gebruiker is geen beheerder.' - ERRORNOTREC: 'De gebruikersnaam en/of wachtwoord wordt niet herkend' - Boolean: - 0: 'False' - ANY: Elke - 1: 'True' - CMSLoadingScreen.ss: - LOADING: Laden... - REQUIREJS: 'The CMS requires that you have JavaScript enabled.' - CMSMain: - ACCESS: 'Toegang tot het ''{title}'' gedeelte' - ACCESSALLINTERFACES: 'Toegang tot alle CMS onderdelen' - ACCESSALLINTERFACESHELP: 'Overstemt meer specifieke toegangsinstellingen' - SAVE: Bewaar - CMSProfileController: - MENUTITLE: CMSProfileController - ChangePasswordEmail.ss: - CHANGEPASSWORDTEXT1: 'U heeft het wachtwoord veranderd voor' - CHANGEPASSWORDTEXT2: 'U kunt nu onderstaande gegevens gebruiken om in te loggen:' - EMAIL: E-mail - HELLO: Hallo - PASSWORD: Wachtwoord - CheckboxField: - - 'False' - - 'True' - ComplexTableField: - CLOSEPOPUP: 'Sluit Popup' - SUCCESSADD2: 'Toegevoegd {name}' - SUCCESSEDIT: '%s %s %s Opgeslagen' - ComplexTableField.ss: - ADDITEM: 'Add %s' - NOITEMSFOUND: 'No items found' - SORTASC: 'Sorteer oplopend' - SORTDESC: 'Sorteer aflopend' - ComplexTableField_popup.ss: - NEXT: Volgende - PREVIOUS: Vorige - 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.' - SHOWONCLICKTITLE: 'Verander wachtwoord' - CreditCardField: - FIRST: eerste - FOURTH: vierde - SECOND: tweede - THIRD: derde - CurrencyField: - CURRENCYSYMBOL: $ - DataObject: - PLURALNAME: 'Gegeven Objecten' - SINGULARNAME: 'Gegeven Object' - Date: - DAY: dag - DAYS: dagen - HOUR: uur - HOURS: uren - MIN: minuut - MINS: minuten - MONTH: maand - MONTHS: maanden - SEC: seconde - SECS: seconden - TIMEDIFFAGO: '{difference} geleden' - TIMEDIFFIN: 'in {difference}' - YEAR: jaar - YEARS: jaren - DateField: - NOTSET: 'niet ingesteld' - TODAY: vandaag - VALIDDATEFORMAT2: 'Vul een valide datum in ({format})' - VALIDDATEMAXDATE: 'De datum moet eerder of gelijk zijn aan de maximale datum ({date})' - VALIDDATEMINDATE: 'De datum moet nieuwer of gelijk zijn aan de minimale datum ({date})' - DatetimeField: - NOTSET: 'Not set' - Director: - INVALID_REQUEST: 'Fout bij verwerken' - DropdownField: - CHOOSE: (Kies) - EmailField: - VALIDATION: 'Please enter an email address' - Email_BounceRecord: - PLURALNAME: 'Onbezorgbare emails' - SINGULARNAME: 'Onbezorgbare email' - Enum: - ANY: Elke - File: - Content: Inhoud - Filename: 'Bestandsnaam ' - INVALIDEXTENSION: 'Extension is not allowed (valid: {extensions})' - INVALIDEXTENSIONSHORT: 'Extension is not allowed' - NOFILESIZE: 'Bestandsgrootte is nul bytes.' - NOVALIDUPLOAD: 'Geen geldig bestand' - Name: Naam - PLURALNAME: Bestanden - SINGULARNAME: Bestand - TOOLARGE: 'Filesize is too large, maximum {size} allowed' - TOOLARGESHORT: 'Filesize exceeds {size}' - Title: 'Titel ' - 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: '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}' - FileIFrameField_iframe.ss: - TITLE: 'Afbeelding uploaden' - Filesystem: - SYNCRESULTS: 'Synchroniseren compleet: {createdcount} bestanden aangemaakt, {deletedcount} bestanden verwijderd.' - Folder: - PLURALNAME: Folders - SINGULARNAME: Folder - ForgotPasswordEmail.ss: - HELLO: Hallo - TEXT1: 'Hier is uw' - TEXT2: 'wachtwoord reset link' - TEXT3: voor - Form: - FIELDISREQUIRED: '%s is verplicht' - SubmitBtnLabel: Go - VALIDATIONCREDITNUMBER: 'Please ensure you have entered the {number} credit card number correctly' - VALIDATIONNOTUNIQUE: 'De ingevoerde waarde is niet uniek' - VALIDATIONPASSWORDSDONTMATCH: 'Wachtwoorden komen niet overeen' - VALIDATIONPASSWORDSNOTEMPTY: 'Wachtwoorden mogen niet leeg zijn' - VALIDATIONSTRONGPASSWORD: 'Passwords must have at least one digit and one alphanumeric character' - VALIDATOR: Controleur - VALIDCURRENCY: 'Please enter a valid currency' - FormField: - NONE: geen - GridAction: - DELETE_DESCRIPTION: Verwijder - Delete: Verwijder - UnlinkRelation: Ontkoppelen - GridField: - Add: '{name} toevoegen' - Filter: Filteren - FilterBy: Filteren - Find: Zoek - LEVELUP: 'Niveau hoger' - LinkExisting: 'Koppelen aan' - NewRecord: 'Nieuw %s' - NoItemsFound: 'Geen items gevonden.' - PRINTEDAT: 'Geprint om' - PRINTEDBY: 'Geprint door' - PlaceHolder: 'Zoek {type}' - PlaceHolderWithLabels: 'Zoek {type} op {name}' - RelationSearch: 'Relation search' - ResetFilter: Herstel - GridFieldAction_Delete: - DeletePermissionsFailure: 'Onvoldoende rechten om te verwijderen' - GridFieldDetailForm: - Create: Create - Delete: Verwijder - DeletePermissionsFailure: 'Onvoldoende rechten om te verwijderen' - Deleted: 'Deleted %s %s' - Save: Opslaan - Saved: '%s %s %s Opgeslagen' - GridFieldItemEditView.ss: null - Group: - AddRole: 'Voeg een rol toe aan deze groep' - Code: 'Groep code' - DefaultGroupTitleAdministrators: Beheerders - DefaultGroupTitleContentAuthors: 'Inhoud Auteurs' - Description: 'Omschrijving ' - GroupReminder: 'Als je de bovenliggende groep selecteert, neemt deze groep alle rollen over' - Locked: 'Gesloten?' - NoRoles: 'Geen rollen gevonden' - PLURALNAME: Groups - Parent: 'Bovenliggende groep' - RolesAddEditLink: 'Toevoegen/wijzigingen rollen' - SINGULARNAME: Group - Sort: Sorteer-richting - has_many_Permissions: Rechten - many_many_Members: Lid - GroupImportForm: - Help1: '

Importeer en of meerdere groepen in CSV formaat (Kommagescheiden bestandsformaat). Toon geavanceerd gebruik

' - Help2: '

Geavanceerd gebruik

' - ResultCreated: 'Created {count} groups' - ResultDeleted: '%d groepen verwijderd' - ResultUpdated: '%d groepen aangepast' - Hierarchy: - InfiniteLoopNotAllowed: 'Infinite loop found within the "{type}" hierarchy. Please change the parent to resolve this' - HtmlEditorField: - ADDURL: 'Voeg URL toe' - ADJUSTDETAILSDIMENSIONS: 'Details $amp; afmeting' - ANCHORVALUE: Anker - BUTTONINSERT: Invoegen - BUTTONINSERTLINK: 'Link invoegen' - BUTTONREMOVELINK: 'Link verwijderen' - BUTTONUpdate: Update - CAPTIONTEXT: Onderschrift - CSSCLASS: 'Uitlijning / stijl' - CSSCLASSCENTER: 'Gecentreerd, op zichzelf staand.' - CSSCLASSLEFT: 'Aan de linkerkant, met tekst eromheen.' - CSSCLASSLEFTALONE: 'Links, losstaand.' - CSSCLASSRIGHT: 'Aan de rechterkant, met tekst eromheen.' - DETAILS: Details - EMAIL: Emailadres - FILE: Bestand - FOLDER: Map - 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: 'Titel tekst (tooltip) - Toon extra informatie over de afbeelding' - IMAGETITLETEXTDESC: 'Titel tekst (tooltip) - Toon extra informatie over de afbeelding' - IMAGEWIDTHPX: Breedte - INSERTMEDIA: Invoegen - LINK: Link - LINKANCHOR: 'Anker op deze pagina' - LINKDESCR: 'Link omschrijving' - LINKEMAIL: Emailadres - LINKEXTERNAL: 'Een andere website' - LINKFILE: 'Een bestand downloaden' - LINKINTERNAL: 'Pagina op deze site' - LINKOPENNEWWIN: 'Link in een nieuw venster openen?' - LINKTO: 'Verwijs naar' - PAGE: Pagina - URL: URL - URLNOTANOEMBEDRESOURCE: 'The URL ''{url}'' could not be turned into a media resource.' - UpdateMEDIA: 'Update Media' - Image: - PLURALNAME: Files - SINGULARNAME: File - ImageField: - IMAGE: Afbeelding - Image_Cached: - PLURALNAME: Files - SINGULARNAME: File - Image_iframe.ss: - TITLE: 'Afbeelding uploaden' - LeftAndMain: - CANT_REORGANISE: 'You do not have permission to alter Top level pages. Your change was not saved.' - DELETED: Verwijderd. - 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.' - PERMALREADY: 'Helaas, dat deel van het CMS is niet toegankelijk voor U. Hieronder kunt U als iemand anders inloggen.' - PERMDEFAULT: 'Geef uw e-mailadres en wachtwoord voor toegang tot het CMS.' - PLEASESAVE: 'Deze pagina kon niet bijgewerkt worden, omdat deze nog niet is bewaard.' - PreviewButton: Preview - REORGANISATIONSUCCESSFUL: 'Menu-indeling is aangepast' - SAVEDUP: 'Succesvol opgeslagen' - VersionUnknown: onbekend - LeftAndMain_Menu.ss: - Hello: Hi - LOGOUT: 'Log out' - LoginAttempt: - Email: 'Email adres ' - IP: 'IP Adres' - PLURALNAME: 'Login Attempts' - SINGULARNAME: 'Login Attempt' - Status: Status - Member: - ADDGROUP: 'Groep toevoegen' - BUTTONCHANGEPASSWORD: 'Wachtwoord veranderen' - BUTTONLOGIN: Inloggen - BUTTONLOGINOTHER: 'Als iemand anders inloggen' - BUTTONLOSTPASSWORD: 'Ik ben mijn wachtwoord vergeten...' - CONFIRMNEWPASSWORD: 'Bevestig het nieuwe wachtwoord' - CONFIRMPASSWORD: 'Bevestig wachtwoord' - DATEFORMAT: 'Date format' - DefaultAdminFirstname: 'Standaard Beheerder' - 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.' - ERRORLOCKEDOUT: 'Je account is tijdelijk geblokkeerd wegens te veel mislukte pogingen tot aanmelding. Gelieve het over 20 minuten opnieuw te proberen.' - ERRORNEWPASSWORD: 'Het nieuwe wachtwoord komt niet overeen met de bevestiging, probeer het nogmaals' - ERRORPASSWORDNOTMATCH: 'Huidige wachtwoord kom niet overeen, probeer het nogmaals' - ERRORWRONGCRED: 'Dat is niet het juiste email adres of wachtwoord. Probeert U het a.u.b. opnieuw.' - FIRSTNAME: Voornaam - INTERFACELANG: 'Interface Taal' - INVALIDNEWPASSWORD: 'Het wachtwoord {password} is niet geldig' - LOGGEDINAS: 'U bent ingelogd als {name}.' -<<<<<<< HEAD - NEWPASSWORD: 'Nieuw Wachtwoord' -======= - NEWPASSWORD: 'Nieuw wachtwoord' ->>>>>>> origin/translation-staging - PASSWORD: Wachtwoord - PLURALNAME: Leden - PROFILESAVESUCCESS: 'Succesvol opgeslagen' - REMEMBERME: 'Wachtwoord onthouden voor de volgende keer?' - SINGULARNAME: Lid - SUBJECTPASSWORDCHANGED: 'Uw wachtwoord is veranderd' - SUBJECTPASSWORDRESET: 'Link om Uw wachtwoord opnieuw aan te maken' - SURNAME: Achternaam - TIMEFORMAT: 'Time format' - VALIDATIONMEMBEREXISTS: 'Er bestaat reeds een gebruiker met dit emailadres' - ValidationIdentifierFailed: 'Een bestaande gebruiker #{id} kan niet dezelfde unieke velden hebben ({name} = {value}))' - WELCOMEBACK: 'Welkom terug {firstname}' - YOUROLDPASSWORD: 'Uw oude wachtwoord' - belongs_many_many_Groups: Groepen - db_LastVisited: 'Datum van het laatste bezoek' - db_Locale: 'Interface taal' - db_LockedOutUntil: 'Gesloten tot' - db_NumVisit: 'Aantal bezoeken' - db_Password: Wachtwoord - db_PasswordExpiry: 'Wachtwoord Vervaldatum' - MemberAuthenticator: - TITLE: 'Email & Wachtwoord' - MemberDatetimeOptionsetField: - AMORPM: 'AM (Ante meridiem) or PM (Post meridiem)' - 'APPLY FILTER': 'Filter toepassen' - 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: Voorbeeld - SHORTMONTH: 'Short name of month (e.g. Jun)' - TOGGLEHELP: 'Toggle formatting help' - TWODIGITDAY: 'Two-digit day of month' - 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: 'Twee-cijferig jaar' - MemberImportForm: - Help1: '

Importeer leden in CSV formaat (Kommagescheiden bestandsformaat). Toon geavanceerd gebruik

' - Help2: '

Geavanceerd gebruik

' - ResultCreated: 'Created {count} members' - ResultDeleted: '%d leden verwijderd' - ResultNone: 'Geen wijzingen' - ResultUpdated: 'Updated {count} members' - MemberPassword: - PLURALNAME: 'Member Passwords' - SINGULARNAME: 'Member Password' - MemberTableField: null - ModelAdmin: - DELETE: Verwijderen - DELETEDRECORDS: 'Deleted {count} records.' - IMPORT: 'Importeren vanuit CSV' - IMPORTEDRECORDS: 'Imported {count} records.' - NOCSVFILE: 'Selecteer een CSV bestand op uw computer om te importeren' - NOIMPORT: 'Niks om te importeren' - RESET: Reset - Title: 'Data Models' - UPDATEDRECORDS: 'Updated {count} records.' - ModelAdmin_ImportSpec.ss: - IMPORTSPECFIELDS: 'Database columns' - IMPORTSPECLINK: 'Show Specification for %s' - IMPORTSPECRELATIONS: Relations - IMPORTSPECTITLE: 'Specification for %s' - ModelAdmin_Tools.ss: - FILTER: Filter - IMPORT: Importeer - ModelSidebar.ss: - IMPORT_TAB_HEADER: Importeer - SEARCHLISTINGS: Zoeken - MoneyField: - FIELDLABELAMOUNT: Aantal - FIELDLABELCURRENCY: Valuta - NullableField: - IsNullLabel: 'is nul' - NumericField: - VALIDATION: '''{value}'' is not a number, only numbers can be accepted for this field' - Pagination: - Page: Page - View: View - Permission: - AdminGroup: Beheerder - CMS_ACCESS_CATEGORY: 'CMS Toegang' - FULLADMINRIGHTS: 'Volledige admin rechten' - FULLADMINRIGHTS_HELP: 'Impliceert en overstemt alle andere toegewezen rechten.' - PLURALNAME: Permissions - SINGULARNAME: Permission - PermissionCheckboxSetField: - AssignedTo: 'assigned to "{title}"' - FromGroup: 'inherited from group "{title}"' - FromRole: 'inherited from role "{title}"' - FromRoleOnGroup: 'geërfd van rol "%s" in groep "%s"' - PermissionRole: - PLURALNAME: Roles - SINGULARNAME: Role - PermissionRoleCode: - PLURALNAME: 'Permission Role Cods' - SINGULARNAME: 'Permission Role Code' - Permissions: - PERMISSIONS_CATEGORY: 'Rollen en toegangsrechten' - PhoneNumberField: - VALIDATION: 'Voer een geldig telefoonnummer in' - RelationComplexTableField.ss: - ADD: Toevoegen - CSVEXPORT: 'Export to CSV' - NOTFOUND: 'No items found' - Security: - ALREADYLOGGEDIN: 'Je hebt niet de juiste rechten, om deze pagina te kunnen bekijken. Als je een ander account met de juiste rechten hebt, kun je hier opnieuw inloggen.' - BUTTONSEND: 'Zend mij de link om mijn wachtwoord opnieuw aan te maken' - CHANGEPASSWORDBELOW: 'U kunt Uw wachtwoord hier beneden veranderen.' - CHANGEPASSWORDHEADER: 'Verander Uw wachtwoord' - ENTERNEWPASSWORD: 'Voer een nieuw wachtwoord in.' - ERRORPASSWORDPERMISSION: 'U moet ingelogd zijn om Uw wachtwoord te kunnen veranderen!' - LOGGEDOUT: 'U bent uitgelogd. Als U weer wilt inloggen kunt U Uw gegevens hier beneden invoeren.' - LOGIN: 'Meld aan' - NOTEPAGESECURED: 'Deze pagina is beveiligd. Voer Uw gegevens in en U wordt automatisch doorgestuurd.' - NOTERESETLINKINVALID: '

De link om uw wachtwoord te kunnen wijzigen is niet meer geldig.

U kunt het opnieuw proberen of uw wachtwoord aanpassen door in te loggen.

' - NOTERESETPASSWORD: 'Voer Uw emailadres in en we zenden U een link waarmee U Uw wachtwoord opnieuw kunt aanmaken' - 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: 'Bevoegdheid voor bekijken, toevoegen en bewerken van leden, en toewijzen van rechten en rollen aan hen.' - APPLY_ROLES: 'Pas rollen toe aan groepen' - APPLY_ROLES_HELP: 'Bewerkingsmogelijkheid van rollen voor groepen. Heeft rechten voor "Beveiligingsectie" nodig.' - 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: Groepen - IMPORTUSERS: 'Importeer gebruikers' - MEMBERS: Leden - MENUTITLE: Beveiliging - MemberListCaution: 'Let op: Verwijderen van leden van deze lijst heeft als gevolg dat deze uit alle groepen en de database worden verwijderd' - NEWGROUP: 'Nieuwe Groep' - PERMISSIONS: Rechten - 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: Gebruikers - SecurityAdmin_MemberImportForm: - BtnImport: Importeer - FileFieldLabel: 'CSV Bestand (Toegestane extensies: *.csv)' - SilverStripeNavigator: - Edit: Bewerken - SimpleImageField: - NOUPLOAD: 'Geen afbeeldingen ontvangen' - SiteTree: - TABMAIN: Hoofdgedeelte - TableField: - ISREQUIRED: 'In %s ''%s'' is required' - TableField.ss: - ADD: 'Nieuwe rij toevoegen' - ADDITEM: 'Add %s' - TableListField: - CSVEXPORT: 'Exporteer naar CSV' - PRINT: Afdrukken - Print: Print - SELECT: 'Selecteer:' - TableListField.ss: - NOITEMSFOUND: 'No items found' - SORTASC: 'Sorteer in oplopende volgorde' - SORTDESC: 'Sorteer in aflopende volgorde' - TableListField_PageControls.ss: - DISPLAYING: Displaying - OF: of - TO: to - VIEWFIRST: 'Bekijk eerste' - VIEWLAST: 'Bekijk laatste' - VIEWNEXT: 'Bekijk volgende' - VIEWPREVIOUS: 'Bekijk vorige' - TimeField: - VALIDATEFORMAT: 'Vul een valide datum in ({format})' - ToggleField: - LESS: minder - MORE: meer - UploadField: - ATTACHFILE: 'Voeg een bestand toe' - ATTACHFILES: 'Voeg bestanden toe' - AttachFile: 'Voeg bestanden toe' - DELETE: 'Delete from files' - DELETEINFO: 'Verwijder dit bestand uit bestandsopslag van de website.' - DOEDIT: Bewaar - DROPFILE: 'Bestand hiernaar toe slepen' - DROPFILES: 'Sleep hier je bestanden' - Dimensions: Afmetingen - EDIT: Edit - EDITINFO: 'Bewerk dit bestand' - FIELDNOTSET: 'Bestandsinformatie niet gevonden' - FROMCOMPUTER: 'Vanaf computer' - FROMCOMPUTERINFO: 'Select from files' - FROMFILES: 'Bestaande bestanden' - HOTLINKINFO: 'Info: This image will be hotlinked. Please ensure you have permissions from the original site creator to do so.' - MAXNUMBEROFFILES: 'Het maximale aantal ({count}) bestanden is overschreven' - MAXNUMBEROFFILESSHORT: 'Maximaal {count} bestanden uploaden' - REMOVE: Verwijder - REMOVEERROR: 'Fout bij verwijderen' - REMOVEINFO: 'Verwijder (ontkoppel) dit bestand, maar behoud het in bestandsopslag van de website.' - STARTALL: 'Start alles' - STARTALLINFO: 'Start all uploads' - Saved: 'Succesvol opgeslagen' - Versioned: - has_many_Versions: Versies diff --git a/lang/ru.yml.orig b/lang/ru.yml.orig deleted file mode 100644 index 28d5b11b2..000000000 --- a/lang/ru.yml.orig +++ /dev/null @@ -1,586 +0,0 @@ -ru: - AssetAdmin: - ADDFILES: 'Add files' - EditOrgMenu: 'Edit & organize' - NEWFOLDER: 'Новая папка' - AssetTableField: - CREATED: 'Первая загрузка' - DIM: Размеры - FILENAME: 'Имя файла' - FOLDER: Folder - LASTEDIT: 'Последнее изменение' - OWNER: Владелец - SIZE: Размер - TITLE: Название - TYPE: Тип - URL: URL - AssetUploadField: - ChooseFiles: 'Выбрать файлы' - DRAGFILESHERE: 'Перетащите файлы сюда' - DROPAREA: 'Drop Area' - EDITALL: 'Редактировать все' - EDITANDORGANIZE: 'Edit & organize' - EDITINFO: 'Edit files' - FILES: Файлы - FROMCOMPUTER: 'Choose files from your computer' - FROMCOMPUTERINFO: 'Upload from your computer' - TOTAL: 'Всего:' - UPLOADINPROGRESS: 'Please wait… upload in progress' - UPLOADOR: ИЛИ - BBCodeParser: - ALIGNEMENT: Выравнивание - ALIGNEMENTEXAMPLE: 'Выравнено по правому краю' - BOLD: 'Жирный текст' - BOLDEXAMPLE: Жирный - CODE: 'Блок кода' - CODEDESCRIPTION: 'Блок неформатированного кода' - CODEEXAMPLE: 'Блок кода' - COLORED: 'Цветной текст' - COLOREDEXAMPLE: 'голубой текст' - EMAILLINK: 'Ссылка email' - EMAILLINKDESCRIPTION: 'Создать ссылку на этот email' - IMAGE: Изображение - IMAGEDESCRIPTION: 'Показать изображ. в записи' - ITALIC: Курсив - ITALICEXAMPLE: Курсив - LINK: 'Сссылка с сайта' - LINKDESCRIPTION: 'Ссылка на другой сайт или URL' - STRUCK: 'Перечеркнутый текст' - STRUCKEXAMPLE: Перечеркнутый - UNDERLINE: 'Подчеркнутый текст' - UNDERLINEEXAMPLE: Подчеркнутый - UNORDERED: 'Ненумерованный список' - UNORDEREDDESCRIPTION: 'Ненумерованный список' - UNORDEREDEXAMPLE1: 'ненумерованный элемент 1' - BackLink_Button.ss: - Back: Назад - BasicAuth: - ENTERINFO: 'Пожалуйста, введите имя пользователя и пароль.' - ERRORNOTADMIN: 'Такой пользователь не является администратором.' - ERRORNOTREC: 'Такое имя пользователя или пароль не существует' - Boolean: - 0: 'False' - ANY: Any - 1: 'True' - CMSLoadingScreen.ss: - LOADING: 'Идет загрузка...' - REQUIREJS: 'The CMS requires that you have JavaScript enabled.' - CMSMain: - ACCESS: 'Доступ к разделу ''{title}''' - ACCESSALLINTERFACES: 'Доступ ко всему интерфейсу CMS' - ACCESSALLINTERFACESHELP: 'Overrules more specific access settings.' - SAVE: Сохранить - CMSProfileController: - MENUTITLE: CMSProfileController - ChangePasswordEmail.ss: - CHANGEPASSWORDTEXT1: 'Вы изменили свой пароль на' - CHANGEPASSWORDTEXT2: 'Для того, чтобы войти, используйте сейчас следующие учетные данные:' - EMAIL: Email - HELLO: Здравствуйте - PASSWORD: Пароль - CheckboxField: - - 'False' - - 'True' - ComplexTableField: - CLOSEPOPUP: 'Закрыть всплывающее окно' - SUCCESSADD2: 'Added {name}' - SUCCESSEDIT: 'Сохранено %s %s %s' - ComplexTableField.ss: - ADDITEM: 'Add %s' - NOITEMSFOUND: 'No items found' - SORTASC: 'Сортировать по возрастанию' - SORTDESC: 'Сортировать по убыванию' - ComplexTableField_popup.ss: - NEXT: Следующ. - PREVIOUS: Предыдущ. - ConfirmedPasswordField: - ATLEAST: 'Пароль должен быть не короче {min} символов.' - BETWEEN: 'Passwords must be {min} to {max} characters long.' - MAXIMUM: 'Пароль должен быть не длиннее {max} символов.' - SHOWONCLICKTITLE: 'Изменить Пароль' - CreditCardField: - FIRST: первая - FOURTH: четвертая - SECOND: вторая - THIRD: третья - CurrencyField: - CURRENCYSYMBOL: $ - DataObject: - PLURALNAME: Объекты - SINGULARNAME: Объект - Date: - DAY: день - DAYS: дней - HOUR: час - HOURS: час. - MIN: мин. - MINS: мин. - MONTH: месяц - MONTHS: месяца(ев) - SEC: сек. - SECS: сек. - TIMEDIFFAGO: '{difference} назад' - TIMEDIFFIN: 'in {difference}' - YEAR: год - YEARS: лет - DateField: - NOTSET: 'не установлено' - 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})' - DatetimeField: - NOTSET: 'Not set' - Director: - INVALID_REQUEST: 'Неверный запрос' - DropdownField: - CHOOSE: (Выберите) - EmailField: - VALIDATION: 'Please enter an email address' - Email_BounceRecord: - PLURALNAME: 'Email Bounce Records' - SINGULARNAME: 'Email Bounce Record' - Enum: - ANY: Любой - File: - Content: Содержание - Filename: 'Имя файла' - INVALIDEXTENSION: 'Недопустимое расширение файла (допустимые расширения: {extensions})' - INVALIDEXTENSIONSHORT: 'Недопустимое расширение файла' - NOFILESIZE: 'Размер файла 0 байт.' - NOVALIDUPLOAD: 'File is not a valid upload' - Name: Название - PLURALNAME: Файлы - SINGULARNAME: Файл - TOOLARGE: 'Filesize is too large, maximum {size} allowed' - TOOLARGESHORT: 'Filesize exceeds {size}' - Title: Заголовок - 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' - FILE: Файл - FROMCOMPUTER: 'From your Computer' - FROMFILESTORE: 'From the File Store' - NOSOURCE: 'Please select a source file to attach' - REPLACE: 'Replace {type}' - FileIFrameField_iframe.ss: - TITLE: 'Image Uploading Iframe' - Filesystem: -<<<<<<< HEAD - SYNCRESULTS: 'Sync complete: {createdcount} items created, {deletedcount} items deleted' -======= - SYNCRESULTS: 'Синхронизация завершена; создано элементов: {createdcount}, удалено элементов: {deletedcount}' ->>>>>>> origin/translation-staging - Folder: - PLURALNAME: Folders - SINGULARNAME: Folder - ForgotPasswordEmail.ss: - HELLO: Здравствуйте - TEXT1: 'Это ваша' - TEXT2: 'ссылка переустановки пароля' - TEXT3: для - Form: - FIELDISREQUIRED: 'Поле %s является обязательным' - SubmitBtnLabel: Go - VALIDATIONCREDITNUMBER: 'Please ensure you have entered the {number} credit card number correctly' - VALIDATIONNOTUNIQUE: 'Введенное значение не уникально' - VALIDATIONPASSWORDSDONTMATCH: 'Пароли не совпадают' - VALIDATIONPASSWORDSNOTEMPTY: 'Пароли не могут быть пустыми' - VALIDATIONSTRONGPASSWORD: 'Passwords must have at least one digit and one alphanumeric character' - VALIDATOR: Валидатор - VALIDCURRENCY: 'Please enter a valid currency' - FormField: - NONE: 'не выбрано' - GridAction: - DELETE_DESCRIPTION: Delete - Delete: Delete - UnlinkRelation: Unlink - GridField: - Add: 'Добавить {name}' - Filter: Filter - FilterBy: 'Фильтровать по' - Find: Find - LEVELUP: 'Уровень выше' - LinkExisting: 'Link Existing' - NewRecord: 'New %s' - NoItemsFound: 'No items found' - PRINTEDAT: 'Printed at' - PRINTEDBY: 'Printed by' - PlaceHolder: 'Найти {type}' - PlaceHolderWithLabels: 'Find {type} by {name}' - RelationSearch: 'Relation search' - ResetFilter: Reset - GridFieldAction_Delete: - DeletePermissionsFailure: 'No delete permissions' - GridFieldDetailForm: - Create: Создать - Delete: Удалить - DeletePermissionsFailure: 'No delete permissions' - Deleted: 'Deleted %s %s' - Save: Сохранить - Saved: 'Сохранено %s %s' - GridFieldItemEditView.ss: null - Group: - AddRole: 'Добавить роль для этой группы' - Code: 'Код группы' - DefaultGroupTitleAdministrators: Администраторы - DefaultGroupTitleContentAuthors: Авторы - Description: Описание - GroupReminder: 'If you choose a parent group, this group will take all it''s roles' - Locked: 'Блокировано?' -<<<<<<< HEAD - NoRoles: 'No roles found' -======= - NoRoles: 'Ролей не найдено' ->>>>>>> origin/translation-staging - PLURALNAME: Groups - Parent: 'Родительская группа' - RolesAddEditLink: 'Добавить/редактировать роли' - SINGULARNAME: Group - Sort: 'Порядок сортировки' - has_many_Permissions: 'Права групп пользователей' - many_many_Members: 'Члены группы' - GroupImportForm: - Help1: '

Import one or more groups in CSV format (comma-separated values). Show advanced usage

' - Help2: '

Advanced usage

' - ResultCreated: 'Создано {count} групп' - ResultDeleted: 'Deleted %d groups' - ResultUpdated: 'Updated %d groups' - Hierarchy: - InfiniteLoopNotAllowed: 'Infinite loop found within the "{type}" hierarchy. Please change the parent to resolve this' - HtmlEditorField: - ADDURL: 'Добавить URL' - ADJUSTDETAILSDIMENSIONS: 'Details & dimensions' - ANCHORVALUE: Якорь - BUTTONINSERT: Insert - BUTTONINSERTLINK: 'Вставить ссылку' - BUTTONREMOVELINK: 'Удалить ссылку' - BUTTONUpdate: Update - CAPTIONTEXT: 'Caption text' - CSSCLASS: Выравнивание/Стиль - CSSCLASSCENTER: 'По центру без текста по бокам' - CSSCLASSLEFT: 'Слева с обтеканием текста' - CSSCLASSLEFTALONE: 'Независимо слева.' - CSSCLASSRIGHT: 'Справа с обтеканием текста' - DETAILS: Details - EMAIL: 'Адрес email' - FILE: Файл - FOLDER: Папка - FROMCMS: 'From the CMS' - FROMCOMPUTER: 'From your computer' - FROMWEB: 'From the web' - FindInFolder: 'Найти в папке' - IMAGEALT: 'Альтернативный текст (alt)' - IMAGEALTTEXT: 'Альтернативный текст (alt) - показывается, если изображение недоступно' - IMAGEALTTEXTDESC: 'Shown to screen readers or if image can not be displayed' - IMAGEDIMENSIONS: Размеры - IMAGEHEIGHTPX: Высота - IMAGETITLE: 'Title text (tooltip) - for additional information about the image' - IMAGETITLETEXT: 'Title text (tooltip)' - IMAGETITLETEXTDESC: 'For additional information about the image' - IMAGEWIDTHPX: Ширина - INSERTMEDIA: 'Insert Media' - LINK: Ссылка - LINKANCHOR: 'Якорь на этой странице' - LINKDESCR: 'Описание ссылки' - LINKEMAIL: 'Адрес email' - LINKEXTERNAL: 'Другой сайт' - LINKFILE: 'Скачивание файла' - LINKINTERNAL: 'Страницу данного сайта' - LINKOPENNEWWIN: 'Открыть ссылку в новом окне?' - LINKTO: 'Ссылка на' - PAGE: Страница - URL: URL - URLNOTANOEMBEDRESOURCE: 'The URL ''{url}'' could not be turned into a media resource.' - UpdateMEDIA: 'Update Media' - Image: -<<<<<<< HEAD - PLURALNAME: Files - SINGULARNAME: File -======= - PLURALNAME: Файлы - SINGULARNAME: Файл ->>>>>>> origin/translation-staging - ImageField: - IMAGE: Image - Image_Cached: - PLURALNAME: Files - SINGULARNAME: File - Image_iframe.ss: - TITLE: 'Iframe загрузки изображений' - LeftAndMain: - CANT_REORGANISE: 'У вас нет права редактировать страницы верхнего уровня. Изменения не были сохранены.' - DELETED: Удалено. - DropdownBatchActionsDefault: Actions - HELP: Помощь - PAGETYPE: 'Тип страницы:' - PERMAGAIN: 'Вы вышли из Системы Управления Сайтом. Если Вы хотите войти снова, введите внизу имя пользователя и пароль.' - PERMALREADY: 'Извините, у вас нет доступа к этому разделу Системы Управления. Если Вы хотите войти под другой учетной записью, сделайте это ниже' - PERMDEFAULT: 'Введите ваши адрес электр. почты и пароль для доступа к системе.' - PLEASESAVE: 'Пожалуйста, сохраните страницу: ее нельзя обновить, т.к. она еще не была сохранена.' - PreviewButton: Просмотр - REORGANISATIONSUCCESSFUL: 'Reorganised the site tree successfully.' - SAVEDUP: Сохранено. - VersionUnknown: unknown - LeftAndMain_Menu.ss: - Hello: Hi - LOGOUT: 'Log out' - LoginAttempt: - Email: Email - IP: IP-адрес - PLURALNAME: 'Login Attempts' - SINGULARNAME: 'Login Attempt' - Status: Статус - Member: - ADDGROUP: 'Добавить группу' - BUTTONCHANGEPASSWORD: 'Изменить пароль' - BUTTONLOGIN: Войти - BUTTONLOGINOTHER: 'Войти под другим именем' - BUTTONLOSTPASSWORD: 'Я забыл пароль' - CONFIRMNEWPASSWORD: 'Подтвердить новый пароль' - CONFIRMPASSWORD: 'Подтвердить пароль' - DATEFORMAT: 'Date format' - DefaultAdminFirstname: 'Default Admin' - DefaultDateTime: 'по умолчанию' - EMAIL: Email - EMPTYNEWPASSWORD: 'Поле для нового пароля не может быть пустым; пожалуйста, повторите попытку' - ENTEREMAIL: 'Введите email, чтобы получить ссылку на сброс пароля.' - ERRORLOCKEDOUT: 'Ваша учетная запись временно заблокирована из-за слишком большого количества неудачных попыток авторизации. Пожалуйста, попытайтесь снова через 20 минут.' - ERRORNEWPASSWORD: 'Вы ввели Ваш новый пароль по-разному, попробуйте снова' - ERRORPASSWORDNOTMATCH: 'Введенный пароль неверен, попробуйте снова' - ERRORWRONGCRED: 'Вероятно адрес email или пароль введены неверно. Попробуйте снова.' - FIRSTNAME: Имя - INTERFACELANG: 'Язык интерфейса' - INVALIDNEWPASSWORD: 'Недопустимый пароль: {password}' - LOGGEDINAS: 'Вы вошли в систему как {name}.' - NEWPASSWORD: 'Новый пароль' - PASSWORD: Пароль - PLURALNAME: 'Члены группы' - PROFILESAVESUCCESS: 'Сохранение прошло успешно' - REMEMBERME: 'Запомнить меня?' - SINGULARNAME: 'Член группы' - SUBJECTPASSWORDCHANGED: 'Ваш пароль изменен' - SUBJECTPASSWORDRESET: 'Ссылка для переустановки пароля' - SURNAME: Фамилия -<<<<<<< HEAD - TIMEFORMAT: 'Time format' -======= - TIMEFORMAT: 'Формат времени' ->>>>>>> origin/translation-staging - VALIDATIONMEMBEREXISTS: 'Этот адрес email уже зарегистрирован' - ValidationIdentifierFailed: 'Can''t overwrite existing member #{id} with identical identifier ({name} = {value}))' - WELCOMEBACK: 'Добро пожаловать, {firstname}' - YOUROLDPASSWORD: 'Ваш прежний пароль' - belongs_many_many_Groups: Группы - db_LastVisited: 'Дата последнего видита' - db_Locale: 'Локаль интерфейса' - db_LockedOutUntil: 'Заблокировано до' - db_NumVisit: 'Количество посещений' - db_Password: Пароль - db_PasswordExpiry: 'Дата устаревания пароля' - MemberAuthenticator: - TITLE: 'Email и Пароль' - MemberDatetimeOptionsetField: - AMORPM: 'AM (Ante meridiem) or PM (Post meridiem)' -<<<<<<< HEAD - 'APPLY FILTER': 'Apply Filter' -======= - 'APPLY FILTER': 'Применить фильтр' ->>>>>>> origin/translation-staging - 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' - MemberImportForm: - Help1: '

Import users in CSV format (comma-separated values). Show advanced usage

' - Help2: '

Advanced usage

' - ResultCreated: 'Создано {count} пользователей' - ResultDeleted: 'Deleted %d members' - ResultNone: 'No changes' - ResultUpdated: 'Updated {count} members' - MemberPassword: - PLURALNAME: 'Member Passwords' - SINGULARNAME: 'Member Password' - MemberTableField: null - ModelAdmin: - DELETE: Удалить - DELETEDRECORDS: 'Deleted {count} records.' - IMPORT: 'Импорт из CSV' - IMPORTEDRECORDS: 'Imported {count} records.' - NOCSVFILE: 'Выберите CSV-файл для импорта' - NOIMPORT: 'Нечего импортировать' - RESET: Reset - Title: 'Data Models' - UPDATEDRECORDS: 'Updated {count} records.' - ModelAdmin_ImportSpec.ss: - IMPORTSPECFIELDS: 'Database columns' - IMPORTSPECLINK: 'Show Specification for %s' - IMPORTSPECRELATIONS: Relations - IMPORTSPECTITLE: 'Specification for %s' - ModelAdmin_Tools.ss: - FILTER: Filter - IMPORT: Import - ModelSidebar.ss: - IMPORT_TAB_HEADER: Import - SEARCHLISTINGS: Search - MoneyField: - FIELDLABELAMOUNT: Amount - FIELDLABELCURRENCY: Currency - NullableField: - IsNullLabel: Недействительно - NumericField: - VALIDATION: '''{value}'' is not a number, only numbers can be accepted for this field' - Pagination: - Page: Page - View: View - Permission: - AdminGroup: Administrator - CMS_ACCESS_CATEGORY: 'Доступ к CMS' - FULLADMINRIGHTS: 'Все права администратора' - FULLADMINRIGHTS_HELP: 'Implies and overrules all other assigned permissions.' - PLURALNAME: Permissions -<<<<<<< HEAD - SINGULARNAME: Permission -======= - SINGULARNAME: 'Право доступа' ->>>>>>> origin/translation-staging - PermissionCheckboxSetField: - AssignedTo: 'assigned to "{title}"' - FromGroup: 'inherited from group "{title}"' - FromRole: 'inherited from role "{title}"' - FromRoleOnGroup: 'inherited from role "%s" on group "%s"' - PermissionRole: - PLURALNAME: Roles - SINGULARNAME: Role - PermissionRoleCode: - PLURALNAME: 'Permission Role Cods' - SINGULARNAME: 'Permission Role Code' - Permissions: - PERMISSIONS_CATEGORY: 'Роли и разрешения доступа' - PhoneNumberField: - VALIDATION: 'Пожалуйста, введите верный номер телефона' - RelationComplexTableField.ss: - ADD: Добавить - CSVEXPORT: 'Export to CSV' - NOTFOUND: 'No items found' - Security: - ALREADYLOGGEDIN: 'У Вас нет доступа к этой странице. Если у вас имеется другая учетная запись, имеющая доступ к этой странице, введите ее данные ниже.' - BUTTONSEND: 'Отправить мне ссылку переустановки пароля' - CHANGEPASSWORDBELOW: 'Ниже Вы можете изменить свой пароль.' - CHANGEPASSWORDHEADER: 'Измените свой пароль' - ENTERNEWPASSWORD: 'Пожалуйста, введите новый пароль.' - ERRORPASSWORDPERMISSION: 'Вы должны войти в систему, чтобы изменить Ваш пароль!' - LOGGEDOUT: 'Вы вышли. Если Вы хотите войти снова, введите ваши учетные данные ниже.' - LOGIN: Вход - 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: 'Введите Ваш адрес email, и Вам будет отправлена ссылка, по которой Вы сможете переустановить свой пароль' - PASSWORDSENTHEADER: 'Ссылка для переустановки пароля выслана на ''{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.' - APPLY_ROLES: 'Apply roles to groups' - APPLY_ROLES_HELP: 'Возможность редактировать роли, присвоенные той или иной группе. Необходимо разрешение на доступ к разделу "Пользователи".' - EDITPERMISSIONS: 'Задать разрешения и IP адреса для каждой группы' - EDITPERMISSIONS_HELP: 'Возможность редактировать права доступа и IP-адреса определенной группы. Необходимо разрешение на доступ к разделу "Безопасность".' - GROUPNAME: 'Имя группы' - IMPORTGROUPS: 'Импортировать группы' - IMPORTUSERS: 'Импортировать пользователей' - MEMBERS: Участники - MENUTITLE: Безопасность - MemberListCaution: 'Внимание: при удалении участников из этого списка они будут удалены из всех групп и из базы данных' - NEWGROUP: 'Новая группа' - PERMISSIONS: 'Права доступа' - ROLES: Роли - ROLESDESCRIPTION: 'Roles are predefined sets of permissions, and can be assigned to groups.
They are inherited from parent groups if required.' - TABROLES: Роли - Users: Пользователи - SecurityAdmin_MemberImportForm: - BtnImport: 'Import from CSV' - FileFieldLabel: 'CSV File (Allowed extensions: *.csv)' - SilverStripeNavigator: - Edit: Edit - SimpleImageField: - NOUPLOAD: 'Не загружено ни одного изображения' - SiteTree: - TABMAIN: Основное - TableField: - ISREQUIRED: 'In %s ''%s'' is required' - TableField.ss: - ADD: 'Добавить новый ряд' - ADDITEM: 'Add %s' - TableListField: - CSVEXPORT: 'Экспорт в CSV' - PRINT: Печать - Print: Печать - SELECT: 'Выбрать:' - TableListField.ss: - NOITEMSFOUND: 'No items found' - SORTASC: 'По возрастанию' - SORTDESC: 'По убыванию' - TableListField_PageControls.ss: - DISPLAYING: Displaying - OF: of - TO: to - VIEWFIRST: Первый - VIEWLAST: Последний - VIEWNEXT: Следующий - VIEWPREVIOUS: Предыдущий - TimeField: - VALIDATEFORMAT: 'Please enter a valid time format ({format})' - ToggleField: - LESS: меньше - MORE: больше - UploadField: - ATTACHFILE: 'Прикрепить файл' - ATTACHFILES: 'Прикрепить файл(ы)' - AttachFile: 'Прикрепить файл(ы)' - DELETE: 'Delete from files' - DELETEINFO: 'Permanently delete this file from the file store' - DOEDIT: Сохранить - DROPFILE: 'drop a file' - DROPFILES: 'drop files' - Dimensions: Dimensions - EDIT: Edit - EDITINFO: 'Редактировать этот файл' - FIELDNOTSET: 'Информация о файле не найдена' - FROMCOMPUTER: 'С компьютера' - FROMCOMPUTERINFO: 'Select from files' -<<<<<<< HEAD - FROMFILES: 'From files' - HOTLINKINFO: 'Info: This image will be hotlinked. Please ensure you have permissions from the original site creator to do so.' - MAXNUMBEROFFILES: 'Max number of {count} file(s) exceeded.' - MAXNUMBEROFFILESSHORT: 'Can only upload {count} files' - REMOVE: Remove - REMOVEERROR: 'Error removing file' -======= - FROMFILES: 'Из файлов' - HOTLINKINFO: 'Info: This image will be hotlinked. Please ensure you have permissions from the original site creator to do so.' - MAXNUMBEROFFILES: 'Превышено максимальное количество файлов ({count}).' - MAXNUMBEROFFILESSHORT: 'Можно загрузить не более {count} файлов' - REMOVE: Удалить - REMOVEERROR: 'Ошибка при удалении файла' ->>>>>>> origin/translation-staging - REMOVEINFO: 'Remove this file from here, but do not delete it from the file store' - STARTALL: 'Стартовать все' - STARTALLINFO: 'Start all uploads' - Saved: Saved - Versioned: - has_many_Versions: Версии diff --git a/model/DataExtension.php b/model/DataExtension.php index b2dae0611..d975f7db2 100644 --- a/model/DataExtension.php +++ b/model/DataExtension.php @@ -31,34 +31,21 @@ abstract class DataExtension extends Extension { 'api_access' => false, ); - static function add_to_class($class, $extensionClass, $args = null) { - if(method_exists($class, 'extraDBFields')) { + static function get_extra_config($class, $extension, $args) { + if(method_exists($extension, 'extraDBFields')) { $extraStaticsMethod = 'extraDBFields'; } else { $extraStaticsMethod = 'extraStatics'; } - $statics = Injector::inst()->get($extensionClass, true, $args)->$extraStaticsMethod($class, $extensionClass); + $statics = Injector::inst()->get($extension, true, $args)->$extraStaticsMethod(); if ($statics) { - Deprecation::notice('3.1.0', "$extraStaticsMethod deprecated. Just define statics on your extension, or use add_to_class", Deprecation::SCOPE_GLOBAL); - - // TODO: This currently makes extraStatics the MOST IMPORTANT config layer, not the least - foreach (self::$extendable_statics as $key => $merge) { - if (isset($statics[$key])) { - if (!$merge) Config::inst()->remove($class, $key); - Config::inst()->update($class, $key, $statics[$key]); - } - } - - // TODO - remove this - DataObject::$cache_has_own_table[$class] = null; - DataObject::$cache_has_own_table_field[$class] = null; + Deprecation::notice('3.1.0', "$extraStaticsMethod deprecated. Just define statics on your extension, or use get_extra_config", Deprecation::SCOPE_GLOBAL); + return $statics; } - - parent::add_to_class($class, $extensionClass, $args); } - + public static function unload_extra_statics($class, $extension) { throw new Exception('unload_extra_statics gone'); } diff --git a/model/Hierarchy.php b/model/Hierarchy.php index 7aefd0868..dad6185db 100644 --- a/model/Hierarchy.php +++ b/model/Hierarchy.php @@ -25,9 +25,10 @@ class Hierarchy extends DataExtension { function augmentWrite(&$manipulation) { } - static function add_to_class($class, $extensionClass, $args = null) { - Config::inst()->update($class, 'has_one', array('Parent' => $class)); - parent::add_to_class($class, $extensionClass, $args); + static function get_extra_config($class, $extension, $args) { + return array( + 'has_one' => array('Parent' => $class) + ); } /** diff --git a/model/Versioned.php b/model/Versioned.php index 5930424d6..25da1a7c4 100644 --- a/model/Versioned.php +++ b/model/Versioned.php @@ -107,9 +107,10 @@ class Versioned extends DataExtension { 'Version' => 'Int' ); - static function add_to_class($class, $extensionClass, $args = null) { - Config::inst()->update($class, 'has_many', array('Versions' => $class)); - parent::add_to_class($class, $extensionClass, $args); + static function get_extra_config($class, $extension, $args) { + array( + 'has_many' => array('Versions' => $class) + ); } /** diff --git a/search/FulltextSearchable.php b/search/FulltextSearchable.php index 77f660fb1..006ac028b 100644 --- a/search/FulltextSearchable.php +++ b/search/FulltextSearchable.php @@ -75,14 +75,16 @@ class FulltextSearchable extends DataExtension { parent::__construct(); } - static function add_to_class($class, $extensionClass, $args = null) { - Config::inst()->update($class, 'indexes', array('SearchFields' => array( - 'type' => 'fulltext', - 'name' => 'SearchFields', - 'value' => $args[0] - ))); - - parent::add_to_class($class, $extensionClass, $args); + static function get_extra_config($class, $extensionClass, $args) { + return array( + 'indexes' => array( + 'SearchFields' => array( + 'type' => 'fulltext', + 'name' => 'SearchFields', + 'value' => $args[0] + ) + ) + ); } /** diff --git a/templates/AssetUploadField.ss b/templates/AssetUploadField.ss index 6d7dc0746..70f270438 100644 --- a/templates/AssetUploadField.ss +++ b/templates/AssetUploadField.ss @@ -9,7 +9,7 @@
diff --git a/templates/HtmlEditorField_UploadField.ss b/templates/HtmlEditorField_UploadField.ss index 9f6a0d043..6eefe6e34 100644 --- a/templates/HtmlEditorField_UploadField.ss +++ b/templates/HtmlEditorField_UploadField.ss @@ -9,7 +9,7 @@
diff --git a/templates/Includes/GridFieldFooter.ss b/templates/Includes/GridFieldFooter.ss index 97060c7d4..f4b47d73d 100644 --- a/templates/Includes/GridFieldFooter.ss +++ b/templates/Includes/GridFieldFooter.ss @@ -1,6 +1,11 @@ - $FirstShownRecord - $LastShownRecord of $NumRecords + + $FirstShownRecord - + $LastShownRecord + <% _t('TableListField_PageControls.ss.OF', 'of', 'Example: View 1 of 2') %> + $NumRecords + <% if Message %> diff --git a/tests/core/manifest/ConfigManifestTest.php b/tests/core/manifest/ConfigManifestTest.php new file mode 100644 index 000000000..77226deae --- /dev/null +++ b/tests/core/manifest/ConfigManifestTest.php @@ -0,0 +1,89 @@ + 'foo', 'file' => 'alpha', 'name' => '1', + 'before' => array(array('module' => '*', 'file' => '*', 'name' => '*')) + ); + // A fragment with a fully wildcard before rule and a fully explicit after rule + $beforeWildcardedAfterExplicit = array_merge($beforeWildcarded, array( + 'after' => array(array('module' => 'bar', 'file' => 'beta', 'name' => '2')) + )); + // A fragment with a fully wildcard before rule and two fully explicit after rules + $beforeWildcardedAfterTwoExplicitRules = array_merge($beforeWildcarded, array( + 'after' => array( + array('module' => 'bar', 'file' => 'beta', 'name' => '2'), + array('module' => 'baz', 'file' => 'gamma', 'name' => '3') + ) + )); + // A fragment with a fully wildcard before rule and a partially explicit after rule + $beforeWildcardedAfterPartialWildcarded = array_merge($beforeWildcarded, array( + 'after' => array(array('module' => 'bar', 'file' => 'beta', 'name' => '*')) + )); + + // Wildcard should match any module + $this->assertEquals($accessor->relativeOrder( + $beforeWildcarded, + array('module' => 'qux', 'file' => 'delta', 'name' => '4') + ), 'before'); + + // Wildcard should match any module even if there is an opposing rule, if opposing rule doesn't match + $this->assertEquals($accessor->relativeOrder( + $beforeWildcardedAfterExplicit, + array('module' => 'qux', 'file' => 'delta', 'name' => '4') + ), 'before'); + + // Wildcard should match any module even if there is an opposing rule, if opposing rule doesn't match, no matter how many opposing rules + $this->assertEquals($accessor->relativeOrder( + $beforeWildcardedAfterExplicit, + array('module' => 'qux', 'file' => 'delta', 'name' => '4') + ), 'before'); + + // Wildcard should match any module even if there is an opposing rule, if opposing rule doesn't match (even if some portions do) + $this->assertEquals($accessor->relativeOrder( + $beforeWildcardedAfterExplicit, + array('module' => 'bar', 'file' => 'beta', 'name' => 'nomatchy') + ), 'before'); + + // When opposing rule matches, wildcard should be ignored + $this->assertEquals($accessor->relativeOrder( + $beforeWildcardedAfterExplicit, + array('module' => 'bar', 'file' => 'beta', 'name' => '2') + ), 'after'); + + // When any one of mutiple opposing rule exists, wildcard should be ignored + $this->assertEquals($accessor->relativeOrder( + $beforeWildcardedAfterTwoExplicitRules, + array('module' => 'bar', 'file' => 'beta', 'name' => '2') + ), 'after'); + + $this->assertEquals($accessor->relativeOrder( + $beforeWildcardedAfterTwoExplicitRules, + array('module' => 'baz', 'file' => 'gamma', 'name' => '3') + ), 'after'); + + // When two opposed wildcard rules, and more specific one doesn't match, other should win + $this->assertEquals($accessor->relativeOrder( + $beforeWildcardedAfterPartialWildcarded, + array('module' => 'qux', 'file' => 'delta', 'name' => '4') + ), 'before'); + + // When two opposed wildcard rules, and more specific one does match, more specific one should win + $this->assertEquals($accessor->relativeOrder( + $beforeWildcardedAfterPartialWildcarded, + array('module' => 'bar', 'file' => 'beta', 'name' => 'wildcardmatchy') + ), 'after'); + } + +} \ No newline at end of file