From 5248be92268e343dc0bacafd4c15de0c79d1f592 Mon Sep 17 00:00:00 2001 From: Daniel Hensby Date: Thu, 8 Dec 2016 16:46:15 +0000 Subject: [PATCH 01/16] FIX Handle fields with square brackets --- forms/Form.php | 33 +++++++++++++++++++++++++-------- 1 file changed, 25 insertions(+), 8 deletions(-) diff --git a/forms/Form.php b/forms/Form.php index 403195fe5..cb9d62785 100644 --- a/forms/Form.php +++ b/forms/Form.php @@ -1418,6 +1418,7 @@ class Form extends RequestHandler { if(is_object($data)) $this->record = $data; // dont include fields without data + /** @var FormField[] $dataFields */ $dataFields = $this->Fields()->dataFields(); if($dataFields) foreach($dataFields as $field) { $name = $field->getName(); @@ -1450,15 +1451,31 @@ class Form extends RequestHandler { $val = $data[$name]; } // If field is in array-notation we need to access nested data - else if(strpos($name,'[')) { - // First encode data using PHP's method of converting nested arrays to form data - $flatData = urldecode(http_build_query($data)); - // Then pull the value out from that flattened string - preg_match('/' . addcslashes($name,'[]') . '=([^&]*)/', $flatData, $matches); + else if(preg_match_all('/(.*)\[(.*)\]/U', $name, $matches)) { + //discard first match which is just the whole string + array_shift($matches); - if (isset($matches[1])) { - $exists = true; - $val = $matches[1]; + $keys = array_pop($matches); + $name = array_shift($matches); + $name = array_shift($name); + + if (array_key_exists($name, $data)) { + $tmpData = &$data[$name]; + // drill down into the data array looking for the corresponding value + foreach ($keys as $arrayKey) { + if ($arrayKey !== '') { + $tmpData = &$tmpData[$arrayKey]; + } else { + //empty square brackets means new array + if (is_array($tmpData)) { + $tmpData = array_shift($tmpData); + } + } + } + if ($tmpData) { + $val = $tmpData; + $exists = true; + } } } } From f8132b39af926bc8a77181db1c684b5b9c3458b2 Mon Sep 17 00:00:00 2001 From: Daniel Hensby Date: Mon, 12 Dec 2016 13:29:08 +0000 Subject: [PATCH 02/16] Assertions should be $this->assert($expected, $actual) --- tests/forms/FormTest.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/forms/FormTest.php b/tests/forms/FormTest.php index 3ec2a9490..910bbc0ce 100644 --- a/tests/forms/FormTest.php +++ b/tests/forms/FormTest.php @@ -58,10 +58,10 @@ class FormTest extends FunctionalTest { $form->loadDataFrom($requestData); $fields = $form->Fields(); - $this->assertEquals($fields->fieldByName('key1')->Value(), 'val1'); - $this->assertEquals($fields->fieldByName('namespace[key2]')->Value(), 'val2'); - $this->assertEquals($fields->fieldByName('namespace[key3][key4]')->Value(), 'val4'); - $this->assertEquals($fields->fieldByName('othernamespace[key5][key6][key7]')->Value(), 'val7'); + $this->assertEquals('val1', $fields->fieldByName('key1')->Value()); + $this->assertEquals('val2', $fields->fieldByName('namespace[key2]')->Value()); + $this->assertEquals('val4', $fields->fieldByName('namespace[key3][key4]')->Value()); + $this->assertEquals('val7', $fields->fieldByName('othernamespace[key5][key6][key7]')->Value()); } public function testSubmitReadonlyFields() { From 18ff6bec6da394675811458ecd75f863ac3b83c7 Mon Sep 17 00:00:00 2001 From: Myles Derham Date: Fri, 16 Dec 2016 10:40:01 +1300 Subject: [PATCH 03/16] Updated location of custom field templates --- docs/en/02_Developer_Guides/03_Forms/03_Form_Templates.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/en/02_Developer_Guides/03_Forms/03_Form_Templates.md b/docs/en/02_Developer_Guides/03_Forms/03_Form_Templates.md index 7a4bf0c9f..64fae0889 100644 --- a/docs/en/02_Developer_Guides/03_Forms/03_Form_Templates.md +++ b/docs/en/02_Developer_Guides/03_Forms/03_Form_Templates.md @@ -14,7 +14,7 @@ can be rendered out using custom templates using `setTemplate`. $field = new TextField(..); $field->setTemplate('MyCustomTextField'); -Both `MyCustomTemplate.ss` and `MyCustomTextField.ss` should be located in **mysite/templates/Includes/** +Both `MyCustomTemplate.ss` and `MyCustomTextField.ss` should be located in **mysite/templates/forms/** or the same directory as the core.
It's recommended to copy the contents of the template you're going to replace and use that as a start. For instance, if @@ -66,4 +66,4 @@ well as the available syntax, see the [Templates](../templates) documentation. ## API Documentation * [api:Form] -* [api:FormField] \ No newline at end of file +* [api:FormField] From e57d7a30bdd679ad4f7ca4ef31d20f760a2ed181 Mon Sep 17 00:00:00 2001 From: Dan Hensby Date: Fri, 16 Dec 2016 20:49:05 +0000 Subject: [PATCH 04/16] Update translations --- admin/javascript/lang/fi.js | 2 +- admin/javascript/lang/src/fi.js | 2 +- javascript/lang/fi.js | 2 +- javascript/lang/hr.js | 2 +- javascript/lang/src/fi.js | 2 +- javascript/lang/src/hr.js | 2 +- lang/de.yml | 3 - lang/en.yml | 902 ++++++++++++++++---------------- lang/fa_IR.yml | 123 +++-- lang/fi.yml | 12 +- lang/it.yml | 9 - 11 files changed, 535 insertions(+), 526 deletions(-) diff --git a/admin/javascript/lang/fi.js b/admin/javascript/lang/fi.js index 3700fb43c..a1c1d4bf3 100644 --- a/admin/javascript/lang/fi.js +++ b/admin/javascript/lang/fi.js @@ -8,7 +8,7 @@ if (typeof(ss) === 'undefined' || typeof(ss.i18n) === 'undefined') { ss.i18n.addDictionary('fi', { "CMSMAIN.BATCH_ARCHIVE_PROMPT": "Sinulla on {num} sivu(a) valittuna.\n\nHaluatko varmasti arkistoida nämä sivut?\n\nValitut sivut ja kaikki niiden alasivut poistetaan julkaisusta sekä siirretään arkistoon.", "CMSMAIN.BATCH_DELETELIVE_PROMPT": "Sinulla on {num} sivu(a) valittuna.\n\nHaluatko varmasti poistaa nämä sivut näkyvistä?", - "CMSMAIN.BATCH_DELETE_PROMPT": "You have {num} page(s) selected.\n\nDo you really want to delete?", + "CMSMAIN.BATCH_DELETE_PROMPT": "Sinulla on {num} sivu(a) valittuna.\n\nHaluatko varmasti poistaa?", "CMSMAIN.BATCH_PUBLISH_PROMPT": "Sinulla on {num} sivu(a) valittuna.\n\nHaluatko varmasti julkaista?", "CMSMAIN.BATCH_RESTORE_PROMPT": "Sinulla on {num} sivu(a) valittuna.\n\nHaluatko varmasti palauttaa sivut?\n\nArkistoitujen sivujen alasivut palautetaan juuritasolle, jos niitä sivuja ei palauteta.", "CMSMAIN.BATCH_UNPUBLISH_PROMPT": "Sinulla on {num} sivu(a) valittuna.\n\nHaluatko varmasti poistaa julkaisusta?", diff --git a/admin/javascript/lang/src/fi.js b/admin/javascript/lang/src/fi.js index d50d1dbc4..66d4bc088 100644 --- a/admin/javascript/lang/src/fi.js +++ b/admin/javascript/lang/src/fi.js @@ -1,7 +1,7 @@ { "CMSMAIN.BATCH_ARCHIVE_PROMPT": "Sinulla on {num} sivu(a) valittuna.\n\nHaluatko varmasti arkistoida nämä sivut?\n\nValitut sivut ja kaikki niiden alasivut poistetaan julkaisusta sekä siirretään arkistoon.", "CMSMAIN.BATCH_DELETELIVE_PROMPT": "Sinulla on {num} sivu(a) valittuna.\n\nHaluatko varmasti poistaa nämä sivut näkyvistä?", - "CMSMAIN.BATCH_DELETE_PROMPT": "You have {num} page(s) selected.\n\nDo you really want to delete?", + "CMSMAIN.BATCH_DELETE_PROMPT": "Sinulla on {num} sivu(a) valittuna.\n\nHaluatko varmasti poistaa?", "CMSMAIN.BATCH_PUBLISH_PROMPT": "Sinulla on {num} sivu(a) valittuna.\n\nHaluatko varmasti julkaista?", "CMSMAIN.BATCH_RESTORE_PROMPT": "Sinulla on {num} sivu(a) valittuna.\n\nHaluatko varmasti palauttaa sivut?\n\nArkistoitujen sivujen alasivut palautetaan juuritasolle, jos niitä sivuja ei palauteta.", "CMSMAIN.BATCH_UNPUBLISH_PROMPT": "Sinulla on {num} sivu(a) valittuna.\n\nHaluatko varmasti poistaa julkaisusta?", diff --git a/javascript/lang/fi.js b/javascript/lang/fi.js index 1e3e76967..1b3ee4e3c 100644 --- a/javascript/lang/fi.js +++ b/javascript/lang/fi.js @@ -50,4 +50,4 @@ if (typeof(ss) === 'undefined' || typeof(ss.i18n) === 'undefined') { "UploadField.WRITEFAILED": "Tiedoston kirjoittaminen levylle epäonnistui", "VALIDATOR.FIELDREQUIRED": "Syötä \"%s\", se on vaadittu tieto." }); -} +} \ No newline at end of file diff --git a/javascript/lang/hr.js b/javascript/lang/hr.js index 89919733b..b9a6808f5 100644 --- a/javascript/lang/hr.js +++ b/javascript/lang/hr.js @@ -50,4 +50,4 @@ if (typeof(ss) === 'undefined' || typeof(ss.i18n) === 'undefined') { "UploadField.WRITEFAILED": "Nije uspjelo zapisati datoteku na disk", "VALIDATOR.FIELDREQUIRED": "Molimo popunite \"%s\", obavezno je." }); -} +} \ No newline at end of file diff --git a/javascript/lang/src/fi.js b/javascript/lang/src/fi.js index cac07892c..c6fc19b4c 100644 --- a/javascript/lang/src/fi.js +++ b/javascript/lang/src/fi.js @@ -42,4 +42,4 @@ "UploadField.Uploaded": "Ladattu", "UploadField.WRITEFAILED": "Tiedoston kirjoittaminen levylle epäonnistui", "VALIDATOR.FIELDREQUIRED": "Syötä \"%s\", se on vaadittu tieto." -} +} \ No newline at end of file diff --git a/javascript/lang/src/hr.js b/javascript/lang/src/hr.js index a6920d605..6c8eba286 100644 --- a/javascript/lang/src/hr.js +++ b/javascript/lang/src/hr.js @@ -42,4 +42,4 @@ "UploadField.Uploaded": "Prenešeno", "UploadField.WRITEFAILED": "Nije uspjelo zapisati datoteku na disk", "VALIDATOR.FIELDREQUIRED": "Molimo popunite \"%s\", obavezno je." -} +} \ No newline at end of file diff --git a/lang/de.yml b/lang/de.yml index 554797871..98a4c74a3 100644 --- a/lang/de.yml +++ b/lang/de.yml @@ -390,13 +390,10 @@ de: CANCEL: Abbrechen 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: "Sie müssen angemeldet sein, um auf diesen Bereich zugreifen zu können. Bitte geben Sie Ihre Zugangsdaten 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. diff --git a/lang/en.yml b/lang/en.yml index b9e0dcbe3..69dc3676f 100644 --- a/lang/en.yml +++ b/lang/en.yml @@ -1,156 +1,156 @@ en: AddToCampaign: - ErrorCampaignPermissionDenied: "It seems you don't have the necessary permissions to add {ObjectTitle} to {CampaignTitle}" - ErrorGeneral: "We apologise, but there was an error" - ErrorItemPermissionDenied: "It seems you don't have the necessary permissions to add {ObjectTitle} to a campaign" - ErrorNotFound: "That {Type} couldn't be found" - Success: "Successfully added {ObjectTitle} to {CampaignTitle}" + ErrorCampaignPermissionDenied: 'It seems you don''t have the necessary permissions to add {ObjectTitle} to {CampaignTitle}' + ErrorGeneral: 'We apologise, but there was an error' + ErrorItemPermissionDenied: 'It seems you don''t have the necessary permissions to add {ObjectTitle} to a campaign' + ErrorNotFound: 'That {Type} couldn''t be found' + Success: 'Successfully added {ObjectTitle} to {CampaignTitle}' AssetAdmin: - ALLOWEDEXTS: "Allowed file upload extensions" - HIDEALLOWEDEXTS: "Hide allowed extensions" + ALLOWEDEXTS: 'Allowed file upload extensions' + HIDEALLOWEDEXTS: 'Hide allowed extensions' NEWFOLDER: NewFolder - SHOWALLOWEDEXTS: "Show allowed extensions" + SHOWALLOWEDEXTS: 'Show allowed extensions' AssetTableField: - CREATED: "First uploaded" + CREATED: 'First uploaded' DIM: Dimensions FILENAME: Filename FOLDER: Folder HEIGHT: Height - LASTEDIT: "Last changed" + LASTEDIT: 'Last changed' OWNER: Owner PATH: Path - SIZE: "File size" + SIZE: 'File size' TITLE: Title - TYPE: "File type" + TYPE: 'File type' URL: URL WIDTH: Width AssetUploadField: - ChooseFiles: "Choose files" - DRAGFILESHERE: "Drag files here" - DROPAREA: "Drop Area" - EDITALL: "Edit all" - EDITANDORGANIZE: "Edit & organize" - EDITINFO: "Edit files" + ChooseFiles: 'Choose files' + DRAGFILESHERE: 'Drag files here' + DROPAREA: 'Drop Area' + EDITALL: 'Edit all' + EDITANDORGANIZE: 'Edit & organize' + EDITINFO: 'Edit files' FILES: Files - FROMCOMPUTER: "Choose files from your computer" - FROMCOMPUTERINFO: "Upload from your computer" - INSERTURL: "Insert from URL" - REMOVEINFO: "Remove this file from this field" + FROMCOMPUTER: 'Choose files from your computer' + FROMCOMPUTERINFO: 'Upload from your computer' + INSERTURL: 'Insert from URL' + REMOVEINFO: 'Remove this file from this field' TOTAL: Total - TOUPLOAD: "Choose files to upload..." - UPLOADINPROGRESS: "Please wait… upload in progress" + TOUPLOAD: 'Choose files to upload...' + UPLOADINPROGRESS: 'Please wait… upload in progress' UPLOADOR: OR BBCodeParser: ALIGNEMENT: Alignment - ALIGNEMENTEXAMPLE: "right aligned" - BOLD: "Bold Text" + ALIGNEMENTEXAMPLE: 'right aligned' + BOLD: 'Bold Text' BOLDEXAMPLE: Bold - CODE: "Code Block" - CODEDESCRIPTION: "Unformatted code block" - CODEEXAMPLE: "Code block" - COLORED: "Colored text" - COLOREDEXAMPLE: "blue text" - EMAILLINK: "Email link" - EMAILLINKDESCRIPTION: "Create link to an email address" + CODE: 'Code Block' + CODEDESCRIPTION: 'Unformatted code block' + CODEEXAMPLE: 'Code block' + COLORED: 'Colored text' + COLOREDEXAMPLE: 'blue text' + EMAILLINK: 'Email link' + EMAILLINKDESCRIPTION: 'Create link to an email address' IMAGE: Image - IMAGEDESCRIPTION: "Show an image in your post" - ITALIC: "Italic Text" + IMAGEDESCRIPTION: 'Show an image in your post' + ITALIC: 'Italic Text' ITALICEXAMPLE: Italics - LINK: "Website link" - LINKDESCRIPTION: "Link to another website or URL" - STRUCK: "Struck-out Text" + LINK: 'Website link' + LINKDESCRIPTION: 'Link to another website or URL' + STRUCK: 'Struck-out Text' STRUCKEXAMPLE: Struck-out - UNDERLINE: "Underlined Text" + UNDERLINE: 'Underlined Text' UNDERLINEEXAMPLE: Underlined - UNORDERED: "Unordered list" - UNORDEREDDESCRIPTION: "Unordered list" - UNORDEREDEXAMPLE1: "unordered item 1" + UNORDERED: 'Unordered list' + UNORDEREDDESCRIPTION: 'Unordered list' + UNORDEREDEXAMPLE1: 'unordered item 1' BackLink_Button_ss: Back: Back BasicAuth: - ENTERINFO: "Please enter a username and password." - ERRORNOTADMIN: "That user is not an administrator." - ERRORNOTREC: "That username / password isn't recognised" + ENTERINFO: 'Please enter a username and password.' + ERRORNOTADMIN: 'That user is not an administrator.' + ERRORNOTREC: 'That username / password isn''t recognised' Boolean: ANY: Any - NOANSWER: "No" - YESANSWER: "Yes" + NOANSWER: 'No' + YESANSWER: 'Yes' CAMPAIGNS: - ADDTOCAMPAIGN: "Add to Campaign" + ADDTOCAMPAIGN: 'Add to Campaign' CMSLoadingScreen_ss: LOADING: Loading... - REQUIREJS: "The CMS requires that you have JavaScript enabled." + REQUIREJS: 'The CMS requires that you have JavaScript enabled.' CMSMain: - ACCESS: "Access to '{title}' section" - ACCESSALLINTERFACES: "Access to all CMS sections" - ACCESSALLINTERFACESHELP: "Overrules more specific access settings." + ACCESS: 'Access to ''{title}'' section' + ACCESSALLINTERFACES: 'Access to all CMS sections' + ACCESSALLINTERFACESHELP: 'Overrules more specific access settings.' SAVE: Save CMSMemberLoginForm: - BUTTONFORGOTPASSWORD: "Forgot password?" - BUTTONLOGIN: "Log back in" - BUTTONLOGOUT: "Log out" - PASSWORDEXPIRED: "

Your password has expired. Please choose a new one.

" + BUTTONFORGOTPASSWORD: 'Forgot password?' + BUTTONLOGIN: 'Log back in' + BUTTONLOGOUT: 'Log out' + PASSWORDEXPIRED: '

Your password has expired. Please choose a new one.

' CMSPageHistoryController_versions_ss: - PREVIEW: "Website preview" + PREVIEW: 'Website preview' CMSPagesController_Tools_ss: FILTER: Filter CMSProfileController: - MENUTITLE: "My Profile" + MENUTITLE: 'My Profile' CMSSecurity: - INVALIDUSER: "

Invalid user. Please re-authenticate here to continue.

" - LoginMessage: "

If you have any unsaved work you can return to where you left off by logging back in below.

" + INVALIDUSER: '

Invalid user. Please re-authenticate here to continue.

' + LoginMessage: '

If you have any unsaved work you can return to where you left off by logging back in below.

' SUCCESS: Success - SUCCESSCONTENT: "

Login success. If you are not automatically redirected click here

" - TimedOutTitleAnonymous: "Your session has timed out." - TimedOutTitleMember: "Hey {name}!
Your session has timed out." + SUCCESSCONTENT: '

Login success. If you are not automatically redirected click here

' + TimedOutTitleAnonymous: 'Your session has timed out.' + TimedOutTitleMember: 'Hey {name}!
Your session has timed out.' CampaignAdmin: - ACCESS_HELP: "Allow viewing of the campaign publishing section." + ACCESS_HELP: 'Allow viewing of the campaign publishing section.' MENUTITLE: Campaigns Campaigns: - AddToCampaign: "Add To Campaign" - AddToCampaignFormFieldLabel: "Select a Campaign" + AddToCampaign: 'Add To Campaign' + AddToCampaignFormFieldLabel: 'Select a Campaign' ChangePasswordEmail_ss: - CHANGEPASSWORDFOREMAIL: "The password for account with email address {email} has been changed. If you didn't change your password please change your password using the link below" - CHANGEPASSWORDTEXT1: "You changed your password for" - CHANGEPASSWORDTEXT2: "You can now use the following credentials to log in:" - CHANGEPASSWORDTEXT3: "Change password" + CHANGEPASSWORDFOREMAIL: 'The password for account with email address {email} has been changed. If you didn''t change your password please change your password using the link below' + CHANGEPASSWORDTEXT1: 'You changed your password for' + CHANGEPASSWORDTEXT2: 'You can now use the following credentials to log in:' + CHANGEPASSWORDTEXT3: 'Change password' EMAIL: Email HELLO: Hi PASSWORD: Password ChangeSet: - DESCRIPTION_AND: "{first} and {second}" + DESCRIPTION_AND: '{first} and {second}' DESCRIPTION_ITEM: item DESCRIPTION_ITEMS: items - DESCRIPTION_LIST_FIRST: "{item}" - DESCRIPTION_LIST_LAST: "{list}, and {item}" - DESCRIPTION_LIST_MID: "{list}, {item}" - DESCRIPTION_OTHER_ITEM: "other item" - DESCRIPTION_OTHER_ITEMS: "other items" + DESCRIPTION_LIST_FIRST: '{item}' + DESCRIPTION_LIST_LAST: '{list}, and {item}' + DESCRIPTION_LIST_MID: '{list}, {item}' + DESCRIPTION_OTHER_ITEM: 'other item' + DESCRIPTION_OTHER_ITEMS: 'other items' NAME: Name PLURALNAME: Campaigns SINGULARNAME: Campaign STATE: State ChangeSetItem: - PLURALNAME: "Change Set Items" - SINGULARNAME: "Change Set Item" + PLURALNAME: 'Change Set Items' + SINGULARNAME: 'Change Set Item' CheckboxField: - NOANSWER: "No" - YESANSWER: "Yes" + NOANSWER: 'No' + YESANSWER: 'Yes' CheckboxFieldSetField: - SOURCE_VALIDATION: "Please select a value within the list provided. {value} is not a valid option" + SOURCE_VALIDATION: 'Please select a value within the list provided. {value} is not a valid option' CheckboxSetField: - SOURCE_VALIDATION: "Please select a value within the list provided. '{value}' is not a valid option" + SOURCE_VALIDATION: 'Please select a value within the list provided. ''{value}'' is not a valid option' ConfirmedPasswordField: - ATLEAST: "Passwords must be at least {min} characters long." - BETWEEN: "Passwords must be {min} to {max} characters long." - CURRENT_PASSWORD_ERROR: "The current password you have entered is not correct." - CURRENT_PASSWORD_MISSING: "You must enter your current password." - LOGGED_IN_ERROR: "You must be logged in to change your password." - MAXIMUM: "Passwords must be at most {max} characters long." - SHOWONCLICKTITLE: "Change Password" + ATLEAST: 'Passwords must be at least {min} characters long.' + BETWEEN: 'Passwords must be {min} to {max} characters long.' + CURRENT_PASSWORD_ERROR: 'The current password you have entered is not correct.' + CURRENT_PASSWORD_MISSING: 'You must enter your current password.' + LOGGED_IN_ERROR: 'You must be logged in to change your password.' + MAXIMUM: 'Passwords must be at most {max} characters long.' + SHOWONCLICKTITLE: 'Change Password' ContentController: - DRAFT_SITE_ACCESS_RESTRICTION: "You must log in with your CMS password in order to view the draft or archived content. Click here to go back to the published site." - NOTLOGGEDIN: "Not logged in" + DRAFT_SITE_ACCESS_RESTRICTION: 'You must log in with your CMS password in order to view the draft or archived content. Click here to go back to the published site.' + NOTLOGGEDIN: 'Not logged in' CreditCardField: FIRST: first FOURTH: fourth @@ -159,261 +159,261 @@ en: CurrencyField: CURRENCYSYMBOL: $ DataObject: - PLURALNAME: "Data Objects" - SINGULARNAME: "Data Object" + PLURALNAME: 'Data Objects' + SINGULARNAME: 'Data Object' Date: DAY: day DAYS: days HOUR: hour HOURS: hours - LessThanMinuteAgo: "less than a minute" + LessThanMinuteAgo: 'less than a minute' MIN: min MINS: mins MONTH: month MONTHS: months SEC: sec SECS: secs - TIMEDIFFAGO: "{difference} ago" - TIMEDIFFIN: "in {difference}" + TIMEDIFFAGO: '{difference} ago' + TIMEDIFFIN: 'in {difference}' YEAR: year YEARS: years DateField: - NOTSET: "not set" + NOTSET: 'not set' TODAY: today - VALIDDATEFORMAT2: "Please enter a valid date format ({format})" - VALIDDATEMAXDATE: "Your date has to be older or matching the maximum allowed date ({date})" - VALIDDATEMINDATE: "Your date has to be newer or matching the minimum allowed date ({date})" + 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" + NOTSET: 'Not set' Director: - INVALID_REQUEST: "Invalid request" + INVALID_REQUEST: 'Invalid request' DropdownField: CHOOSE: (Choose) - CHOOSESEARCH: "(Choose or Search)" - CHOOSE_MODEL: "(Choose {name})" - SOURCE_VALIDATION: "Please select a value within the list provided. {value} is not a valid option" + CHOOSESEARCH: '(Choose or Search)' + CHOOSE_MODEL: '(Choose {name})' + SOURCE_VALIDATION: 'Please select a value within the list provided. {value} is not a valid option' EmailField: - VALIDATION: "Please enter an email address" + VALIDATION: 'Please enter an email address' Enum: ANY: Any File: - AviType: "AVI video file" + AviType: 'AVI video file' Content: Content - CssType: "CSS file" + CssType: 'CSS file' DRAFT: Draft - DmgType: "Apple disk image" - DocType: "Word document" + 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" - INVALIDEXTENSION_SHORT: "Extension is not allowed" - IcoType: "Icon image" - JpgType: "JPEG image - good for photos" - JsType: "Javascript file" + 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' + INVALIDEXTENSION_SHORT: 'Extension is not allowed' + IcoType: 'Icon image' + JpgType: 'JPEG image - good for photos' + JsType: 'Javascript file' MODIFIED: Modified - Mp3Type: "MP3 audio file" - MpgType: "MPEG video file" - NOFILESIZE: "File size is zero bytes." - NOVALIDUPLOAD: "File is not a valid upload" + Mp3Type: 'MP3 audio file' + MpgType: 'MPEG video file' + NOFILESIZE: 'File size 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" + PdfType: 'Adobe Acrobat PDF file' + PngType: 'PNG image - good general-purpose format' SINGULARNAME: File - TOOLARGE: "File size is too large, maximum {size} allowed" - TOOLARGESHORT: "File size exceeds {size}" - TiffType: "Tagged image format" + TOOLARGE: 'File size is too large, maximum {size} allowed' + TOOLARGESHORT: 'File size exceeds {size}' + TiffType: 'Tagged image format' Title: Title - WavType: "WAV audo file" - XlsType: "Excel spreadsheet" - ZipType: "ZIP compressed file" + WavType: 'WAV audo file' + XlsType: 'Excel spreadsheet' + ZipType: 'ZIP compressed file' Filesystem: - SYNCRESULTS: "Sync complete: {createdcount} items created, {deletedcount} items deleted" + SYNCRESULTS: 'Sync complete: {createdcount} items created, {deletedcount} items deleted' Folder: PLURALNAME: Folders SINGULARNAME: Folder ForgotPasswordEmail_ss: HELLO: Hi - TEXT1: "Here is your" - TEXT2: "password reset link" + TEXT1: 'Here is your' + TEXT2: 'password reset link' TEXT3: for Form: - CSRF_EXPIRED_MESSAGE: "Your session has expired. Please re-submit the form." - CSRF_FAILED_MESSAGE: "There seems to have been a technical problem. Please click the back button, refresh your browser, and try again." - FIELDISREQUIRED: "{name} is required" + CSRF_EXPIRED_MESSAGE: 'Your session has expired. Please re-submit the form.' + CSRF_FAILED_MESSAGE: 'There seems to have been a technical problem. Please click the back button, refresh your browser, and try again.' + FIELDISREQUIRED: '{name} is required' SubmitBtnLabel: Go - VALIDATIONCREDIT: "Please ensure you have entered the credit card number correctly" - VALIDATIONCREDITNUMBER: "Please ensure you have entered the {number} credit card number correctly" - VALIDATIONNOTUNIQUE: "The value entered is not unique" - VALIDATIONPASSWORDSDONTMATCH: "Passwords don't match" - VALIDATIONPASSWORDSNOTEMPTY: "Passwords can't be empty" - VALIDATIONSTRONGPASSWORD: "Passwords must have at least one digit and one alphanumeric character" + VALIDATIONCREDIT: 'Please ensure you have entered the credit card number correctly' + VALIDATIONCREDITNUMBER: 'Please ensure you have entered the {number} credit card number correctly' + VALIDATIONNOTUNIQUE: 'The value entered is not unique' + VALIDATIONPASSWORDSDONTMATCH: 'Passwords don''t match' + VALIDATIONPASSWORDSNOTEMPTY: 'Passwords can''t be empty' + VALIDATIONSTRONGPASSWORD: 'Passwords must have at least one digit and one alphanumeric character' VALIDATOR: Validator - VALIDCURRENCY: "Please enter a valid currency" + VALIDCURRENCY: 'Please enter a valid currency' FormField: - Example: "e.g. %s" + Example: 'e.g. %s' NONE: none GridAction: DELETE_DESCRIPTION: Delete Delete: Delete UnlinkRelation: Unlink GridField: - Add: "Add {name}" + Add: 'Add {name}' Filter: Filter - FilterBy: "Filter by " + FilterBy: 'Filter by ' Find: Find - LEVELUP: "Level up" - LinkExisting: "Link Existing" - NewRecord: "New %s" - NoItemsFound: "No items found" - PRINTEDAT: "Printed at" - PRINTEDBY: "Printed by" - PlaceHolder: "Find {type}" - PlaceHolderWithLabels: "Find {type} by {name}" - RelationSearch: "Relation search" + LEVELUP: 'Level up' + LinkExisting: 'Link Existing' + NewRecord: 'New %s' + NoItemsFound: 'No items found' + PRINTEDAT: 'Printed at' + PRINTEDBY: 'Printed by' + PlaceHolder: 'Find {type}' + PlaceHolderWithLabels: 'Find {type} by {name}' + RelationSearch: 'Relation search' ResetFilter: Reset GridFieldAction_Delete: - DeletePermissionsFailure: "No delete permissions" - EditPermissionsFailure: "No permission to unlink record" + DeletePermissionsFailure: 'No delete permissions' + EditPermissionsFailure: 'No permission to unlink record' GridFieldDetailForm: CancelBtn: Cancel Create: Create Delete: Delete - DeletePermissionsFailure: "No delete permissions" - Deleted: "Deleted %s %s" + DeletePermissionsFailure: 'No delete permissions' + Deleted: 'Deleted %s %s' Save: Save - Saved: "Saved {name} {link}" + Saved: 'Saved {name} {link}' GridFieldEditButton_ss: EDIT: Edit GridFieldItemEditView: - Go_back: "Go back" + Go_back: 'Go back' Group: - AddRole: "Add a role for this group" - Code: "Group Code" + AddRole: 'Add a role for this group' + Code: 'Group Code' DefaultGroupTitleAdministrators: Administrators - DefaultGroupTitleContentAuthors: "Content Authors" + DefaultGroupTitleContentAuthors: 'Content Authors' Description: Description - GroupReminder: "If you choose a parent group, this group will take all it's roles" - HierarchyPermsError: "Can't assign parent group \"%s\" with privileged permissions (requires ADMIN access)" - Locked: Locked? - NoRoles: "No roles found" + GroupReminder: 'If you choose a parent group, this group will take all it''s roles' + HierarchyPermsError: 'Can''t assign parent group "%s" with privileged permissions (requires ADMIN access)' + Locked: 'Locked?' + NoRoles: 'No roles found' PLURALNAME: Groups - Parent: "Parent Group" - RolesAddEditLink: "Manage roles" + Parent: 'Parent Group' + RolesAddEditLink: 'Manage roles' SINGULARNAME: Group - Sort: "Sort Order" + Sort: 'Sort Order' has_many_Permissions: Permissions many_many_Members: Members GroupImportForm: - Help1: "

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

" - Help2: "

Advanced usage

  • Allowed columns: %s
  • Existing groups are matched by their unique Code value, and updated with any new values from the imported file
  • Group hierarchies can be created by using a ParentCode column.
  • Permission codes can be assigned by the PermissionCode column. Existing permission codes are not cleared.
" - ResultCreated: "Created {count} groups" - ResultDeleted: "Deleted %d groups" - ResultUpdated: "Updated %d groups" + Help1: '

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

' + Help2: '

Advanced usage

  • Allowed columns: %s
  • Existing groups are matched by their unique Code value, and updated with any new values from the imported file
  • Group hierarchies can be created by using a ParentCode column.
  • Permission codes can be assigned by the PermissionCode column. Existing permission codes are not cleared.
' + ResultCreated: 'Created {count} groups' + ResultDeleted: 'Deleted %d groups' + ResultUpdated: 'Updated %d groups' HTMLEditorField: - ANCHORSCANNOTACCESSPAGE: "You are not permitted to access the content of the target page." - ANCHORSPAGENOTFOUND: "Target page not found." + ANCHORSCANNOTACCESSPAGE: 'You are not permitted to access the content of the target page.' + ANCHORSPAGENOTFOUND: 'Target page not found.' ANCHORVALUE: Anchor - BUTTONADDURL: "Add url" - CAPTIONTEXT: "Caption text" - CSSCLASS: "Alignment / style" - CSSCLASSCENTER: "Centered, on its own." - CSSCLASSLEFT: "On the left, with text wrapping around." - CSSCLASSLEFTALONE: "On the left, on its own." - CSSCLASSRIGHT: "On the right, with text wrapping around." + BUTTONADDURL: 'Add url' + CAPTIONTEXT: 'Caption text' + CSSCLASS: 'Alignment / style' + CSSCLASSCENTER: 'Centered, on its own.' + CSSCLASSLEFT: 'On the left, with text wrapping around.' + CSSCLASSLEFTALONE: 'On the left, on its own.' + CSSCLASSRIGHT: 'On the right, with text wrapping around.' DETAILS: Details - EMAIL: "Email address" + EMAIL: 'Email address' FILE: SilverStripe\Assets\File FOLDER: Folder - IMAGEALT: "Alternative text (alt)" - IMAGEALTTEXT: "Alternative text (alt) - shown if image can't be displayed" - IMAGEALTTEXTDESC: "Shown to screen readers or if image can't be displayed" + IMAGEALT: 'Alternative text (alt)' + IMAGEALTTEXT: 'Alternative text (alt) - shown if image can''t be displayed' + IMAGEALTTEXTDESC: 'Shown to screen readers or if image can''t be displayed' IMAGEDIMENSIONS: Dimensions IMAGEHEIGHTPX: Height - IMAGETITLE: "Title text (tooltip) - for additional information about the image" - IMAGETITLETEXT: "Title text (tooltip)" - IMAGETITLETEXTDESC: "For additional information about the image" + IMAGETITLE: 'Title text (tooltip) - for additional information about the image' + IMAGETITLETEXT: 'Title text (tooltip)' + IMAGETITLETEXTDESC: 'For additional information about the image' IMAGEWIDTHPX: Width - INSERTMEDIA: "Insert media from" - LINK: "Insert Link" - LINKANCHOR: "Link to an anchor on this page" - LINKDESCR: "Link description" - LINKDETAILS: "Link details" - LINKEMAIL: "Link to an email address" - LINKEXTERNAL: "Link to another website" - LINKFILE: "Link to download a file" - LINKINTERNAL: "Link to a page on this site" - LINKOPENNEWWIN: "Open link in a new window?" - LINKTO: "Link type" + INSERTMEDIA: 'Insert media from' + LINK: 'Insert Link' + LINKANCHOR: 'Link to an anchor on this page' + LINKDESCR: 'Link description' + LINKDETAILS: 'Link details' + LINKEMAIL: 'Link to an email address' + LINKEXTERNAL: 'Link to another website' + LINKFILE: 'Link to download a file' + LINKINTERNAL: 'Link to a page on this site' + LINKOPENNEWWIN: 'Open link in a new window?' + LINKTO: 'Link type' PAGE: Page - SUBJECT: "Email subject" + SUBJECT: 'Email subject' URL: URL - URLDESCRIPTION: "Insert videos and images from the web into your page simply by entering the URL of the file. Make sure you have the rights or permissions before sharing media directly from the web.

Please note that files are not added to the file store of the CMS but embeds the file from its original location, if for some reason the file is no longer available in its original location it will no longer be viewable on this page." - URLNOTANOEMBEDRESOURCE: "The URL '{url}' could not be turned into a media resource." - UpdateMEDIA: "Update media" + URLDESCRIPTION: 'Insert videos and images from the web into your page simply by entering the URL of the file. Make sure you have the rights or permissions before sharing media directly from the web.

Please note that files are not added to the file store of the CMS but embeds the file from its original location, if for some reason the file is no longer available in its original location it will no longer be viewable on this page.' + URLNOTANOEMBEDRESOURCE: 'The URL ''{url}'' could not be turned into a media resource.' + UpdateMEDIA: 'Update media' HTMLEditorField_Toolbar: - ERROR_ABSOLUTE: "Only absolute urls can be embedded" - ERROR_HOSTNAME: "This file hostname is not included in the whitelist" - ERROR_ID: "Need either \"ID\" or \"FileURL\" parameter to identify the file" - ERROR_NOTFOUND: "Unable to find file to view" - ERROR_OEMBED_REMOTE: "Embed is only compatible with remote files" - ERROR_SCHEME: "This file scheme is not included in the whitelist" + ERROR_ABSOLUTE: 'Only absolute urls can be embedded' + ERROR_HOSTNAME: 'This file hostname is not included in the whitelist' + ERROR_ID: 'Need either "ID" or "FileURL" parameter to identify the file' + ERROR_NOTFOUND: 'Unable to find file to view' + ERROR_OEMBED_REMOTE: 'Embed is only compatible with remote files' + ERROR_SCHEME: 'This file scheme is not included in the whitelist' Hierarchy: - InfiniteLoopNotAllowed: "Infinite loop found within the \"{type}\" hierarchy. Please change the parent to resolve this" + InfiniteLoopNotAllowed: 'Infinite loop found within the "{type}" hierarchy. Please change the parent to resolve this' HtmlEditorField: - ADDURL: "Add URL" - ADJUSTDETAILSDIMENSIONS: "Details & dimensions" - ANCHORSCANNOTACCESSPAGE: "You are not permitted to access the content of the target page." - ANCHORSPAGENOTFOUND: "Target page not found." + ADDURL: 'Add URL' + ADJUSTDETAILSDIMENSIONS: 'Details & dimensions' + ANCHORSCANNOTACCESSPAGE: 'You are not permitted to access the content of the target page.' + ANCHORSPAGENOTFOUND: 'Target page not found.' ANCHORVALUE: Anchor - BUTTONADDURL: "Add url" + BUTTONADDURL: 'Add url' BUTTONINSERT: Insert - BUTTONINSERTLINK: "Insert link" - BUTTONREMOVELINK: "Remove link" + BUTTONINSERTLINK: 'Insert link' + BUTTONREMOVELINK: 'Remove link' BUTTONUpdate: Update - CAPTIONTEXT: "Caption text" - CSSCLASS: "Alignment / style" - CSSCLASSCENTER: "Centered, on its own." - CSSCLASSLEFT: "On the left, with text wrapping around." - CSSCLASSLEFTALONE: "On the left, on its own." - CSSCLASSRIGHT: "On the right, with text wrapping around." + CAPTIONTEXT: 'Caption text' + CSSCLASS: 'Alignment / style' + CSSCLASSCENTER: 'Centered, on its own.' + CSSCLASSLEFT: 'On the left, with text wrapping around.' + CSSCLASSLEFTALONE: 'On the left, on its own.' + CSSCLASSRIGHT: 'On the right, with text wrapping around.' DETAILS: Details - EMAIL: "Email address" + EMAIL: 'Email address' FILE: File FOLDER: Folder - FROMCMS: "From the CMS" - FROMCOMPUTER: "From your computer" - FROMWEB: "From the web" - FindInFolder: "Find in Folder" - IMAGEALT: "Alternative text (alt)" - IMAGEALTTEXT: "Alternative text (alt) - shown if image can't be displayed" - IMAGEALTTEXTDESC: "Shown to screen readers or if image can't be displayed" + FROMCMS: 'From the CMS' + FROMCOMPUTER: 'From your computer' + FROMWEB: 'From the web' + FindInFolder: 'Find in Folder' + IMAGEALT: 'Alternative text (alt)' + IMAGEALTTEXT: 'Alternative text (alt) - shown if image can''t be displayed' + IMAGEALTTEXTDESC: 'Shown to screen readers or if image can''t be displayed' IMAGEDIMENSIONS: Dimensions IMAGEHEIGHTPX: Height - IMAGETITLE: "Title text (tooltip) - for additional information about the image" - IMAGETITLETEXT: "Title text (tooltip)" - IMAGETITLETEXTDESC: "For additional information about the image" + IMAGETITLE: 'Title text (tooltip) - for additional information about the image' + IMAGETITLETEXT: 'Title text (tooltip)' + IMAGETITLETEXTDESC: 'For additional information about the image' IMAGEWIDTHPX: Width - INSERTMEDIA: "Insert Media" - LINK: "Insert Link" - LINKANCHOR: "Anchor on this page" - LINKDESCR: "Link description" - LINKEMAIL: "Email address" - LINKEXTERNAL: "Another website" - LINKFILE: "Download a file" - LINKINTERNAL: "Page on the site" - LINKOPENNEWWIN: "Open link in a new window?" - LINKTO: "Link to" + INSERTMEDIA: 'Insert Media' + LINK: 'Insert Link' + LINKANCHOR: 'Anchor on this page' + LINKDESCR: 'Link description' + LINKEMAIL: 'Email address' + LINKEXTERNAL: 'Another website' + LINKFILE: 'Download a file' + LINKINTERNAL: 'Page on the site' + LINKOPENNEWWIN: 'Open link in a new window?' + LINKTO: 'Link to' PAGE: Page - SUBJECT: "Email subject" + SUBJECT: 'Email subject' URL: URL - URLDESCRIPTION: "Insert videos and images from the web into your page simply by entering the URL of the file. Make sure you have the rights or permissions before sharing media directly from the web.

Please note that files are not added to the file store of the CMS but embeds the file from its original location, if for some reason the file is no longer available in its original location it will no longer be viewable on this page." - URLNOTANOEMBEDRESOURCE: "The URL '{url}' could not be turned into a media resource." - UpdateMEDIA: "Update Media" + URLDESCRIPTION: 'Insert videos and images from the web into your page simply by entering the URL of the file. Make sure you have the rights or permissions before sharing media directly from the web.

Please note that files are not added to the file store of the CMS but embeds the file from its original location, if for some reason the file is no longer available in its original location it will no longer be viewable on this page.' + URLNOTANOEMBEDRESOURCE: 'The URL ''{url}'' could not be turned into a media resource.' + UpdateMEDIA: 'Update Media' Image: PLURALNAME: Files SINGULARNAME: File @@ -421,135 +421,135 @@ en: PLURALNAME: Files SINGULARNAME: File Image_iframe_ss: - TITLE: "Image Uploading Iframe" + TITLE: 'Image Uploading Iframe' LeftAndMain: CANCEL: Cancel - CANT_REORGANISE: "You do not have permission to alter Top level pages. Your change was not saved." + CANT_REORGANISE: 'You do not have permission to alter Top level pages. Your change was not saved.' DELETED: Deleted. - DropdownBatchActionsDefault: "Choose an action..." + DropdownBatchActionsDefault: 'Choose an action...' HELP: Help - PAGETYPE: "Page type" - PERMAGAIN: "You have been logged out of the CMS. If you would like to log in again, enter a username and password below." - PERMALREADY: "I'm sorry, but you can't access that part of the CMS. If you want to log in as someone else, do so below." - PERMDEFAULT: "You must be logged in to access the administration area; please enter your credentials below." - PLEASESAVE: "Please Save Page: This page could not be updated because it hasn't been saved yet." + PAGETYPE: 'Page type' + PERMAGAIN: 'You have been logged out of the CMS. If you would like to log in again, enter a username and password below.' + PERMALREADY: 'I''m sorry, but you can''t access that part of the CMS. If you want to log in as someone else, do so below.' + PERMDEFAULT: 'You must be logged in to access the administration area; please enter your credentials below.' + PLEASESAVE: 'Please Save Page: This page could not be updated because it hasn''t been saved yet.' PreviewButton: Preview - REORGANISATIONSUCCESSFUL: "Reorganised the site tree successfully." + REORGANISATIONSUCCESSFUL: 'Reorganised the site tree successfully.' SAVEDUP: Saved. - ShowAsList: "show as list" - TooManyPages: "Too many pages" - ValidationError: "Validation error" + ShowAsList: 'show as list' + TooManyPages: 'Too many pages' + ValidationError: 'Validation error' VersionUnknown: unknown LeftAndMain_Menu_ss: Hello: Hi - LOGOUT: "Log out" + LOGOUT: 'Log out' ListboxField: - SOURCE_VALIDATION: "Please select a value within the list provided. %s is not a valid option" + SOURCE_VALIDATION: 'Please select a value within the list provided. %s is not a valid option' LoginAttempt: - Email: "Email Address" - IP: "IP Address" - PLURALNAME: "Login Attempts" - SINGULARNAME: "Login Attempt" + Email: 'Email Address' + IP: 'IP Address' + PLURALNAME: 'Login Attempts' + SINGULARNAME: 'Login Attempt' Status: Status Member: - ADDGROUP: "Add group" - BUTTONCHANGEPASSWORD: "Change Password" - BUTTONLOGIN: "Log in" - BUTTONLOGINOTHER: "Log in as someone else" - BUTTONLOSTPASSWORD: "I've lost my password" - CANTEDIT: "You don't have permission to do that" - CONFIRMNEWPASSWORD: "Confirm New Password" - CONFIRMPASSWORD: "Confirm Password" - CURRENT_PASSWORD: "Current Password" - DATEFORMAT: "Date format" - DefaultAdminFirstname: "Default Admin" + ADDGROUP: 'Add group' + BUTTONCHANGEPASSWORD: 'Change Password' + BUTTONLOGIN: 'Log in' + BUTTONLOGINOTHER: 'Log in as someone else' + BUTTONLOSTPASSWORD: 'I''ve lost my password' + CANTEDIT: 'You don''t have permission to do that' + CONFIRMNEWPASSWORD: 'Confirm New Password' + CONFIRMPASSWORD: 'Confirm Password' + CURRENT_PASSWORD: 'Current Password' + DATEFORMAT: 'Date format' + DefaultAdminFirstname: 'Default Admin' DefaultDateTime: default - EDIT_PASSWORD: "New Password" + EDIT_PASSWORD: 'New Password' EMAIL: Email - EMPTYNEWPASSWORD: "The new password can't be empty, please try again" - ENTEREMAIL: "Please enter an email address to get a password reset link." - ERRORLOCKEDOUT2: "Your account has been temporarily disabled because of too many failed attempts at logging in. Please try again in {count} minutes." - ERRORNEWPASSWORD: "You have entered your new password differently, try again" - ERRORPASSWORDNOTMATCH: "Your current password does not match, please try again" - ERRORWRONGCRED: "The provided details don't seem to be correct. Please try again." - FIRSTNAME: "First Name" - INTERFACELANG: "Interface Language" - INVALIDNEWPASSWORD: "We couldn't accept that password: {password}" - KEEPMESIGNEDIN: "Keep me signed in" - LOGGEDINAS: "You're logged in as {name}." - NEWPASSWORD: "New Password" - NoPassword: "There is no password on this member." + EMPTYNEWPASSWORD: 'The new password can''t be empty, please try again' + ENTEREMAIL: 'Please enter an email address to get a password reset link.' + ERRORLOCKEDOUT2: 'Your account has been temporarily disabled because of too many failed attempts at logging in. Please try again in {count} minutes.' + ERRORNEWPASSWORD: 'You have entered your new password differently, try again' + ERRORPASSWORDNOTMATCH: 'Your current password does not match, please try again' + ERRORWRONGCRED: 'The provided details don''t seem to be correct. Please try again.' + FIRSTNAME: 'First Name' + INTERFACELANG: 'Interface Language' + INVALIDNEWPASSWORD: 'We couldn''t accept that password: {password}' + KEEPMESIGNEDIN: 'Keep me signed in' + LOGGEDINAS: 'You''re logged in as {name}.' + NEWPASSWORD: 'New Password' + NoPassword: 'There is no password on this member.' PASSWORD: Password - PASSWORDEXPIRED: "Your password has expired. Please choose a new one." + PASSWORDEXPIRED: 'Your password has expired. Please choose a new one.' PLURALNAME: Members - REMEMBERME: "Remember me next time?" + REMEMBERME: 'Remember me next time?' SINGULARNAME: Member - SUBJECTPASSWORDCHANGED: "Your password has been changed" - SUBJECTPASSWORDRESET: "Your password reset link" + SUBJECTPASSWORDCHANGED: 'Your password has been changed' + SUBJECTPASSWORDRESET: 'Your password reset link' SURNAME: Surname - TIMEFORMAT: "Time format" - VALIDATIONMEMBEREXISTS: "A member already exists with the same {identifier}" - ValidationIdentifierFailed: "Can't overwrite existing member #{id} with identical identifier ({name} = {value}))" - WELCOMEBACK: "Welcome Back, {firstname}" - YOUROLDPASSWORD: "Your old password" + TIMEFORMAT: 'Time format' + VALIDATIONMEMBEREXISTS: 'A member already exists with the same {identifier}' + ValidationIdentifierFailed: 'Can''t overwrite existing member #{id} with identical identifier ({name} = {value}))' + WELCOMEBACK: 'Welcome Back, {firstname}' + YOUROLDPASSWORD: 'Your old password' belongs_many_many_Groups: Groups - db_LastVisited: "Last Visited Date" - db_Locale: "Interface Locale" - db_LockedOutUntil: "Locked out until" - db_NumVisit: "Number of Visits" + db_LastVisited: 'Last Visited Date' + db_Locale: 'Interface Locale' + db_LockedOutUntil: 'Locked out until' + db_NumVisit: 'Number of Visits' db_Password: Password - db_PasswordExpiry: "Password Expiry Date" + db_PasswordExpiry: 'Password Expiry Date' MemberAuthenticator: - TITLE: "E-mail & Password" + TITLE: 'E-mail & Password' MemberDatetimeOptionsetField: - AMORPM: "AM (Ante meridiem) or PM (Post meridiem)" + AMORPM: 'AM (Ante meridiem) or PM (Post meridiem)' Custom: Custom - DATEFORMATBAD: "Date format is invalid" - DAYNOLEADING: "Day of month without leading zero" - DIGITSDECFRACTIONSECOND: "One or more digits representing a decimal fraction of a second" - FOURDIGITYEAR: "Four-digit year" - FULLNAMEMONTH: "Full name of month (e.g. June)" - HOURNOLEADING: "Hour without leading zero" - HOURNOLEADING24: "Hour without leading zero, 24 hour format" - MINUTENOLEADING: "Minute without leading zero" - MONTHNOLEADING: "Month digit without leading zero" + 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' + HOURNOLEADING24: 'Hour without leading zero, 24 hour format' + MINUTENOLEADING: 'Minute without leading zero' + MONTHNOLEADING: 'Month digit without leading zero' Preview: Preview - SHORTMONTH: "Short name of month (e.g. Jun)" - 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" - Toggle: "Show formatting help" + SHORTMONTH: 'Short name of month (e.g. Jun)' + 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' + Toggle: 'Show formatting help' MemberImportForm: - Help1: "

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

" - Help2: "

Advanced usage

  • Allowed columns: %s
  • Existing users are matched by their unique Code property, and updated with any new values from the imported file.
  • Groups can be assigned by the Groups column. Groups are identified by their Code property, multiple groups can be separated by comma. Existing group memberships are not cleared.
" - ResultCreated: "Created {count} members" - ResultDeleted: "Deleted %d members" - ResultNone: "No changes" - ResultUpdated: "Updated {count} members" + Help1: '

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

' + Help2: '

Advanced usage

  • Allowed columns: %s
  • Existing users are matched by their unique Code property, and updated with any new values from the imported file.
  • Groups can be assigned by the Groups column. Groups are identified by their Code property, multiple groups can be separated by comma. Existing group memberships are not cleared.
' + ResultCreated: 'Created {count} members' + ResultDeleted: 'Deleted %d members' + ResultNone: 'No changes' + ResultUpdated: 'Updated {count} members' MemberPassword: - PLURALNAME: "Member Passwords" - SINGULARNAME: "Member Password" + PLURALNAME: 'Member Passwords' + SINGULARNAME: 'Member Password' MemberTableField: - APPLY_FILTER: "Apply Filter" + APPLY_FILTER: 'Apply Filter' ModelAdmin: DELETE: Delete - DELETEDRECORDS: "Deleted {count} records." - EMPTYBEFOREIMPORT: "Replace data" - IMPORT: "Import from CSV" - IMPORTEDRECORDS: "Imported {count} records." - NOCSVFILE: "Please browse for a CSV file to import" - NOIMPORT: "Nothing to import" + DELETEDRECORDS: 'Deleted {count} records.' + EMPTYBEFOREIMPORT: 'Replace data' + IMPORT: 'Import from CSV' + IMPORTEDRECORDS: 'Imported {count} records.' + NOCSVFILE: 'Please browse for a CSV file to import' + NOIMPORT: 'Nothing to import' RESET: Reset - Title: "Data Models" - UPDATEDRECORDS: "Updated {count} records." + Title: 'Data Models' + UPDATEDRECORDS: 'Updated {count} records.' ModelAdmin_ImportSpec_ss: - IMPORTSPECFIELDS: "Database columns" - IMPORTSPECLINK: "Show Specification for %s" + IMPORTSPECFIELDS: 'Database columns' + IMPORTSPECLINK: 'Show Specification for %s' IMPORTSPECRELATIONS: Relations - IMPORTSPECTITLE: "Specification for %s" + IMPORTSPECTITLE: 'Specification for %s' ModelAdmin_Tools_ss: FILTER: Filter IMPORT: Import @@ -560,100 +560,100 @@ en: FIELDLABELAMOUNT: Amount FIELDLABELCURRENCY: Currency MultiSelectField: - SOURCE_VALIDATION: "Please select values within the list provided. Invalid option(s) {value} given" + SOURCE_VALIDATION: 'Please select values within the list provided. Invalid option(s) {value} given' NullableField: - IsNullLabel: "Is Null" + IsNullLabel: 'Is Null' NumericField: - VALIDATION: "'{value}' is not a number, only numbers can be accepted for this field" + VALIDATION: '''{value}'' is not a number, only numbers can be accepted for this field' Pagination: Page: Page View: View PasswordValidator: - LOWCHARSTRENGTH: "Please increase password strength by adding some of the following characters: %s" - PREVPASSWORD: "You've already used that password in the past, please choose a new password" - TOOSHORT: "Password is too short, it must be %s or more characters long" + LOWCHARSTRENGTH: 'Please increase password strength by adding some of the following characters: %s' + PREVPASSWORD: 'You''ve already used that password in the past, please choose a new password' + TOOSHORT: 'Password is too short, it must be %s or more characters long' Permission: AdminGroup: Administrator - CMS_ACCESS_CATEGORY: "CMS Access" - FULLADMINRIGHTS: "Full administrative rights" - FULLADMINRIGHTS_HELP: "Implies and overrules all other assigned permissions." + CMS_ACCESS_CATEGORY: 'CMS Access' + FULLADMINRIGHTS: 'Full administrative rights' + FULLADMINRIGHTS_HELP: 'Implies and overrules all other assigned permissions.' PLURALNAME: Permissions SINGULARNAME: Permission PermissionCheckboxSetField: - AssignedTo: "assigned to \"{title}\"" - FromGroup: "inherited from group \"{title}\"" - FromRole: "inherited from role \"{title}\"" - FromRoleOnGroup: "inherited from role \"%s\" on group \"%s\"" + AssignedTo: 'assigned to "{title}"' + FromGroup: 'inherited from group "{title}"' + FromRole: 'inherited from role "{title}"' + FromRoleOnGroup: 'inherited from role "%s" on group "%s"' PermissionRole: - OnlyAdminCanApply: "Only admin can apply" + OnlyAdminCanApply: 'Only admin can apply' PLURALNAME: Roles SINGULARNAME: Role Title: Title PermissionRoleCode: - PLURALNAME: "Permission Role Codes" - PermsError: "Can't assign code \"%s\" with privileged permissions (requires ADMIN access)" - SINGULARNAME: "Permission Role Code" + PLURALNAME: 'Permission Role Codes' + PermsError: 'Can''t assign code "%s" with privileged permissions (requires ADMIN access)' + SINGULARNAME: 'Permission Role Code' Permissions: - PERMISSIONS_CATEGORY: "Roles and access permissions" - UserPermissionsIntro: "Assigning groups to this user will adjust the permissions they have. See the groups section for details of permissions on individual groups." + PERMISSIONS_CATEGORY: 'Roles and access permissions' + UserPermissionsIntro: 'Assigning groups to this user will adjust the permissions they have. See the groups section for details of permissions on individual groups.' PhoneNumberField: - VALIDATION: "Please enter a valid phone number" + VALIDATION: 'Please enter a valid phone number' RememberLoginHash: - PLURALNAME: "Remember Login Hashs" - SINGULARNAME: "Remember Login Hash" + PLURALNAME: 'Remember Login Hashs' + SINGULARNAME: 'Remember Login Hash' Security: - ALREADYLOGGEDIN: "You don't have access to this page. If you have another account that can access that page, you can log in again below." - BUTTONSEND: "Send me the password reset link" - CHANGEPASSWORDBELOW: "You can change your password below." - CHANGEPASSWORDHEADER: "Change your password" - ENTERNEWPASSWORD: "Please enter a new password." - ERRORPASSWORDPERMISSION: "You must be logged in in order to change your password!" - LOGGEDOUT: "You have been logged out. If you would like to log in again, enter your credentials below." - LOGIN: "Log in" - LOSTPASSWORDHEADER: "Lost Password" - NOTEPAGESECURED: "That page is secured. Enter your credentials below and we will send you right along." - 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: "Enter your e-mail address and we will send you a link with which you can reset your password" - 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." + ALREADYLOGGEDIN: 'You don''t have access to this page. If you have another account that can access that page, you can log in again below.' + BUTTONSEND: 'Send me the password reset link' + CHANGEPASSWORDBELOW: 'You can change your password below.' + CHANGEPASSWORDHEADER: 'Change your password' + ENTERNEWPASSWORD: 'Please enter a new password.' + ERRORPASSWORDPERMISSION: 'You must be logged in in order to change your password!' + LOGGEDOUT: 'You have been logged out. If you would like to log in again, enter your credentials below.' + LOGIN: 'Log in' + LOSTPASSWORDHEADER: 'Lost Password' + NOTEPAGESECURED: 'That page is secured. Enter your credentials below and we will send you right along.' + 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: 'Enter your e-mail address and we will send you a link with which you can reset your password' + PASSWORDSENTHEADER: 'Password reset link sent to ''{email}''' + PASSWORDSENTTEXT: 'Thank you! A reset link has been sent to ''{email}'', provided an account exists for this email address.' SecurityAdmin: - ACCESS_HELP: "Allow viewing, adding and editing users, as well as assigning permissions and roles to them." - APPLY_ROLES: "Apply roles to groups" - APPLY_ROLES_HELP: "Ability to edit the roles assigned to a group. Requires the \"Access to 'Users' section\" permission." - EDITPERMISSIONS: "Manage permissions for groups" - EDITPERMISSIONS_HELP: "Ability to edit Permissions and IP Addresses for a group. Requires the \"Access to 'Security' section\" permission." - GROUPNAME: "Group name" - IMPORTGROUPS: "Import groups" - IMPORTUSERS: "Import users" + 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: 'Ability to edit the roles assigned to a group. Requires the "Access to ''Users'' section" permission.' + EDITPERMISSIONS: 'Manage permissions for groups' + EDITPERMISSIONS_HELP: 'Ability to edit Permissions and IP Addresses for a group. Requires the "Access to ''Security'' section" permission.' + GROUPNAME: 'Group name' + IMPORTGROUPS: 'Import groups' + IMPORTUSERS: 'Import users' MEMBERS: Members MENUTITLE: Security - MemberListCaution: "Caution: Removing members from this list will remove them from all groups and the database" - NEWGROUP: "New Group" + MemberListCaution: 'Caution: Removing members from this list will remove them from all groups and the database' + NEWGROUP: 'New Group' PERMISSIONS: Permissions ROLES: Roles - ROLESDESCRIPTION: "Roles are predefined sets of permissions, and can be assigned to groups.
They are inherited from parent groups if required." + ROLESDESCRIPTION: 'Roles are predefined sets of permissions, and can be assigned to groups.
They are inherited from parent groups if required.' TABROLES: Roles Users: Users SecurityAdmin_MemberImportForm: - BtnImport: "Import from CSV" - FileFieldLabel: "CSV File (Allowed extensions: *.csv)" + BtnImport: 'Import from CSV' + FileFieldLabel: 'CSV File (Allowed extensions: *.csv)' SilverStripeNavigator: Auto: Auto - ChangeViewMode: "Change view mode" + ChangeViewMode: 'Change view mode' Desktop: Desktop - DualWindowView: "Dual Window" + DualWindowView: 'Dual Window' Edit: Edit - EditView: "Edit mode" + EditView: 'Edit mode' Mobile: Mobile - PreviewState: "Preview State" - PreviewView: "Preview mode" + PreviewState: 'Preview State' + PreviewView: 'Preview mode' Responsive: Responsive - SplitView: "Split mode" + SplitView: 'Split mode' Tablet: Tablet - ViewDeviceWidth: "Select a preview width" + ViewDeviceWidth: 'Select a preview width' Width: width SilverStripe\Admin\CMSProfileController: - MENUTITLE: "My Profile" + MENUTITLE: 'My Profile' SilverStripe\Admin\CampaignAdmin: MENUTITLE: Campaigns SilverStripe\Admin\SecurityAdmin: @@ -668,26 +668,26 @@ en: PLURALNAME: Images SINGULARNAME: Image SilverStripe\ORM\DataObject: - PLURALNAME: "Data Objects" - SINGULARNAME: "Data Object" + PLURALNAME: 'Data Objects' + SINGULARNAME: 'Data Object' SilverStripe\ORM\Versioning\ChangeSet: PLURALNAME: Campaigns SINGULARNAME: Campaign SilverStripe\ORM\Versioning\ChangeSetItem: - PLURALNAME: "Change Set Items" - SINGULARNAME: "Change Set Item" + PLURALNAME: 'Change Set Items' + SINGULARNAME: 'Change Set Item' SilverStripe\Security\Group: PLURALNAME: Groups SINGULARNAME: Group SilverStripe\Security\LoginAttempt: - PLURALNAME: "Login Attempts" - SINGULARNAME: "Login Attempt" + PLURALNAME: 'Login Attempts' + SINGULARNAME: 'Login Attempt' SilverStripe\Security\Member: PLURALNAME: Members SINGULARNAME: Member SilverStripe\Security\MemberPassword: - PLURALNAME: "Member Passwords" - SINGULARNAME: "Member Password" + PLURALNAME: 'Member Passwords' + SINGULARNAME: 'Member Password' SilverStripe\Security\Permission: PLURALNAME: Permissions SINGULARNAME: Permission @@ -695,64 +695,64 @@ en: PLURALNAME: Roles SINGULARNAME: Role SilverStripe\Security\PermissionRoleCode: - PLURALNAME: "Permission Role Codes" - SINGULARNAME: "Permission Role Code" + PLURALNAME: 'Permission Role Codes' + SINGULARNAME: 'Permission Role Code' SilverStripe\Security\RememberLoginHash: - PLURALNAME: "Remember Login Hashs" - SINGULARNAME: "Remember Login Hash" + PLURALNAME: 'Remember Login Hashs' + SINGULARNAME: 'Remember Login Hash' SiteTree: TABMAIN: Main TableListField: - CSVEXPORT: "Export to CSV" + CSVEXPORT: 'Export to CSV' Print: Print TableListField_PageControls_ss: OF: of TextField: - VALIDATEMAXLENGTH: "The value for {name} must not exceed {maxLength} characters in length" + VALIDATEMAXLENGTH: 'The value for {name} must not exceed {maxLength} characters in length' TimeField: - VALIDATEFORMAT: "Please enter a valid time format ({format})" + VALIDATEFORMAT: 'Please enter a valid time format ({format})' ToggleField: LESS: less MORE: more UploadField: - ATTACHFILE: "Attach a file" - ATTACHFILES: "Attach files" - AttachFile: "Attach file(s)" - CHOOSEANOTHERFILE: "Choose another file" - CHOOSEANOTHERINFO: "Replace this file with another one from the file store" - DELETE: "Delete from files" - DELETEINFO: "Permanently delete this file from the file store" + ATTACHFILE: 'Attach a file' + ATTACHFILES: 'Attach files' + AttachFile: 'Attach file(s)' + CHOOSEANOTHERFILE: 'Choose another file' + CHOOSEANOTHERINFO: 'Replace this file with another one from the file store' + DELETE: 'Delete from files' + DELETEINFO: 'Permanently delete this file from the file store' DOEDIT: Save - DROPFILE: "drop a file" - DROPFILES: "drop files" + DROPFILE: 'drop a file' + DROPFILES: 'drop files' Dimensions: Dimensions EDIT: Edit - EDITINFO: "Edit this file" - FIELDNOTSET: "File information not found" - FROMCOMPUTER: "From your computer" - FROMCOMPUTERINFO: "Select from files" - FROMFILES: "From files" - HOTLINKINFO: "Info: This image will be hotlinked. Please ensure you have permissions from the original site creator to do so." - MAXNUMBEROFFILES: "Max number of {count} file(s) exceeded." - MAXNUMBEROFFILESONE: "Can only upload one file" - MAXNUMBEROFFILESSHORT: "Can only upload {count} files" - OVERWRITEWARNING: "File with the same name already exists" + EDITINFO: 'Edit this file' + FIELDNOTSET: 'File information not found' + FROMCOMPUTER: 'From your computer' + FROMCOMPUTERINFO: 'Select from files' + FROMFILES: 'From files' + HOTLINKINFO: 'Info: This image will be hotlinked. Please ensure you have permissions from the original site creator to do so.' + MAXNUMBEROFFILES: 'Max number of {count} file(s) exceeded.' + MAXNUMBEROFFILESONE: 'Can only upload one file' + MAXNUMBEROFFILESSHORT: 'Can only upload {count} files' + OVERWRITEWARNING: 'File with the same name already exists' REMOVE: Remove - REMOVEINFO: "Remove this file from here, but do not delete it from the file store" - STARTALL: "Start all" + REMOVEINFO: 'Remove this file from here, but do not delete it from the file store' + STARTALL: 'Start all' Saved: Saved - UPLOADSINTO: "saves into /{path}" + UPLOADSINTO: 'saves into /{path}' Versioned: - INFERRED_TITLE: "Generated by publish of '{title}' at {created}" + INFERRED_TITLE: 'Generated by publish of ''{title}'' at {created}' has_many_Versions: Versions VersionedGridFieldItemRequest: ARCHIVE: Archive - Archived: "Archived %s %s" - BUTTONARCHIVEDESC: "Unpublish and send to archive" + Archived: 'Archived %s %s' + BUTTONARCHIVEDESC: 'Unpublish and send to archive' BUTTONPUBLISH: Publish BUTTONUNPUBLISH: Unpublish - BUTTONUNPUBLISHDESC: "Remove this record from the published site" - Published: "Published {name} {link}" - Unpublished: "Unpublished %s %s" + BUTTONUNPUBLISHDESC: 'Remove this record from the published site' + Published: 'Published {name} {link}' + Unpublished: 'Unpublished %s %s' i18n: - PLURAL: "{number} {form}" + PLURAL: '{number} {form}' diff --git a/lang/fa_IR.yml b/lang/fa_IR.yml index af493453e..02d0a4e78 100644 --- a/lang/fa_IR.yml +++ b/lang/fa_IR.yml @@ -68,9 +68,9 @@ fa_IR: BackLink_Button_ss: Back: بازگشت BasicAuth: - ENTERINFO: "لطفاً یک نام‌کاربری و رمز عبور را وارد نمایید." + ENTERINFO: "لطفاً یک نام‌کاربری و گذرواژه را وارد نمایید." ERRORNOTADMIN: "این کاربر یک مدیر نیست." - ERRORNOTREC: "این نام کاربری / رمز عبور شناخته‌شده نیست" + ERRORNOTREC: "این نام کاربری / گذرواژه شناخته‌شده نیست" Boolean: ANY: هر NOANSWER: خیر @@ -86,10 +86,10 @@ fa_IR: ACCESSALLINTERFACESHELP: "شامل تنظیمات دسترسی‌های ویژه می‌شود." SAVE: ذخیره CMSMemberLoginForm: - BUTTONFORGOTPASSWORD: "رمز عبور را فراموش کرده‌اید؟" + BUTTONFORGOTPASSWORD: "گذرواژه را فراموش کرده‌اید؟" BUTTONLOGIN: "ورود دوباره" BUTTONLOGOUT: خروج - PASSWORDEXPIRED: "

رمز عبور شما منقضی شده‌است. لطفاً یکی دیگر برگزینید.

" + PASSWORDEXPIRED: "

گذرواژه شما منقضی شده‌است. لطفاً یکی دیگر برگزینید.

" CMSPageHistoryController_versions_ss: PREVIEW: "پیش‌نمایش وب‌سایت" CMSPagesController_Tools_ss: @@ -109,12 +109,12 @@ fa_IR: AddToCampaign: "افزودن به کمپین" AddToCampaignFormFieldLabel: "انتخاب یک کمپین" ChangePasswordEmail_ss: - CHANGEPASSWORDTEXT1: "شما رمز عبورتان را تغییر دادید برای" + CHANGEPASSWORDTEXT1: "شما گذرواژه‌تان را تغییر دادید برای" CHANGEPASSWORDTEXT2: "اکنون می‌توانید با این اطلاعات وارد شوید:" - CHANGEPASSWORDTEXT3: "تغییر رمز عبور" + CHANGEPASSWORDTEXT3: "تغییر گذرواژه" EMAIL: ايميل HELLO: درود - PASSWORD: "رمز عبور" + PASSWORD: گذرواژه ChangeSet: DESCRIPTION_AND: "{first} و {second}" DESCRIPTION_ITEM: آیتم @@ -136,14 +136,15 @@ fa_IR: CheckboxSetField: SOURCE_VALIDATION: "لطفاً یک ارزش از لیست فراهم‌شده برگزینید. '{value}' یک گزینه معتبر نیست" ConfirmedPasswordField: - ATLEAST: "رمزهای عبور باید حداقل {min} کاراکتر باشد." - BETWEEN: "رمزهای عبور باید بین {min} تا {max} کاراکتر باشد." - CURRENT_PASSWORD_MISSING: "شما باید رمز عبور کنونی خود را وارد نمایید." - LOGGED_IN_ERROR: "جهت تغییر رمز عبور خود باید وارد شده باشید." - MAXIMUM: "رمزهای عبور باید حداکثر {max} کاراکتر باشد." - SHOWONCLICKTITLE: "تغییر رمز عبور" + ATLEAST: "گذرواژه باید حداقل {min} کاراکتر باشد." + BETWEEN: "گذرواژه باید بین {min} تا {max} کاراکتر باشد." + CURRENT_PASSWORD_ERROR: "گذرواژه‌ای که وارد نموده‌اید درست نیست." + CURRENT_PASSWORD_MISSING: "شما باید گذرواژه کنونی خود را وارد نمایید." + LOGGED_IN_ERROR: "جهت تغییر گذرواژه خود باید وارد شده باشید." + MAXIMUM: "گذرواژه باید حداکثر {max} کاراکتر باشد." + SHOWONCLICKTITLE: "تغییر گذرواژه" ContentController: - DRAFT_SITE_ACCESS_RESTRICTION: "برای نمایش پیش‌نویس یا محتوای آرشیو شده باید با رمز عبور سی‌ام‌اس خود وارد شوید. اینجا را کلیک کنید تا به سایت منتشر‌شده بازگردید." + DRAFT_SITE_ACCESS_RESTRICTION: "برای نمایش پیش‌نویس یا محتوای آرشیو شده باید با گذرواژه سی‌ام‌اس خود وارد شوید. اینجا را کلیک کنید تا به سایت منتشر‌شده بازگردید." NOTLOGGEDIN: "وارد نشده" CreditCardField: FIRST: نخست @@ -193,6 +194,7 @@ fa_IR: AviType: "فایل ویدیو AVI" Content: محتوا CssType: "فایل CSS" + DRAFT: پیش‌نویس DmgType: "دیسک ایمیج اپل" DocType: "فایل Word" Filename: "نام فايل" @@ -205,6 +207,7 @@ fa_IR: IcoType: "تصویر آیکن" JpgType: "تصویر JPEG - مناسب برای عکس‌ها" JsType: "فایل جاوااسکریپت" + MODIFIED: "تغییر یافته" Mp3Type: "فایل صوتی MP3" MpgType: "فایل ویدیویی MPEG" NOVALIDUPLOAD: "فایل یک بارگذاری معتبر نیست" @@ -226,7 +229,7 @@ fa_IR: ForgotPasswordEmail_ss: HELLO: درود TEXT1: "شما اینجاست" - TEXT2: "لینک نوسازی رمز عبور" + TEXT2: "لینک ازنوسازی گذرواژه" TEXT3: برای Form: CSRF_EXPIRED_MESSAGE: "جلسه شما به پایان رسیده است. لطفاً فرم را مجدداً ارسال کنید." @@ -235,9 +238,9 @@ fa_IR: SubmitBtnLabel: برو VALIDATIONCREDITNUMBER: "لطفاً اطمینان حاصل‌کنید که {number} شماره کارت اعتباری را به درستی وارد کرده‌اید" VALIDATIONNOTUNIQUE: "مقدار وارد شده یکتا نیست" - VALIDATIONPASSWORDSDONTMATCH: "رمزهای عبور همانند هم نیستند" - VALIDATIONPASSWORDSNOTEMPTY: "رمزهای عبور نباید تهی باشند" - VALIDATIONSTRONGPASSWORD: "رمزهای عبور باید حداقل شامل یک شماره و یک کاراکتر الفبایی باشند" + VALIDATIONPASSWORDSDONTMATCH: "گذرواژه‌ها همانند هم نیستند" + VALIDATIONPASSWORDSNOTEMPTY: "گذرواژه‌ها نباید تهی باشند" + VALIDATIONSTRONGPASSWORD: "گذرواژه‌ها باید حداقل شامل یک شماره و یک کاراکتر الفبایی باشند" VALIDATOR: اعتبارسنج VALIDCURRENCY: "لطفاً یک واحد پول معتبر وارد نمایید" FormField: @@ -303,6 +306,7 @@ fa_IR: ANCHORSCANNOTACCESSPAGE: "شما مجاز به دسترسی به محتوای صفحه هدف نیستید." ANCHORSPAGENOTFOUND: "صفحه‌ی هدف پیدا نشد." BUTTONADDURL: "افزودن نشانی اینترنتی" + CAPTIONTEXT: "متن کپشن" CSSCLASS: "چیدمان / سبک" DETAILS: جزئیات EMAIL: "نشانی ایمیل" @@ -315,7 +319,12 @@ fa_IR: INSERTMEDIA: "واردکردن رسانه از" LINK: "واردکردن لینک" LINKDESCR: "توضیحات لینک" + LINKDETAILS: "جزئیات لینک" + LINKEMAIL: "لینک به یک نشانی ایمیل" + LINKEXTERNAL: "لینک به وب‌سایت دیگر" + LINKFILE: "لینک به یک فایل قابل دانلود" LINKOPENNEWWIN: "لینک در پنجره جدید باز شود؟" + LINKTO: "نوع لینک" PAGE: صفحه SUBJECT: "موضوع ایمیل" URL: "نشانی اینترنتی" @@ -330,8 +339,8 @@ fa_IR: ANCHORSPAGENOTFOUND: "صفحه‌ی هدف پیدا نشد" BUTTONADDURL: "افزودن نشانی اینترنتی" BUTTONINSERT: "وارد کردن" - BUTTONINSERTLINK: "گذاشتن پیوند" - BUTTONREMOVELINK: "برداشتن پیوند" + BUTTONINSERTLINK: "وارد کردن لینک" + BUTTONREMOVELINK: "حذف لینک" BUTTONUpdate: "به روزرسانی" CAPTIONTEXT: "متن کپشن" CSSCLASS: "جاگیری / الگو" @@ -347,14 +356,14 @@ fa_IR: IMAGEHEIGHTPX: بلندی IMAGEWIDTHPX: پهنا INSERTMEDIA: "واردکردن رسانه" - LINK: پیوند + LINK: "واردکردن لینک" LINKDESCR: "توضیحات لینک" LINKEMAIL: "پست الکترونیک" LINKEXTERNAL: "تارگاه دیگر" LINKFILE: "یک پرونده را بارگزاری کنید" LINKINTERNAL: "برگ در تارگاه" - LINKOPENNEWWIN: "در پنجره جدید باز شود ؟" - LINKTO: "پیوند به" + LINKOPENNEWWIN: "در یک پنجره‌ی جدید باز شود؟" + LINKTO: "لینک به" PAGE: برگ SUBJECT: "موضوع پست الکترونیک" URL: نشانی @@ -370,13 +379,17 @@ fa_IR: LeftAndMain: CANCEL: لغو DELETED: "حذف شده" + DropdownBatchActionsDefault: "یک عملکرد انتخاب کنید..." HELP: کمک - PERMAGAIN: "شما از سیستم مدیریت محتوا خارج شده اید.اگر میخواهید دوباره وارد شوید نام کاربری و رمز عبور خود را در قسمت زیر وارد کنید" + PAGETYPE: "نوع صفحه" + PERMAGAIN: "شما از سیستم مدیریت محتوا خارج شده اید.اگر میخواهید دوباره وارد شوید نام کاربری و گذرواژه خود را در قسمت زیر وارد کنید" + PERMDEFAULT: "جهت ورود به محیط مدیریت باید وارد شده باشید؛ لطفاً اطلاعات خود را در زیر وارد نمایید." PreviewButton: پیش‌نمایش SAVEDUP: "ذخیره شده" ShowAsList: "نمایش به‌صورت لیست" TooManyPages: "صفحات بسیار زیاد" ValidationError: "خطای اعتبارسنجی" + VersionUnknown: نامشخص LeftAndMain_Menu_ss: Hello: درود LOGOUT: خروج @@ -390,46 +403,49 @@ fa_IR: Status: وضعیت Member: ADDGROUP: "افزودن گروه" - BUTTONCHANGEPASSWORD: "تغییر رمز عبور" + BUTTONCHANGEPASSWORD: "تغییر گذرواژه" BUTTONLOGIN: ورود BUTTONLOGINOTHER: "ورود به عنوان شخصی دیگر" - BUTTONLOSTPASSWORD: "من رمز عبور خود را فراموش کرده‌ام" + BUTTONLOSTPASSWORD: "من گذرواژه خود را فراموش کرده‌ام" CANTEDIT: "شما دسترسی انجام این کار را ندارید." - CONFIRMNEWPASSWORD: "تکرار رمز عبور جدید" - CONFIRMPASSWORD: "تکرار رمز عبور" - CURRENT_PASSWORD: "رمز ورود کنونی" + CONFIRMNEWPASSWORD: "تکرار گذرواژه جدید" + CONFIRMPASSWORD: "تکرار گذرواژه" + CURRENT_PASSWORD: "گذرواژه کنونی" DATEFORMAT: "قالب تاریخ" DefaultAdminFirstname: "مدیر پیشفرض" DefaultDateTime: پیش‌فرض - EDIT_PASSWORD: "رمز ورود جدید" + EDIT_PASSWORD: "گذرواژه جدید" EMAIL: "پست الکترونیک" EMPTYNEWPASSWORD: "رمز عبور جدید نمیتواند خالی باشد، لطفا دوباره تلاش کنید" - ENTEREMAIL: "لطفاً یک نشانی ایمیل وارد نمایید تا پیوند ازنوسازی رمز عبور را دریافت کنید." - ERRORPASSWORDNOTMATCH: "رمز عبور کنونی همانند نیست، لطفاً مجدداً تلاش نمایید" + ENTEREMAIL: "لطفاً یک نشانی ایمیل وارد نمایید تا لینک ازنوسازی گذرواژه را دریافت کنید." + ERRORNEWPASSWORD: "شما گذرواژه جدید خود را متفاوت وارد کرده‌اید، دوباره امتحان نمایید" + ERRORPASSWORDNOTMATCH: "گذرواژه کنونی همانند نیست، لطفاً مجدداً تلاش نمایید" FIRSTNAME: نام INTERFACELANG: "زبان برنامه" + INVALIDNEWPASSWORD: "ما نتوانستیم این گذرواژه را بپذیریم: {password}" KEEPMESIGNEDIN: "مرا واردشده نگه‌دار" LOGGEDINAS: "شما به {name} عنوان وارد شده‌اید." NEWPASSWORD: "گذرواژه تازه" - NoPassword: "رمز عبوری برای این کاربر وجود ندارد" - PASSWORD: "رمز عبور" - PASSWORDEXPIRED: "رمز عبور شما منقضی شده‌است. لطفاً یکی جدید برگزینید." + NoPassword: "گذرواژه‌ای برای این کاربر وجود ندارد" + PASSWORD: گذرواژه + PASSWORDEXPIRED: "گذرواژه شما منقضی شده‌است. لطفاً یکی جدید برگزینید." PLURALNAME: اعضاء + REMEMBERME: "مرا برای بار بعد به خاطر بسپار؟" SINGULARNAME: عضو - SUBJECTPASSWORDCHANGED: "گذرواژه شما دگرگون شد" - SUBJECTPASSWORDRESET: "پیوند ازنوسازی گذرواژه شما" + SUBJECTPASSWORDCHANGED: "گذرواژه شما تغییر یافته است" + SUBJECTPASSWORDRESET: "لینک ازنوسازی گذرواژه شما" SURNAME: "نام خانوادگی" TIMEFORMAT: "قالب زمان" WELCOMEBACK: "خوش آمدید، {firstname}" - YOUROLDPASSWORD: "رمز عبور قدیمی" + YOUROLDPASSWORD: "گذرواژه قدیمی شما" belongs_many_many_Groups: گروه‌ها db_LastVisited: "تاریخ آخرین بازدید" db_LockedOutUntil: "بسته شده تا " db_NumVisit: "شمار بازدید" - db_Password: "رمز عبور" - db_PasswordExpiry: "تاریخ از میان رفتن گذرواژه" + db_Password: گذرواژه + db_PasswordExpiry: "تاریخ انقضاء گذرواژه" MemberAuthenticator: - TITLE: "ایمیل و رمز عبور" + TITLE: "ایمیل و گذرواژه" MemberDatetimeOptionsetField: AMORPM: "ق‌ظ (قبل‌از‌ظهر) یا ب‌ظ (بعد‌از‌ظهر)" Custom: دلخواه @@ -437,6 +453,8 @@ fa_IR: DAYNOLEADING: "روز از ماه بدون نمایش صفر در ابتدا" FOURDIGITYEAR: "سال چهار عددی" FULLNAMEMONTH: "نام کامل ماه (مثال ژوئن)" + HOURNOLEADING: "ساعت بدون صفر آغازین" + HOURNOLEADING24: "ساعت بدون صفر آغازین، قالب ۲۴ ساعته" MINUTENOLEADING: "دقیقه بدون نمایش صفر در ابتدا" MONTHNOLEADING: "عدد ماه بدون نمایش صفر در ابتدا" Preview: پیش‌نمایش @@ -454,8 +472,8 @@ fa_IR: ResultNone: "تغییری ایجاد نشد" ResultUpdated: "به‌روز‌رسانی {count} عضو" MemberPassword: - PLURALNAME: "رمزهای عبور کاربر" - SINGULARNAME: "رمز عبور کاربر" + PLURALNAME: "گذرواژه‌های کاربر" + SINGULARNAME: "گذرواژه کاربر" MemberTableField: APPLY_FILTER: "اعمال پالایش" ModelAdmin: @@ -488,7 +506,7 @@ fa_IR: Page: صفحه View: نمایش PasswordValidator: - TOOSHORT: "رمز عبور بسیار کوتاه است، باید %s کاراکتر یا بیشتر باشد" + TOOSHORT: "گذرواژه بسیار کوتاه است، باید %s کاراکتر یا بیشتر باشد" Permission: AdminGroup: "مدیر کل" CMS_ACCESS_CATEGORY: "دسترسی CMS" @@ -512,15 +530,15 @@ fa_IR: VALIDATION: "لطفاً شماره تلفن معتبر وارد کنید" Security: ALREADYLOGGEDIN: "شما به این صفحه دسترسی ندارید. اگر حساب کاربری دیگری دارید که به این صفحه دسترسی دارد، شما میتوانید دوباره وارد شوید.." - BUTTONSEND: "برایم یک ازنوسازی رمز عبور ارسال کن" - CHANGEPASSWORDBELOW: "می‌توانید رمز عبور خود را در پایین تغییر دهید." + BUTTONSEND: "برایم لینک ازنوسازی گذرواژه ارسال کن" + CHANGEPASSWORDBELOW: "می‌توانید گذرواژه خود را در پایین تغییر دهید." CHANGEPASSWORDHEADER: "تغییر گذرواژه" ENTERNEWPASSWORD: "لطفاً گذرواژه جدید را وارد کنید." - ERRORPASSWORDPERMISSION: "جهت تغییر رمز عبور خود باید وارد شده باشید!" + ERRORPASSWORDPERMISSION: "جهت تغییر گذرواژه خود باید وارد شده باشید!" LOGGEDOUT: "شما خارج شده‌اید. اگر مایل هستید دوباره وارد شوید، اطلاعات معتبر خود را در زیر وارد نمایید." LOGIN: ورود - LOSTPASSWORDHEADER: "فراموشی رمز عبور" - PASSWORDSENTHEADER: "پیوند ازنوسازی رمز عبور به '{email}' ارسال شد" + LOSTPASSWORDHEADER: "فراموشی گذرواژه" + PASSWORDSENTHEADER: "لینک ازنوسازی گذرواژه به '{email}' ارسال شد" SecurityAdmin: APPLY_ROLES: "اعمال وظایف به گروه" EDITPERMISSIONS: "مدیریت دسترسی‌های گروه‌ها" @@ -579,8 +597,8 @@ fa_IR: PLURALNAME: اعضاء SINGULARNAME: عضو SilverStripe\Security\MemberPassword: - PLURALNAME: "رمز عبورهای عضو" - SINGULARNAME: "رمز عبور عضو" + PLURALNAME: "گذرواژه‌های کاربر" + SINGULARNAME: "گذرواژه کاربر" SilverStripe\Security\Permission: PLURALNAME: مجوز‌ها SINGULARNAME: مجوز @@ -594,6 +612,7 @@ fa_IR: TimeField: VALIDATEFORMAT: "لطفاً یک قالب زمان معتبر وارد نمایید ({format})" ToggleField: + LESS: کمتر MORE: بیشتر UploadField: ATTACHFILE: "ضمیمه کردن یک فایل" @@ -611,6 +630,7 @@ fa_IR: FROMCOMPUTER: "از کامپیوتر شما" FROMCOMPUTERINFO: "انتخاب از فایل‌ها" FROMFILES: "از فایل‌ها" + HOTLINKINFO: "اطلاعات: این تصویر هات‌لینک‌شده می‌شود. لطفاً مطمئن شوید برای این‌کار دارای مجوزهایی از خالق سایت اصلی هستید." MAXNUMBEROFFILESONE: "تنها یک فایل را می‌تواند آپلود کند" MAXNUMBEROFFILESSHORT: "تنها {count} فایل را می‌تواند آپلود کند" OVERWRITEWARNING: "فایل با نام یکسان از پیش وجود دارد" @@ -625,5 +645,6 @@ fa_IR: BUTTONARCHIVEDESC: "عدم انتشار و ارسال به بایگانی" BUTTONPUBLISH: انتشار BUTTONUNPUBLISH: "عدم انتشار" + Published: "منتشرشده {name} {link}" i18n: PLURAL: "{number} {form}" diff --git a/lang/fi.yml b/lang/fi.yml index e5d05ac73..9d286724a 100644 --- a/lang/fi.yml +++ b/lang/fi.yml @@ -225,7 +225,7 @@ fi: PngType: "PNG-kuva - hyvä yleinen muoto" SINGULARNAME: Tiedosto TOOLARGE: "Tiedostokoko on liian suuri: maks. sallittu koko on {size}" - TOOLARGESHORT: "Sallittu tiedostokoko ylitetty {size}" + TOOLARGESHORT: "Sallittu tiedostokoko {size} ylitetty " TiffType: TIFF-kuva Title: Otsikko WavType: WAV-äänitiedosto @@ -391,7 +391,7 @@ fi: FindInFolder: "Etsi kansiosta" IMAGEALT: "Vaihtoehtoinen teksti (alt)" IMAGEALTTEXT: "Vaihtoehtoinen teksti (alt) - näytetään jos kuvaa ei voida näyttää" - IMAGEALTTEXTDESC: "Näytetään ruudunlukuohjelmille tai jos kuvaa ei voi näyttää" + IMAGEALTTEXTDESC: "Näytetään ruudunlukuohjelmille tai jos kuvia ei voi näyttää" IMAGEDIMENSIONS: Mitat IMAGEHEIGHTPX: Korkeus IMAGETITLE: "Otsikko (tooltip) - kuvan lisätietoja varten" @@ -426,13 +426,13 @@ fi: CANCEL: Peruuta CANT_REORGANISE: "Sinulla ei ole oikeuksia mennä ylemmän tason sivuille. Muutoksiasi ei tallennettu." DELETED: Poistettu. - DropdownBatchActionsDefault: Toiminnot + DropdownBatchActionsDefault: "Valitse toiminto..." HELP: Ohje - PAGETYPE: "Sivutyyppi:" + PAGETYPE: "Sivun tyyppi" PERMAGAIN: "Olet kirjautunut ulos CMS:stä. Jos haluat kirjautua uudelleen sisään, syötä käyttäjätunnuksesi ja salasanasi alla." PERMALREADY: "Pahoittelut, mutta et pääse tähän osaan CMS:ää. Jos haluat kirjautua jonain muuna, voit tehdä sen alta." PERMDEFAULT: "Sinun tulee olla kirjautuneena ylläpito-osioon; syötä tunnuksesi kenttiin." - PLEASESAVE: "Tallenna sivu: tätä sivua ei voitu päivittää, koska sitä ei ole vielä tallennettu." + PLEASESAVE: "Tätä sivua ei voitu päivittää, koska sitä ei ole vielä tallennettu. Tallenna sivu." PreviewButton: Esikatselu REORGANISATIONSUCCESSFUL: "Hakemistopuu uudelleenjärjestettiin onnistuneesti." SAVEDUP: Tallennettu. @@ -488,7 +488,7 @@ fi: SUBJECTPASSWORDRESET: "Salasanasi palautuslinkki" SURNAME: Sukunimi TIMEFORMAT: Aikamuoto - VALIDATIONMEMBEREXISTS: "Toisella käyttäjällä on jo olemassa sama %s" + VALIDATIONMEMBEREXISTS: "Rekisteröityneellä käyttäjällä on jo käytössä tämä {identifier}." ValidationIdentifierFailed: "Olemassa olevan käyttäjän id:n #{id} päälle ei voida kirjoittaa samalla tunnisteella ({name} = {value}))" WELCOMEBACK: "Tervetuloa takaisin, {firstname}" YOUROLDPASSWORD: "Vanha salasanasi" diff --git a/lang/it.yml b/lang/it.yml index be6271309..fa489c409 100644 --- a/lang/it.yml +++ b/lang/it.yml @@ -216,15 +216,12 @@ it: MODIFIED: Modificato Mp3Type: "File audio MP3" MpgType: "File video MPEG" - NOFILESIZE: "La dimensione del file è zero byte." NOVALIDUPLOAD: "Il file caricato non è valido" Name: Nome PLURALNAME: File PdfType: "File Adobe Acrobat PDF" PngType: "Immagine PNG - consigliata per utilizzo generico" SINGULARNAME: File - TOOLARGE: "La dimensione del file è troppo grande, massimo consentito {size}" - TOOLARGESHORT: "La dimensione del file eccede {size}" TiffType: "Immagine TIFF" Title: Titolo WavType: "File audio WAV" @@ -389,8 +386,6 @@ it: FROMWEB: "Dal web" FindInFolder: "Trova nella Cartella" IMAGEALT: "Testo alternativo (alt)" - IMAGEALTTEXT: "Testo alternativo (alt) - mostrato nel caso l'immagine non possa essere visualizzata" - IMAGEALTTEXTDESC: "Mostrato agli screen reader o se l'immagine non può essere visualizzata" IMAGEDIMENSIONS: Dimensioni IMAGEHEIGHTPX: Altezza IMAGETITLE: "Titolo (tooltip) - per informazioni aggiuntive sull'immagine." @@ -425,13 +420,10 @@ it: CANCEL: Annulla CANT_REORGANISE: "Non hai i permessi per modificare le pagine di primo livello. Le modifiche non sono state salvate." DELETED: Eliminato. - DropdownBatchActionsDefault: Azioni HELP: Aiuto - PAGETYPE: "Tipo di pagina:" PERMAGAIN: "Sei stato disconnesso dal CMS. Se desideri autenticarti nuovamente, inserisci qui sotto nome utente e password." PERMALREADY: "Siamo spiacenti, ma non puoi accedere a questa sezione del CMS. Se desideri autenticarti come qualcun altro, fallo qui sotto." PERMDEFAULT: "Devi essere autenticato per accedere all'area amministrativa; Per favore inserisci le tue credenziali qui sotto" - PLEASESAVE: "Per favore salva la pagina: La stessa potrebbe non venire aggiornata se non si provvede quanto prima a salvarla." PreviewButton: Anteprima REORGANISATIONSUCCESSFUL: "Albero del sito riorganizzato con successo." SAVEDUP: Salvato. @@ -487,7 +479,6 @@ it: SUBJECTPASSWORDRESET: "Link per azzerare la tua password" SURNAME: Cognome TIMEFORMAT: "Formato dell'ora" - VALIDATIONMEMBEREXISTS: "Esiste già un utente con l'e-mail %s" ValidationIdentifierFailed: "Non posso sovrascrivere l'utente esistente #{id} con identificatore identico ({name} = {value}))" WELCOMEBACK: "Bentornato, {firstname}" YOUROLDPASSWORD: "La tua vecchia password" From d249dc9c865b65804206fcb9fe082be69bc0f385 Mon Sep 17 00:00:00 2001 From: Dan Hensby Date: Fri, 16 Dec 2016 20:49:07 +0000 Subject: [PATCH 05/16] Added 3.5.1-rc1 changelog --- docs/en/04_Changelogs/rc/3.5.1-rc1.md | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 docs/en/04_Changelogs/rc/3.5.1-rc1.md diff --git a/docs/en/04_Changelogs/rc/3.5.1-rc1.md b/docs/en/04_Changelogs/rc/3.5.1-rc1.md new file mode 100644 index 000000000..23bcd18ba --- /dev/null +++ b/docs/en/04_Changelogs/rc/3.5.1-rc1.md @@ -0,0 +1,17 @@ +# 3.5.1-rc1 + + + +## Change Log + +### Bugfixes + + * 2016-12-08 [5248be9](https://github.com/silverstripe/silverstripe-framework/commit/5248be92268e343dc0bacafd4c15de0c79d1f592) Handle fields with square brackets (Daniel Hensby) + * 2016-12-06 [3fca7b3](https://github.com/silverstripe/silverstripe-framework/commit/3fca7b3c4d8ada19e8abbed70548eb63d1f476e3) hard-coded boolean in CsvBulkLoader (Colin Tucker) + * 2016-12-05 [2181e3b](https://github.com/silverstripe/silverstripe-framework/commit/2181e3b86b3663352efdfb2e3896081b1e0ae4db) Fix localisation issues (Damian Mooyman) + * 2016-12-05 [224b2a4](https://github.com/silverstripe/silverstripe-cms/commit/224b2a4cbad768f27a19b14c2b9ce53efa619619) Fix localisation issues in CMS (Damian Mooyman) + * 2016-11-29 [9ec1d35](https://github.com/silverstripe/silverstripe-framework/commit/9ec1d35f2bd09bee50d3a3629d9589f8871abd98) Fix behat tests unable to capture HTML editor fields (Damian Mooyman) + * 2016-11-24 [a4760b8](https://github.com/silverstripe/silverstripe-framework/commit/a4760b8ee409c2c96a0e77445debf931259cb9aa) Fixed issue where a shortcode's location would not get set to split when using the class leftAlone (UndefinedOffset) + * 2016-11-23 [03b4e6e](https://github.com/silverstripe/silverstripe-framework/commit/03b4e6ea3201736c62a73e301489fe6a65a01a0f) Tests shouldnt set date or time format to null (Daniel Hensby) + * 2016-11-22 [b2503ac](https://github.com/silverstripe/silverstripe-cms/commit/b2503ac004f5e99d2041732dea702735128ecf1e) content authors unable to duplicate top-level pages (fixes #1685) (Loz Calver) + * 2016-11-04 [dd9ade4](https://github.com/silverstripe/silverstripe-framework/commit/dd9ade429454b1053ab5c2003663eeb66b5866d6) UploadField incorrectly setting max upload size (Daniel Hensby) From c007e85d1b9a1affd0ea7646b6a8c37d78b4450c Mon Sep 17 00:00:00 2001 From: Damian Mooyman Date: Fri, 16 Dec 2016 16:51:15 +1300 Subject: [PATCH 06/16] BUG Suppress HtmlEditorField casting Fixes #6396 --- forms/HtmlEditorField.php | 8 -------- forms/TextareaField.php | 2 +- tests/forms/HtmlEditorFieldTest.php | 14 ++++++++++++++ tests/forms/TextareaFieldTest.php | 14 ++++++++++++++ 4 files changed, 29 insertions(+), 9 deletions(-) diff --git a/forms/HtmlEditorField.php b/forms/HtmlEditorField.php index 725464114..e088b8401 100644 --- a/forms/HtmlEditorField.php +++ b/forms/HtmlEditorField.php @@ -26,14 +26,6 @@ class HtmlEditorField extends TextareaField { */ private static $sanitise_server_side = false; - /** - * @config - * @var array - */ - private static $casting = array( - 'Value' => 'HTMLText', - ); - protected $rows = 30; /** diff --git a/forms/TextareaField.php b/forms/TextareaField.php index 7b9df32a6..43030b55b 100644 --- a/forms/TextareaField.php +++ b/forms/TextareaField.php @@ -20,7 +20,7 @@ class TextareaField extends FormField { private static $casting = array( - 'Value' => 'HTMLText', + 'Value' => 'HTMLText(array("shortcodes" => 0))', ); /** diff --git a/tests/forms/HtmlEditorFieldTest.php b/tests/forms/HtmlEditorFieldTest.php index 726666cfd..6804334ec 100644 --- a/tests/forms/HtmlEditorFieldTest.php +++ b/tests/forms/HtmlEditorFieldTest.php @@ -15,6 +15,20 @@ class HtmlEditorFieldTest extends FunctionalTest { protected $extraDataObjects = array('HtmlEditorFieldTest_Object'); + public function testCasting() { + // Test special characters + $inputText = "These are some unicodes: ä, ö, & ü"; + $field = new HTMLEditorField("Test", "Test"); + $field->setValue($inputText); + $this->assertContains('These are some unicodes: ä, ö, & ü', $field->Field()); + + // Test shortcodes + $inputText = "Shortcode: [file_link id=4]"; + $field = new HTMLEditorField("Test", "Test"); + $field->setValue($inputText); + $this->assertContains('Shortcode: [file_link id=4]', $field->Field()); + } + public function testBasicSaving() { $obj = new HtmlEditorFieldTest_Object(); $editor = new HtmlEditorField('Content'); diff --git a/tests/forms/TextareaFieldTest.php b/tests/forms/TextareaFieldTest.php index d635574c1..6bb995ba2 100644 --- a/tests/forms/TextareaFieldTest.php +++ b/tests/forms/TextareaFieldTest.php @@ -2,6 +2,20 @@ class TextareaFieldTest extends SapphireTest { + public function testCasting() { + // Test special characters + $inputText = "These are some unicodes: ä, ö, & ü"; + $field = new TextareaField("Test", "Test"); + $field->setValue($inputText); + $this->assertContains('These are some unicodes: ä, ö, & ü', $field->Field()); + + // Test shortcodes + $inputText = "Shortcode: [file_link id=4]"; + $field = new TextareaField("Test", "Test"); + $field->setValue($inputText); + $this->assertContains('Shortcode: [file_link id=4]', $field->Field()); + } + /** * Quick smoke test to ensure that text with unicodes is being displayed properly in readonly fields. */ From bf3c129ec1cb172151e5beb13f517cb19bdaa5a0 Mon Sep 17 00:00:00 2001 From: Dan Hensby Date: Mon, 19 Dec 2016 12:21:38 +0000 Subject: [PATCH 07/16] Update translations --- admin/javascript/lang/fi.js | 2 +- admin/javascript/lang/src/fi.js | 2 +- javascript/lang/fi.js | 2 +- javascript/lang/hr.js | 2 +- javascript/lang/src/fi.js | 2 +- javascript/lang/src/hr.js | 2 +- lang/de.yml | 3 - lang/en.yml | 902 ++++++++++++++++---------------- lang/fa_IR.yml | 123 +++-- lang/fi.yml | 12 +- lang/it.yml | 9 - 11 files changed, 535 insertions(+), 526 deletions(-) diff --git a/admin/javascript/lang/fi.js b/admin/javascript/lang/fi.js index 3700fb43c..a1c1d4bf3 100644 --- a/admin/javascript/lang/fi.js +++ b/admin/javascript/lang/fi.js @@ -8,7 +8,7 @@ if (typeof(ss) === 'undefined' || typeof(ss.i18n) === 'undefined') { ss.i18n.addDictionary('fi', { "CMSMAIN.BATCH_ARCHIVE_PROMPT": "Sinulla on {num} sivu(a) valittuna.\n\nHaluatko varmasti arkistoida nämä sivut?\n\nValitut sivut ja kaikki niiden alasivut poistetaan julkaisusta sekä siirretään arkistoon.", "CMSMAIN.BATCH_DELETELIVE_PROMPT": "Sinulla on {num} sivu(a) valittuna.\n\nHaluatko varmasti poistaa nämä sivut näkyvistä?", - "CMSMAIN.BATCH_DELETE_PROMPT": "You have {num} page(s) selected.\n\nDo you really want to delete?", + "CMSMAIN.BATCH_DELETE_PROMPT": "Sinulla on {num} sivu(a) valittuna.\n\nHaluatko varmasti poistaa?", "CMSMAIN.BATCH_PUBLISH_PROMPT": "Sinulla on {num} sivu(a) valittuna.\n\nHaluatko varmasti julkaista?", "CMSMAIN.BATCH_RESTORE_PROMPT": "Sinulla on {num} sivu(a) valittuna.\n\nHaluatko varmasti palauttaa sivut?\n\nArkistoitujen sivujen alasivut palautetaan juuritasolle, jos niitä sivuja ei palauteta.", "CMSMAIN.BATCH_UNPUBLISH_PROMPT": "Sinulla on {num} sivu(a) valittuna.\n\nHaluatko varmasti poistaa julkaisusta?", diff --git a/admin/javascript/lang/src/fi.js b/admin/javascript/lang/src/fi.js index d50d1dbc4..66d4bc088 100644 --- a/admin/javascript/lang/src/fi.js +++ b/admin/javascript/lang/src/fi.js @@ -1,7 +1,7 @@ { "CMSMAIN.BATCH_ARCHIVE_PROMPT": "Sinulla on {num} sivu(a) valittuna.\n\nHaluatko varmasti arkistoida nämä sivut?\n\nValitut sivut ja kaikki niiden alasivut poistetaan julkaisusta sekä siirretään arkistoon.", "CMSMAIN.BATCH_DELETELIVE_PROMPT": "Sinulla on {num} sivu(a) valittuna.\n\nHaluatko varmasti poistaa nämä sivut näkyvistä?", - "CMSMAIN.BATCH_DELETE_PROMPT": "You have {num} page(s) selected.\n\nDo you really want to delete?", + "CMSMAIN.BATCH_DELETE_PROMPT": "Sinulla on {num} sivu(a) valittuna.\n\nHaluatko varmasti poistaa?", "CMSMAIN.BATCH_PUBLISH_PROMPT": "Sinulla on {num} sivu(a) valittuna.\n\nHaluatko varmasti julkaista?", "CMSMAIN.BATCH_RESTORE_PROMPT": "Sinulla on {num} sivu(a) valittuna.\n\nHaluatko varmasti palauttaa sivut?\n\nArkistoitujen sivujen alasivut palautetaan juuritasolle, jos niitä sivuja ei palauteta.", "CMSMAIN.BATCH_UNPUBLISH_PROMPT": "Sinulla on {num} sivu(a) valittuna.\n\nHaluatko varmasti poistaa julkaisusta?", diff --git a/javascript/lang/fi.js b/javascript/lang/fi.js index 1e3e76967..1b3ee4e3c 100644 --- a/javascript/lang/fi.js +++ b/javascript/lang/fi.js @@ -50,4 +50,4 @@ if (typeof(ss) === 'undefined' || typeof(ss.i18n) === 'undefined') { "UploadField.WRITEFAILED": "Tiedoston kirjoittaminen levylle epäonnistui", "VALIDATOR.FIELDREQUIRED": "Syötä \"%s\", se on vaadittu tieto." }); -} +} \ No newline at end of file diff --git a/javascript/lang/hr.js b/javascript/lang/hr.js index 89919733b..b9a6808f5 100644 --- a/javascript/lang/hr.js +++ b/javascript/lang/hr.js @@ -50,4 +50,4 @@ if (typeof(ss) === 'undefined' || typeof(ss.i18n) === 'undefined') { "UploadField.WRITEFAILED": "Nije uspjelo zapisati datoteku na disk", "VALIDATOR.FIELDREQUIRED": "Molimo popunite \"%s\", obavezno je." }); -} +} \ No newline at end of file diff --git a/javascript/lang/src/fi.js b/javascript/lang/src/fi.js index cac07892c..c6fc19b4c 100644 --- a/javascript/lang/src/fi.js +++ b/javascript/lang/src/fi.js @@ -42,4 +42,4 @@ "UploadField.Uploaded": "Ladattu", "UploadField.WRITEFAILED": "Tiedoston kirjoittaminen levylle epäonnistui", "VALIDATOR.FIELDREQUIRED": "Syötä \"%s\", se on vaadittu tieto." -} +} \ No newline at end of file diff --git a/javascript/lang/src/hr.js b/javascript/lang/src/hr.js index a6920d605..6c8eba286 100644 --- a/javascript/lang/src/hr.js +++ b/javascript/lang/src/hr.js @@ -42,4 +42,4 @@ "UploadField.Uploaded": "Prenešeno", "UploadField.WRITEFAILED": "Nije uspjelo zapisati datoteku na disk", "VALIDATOR.FIELDREQUIRED": "Molimo popunite \"%s\", obavezno je." -} +} \ No newline at end of file diff --git a/lang/de.yml b/lang/de.yml index 554797871..98a4c74a3 100644 --- a/lang/de.yml +++ b/lang/de.yml @@ -390,13 +390,10 @@ de: CANCEL: Abbrechen 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: "Sie müssen angemeldet sein, um auf diesen Bereich zugreifen zu können. Bitte geben Sie Ihre Zugangsdaten 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. diff --git a/lang/en.yml b/lang/en.yml index b9e0dcbe3..69dc3676f 100644 --- a/lang/en.yml +++ b/lang/en.yml @@ -1,156 +1,156 @@ en: AddToCampaign: - ErrorCampaignPermissionDenied: "It seems you don't have the necessary permissions to add {ObjectTitle} to {CampaignTitle}" - ErrorGeneral: "We apologise, but there was an error" - ErrorItemPermissionDenied: "It seems you don't have the necessary permissions to add {ObjectTitle} to a campaign" - ErrorNotFound: "That {Type} couldn't be found" - Success: "Successfully added {ObjectTitle} to {CampaignTitle}" + ErrorCampaignPermissionDenied: 'It seems you don''t have the necessary permissions to add {ObjectTitle} to {CampaignTitle}' + ErrorGeneral: 'We apologise, but there was an error' + ErrorItemPermissionDenied: 'It seems you don''t have the necessary permissions to add {ObjectTitle} to a campaign' + ErrorNotFound: 'That {Type} couldn''t be found' + Success: 'Successfully added {ObjectTitle} to {CampaignTitle}' AssetAdmin: - ALLOWEDEXTS: "Allowed file upload extensions" - HIDEALLOWEDEXTS: "Hide allowed extensions" + ALLOWEDEXTS: 'Allowed file upload extensions' + HIDEALLOWEDEXTS: 'Hide allowed extensions' NEWFOLDER: NewFolder - SHOWALLOWEDEXTS: "Show allowed extensions" + SHOWALLOWEDEXTS: 'Show allowed extensions' AssetTableField: - CREATED: "First uploaded" + CREATED: 'First uploaded' DIM: Dimensions FILENAME: Filename FOLDER: Folder HEIGHT: Height - LASTEDIT: "Last changed" + LASTEDIT: 'Last changed' OWNER: Owner PATH: Path - SIZE: "File size" + SIZE: 'File size' TITLE: Title - TYPE: "File type" + TYPE: 'File type' URL: URL WIDTH: Width AssetUploadField: - ChooseFiles: "Choose files" - DRAGFILESHERE: "Drag files here" - DROPAREA: "Drop Area" - EDITALL: "Edit all" - EDITANDORGANIZE: "Edit & organize" - EDITINFO: "Edit files" + ChooseFiles: 'Choose files' + DRAGFILESHERE: 'Drag files here' + DROPAREA: 'Drop Area' + EDITALL: 'Edit all' + EDITANDORGANIZE: 'Edit & organize' + EDITINFO: 'Edit files' FILES: Files - FROMCOMPUTER: "Choose files from your computer" - FROMCOMPUTERINFO: "Upload from your computer" - INSERTURL: "Insert from URL" - REMOVEINFO: "Remove this file from this field" + FROMCOMPUTER: 'Choose files from your computer' + FROMCOMPUTERINFO: 'Upload from your computer' + INSERTURL: 'Insert from URL' + REMOVEINFO: 'Remove this file from this field' TOTAL: Total - TOUPLOAD: "Choose files to upload..." - UPLOADINPROGRESS: "Please wait… upload in progress" + TOUPLOAD: 'Choose files to upload...' + UPLOADINPROGRESS: 'Please wait… upload in progress' UPLOADOR: OR BBCodeParser: ALIGNEMENT: Alignment - ALIGNEMENTEXAMPLE: "right aligned" - BOLD: "Bold Text" + ALIGNEMENTEXAMPLE: 'right aligned' + BOLD: 'Bold Text' BOLDEXAMPLE: Bold - CODE: "Code Block" - CODEDESCRIPTION: "Unformatted code block" - CODEEXAMPLE: "Code block" - COLORED: "Colored text" - COLOREDEXAMPLE: "blue text" - EMAILLINK: "Email link" - EMAILLINKDESCRIPTION: "Create link to an email address" + CODE: 'Code Block' + CODEDESCRIPTION: 'Unformatted code block' + CODEEXAMPLE: 'Code block' + COLORED: 'Colored text' + COLOREDEXAMPLE: 'blue text' + EMAILLINK: 'Email link' + EMAILLINKDESCRIPTION: 'Create link to an email address' IMAGE: Image - IMAGEDESCRIPTION: "Show an image in your post" - ITALIC: "Italic Text" + IMAGEDESCRIPTION: 'Show an image in your post' + ITALIC: 'Italic Text' ITALICEXAMPLE: Italics - LINK: "Website link" - LINKDESCRIPTION: "Link to another website or URL" - STRUCK: "Struck-out Text" + LINK: 'Website link' + LINKDESCRIPTION: 'Link to another website or URL' + STRUCK: 'Struck-out Text' STRUCKEXAMPLE: Struck-out - UNDERLINE: "Underlined Text" + UNDERLINE: 'Underlined Text' UNDERLINEEXAMPLE: Underlined - UNORDERED: "Unordered list" - UNORDEREDDESCRIPTION: "Unordered list" - UNORDEREDEXAMPLE1: "unordered item 1" + UNORDERED: 'Unordered list' + UNORDEREDDESCRIPTION: 'Unordered list' + UNORDEREDEXAMPLE1: 'unordered item 1' BackLink_Button_ss: Back: Back BasicAuth: - ENTERINFO: "Please enter a username and password." - ERRORNOTADMIN: "That user is not an administrator." - ERRORNOTREC: "That username / password isn't recognised" + ENTERINFO: 'Please enter a username and password.' + ERRORNOTADMIN: 'That user is not an administrator.' + ERRORNOTREC: 'That username / password isn''t recognised' Boolean: ANY: Any - NOANSWER: "No" - YESANSWER: "Yes" + NOANSWER: 'No' + YESANSWER: 'Yes' CAMPAIGNS: - ADDTOCAMPAIGN: "Add to Campaign" + ADDTOCAMPAIGN: 'Add to Campaign' CMSLoadingScreen_ss: LOADING: Loading... - REQUIREJS: "The CMS requires that you have JavaScript enabled." + REQUIREJS: 'The CMS requires that you have JavaScript enabled.' CMSMain: - ACCESS: "Access to '{title}' section" - ACCESSALLINTERFACES: "Access to all CMS sections" - ACCESSALLINTERFACESHELP: "Overrules more specific access settings." + ACCESS: 'Access to ''{title}'' section' + ACCESSALLINTERFACES: 'Access to all CMS sections' + ACCESSALLINTERFACESHELP: 'Overrules more specific access settings.' SAVE: Save CMSMemberLoginForm: - BUTTONFORGOTPASSWORD: "Forgot password?" - BUTTONLOGIN: "Log back in" - BUTTONLOGOUT: "Log out" - PASSWORDEXPIRED: "

Your password has expired. Please choose a new one.

" + BUTTONFORGOTPASSWORD: 'Forgot password?' + BUTTONLOGIN: 'Log back in' + BUTTONLOGOUT: 'Log out' + PASSWORDEXPIRED: '

Your password has expired. Please choose a new one.

' CMSPageHistoryController_versions_ss: - PREVIEW: "Website preview" + PREVIEW: 'Website preview' CMSPagesController_Tools_ss: FILTER: Filter CMSProfileController: - MENUTITLE: "My Profile" + MENUTITLE: 'My Profile' CMSSecurity: - INVALIDUSER: "

Invalid user. Please re-authenticate here to continue.

" - LoginMessage: "

If you have any unsaved work you can return to where you left off by logging back in below.

" + INVALIDUSER: '

Invalid user. Please re-authenticate here to continue.

' + LoginMessage: '

If you have any unsaved work you can return to where you left off by logging back in below.

' SUCCESS: Success - SUCCESSCONTENT: "

Login success. If you are not automatically redirected click here

" - TimedOutTitleAnonymous: "Your session has timed out." - TimedOutTitleMember: "Hey {name}!
Your session has timed out." + SUCCESSCONTENT: '

Login success. If you are not automatically redirected click here

' + TimedOutTitleAnonymous: 'Your session has timed out.' + TimedOutTitleMember: 'Hey {name}!
Your session has timed out.' CampaignAdmin: - ACCESS_HELP: "Allow viewing of the campaign publishing section." + ACCESS_HELP: 'Allow viewing of the campaign publishing section.' MENUTITLE: Campaigns Campaigns: - AddToCampaign: "Add To Campaign" - AddToCampaignFormFieldLabel: "Select a Campaign" + AddToCampaign: 'Add To Campaign' + AddToCampaignFormFieldLabel: 'Select a Campaign' ChangePasswordEmail_ss: - CHANGEPASSWORDFOREMAIL: "The password for account with email address {email} has been changed. If you didn't change your password please change your password using the link below" - CHANGEPASSWORDTEXT1: "You changed your password for" - CHANGEPASSWORDTEXT2: "You can now use the following credentials to log in:" - CHANGEPASSWORDTEXT3: "Change password" + CHANGEPASSWORDFOREMAIL: 'The password for account with email address {email} has been changed. If you didn''t change your password please change your password using the link below' + CHANGEPASSWORDTEXT1: 'You changed your password for' + CHANGEPASSWORDTEXT2: 'You can now use the following credentials to log in:' + CHANGEPASSWORDTEXT3: 'Change password' EMAIL: Email HELLO: Hi PASSWORD: Password ChangeSet: - DESCRIPTION_AND: "{first} and {second}" + DESCRIPTION_AND: '{first} and {second}' DESCRIPTION_ITEM: item DESCRIPTION_ITEMS: items - DESCRIPTION_LIST_FIRST: "{item}" - DESCRIPTION_LIST_LAST: "{list}, and {item}" - DESCRIPTION_LIST_MID: "{list}, {item}" - DESCRIPTION_OTHER_ITEM: "other item" - DESCRIPTION_OTHER_ITEMS: "other items" + DESCRIPTION_LIST_FIRST: '{item}' + DESCRIPTION_LIST_LAST: '{list}, and {item}' + DESCRIPTION_LIST_MID: '{list}, {item}' + DESCRIPTION_OTHER_ITEM: 'other item' + DESCRIPTION_OTHER_ITEMS: 'other items' NAME: Name PLURALNAME: Campaigns SINGULARNAME: Campaign STATE: State ChangeSetItem: - PLURALNAME: "Change Set Items" - SINGULARNAME: "Change Set Item" + PLURALNAME: 'Change Set Items' + SINGULARNAME: 'Change Set Item' CheckboxField: - NOANSWER: "No" - YESANSWER: "Yes" + NOANSWER: 'No' + YESANSWER: 'Yes' CheckboxFieldSetField: - SOURCE_VALIDATION: "Please select a value within the list provided. {value} is not a valid option" + SOURCE_VALIDATION: 'Please select a value within the list provided. {value} is not a valid option' CheckboxSetField: - SOURCE_VALIDATION: "Please select a value within the list provided. '{value}' is not a valid option" + SOURCE_VALIDATION: 'Please select a value within the list provided. ''{value}'' is not a valid option' ConfirmedPasswordField: - ATLEAST: "Passwords must be at least {min} characters long." - BETWEEN: "Passwords must be {min} to {max} characters long." - CURRENT_PASSWORD_ERROR: "The current password you have entered is not correct." - CURRENT_PASSWORD_MISSING: "You must enter your current password." - LOGGED_IN_ERROR: "You must be logged in to change your password." - MAXIMUM: "Passwords must be at most {max} characters long." - SHOWONCLICKTITLE: "Change Password" + ATLEAST: 'Passwords must be at least {min} characters long.' + BETWEEN: 'Passwords must be {min} to {max} characters long.' + CURRENT_PASSWORD_ERROR: 'The current password you have entered is not correct.' + CURRENT_PASSWORD_MISSING: 'You must enter your current password.' + LOGGED_IN_ERROR: 'You must be logged in to change your password.' + MAXIMUM: 'Passwords must be at most {max} characters long.' + SHOWONCLICKTITLE: 'Change Password' ContentController: - DRAFT_SITE_ACCESS_RESTRICTION: "You must log in with your CMS password in order to view the draft or archived content. Click here to go back to the published site." - NOTLOGGEDIN: "Not logged in" + DRAFT_SITE_ACCESS_RESTRICTION: 'You must log in with your CMS password in order to view the draft or archived content. Click here to go back to the published site.' + NOTLOGGEDIN: 'Not logged in' CreditCardField: FIRST: first FOURTH: fourth @@ -159,261 +159,261 @@ en: CurrencyField: CURRENCYSYMBOL: $ DataObject: - PLURALNAME: "Data Objects" - SINGULARNAME: "Data Object" + PLURALNAME: 'Data Objects' + SINGULARNAME: 'Data Object' Date: DAY: day DAYS: days HOUR: hour HOURS: hours - LessThanMinuteAgo: "less than a minute" + LessThanMinuteAgo: 'less than a minute' MIN: min MINS: mins MONTH: month MONTHS: months SEC: sec SECS: secs - TIMEDIFFAGO: "{difference} ago" - TIMEDIFFIN: "in {difference}" + TIMEDIFFAGO: '{difference} ago' + TIMEDIFFIN: 'in {difference}' YEAR: year YEARS: years DateField: - NOTSET: "not set" + NOTSET: 'not set' TODAY: today - VALIDDATEFORMAT2: "Please enter a valid date format ({format})" - VALIDDATEMAXDATE: "Your date has to be older or matching the maximum allowed date ({date})" - VALIDDATEMINDATE: "Your date has to be newer or matching the minimum allowed date ({date})" + 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" + NOTSET: 'Not set' Director: - INVALID_REQUEST: "Invalid request" + INVALID_REQUEST: 'Invalid request' DropdownField: CHOOSE: (Choose) - CHOOSESEARCH: "(Choose or Search)" - CHOOSE_MODEL: "(Choose {name})" - SOURCE_VALIDATION: "Please select a value within the list provided. {value} is not a valid option" + CHOOSESEARCH: '(Choose or Search)' + CHOOSE_MODEL: '(Choose {name})' + SOURCE_VALIDATION: 'Please select a value within the list provided. {value} is not a valid option' EmailField: - VALIDATION: "Please enter an email address" + VALIDATION: 'Please enter an email address' Enum: ANY: Any File: - AviType: "AVI video file" + AviType: 'AVI video file' Content: Content - CssType: "CSS file" + CssType: 'CSS file' DRAFT: Draft - DmgType: "Apple disk image" - DocType: "Word document" + 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" - INVALIDEXTENSION_SHORT: "Extension is not allowed" - IcoType: "Icon image" - JpgType: "JPEG image - good for photos" - JsType: "Javascript file" + 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' + INVALIDEXTENSION_SHORT: 'Extension is not allowed' + IcoType: 'Icon image' + JpgType: 'JPEG image - good for photos' + JsType: 'Javascript file' MODIFIED: Modified - Mp3Type: "MP3 audio file" - MpgType: "MPEG video file" - NOFILESIZE: "File size is zero bytes." - NOVALIDUPLOAD: "File is not a valid upload" + Mp3Type: 'MP3 audio file' + MpgType: 'MPEG video file' + NOFILESIZE: 'File size 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" + PdfType: 'Adobe Acrobat PDF file' + PngType: 'PNG image - good general-purpose format' SINGULARNAME: File - TOOLARGE: "File size is too large, maximum {size} allowed" - TOOLARGESHORT: "File size exceeds {size}" - TiffType: "Tagged image format" + TOOLARGE: 'File size is too large, maximum {size} allowed' + TOOLARGESHORT: 'File size exceeds {size}' + TiffType: 'Tagged image format' Title: Title - WavType: "WAV audo file" - XlsType: "Excel spreadsheet" - ZipType: "ZIP compressed file" + WavType: 'WAV audo file' + XlsType: 'Excel spreadsheet' + ZipType: 'ZIP compressed file' Filesystem: - SYNCRESULTS: "Sync complete: {createdcount} items created, {deletedcount} items deleted" + SYNCRESULTS: 'Sync complete: {createdcount} items created, {deletedcount} items deleted' Folder: PLURALNAME: Folders SINGULARNAME: Folder ForgotPasswordEmail_ss: HELLO: Hi - TEXT1: "Here is your" - TEXT2: "password reset link" + TEXT1: 'Here is your' + TEXT2: 'password reset link' TEXT3: for Form: - CSRF_EXPIRED_MESSAGE: "Your session has expired. Please re-submit the form." - CSRF_FAILED_MESSAGE: "There seems to have been a technical problem. Please click the back button, refresh your browser, and try again." - FIELDISREQUIRED: "{name} is required" + CSRF_EXPIRED_MESSAGE: 'Your session has expired. Please re-submit the form.' + CSRF_FAILED_MESSAGE: 'There seems to have been a technical problem. Please click the back button, refresh your browser, and try again.' + FIELDISREQUIRED: '{name} is required' SubmitBtnLabel: Go - VALIDATIONCREDIT: "Please ensure you have entered the credit card number correctly" - VALIDATIONCREDITNUMBER: "Please ensure you have entered the {number} credit card number correctly" - VALIDATIONNOTUNIQUE: "The value entered is not unique" - VALIDATIONPASSWORDSDONTMATCH: "Passwords don't match" - VALIDATIONPASSWORDSNOTEMPTY: "Passwords can't be empty" - VALIDATIONSTRONGPASSWORD: "Passwords must have at least one digit and one alphanumeric character" + VALIDATIONCREDIT: 'Please ensure you have entered the credit card number correctly' + VALIDATIONCREDITNUMBER: 'Please ensure you have entered the {number} credit card number correctly' + VALIDATIONNOTUNIQUE: 'The value entered is not unique' + VALIDATIONPASSWORDSDONTMATCH: 'Passwords don''t match' + VALIDATIONPASSWORDSNOTEMPTY: 'Passwords can''t be empty' + VALIDATIONSTRONGPASSWORD: 'Passwords must have at least one digit and one alphanumeric character' VALIDATOR: Validator - VALIDCURRENCY: "Please enter a valid currency" + VALIDCURRENCY: 'Please enter a valid currency' FormField: - Example: "e.g. %s" + Example: 'e.g. %s' NONE: none GridAction: DELETE_DESCRIPTION: Delete Delete: Delete UnlinkRelation: Unlink GridField: - Add: "Add {name}" + Add: 'Add {name}' Filter: Filter - FilterBy: "Filter by " + FilterBy: 'Filter by ' Find: Find - LEVELUP: "Level up" - LinkExisting: "Link Existing" - NewRecord: "New %s" - NoItemsFound: "No items found" - PRINTEDAT: "Printed at" - PRINTEDBY: "Printed by" - PlaceHolder: "Find {type}" - PlaceHolderWithLabels: "Find {type} by {name}" - RelationSearch: "Relation search" + LEVELUP: 'Level up' + LinkExisting: 'Link Existing' + NewRecord: 'New %s' + NoItemsFound: 'No items found' + PRINTEDAT: 'Printed at' + PRINTEDBY: 'Printed by' + PlaceHolder: 'Find {type}' + PlaceHolderWithLabels: 'Find {type} by {name}' + RelationSearch: 'Relation search' ResetFilter: Reset GridFieldAction_Delete: - DeletePermissionsFailure: "No delete permissions" - EditPermissionsFailure: "No permission to unlink record" + DeletePermissionsFailure: 'No delete permissions' + EditPermissionsFailure: 'No permission to unlink record' GridFieldDetailForm: CancelBtn: Cancel Create: Create Delete: Delete - DeletePermissionsFailure: "No delete permissions" - Deleted: "Deleted %s %s" + DeletePermissionsFailure: 'No delete permissions' + Deleted: 'Deleted %s %s' Save: Save - Saved: "Saved {name} {link}" + Saved: 'Saved {name} {link}' GridFieldEditButton_ss: EDIT: Edit GridFieldItemEditView: - Go_back: "Go back" + Go_back: 'Go back' Group: - AddRole: "Add a role for this group" - Code: "Group Code" + AddRole: 'Add a role for this group' + Code: 'Group Code' DefaultGroupTitleAdministrators: Administrators - DefaultGroupTitleContentAuthors: "Content Authors" + DefaultGroupTitleContentAuthors: 'Content Authors' Description: Description - GroupReminder: "If you choose a parent group, this group will take all it's roles" - HierarchyPermsError: "Can't assign parent group \"%s\" with privileged permissions (requires ADMIN access)" - Locked: Locked? - NoRoles: "No roles found" + GroupReminder: 'If you choose a parent group, this group will take all it''s roles' + HierarchyPermsError: 'Can''t assign parent group "%s" with privileged permissions (requires ADMIN access)' + Locked: 'Locked?' + NoRoles: 'No roles found' PLURALNAME: Groups - Parent: "Parent Group" - RolesAddEditLink: "Manage roles" + Parent: 'Parent Group' + RolesAddEditLink: 'Manage roles' SINGULARNAME: Group - Sort: "Sort Order" + Sort: 'Sort Order' has_many_Permissions: Permissions many_many_Members: Members GroupImportForm: - Help1: "

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

" - Help2: "

Advanced usage

  • Allowed columns: %s
  • Existing groups are matched by their unique Code value, and updated with any new values from the imported file
  • Group hierarchies can be created by using a ParentCode column.
  • Permission codes can be assigned by the PermissionCode column. Existing permission codes are not cleared.
" - ResultCreated: "Created {count} groups" - ResultDeleted: "Deleted %d groups" - ResultUpdated: "Updated %d groups" + Help1: '

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

' + Help2: '

Advanced usage

  • Allowed columns: %s
  • Existing groups are matched by their unique Code value, and updated with any new values from the imported file
  • Group hierarchies can be created by using a ParentCode column.
  • Permission codes can be assigned by the PermissionCode column. Existing permission codes are not cleared.
' + ResultCreated: 'Created {count} groups' + ResultDeleted: 'Deleted %d groups' + ResultUpdated: 'Updated %d groups' HTMLEditorField: - ANCHORSCANNOTACCESSPAGE: "You are not permitted to access the content of the target page." - ANCHORSPAGENOTFOUND: "Target page not found." + ANCHORSCANNOTACCESSPAGE: 'You are not permitted to access the content of the target page.' + ANCHORSPAGENOTFOUND: 'Target page not found.' ANCHORVALUE: Anchor - BUTTONADDURL: "Add url" - CAPTIONTEXT: "Caption text" - CSSCLASS: "Alignment / style" - CSSCLASSCENTER: "Centered, on its own." - CSSCLASSLEFT: "On the left, with text wrapping around." - CSSCLASSLEFTALONE: "On the left, on its own." - CSSCLASSRIGHT: "On the right, with text wrapping around." + BUTTONADDURL: 'Add url' + CAPTIONTEXT: 'Caption text' + CSSCLASS: 'Alignment / style' + CSSCLASSCENTER: 'Centered, on its own.' + CSSCLASSLEFT: 'On the left, with text wrapping around.' + CSSCLASSLEFTALONE: 'On the left, on its own.' + CSSCLASSRIGHT: 'On the right, with text wrapping around.' DETAILS: Details - EMAIL: "Email address" + EMAIL: 'Email address' FILE: SilverStripe\Assets\File FOLDER: Folder - IMAGEALT: "Alternative text (alt)" - IMAGEALTTEXT: "Alternative text (alt) - shown if image can't be displayed" - IMAGEALTTEXTDESC: "Shown to screen readers or if image can't be displayed" + IMAGEALT: 'Alternative text (alt)' + IMAGEALTTEXT: 'Alternative text (alt) - shown if image can''t be displayed' + IMAGEALTTEXTDESC: 'Shown to screen readers or if image can''t be displayed' IMAGEDIMENSIONS: Dimensions IMAGEHEIGHTPX: Height - IMAGETITLE: "Title text (tooltip) - for additional information about the image" - IMAGETITLETEXT: "Title text (tooltip)" - IMAGETITLETEXTDESC: "For additional information about the image" + IMAGETITLE: 'Title text (tooltip) - for additional information about the image' + IMAGETITLETEXT: 'Title text (tooltip)' + IMAGETITLETEXTDESC: 'For additional information about the image' IMAGEWIDTHPX: Width - INSERTMEDIA: "Insert media from" - LINK: "Insert Link" - LINKANCHOR: "Link to an anchor on this page" - LINKDESCR: "Link description" - LINKDETAILS: "Link details" - LINKEMAIL: "Link to an email address" - LINKEXTERNAL: "Link to another website" - LINKFILE: "Link to download a file" - LINKINTERNAL: "Link to a page on this site" - LINKOPENNEWWIN: "Open link in a new window?" - LINKTO: "Link type" + INSERTMEDIA: 'Insert media from' + LINK: 'Insert Link' + LINKANCHOR: 'Link to an anchor on this page' + LINKDESCR: 'Link description' + LINKDETAILS: 'Link details' + LINKEMAIL: 'Link to an email address' + LINKEXTERNAL: 'Link to another website' + LINKFILE: 'Link to download a file' + LINKINTERNAL: 'Link to a page on this site' + LINKOPENNEWWIN: 'Open link in a new window?' + LINKTO: 'Link type' PAGE: Page - SUBJECT: "Email subject" + SUBJECT: 'Email subject' URL: URL - URLDESCRIPTION: "Insert videos and images from the web into your page simply by entering the URL of the file. Make sure you have the rights or permissions before sharing media directly from the web.

Please note that files are not added to the file store of the CMS but embeds the file from its original location, if for some reason the file is no longer available in its original location it will no longer be viewable on this page." - URLNOTANOEMBEDRESOURCE: "The URL '{url}' could not be turned into a media resource." - UpdateMEDIA: "Update media" + URLDESCRIPTION: 'Insert videos and images from the web into your page simply by entering the URL of the file. Make sure you have the rights or permissions before sharing media directly from the web.

Please note that files are not added to the file store of the CMS but embeds the file from its original location, if for some reason the file is no longer available in its original location it will no longer be viewable on this page.' + URLNOTANOEMBEDRESOURCE: 'The URL ''{url}'' could not be turned into a media resource.' + UpdateMEDIA: 'Update media' HTMLEditorField_Toolbar: - ERROR_ABSOLUTE: "Only absolute urls can be embedded" - ERROR_HOSTNAME: "This file hostname is not included in the whitelist" - ERROR_ID: "Need either \"ID\" or \"FileURL\" parameter to identify the file" - ERROR_NOTFOUND: "Unable to find file to view" - ERROR_OEMBED_REMOTE: "Embed is only compatible with remote files" - ERROR_SCHEME: "This file scheme is not included in the whitelist" + ERROR_ABSOLUTE: 'Only absolute urls can be embedded' + ERROR_HOSTNAME: 'This file hostname is not included in the whitelist' + ERROR_ID: 'Need either "ID" or "FileURL" parameter to identify the file' + ERROR_NOTFOUND: 'Unable to find file to view' + ERROR_OEMBED_REMOTE: 'Embed is only compatible with remote files' + ERROR_SCHEME: 'This file scheme is not included in the whitelist' Hierarchy: - InfiniteLoopNotAllowed: "Infinite loop found within the \"{type}\" hierarchy. Please change the parent to resolve this" + InfiniteLoopNotAllowed: 'Infinite loop found within the "{type}" hierarchy. Please change the parent to resolve this' HtmlEditorField: - ADDURL: "Add URL" - ADJUSTDETAILSDIMENSIONS: "Details & dimensions" - ANCHORSCANNOTACCESSPAGE: "You are not permitted to access the content of the target page." - ANCHORSPAGENOTFOUND: "Target page not found." + ADDURL: 'Add URL' + ADJUSTDETAILSDIMENSIONS: 'Details & dimensions' + ANCHORSCANNOTACCESSPAGE: 'You are not permitted to access the content of the target page.' + ANCHORSPAGENOTFOUND: 'Target page not found.' ANCHORVALUE: Anchor - BUTTONADDURL: "Add url" + BUTTONADDURL: 'Add url' BUTTONINSERT: Insert - BUTTONINSERTLINK: "Insert link" - BUTTONREMOVELINK: "Remove link" + BUTTONINSERTLINK: 'Insert link' + BUTTONREMOVELINK: 'Remove link' BUTTONUpdate: Update - CAPTIONTEXT: "Caption text" - CSSCLASS: "Alignment / style" - CSSCLASSCENTER: "Centered, on its own." - CSSCLASSLEFT: "On the left, with text wrapping around." - CSSCLASSLEFTALONE: "On the left, on its own." - CSSCLASSRIGHT: "On the right, with text wrapping around." + CAPTIONTEXT: 'Caption text' + CSSCLASS: 'Alignment / style' + CSSCLASSCENTER: 'Centered, on its own.' + CSSCLASSLEFT: 'On the left, with text wrapping around.' + CSSCLASSLEFTALONE: 'On the left, on its own.' + CSSCLASSRIGHT: 'On the right, with text wrapping around.' DETAILS: Details - EMAIL: "Email address" + EMAIL: 'Email address' FILE: File FOLDER: Folder - FROMCMS: "From the CMS" - FROMCOMPUTER: "From your computer" - FROMWEB: "From the web" - FindInFolder: "Find in Folder" - IMAGEALT: "Alternative text (alt)" - IMAGEALTTEXT: "Alternative text (alt) - shown if image can't be displayed" - IMAGEALTTEXTDESC: "Shown to screen readers or if image can't be displayed" + FROMCMS: 'From the CMS' + FROMCOMPUTER: 'From your computer' + FROMWEB: 'From the web' + FindInFolder: 'Find in Folder' + IMAGEALT: 'Alternative text (alt)' + IMAGEALTTEXT: 'Alternative text (alt) - shown if image can''t be displayed' + IMAGEALTTEXTDESC: 'Shown to screen readers or if image can''t be displayed' IMAGEDIMENSIONS: Dimensions IMAGEHEIGHTPX: Height - IMAGETITLE: "Title text (tooltip) - for additional information about the image" - IMAGETITLETEXT: "Title text (tooltip)" - IMAGETITLETEXTDESC: "For additional information about the image" + IMAGETITLE: 'Title text (tooltip) - for additional information about the image' + IMAGETITLETEXT: 'Title text (tooltip)' + IMAGETITLETEXTDESC: 'For additional information about the image' IMAGEWIDTHPX: Width - INSERTMEDIA: "Insert Media" - LINK: "Insert Link" - LINKANCHOR: "Anchor on this page" - LINKDESCR: "Link description" - LINKEMAIL: "Email address" - LINKEXTERNAL: "Another website" - LINKFILE: "Download a file" - LINKINTERNAL: "Page on the site" - LINKOPENNEWWIN: "Open link in a new window?" - LINKTO: "Link to" + INSERTMEDIA: 'Insert Media' + LINK: 'Insert Link' + LINKANCHOR: 'Anchor on this page' + LINKDESCR: 'Link description' + LINKEMAIL: 'Email address' + LINKEXTERNAL: 'Another website' + LINKFILE: 'Download a file' + LINKINTERNAL: 'Page on the site' + LINKOPENNEWWIN: 'Open link in a new window?' + LINKTO: 'Link to' PAGE: Page - SUBJECT: "Email subject" + SUBJECT: 'Email subject' URL: URL - URLDESCRIPTION: "Insert videos and images from the web into your page simply by entering the URL of the file. Make sure you have the rights or permissions before sharing media directly from the web.

Please note that files are not added to the file store of the CMS but embeds the file from its original location, if for some reason the file is no longer available in its original location it will no longer be viewable on this page." - URLNOTANOEMBEDRESOURCE: "The URL '{url}' could not be turned into a media resource." - UpdateMEDIA: "Update Media" + URLDESCRIPTION: 'Insert videos and images from the web into your page simply by entering the URL of the file. Make sure you have the rights or permissions before sharing media directly from the web.

Please note that files are not added to the file store of the CMS but embeds the file from its original location, if for some reason the file is no longer available in its original location it will no longer be viewable on this page.' + URLNOTANOEMBEDRESOURCE: 'The URL ''{url}'' could not be turned into a media resource.' + UpdateMEDIA: 'Update Media' Image: PLURALNAME: Files SINGULARNAME: File @@ -421,135 +421,135 @@ en: PLURALNAME: Files SINGULARNAME: File Image_iframe_ss: - TITLE: "Image Uploading Iframe" + TITLE: 'Image Uploading Iframe' LeftAndMain: CANCEL: Cancel - CANT_REORGANISE: "You do not have permission to alter Top level pages. Your change was not saved." + CANT_REORGANISE: 'You do not have permission to alter Top level pages. Your change was not saved.' DELETED: Deleted. - DropdownBatchActionsDefault: "Choose an action..." + DropdownBatchActionsDefault: 'Choose an action...' HELP: Help - PAGETYPE: "Page type" - PERMAGAIN: "You have been logged out of the CMS. If you would like to log in again, enter a username and password below." - PERMALREADY: "I'm sorry, but you can't access that part of the CMS. If you want to log in as someone else, do so below." - PERMDEFAULT: "You must be logged in to access the administration area; please enter your credentials below." - PLEASESAVE: "Please Save Page: This page could not be updated because it hasn't been saved yet." + PAGETYPE: 'Page type' + PERMAGAIN: 'You have been logged out of the CMS. If you would like to log in again, enter a username and password below.' + PERMALREADY: 'I''m sorry, but you can''t access that part of the CMS. If you want to log in as someone else, do so below.' + PERMDEFAULT: 'You must be logged in to access the administration area; please enter your credentials below.' + PLEASESAVE: 'Please Save Page: This page could not be updated because it hasn''t been saved yet.' PreviewButton: Preview - REORGANISATIONSUCCESSFUL: "Reorganised the site tree successfully." + REORGANISATIONSUCCESSFUL: 'Reorganised the site tree successfully.' SAVEDUP: Saved. - ShowAsList: "show as list" - TooManyPages: "Too many pages" - ValidationError: "Validation error" + ShowAsList: 'show as list' + TooManyPages: 'Too many pages' + ValidationError: 'Validation error' VersionUnknown: unknown LeftAndMain_Menu_ss: Hello: Hi - LOGOUT: "Log out" + LOGOUT: 'Log out' ListboxField: - SOURCE_VALIDATION: "Please select a value within the list provided. %s is not a valid option" + SOURCE_VALIDATION: 'Please select a value within the list provided. %s is not a valid option' LoginAttempt: - Email: "Email Address" - IP: "IP Address" - PLURALNAME: "Login Attempts" - SINGULARNAME: "Login Attempt" + Email: 'Email Address' + IP: 'IP Address' + PLURALNAME: 'Login Attempts' + SINGULARNAME: 'Login Attempt' Status: Status Member: - ADDGROUP: "Add group" - BUTTONCHANGEPASSWORD: "Change Password" - BUTTONLOGIN: "Log in" - BUTTONLOGINOTHER: "Log in as someone else" - BUTTONLOSTPASSWORD: "I've lost my password" - CANTEDIT: "You don't have permission to do that" - CONFIRMNEWPASSWORD: "Confirm New Password" - CONFIRMPASSWORD: "Confirm Password" - CURRENT_PASSWORD: "Current Password" - DATEFORMAT: "Date format" - DefaultAdminFirstname: "Default Admin" + ADDGROUP: 'Add group' + BUTTONCHANGEPASSWORD: 'Change Password' + BUTTONLOGIN: 'Log in' + BUTTONLOGINOTHER: 'Log in as someone else' + BUTTONLOSTPASSWORD: 'I''ve lost my password' + CANTEDIT: 'You don''t have permission to do that' + CONFIRMNEWPASSWORD: 'Confirm New Password' + CONFIRMPASSWORD: 'Confirm Password' + CURRENT_PASSWORD: 'Current Password' + DATEFORMAT: 'Date format' + DefaultAdminFirstname: 'Default Admin' DefaultDateTime: default - EDIT_PASSWORD: "New Password" + EDIT_PASSWORD: 'New Password' EMAIL: Email - EMPTYNEWPASSWORD: "The new password can't be empty, please try again" - ENTEREMAIL: "Please enter an email address to get a password reset link." - ERRORLOCKEDOUT2: "Your account has been temporarily disabled because of too many failed attempts at logging in. Please try again in {count} minutes." - ERRORNEWPASSWORD: "You have entered your new password differently, try again" - ERRORPASSWORDNOTMATCH: "Your current password does not match, please try again" - ERRORWRONGCRED: "The provided details don't seem to be correct. Please try again." - FIRSTNAME: "First Name" - INTERFACELANG: "Interface Language" - INVALIDNEWPASSWORD: "We couldn't accept that password: {password}" - KEEPMESIGNEDIN: "Keep me signed in" - LOGGEDINAS: "You're logged in as {name}." - NEWPASSWORD: "New Password" - NoPassword: "There is no password on this member." + EMPTYNEWPASSWORD: 'The new password can''t be empty, please try again' + ENTEREMAIL: 'Please enter an email address to get a password reset link.' + ERRORLOCKEDOUT2: 'Your account has been temporarily disabled because of too many failed attempts at logging in. Please try again in {count} minutes.' + ERRORNEWPASSWORD: 'You have entered your new password differently, try again' + ERRORPASSWORDNOTMATCH: 'Your current password does not match, please try again' + ERRORWRONGCRED: 'The provided details don''t seem to be correct. Please try again.' + FIRSTNAME: 'First Name' + INTERFACELANG: 'Interface Language' + INVALIDNEWPASSWORD: 'We couldn''t accept that password: {password}' + KEEPMESIGNEDIN: 'Keep me signed in' + LOGGEDINAS: 'You''re logged in as {name}.' + NEWPASSWORD: 'New Password' + NoPassword: 'There is no password on this member.' PASSWORD: Password - PASSWORDEXPIRED: "Your password has expired. Please choose a new one." + PASSWORDEXPIRED: 'Your password has expired. Please choose a new one.' PLURALNAME: Members - REMEMBERME: "Remember me next time?" + REMEMBERME: 'Remember me next time?' SINGULARNAME: Member - SUBJECTPASSWORDCHANGED: "Your password has been changed" - SUBJECTPASSWORDRESET: "Your password reset link" + SUBJECTPASSWORDCHANGED: 'Your password has been changed' + SUBJECTPASSWORDRESET: 'Your password reset link' SURNAME: Surname - TIMEFORMAT: "Time format" - VALIDATIONMEMBEREXISTS: "A member already exists with the same {identifier}" - ValidationIdentifierFailed: "Can't overwrite existing member #{id} with identical identifier ({name} = {value}))" - WELCOMEBACK: "Welcome Back, {firstname}" - YOUROLDPASSWORD: "Your old password" + TIMEFORMAT: 'Time format' + VALIDATIONMEMBEREXISTS: 'A member already exists with the same {identifier}' + ValidationIdentifierFailed: 'Can''t overwrite existing member #{id} with identical identifier ({name} = {value}))' + WELCOMEBACK: 'Welcome Back, {firstname}' + YOUROLDPASSWORD: 'Your old password' belongs_many_many_Groups: Groups - db_LastVisited: "Last Visited Date" - db_Locale: "Interface Locale" - db_LockedOutUntil: "Locked out until" - db_NumVisit: "Number of Visits" + db_LastVisited: 'Last Visited Date' + db_Locale: 'Interface Locale' + db_LockedOutUntil: 'Locked out until' + db_NumVisit: 'Number of Visits' db_Password: Password - db_PasswordExpiry: "Password Expiry Date" + db_PasswordExpiry: 'Password Expiry Date' MemberAuthenticator: - TITLE: "E-mail & Password" + TITLE: 'E-mail & Password' MemberDatetimeOptionsetField: - AMORPM: "AM (Ante meridiem) or PM (Post meridiem)" + AMORPM: 'AM (Ante meridiem) or PM (Post meridiem)' Custom: Custom - DATEFORMATBAD: "Date format is invalid" - DAYNOLEADING: "Day of month without leading zero" - DIGITSDECFRACTIONSECOND: "One or more digits representing a decimal fraction of a second" - FOURDIGITYEAR: "Four-digit year" - FULLNAMEMONTH: "Full name of month (e.g. June)" - HOURNOLEADING: "Hour without leading zero" - HOURNOLEADING24: "Hour without leading zero, 24 hour format" - MINUTENOLEADING: "Minute without leading zero" - MONTHNOLEADING: "Month digit without leading zero" + 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' + HOURNOLEADING24: 'Hour without leading zero, 24 hour format' + MINUTENOLEADING: 'Minute without leading zero' + MONTHNOLEADING: 'Month digit without leading zero' Preview: Preview - SHORTMONTH: "Short name of month (e.g. Jun)" - 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" - Toggle: "Show formatting help" + SHORTMONTH: 'Short name of month (e.g. Jun)' + 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' + Toggle: 'Show formatting help' MemberImportForm: - Help1: "

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

" - Help2: "

Advanced usage

  • Allowed columns: %s
  • Existing users are matched by their unique Code property, and updated with any new values from the imported file.
  • Groups can be assigned by the Groups column. Groups are identified by their Code property, multiple groups can be separated by comma. Existing group memberships are not cleared.
" - ResultCreated: "Created {count} members" - ResultDeleted: "Deleted %d members" - ResultNone: "No changes" - ResultUpdated: "Updated {count} members" + Help1: '

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

' + Help2: '

Advanced usage

  • Allowed columns: %s
  • Existing users are matched by their unique Code property, and updated with any new values from the imported file.
  • Groups can be assigned by the Groups column. Groups are identified by their Code property, multiple groups can be separated by comma. Existing group memberships are not cleared.
' + ResultCreated: 'Created {count} members' + ResultDeleted: 'Deleted %d members' + ResultNone: 'No changes' + ResultUpdated: 'Updated {count} members' MemberPassword: - PLURALNAME: "Member Passwords" - SINGULARNAME: "Member Password" + PLURALNAME: 'Member Passwords' + SINGULARNAME: 'Member Password' MemberTableField: - APPLY_FILTER: "Apply Filter" + APPLY_FILTER: 'Apply Filter' ModelAdmin: DELETE: Delete - DELETEDRECORDS: "Deleted {count} records." - EMPTYBEFOREIMPORT: "Replace data" - IMPORT: "Import from CSV" - IMPORTEDRECORDS: "Imported {count} records." - NOCSVFILE: "Please browse for a CSV file to import" - NOIMPORT: "Nothing to import" + DELETEDRECORDS: 'Deleted {count} records.' + EMPTYBEFOREIMPORT: 'Replace data' + IMPORT: 'Import from CSV' + IMPORTEDRECORDS: 'Imported {count} records.' + NOCSVFILE: 'Please browse for a CSV file to import' + NOIMPORT: 'Nothing to import' RESET: Reset - Title: "Data Models" - UPDATEDRECORDS: "Updated {count} records." + Title: 'Data Models' + UPDATEDRECORDS: 'Updated {count} records.' ModelAdmin_ImportSpec_ss: - IMPORTSPECFIELDS: "Database columns" - IMPORTSPECLINK: "Show Specification for %s" + IMPORTSPECFIELDS: 'Database columns' + IMPORTSPECLINK: 'Show Specification for %s' IMPORTSPECRELATIONS: Relations - IMPORTSPECTITLE: "Specification for %s" + IMPORTSPECTITLE: 'Specification for %s' ModelAdmin_Tools_ss: FILTER: Filter IMPORT: Import @@ -560,100 +560,100 @@ en: FIELDLABELAMOUNT: Amount FIELDLABELCURRENCY: Currency MultiSelectField: - SOURCE_VALIDATION: "Please select values within the list provided. Invalid option(s) {value} given" + SOURCE_VALIDATION: 'Please select values within the list provided. Invalid option(s) {value} given' NullableField: - IsNullLabel: "Is Null" + IsNullLabel: 'Is Null' NumericField: - VALIDATION: "'{value}' is not a number, only numbers can be accepted for this field" + VALIDATION: '''{value}'' is not a number, only numbers can be accepted for this field' Pagination: Page: Page View: View PasswordValidator: - LOWCHARSTRENGTH: "Please increase password strength by adding some of the following characters: %s" - PREVPASSWORD: "You've already used that password in the past, please choose a new password" - TOOSHORT: "Password is too short, it must be %s or more characters long" + LOWCHARSTRENGTH: 'Please increase password strength by adding some of the following characters: %s' + PREVPASSWORD: 'You''ve already used that password in the past, please choose a new password' + TOOSHORT: 'Password is too short, it must be %s or more characters long' Permission: AdminGroup: Administrator - CMS_ACCESS_CATEGORY: "CMS Access" - FULLADMINRIGHTS: "Full administrative rights" - FULLADMINRIGHTS_HELP: "Implies and overrules all other assigned permissions." + CMS_ACCESS_CATEGORY: 'CMS Access' + FULLADMINRIGHTS: 'Full administrative rights' + FULLADMINRIGHTS_HELP: 'Implies and overrules all other assigned permissions.' PLURALNAME: Permissions SINGULARNAME: Permission PermissionCheckboxSetField: - AssignedTo: "assigned to \"{title}\"" - FromGroup: "inherited from group \"{title}\"" - FromRole: "inherited from role \"{title}\"" - FromRoleOnGroup: "inherited from role \"%s\" on group \"%s\"" + AssignedTo: 'assigned to "{title}"' + FromGroup: 'inherited from group "{title}"' + FromRole: 'inherited from role "{title}"' + FromRoleOnGroup: 'inherited from role "%s" on group "%s"' PermissionRole: - OnlyAdminCanApply: "Only admin can apply" + OnlyAdminCanApply: 'Only admin can apply' PLURALNAME: Roles SINGULARNAME: Role Title: Title PermissionRoleCode: - PLURALNAME: "Permission Role Codes" - PermsError: "Can't assign code \"%s\" with privileged permissions (requires ADMIN access)" - SINGULARNAME: "Permission Role Code" + PLURALNAME: 'Permission Role Codes' + PermsError: 'Can''t assign code "%s" with privileged permissions (requires ADMIN access)' + SINGULARNAME: 'Permission Role Code' Permissions: - PERMISSIONS_CATEGORY: "Roles and access permissions" - UserPermissionsIntro: "Assigning groups to this user will adjust the permissions they have. See the groups section for details of permissions on individual groups." + PERMISSIONS_CATEGORY: 'Roles and access permissions' + UserPermissionsIntro: 'Assigning groups to this user will adjust the permissions they have. See the groups section for details of permissions on individual groups.' PhoneNumberField: - VALIDATION: "Please enter a valid phone number" + VALIDATION: 'Please enter a valid phone number' RememberLoginHash: - PLURALNAME: "Remember Login Hashs" - SINGULARNAME: "Remember Login Hash" + PLURALNAME: 'Remember Login Hashs' + SINGULARNAME: 'Remember Login Hash' Security: - ALREADYLOGGEDIN: "You don't have access to this page. If you have another account that can access that page, you can log in again below." - BUTTONSEND: "Send me the password reset link" - CHANGEPASSWORDBELOW: "You can change your password below." - CHANGEPASSWORDHEADER: "Change your password" - ENTERNEWPASSWORD: "Please enter a new password." - ERRORPASSWORDPERMISSION: "You must be logged in in order to change your password!" - LOGGEDOUT: "You have been logged out. If you would like to log in again, enter your credentials below." - LOGIN: "Log in" - LOSTPASSWORDHEADER: "Lost Password" - NOTEPAGESECURED: "That page is secured. Enter your credentials below and we will send you right along." - 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: "Enter your e-mail address and we will send you a link with which you can reset your password" - 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." + ALREADYLOGGEDIN: 'You don''t have access to this page. If you have another account that can access that page, you can log in again below.' + BUTTONSEND: 'Send me the password reset link' + CHANGEPASSWORDBELOW: 'You can change your password below.' + CHANGEPASSWORDHEADER: 'Change your password' + ENTERNEWPASSWORD: 'Please enter a new password.' + ERRORPASSWORDPERMISSION: 'You must be logged in in order to change your password!' + LOGGEDOUT: 'You have been logged out. If you would like to log in again, enter your credentials below.' + LOGIN: 'Log in' + LOSTPASSWORDHEADER: 'Lost Password' + NOTEPAGESECURED: 'That page is secured. Enter your credentials below and we will send you right along.' + 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: 'Enter your e-mail address and we will send you a link with which you can reset your password' + PASSWORDSENTHEADER: 'Password reset link sent to ''{email}''' + PASSWORDSENTTEXT: 'Thank you! A reset link has been sent to ''{email}'', provided an account exists for this email address.' SecurityAdmin: - ACCESS_HELP: "Allow viewing, adding and editing users, as well as assigning permissions and roles to them." - APPLY_ROLES: "Apply roles to groups" - APPLY_ROLES_HELP: "Ability to edit the roles assigned to a group. Requires the \"Access to 'Users' section\" permission." - EDITPERMISSIONS: "Manage permissions for groups" - EDITPERMISSIONS_HELP: "Ability to edit Permissions and IP Addresses for a group. Requires the \"Access to 'Security' section\" permission." - GROUPNAME: "Group name" - IMPORTGROUPS: "Import groups" - IMPORTUSERS: "Import users" + 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: 'Ability to edit the roles assigned to a group. Requires the "Access to ''Users'' section" permission.' + EDITPERMISSIONS: 'Manage permissions for groups' + EDITPERMISSIONS_HELP: 'Ability to edit Permissions and IP Addresses for a group. Requires the "Access to ''Security'' section" permission.' + GROUPNAME: 'Group name' + IMPORTGROUPS: 'Import groups' + IMPORTUSERS: 'Import users' MEMBERS: Members MENUTITLE: Security - MemberListCaution: "Caution: Removing members from this list will remove them from all groups and the database" - NEWGROUP: "New Group" + MemberListCaution: 'Caution: Removing members from this list will remove them from all groups and the database' + NEWGROUP: 'New Group' PERMISSIONS: Permissions ROLES: Roles - ROLESDESCRIPTION: "Roles are predefined sets of permissions, and can be assigned to groups.
They are inherited from parent groups if required." + ROLESDESCRIPTION: 'Roles are predefined sets of permissions, and can be assigned to groups.
They are inherited from parent groups if required.' TABROLES: Roles Users: Users SecurityAdmin_MemberImportForm: - BtnImport: "Import from CSV" - FileFieldLabel: "CSV File (Allowed extensions: *.csv)" + BtnImport: 'Import from CSV' + FileFieldLabel: 'CSV File (Allowed extensions: *.csv)' SilverStripeNavigator: Auto: Auto - ChangeViewMode: "Change view mode" + ChangeViewMode: 'Change view mode' Desktop: Desktop - DualWindowView: "Dual Window" + DualWindowView: 'Dual Window' Edit: Edit - EditView: "Edit mode" + EditView: 'Edit mode' Mobile: Mobile - PreviewState: "Preview State" - PreviewView: "Preview mode" + PreviewState: 'Preview State' + PreviewView: 'Preview mode' Responsive: Responsive - SplitView: "Split mode" + SplitView: 'Split mode' Tablet: Tablet - ViewDeviceWidth: "Select a preview width" + ViewDeviceWidth: 'Select a preview width' Width: width SilverStripe\Admin\CMSProfileController: - MENUTITLE: "My Profile" + MENUTITLE: 'My Profile' SilverStripe\Admin\CampaignAdmin: MENUTITLE: Campaigns SilverStripe\Admin\SecurityAdmin: @@ -668,26 +668,26 @@ en: PLURALNAME: Images SINGULARNAME: Image SilverStripe\ORM\DataObject: - PLURALNAME: "Data Objects" - SINGULARNAME: "Data Object" + PLURALNAME: 'Data Objects' + SINGULARNAME: 'Data Object' SilverStripe\ORM\Versioning\ChangeSet: PLURALNAME: Campaigns SINGULARNAME: Campaign SilverStripe\ORM\Versioning\ChangeSetItem: - PLURALNAME: "Change Set Items" - SINGULARNAME: "Change Set Item" + PLURALNAME: 'Change Set Items' + SINGULARNAME: 'Change Set Item' SilverStripe\Security\Group: PLURALNAME: Groups SINGULARNAME: Group SilverStripe\Security\LoginAttempt: - PLURALNAME: "Login Attempts" - SINGULARNAME: "Login Attempt" + PLURALNAME: 'Login Attempts' + SINGULARNAME: 'Login Attempt' SilverStripe\Security\Member: PLURALNAME: Members SINGULARNAME: Member SilverStripe\Security\MemberPassword: - PLURALNAME: "Member Passwords" - SINGULARNAME: "Member Password" + PLURALNAME: 'Member Passwords' + SINGULARNAME: 'Member Password' SilverStripe\Security\Permission: PLURALNAME: Permissions SINGULARNAME: Permission @@ -695,64 +695,64 @@ en: PLURALNAME: Roles SINGULARNAME: Role SilverStripe\Security\PermissionRoleCode: - PLURALNAME: "Permission Role Codes" - SINGULARNAME: "Permission Role Code" + PLURALNAME: 'Permission Role Codes' + SINGULARNAME: 'Permission Role Code' SilverStripe\Security\RememberLoginHash: - PLURALNAME: "Remember Login Hashs" - SINGULARNAME: "Remember Login Hash" + PLURALNAME: 'Remember Login Hashs' + SINGULARNAME: 'Remember Login Hash' SiteTree: TABMAIN: Main TableListField: - CSVEXPORT: "Export to CSV" + CSVEXPORT: 'Export to CSV' Print: Print TableListField_PageControls_ss: OF: of TextField: - VALIDATEMAXLENGTH: "The value for {name} must not exceed {maxLength} characters in length" + VALIDATEMAXLENGTH: 'The value for {name} must not exceed {maxLength} characters in length' TimeField: - VALIDATEFORMAT: "Please enter a valid time format ({format})" + VALIDATEFORMAT: 'Please enter a valid time format ({format})' ToggleField: LESS: less MORE: more UploadField: - ATTACHFILE: "Attach a file" - ATTACHFILES: "Attach files" - AttachFile: "Attach file(s)" - CHOOSEANOTHERFILE: "Choose another file" - CHOOSEANOTHERINFO: "Replace this file with another one from the file store" - DELETE: "Delete from files" - DELETEINFO: "Permanently delete this file from the file store" + ATTACHFILE: 'Attach a file' + ATTACHFILES: 'Attach files' + AttachFile: 'Attach file(s)' + CHOOSEANOTHERFILE: 'Choose another file' + CHOOSEANOTHERINFO: 'Replace this file with another one from the file store' + DELETE: 'Delete from files' + DELETEINFO: 'Permanently delete this file from the file store' DOEDIT: Save - DROPFILE: "drop a file" - DROPFILES: "drop files" + DROPFILE: 'drop a file' + DROPFILES: 'drop files' Dimensions: Dimensions EDIT: Edit - EDITINFO: "Edit this file" - FIELDNOTSET: "File information not found" - FROMCOMPUTER: "From your computer" - FROMCOMPUTERINFO: "Select from files" - FROMFILES: "From files" - HOTLINKINFO: "Info: This image will be hotlinked. Please ensure you have permissions from the original site creator to do so." - MAXNUMBEROFFILES: "Max number of {count} file(s) exceeded." - MAXNUMBEROFFILESONE: "Can only upload one file" - MAXNUMBEROFFILESSHORT: "Can only upload {count} files" - OVERWRITEWARNING: "File with the same name already exists" + EDITINFO: 'Edit this file' + FIELDNOTSET: 'File information not found' + FROMCOMPUTER: 'From your computer' + FROMCOMPUTERINFO: 'Select from files' + FROMFILES: 'From files' + HOTLINKINFO: 'Info: This image will be hotlinked. Please ensure you have permissions from the original site creator to do so.' + MAXNUMBEROFFILES: 'Max number of {count} file(s) exceeded.' + MAXNUMBEROFFILESONE: 'Can only upload one file' + MAXNUMBEROFFILESSHORT: 'Can only upload {count} files' + OVERWRITEWARNING: 'File with the same name already exists' REMOVE: Remove - REMOVEINFO: "Remove this file from here, but do not delete it from the file store" - STARTALL: "Start all" + REMOVEINFO: 'Remove this file from here, but do not delete it from the file store' + STARTALL: 'Start all' Saved: Saved - UPLOADSINTO: "saves into /{path}" + UPLOADSINTO: 'saves into /{path}' Versioned: - INFERRED_TITLE: "Generated by publish of '{title}' at {created}" + INFERRED_TITLE: 'Generated by publish of ''{title}'' at {created}' has_many_Versions: Versions VersionedGridFieldItemRequest: ARCHIVE: Archive - Archived: "Archived %s %s" - BUTTONARCHIVEDESC: "Unpublish and send to archive" + Archived: 'Archived %s %s' + BUTTONARCHIVEDESC: 'Unpublish and send to archive' BUTTONPUBLISH: Publish BUTTONUNPUBLISH: Unpublish - BUTTONUNPUBLISHDESC: "Remove this record from the published site" - Published: "Published {name} {link}" - Unpublished: "Unpublished %s %s" + BUTTONUNPUBLISHDESC: 'Remove this record from the published site' + Published: 'Published {name} {link}' + Unpublished: 'Unpublished %s %s' i18n: - PLURAL: "{number} {form}" + PLURAL: '{number} {form}' diff --git a/lang/fa_IR.yml b/lang/fa_IR.yml index af493453e..02d0a4e78 100644 --- a/lang/fa_IR.yml +++ b/lang/fa_IR.yml @@ -68,9 +68,9 @@ fa_IR: BackLink_Button_ss: Back: بازگشت BasicAuth: - ENTERINFO: "لطفاً یک نام‌کاربری و رمز عبور را وارد نمایید." + ENTERINFO: "لطفاً یک نام‌کاربری و گذرواژه را وارد نمایید." ERRORNOTADMIN: "این کاربر یک مدیر نیست." - ERRORNOTREC: "این نام کاربری / رمز عبور شناخته‌شده نیست" + ERRORNOTREC: "این نام کاربری / گذرواژه شناخته‌شده نیست" Boolean: ANY: هر NOANSWER: خیر @@ -86,10 +86,10 @@ fa_IR: ACCESSALLINTERFACESHELP: "شامل تنظیمات دسترسی‌های ویژه می‌شود." SAVE: ذخیره CMSMemberLoginForm: - BUTTONFORGOTPASSWORD: "رمز عبور را فراموش کرده‌اید؟" + BUTTONFORGOTPASSWORD: "گذرواژه را فراموش کرده‌اید؟" BUTTONLOGIN: "ورود دوباره" BUTTONLOGOUT: خروج - PASSWORDEXPIRED: "

رمز عبور شما منقضی شده‌است. لطفاً یکی دیگر برگزینید.

" + PASSWORDEXPIRED: "

گذرواژه شما منقضی شده‌است. لطفاً یکی دیگر برگزینید.

" CMSPageHistoryController_versions_ss: PREVIEW: "پیش‌نمایش وب‌سایت" CMSPagesController_Tools_ss: @@ -109,12 +109,12 @@ fa_IR: AddToCampaign: "افزودن به کمپین" AddToCampaignFormFieldLabel: "انتخاب یک کمپین" ChangePasswordEmail_ss: - CHANGEPASSWORDTEXT1: "شما رمز عبورتان را تغییر دادید برای" + CHANGEPASSWORDTEXT1: "شما گذرواژه‌تان را تغییر دادید برای" CHANGEPASSWORDTEXT2: "اکنون می‌توانید با این اطلاعات وارد شوید:" - CHANGEPASSWORDTEXT3: "تغییر رمز عبور" + CHANGEPASSWORDTEXT3: "تغییر گذرواژه" EMAIL: ايميل HELLO: درود - PASSWORD: "رمز عبور" + PASSWORD: گذرواژه ChangeSet: DESCRIPTION_AND: "{first} و {second}" DESCRIPTION_ITEM: آیتم @@ -136,14 +136,15 @@ fa_IR: CheckboxSetField: SOURCE_VALIDATION: "لطفاً یک ارزش از لیست فراهم‌شده برگزینید. '{value}' یک گزینه معتبر نیست" ConfirmedPasswordField: - ATLEAST: "رمزهای عبور باید حداقل {min} کاراکتر باشد." - BETWEEN: "رمزهای عبور باید بین {min} تا {max} کاراکتر باشد." - CURRENT_PASSWORD_MISSING: "شما باید رمز عبور کنونی خود را وارد نمایید." - LOGGED_IN_ERROR: "جهت تغییر رمز عبور خود باید وارد شده باشید." - MAXIMUM: "رمزهای عبور باید حداکثر {max} کاراکتر باشد." - SHOWONCLICKTITLE: "تغییر رمز عبور" + ATLEAST: "گذرواژه باید حداقل {min} کاراکتر باشد." + BETWEEN: "گذرواژه باید بین {min} تا {max} کاراکتر باشد." + CURRENT_PASSWORD_ERROR: "گذرواژه‌ای که وارد نموده‌اید درست نیست." + CURRENT_PASSWORD_MISSING: "شما باید گذرواژه کنونی خود را وارد نمایید." + LOGGED_IN_ERROR: "جهت تغییر گذرواژه خود باید وارد شده باشید." + MAXIMUM: "گذرواژه باید حداکثر {max} کاراکتر باشد." + SHOWONCLICKTITLE: "تغییر گذرواژه" ContentController: - DRAFT_SITE_ACCESS_RESTRICTION: "برای نمایش پیش‌نویس یا محتوای آرشیو شده باید با رمز عبور سی‌ام‌اس خود وارد شوید. اینجا را کلیک کنید تا به سایت منتشر‌شده بازگردید." + DRAFT_SITE_ACCESS_RESTRICTION: "برای نمایش پیش‌نویس یا محتوای آرشیو شده باید با گذرواژه سی‌ام‌اس خود وارد شوید. اینجا را کلیک کنید تا به سایت منتشر‌شده بازگردید." NOTLOGGEDIN: "وارد نشده" CreditCardField: FIRST: نخست @@ -193,6 +194,7 @@ fa_IR: AviType: "فایل ویدیو AVI" Content: محتوا CssType: "فایل CSS" + DRAFT: پیش‌نویس DmgType: "دیسک ایمیج اپل" DocType: "فایل Word" Filename: "نام فايل" @@ -205,6 +207,7 @@ fa_IR: IcoType: "تصویر آیکن" JpgType: "تصویر JPEG - مناسب برای عکس‌ها" JsType: "فایل جاوااسکریپت" + MODIFIED: "تغییر یافته" Mp3Type: "فایل صوتی MP3" MpgType: "فایل ویدیویی MPEG" NOVALIDUPLOAD: "فایل یک بارگذاری معتبر نیست" @@ -226,7 +229,7 @@ fa_IR: ForgotPasswordEmail_ss: HELLO: درود TEXT1: "شما اینجاست" - TEXT2: "لینک نوسازی رمز عبور" + TEXT2: "لینک ازنوسازی گذرواژه" TEXT3: برای Form: CSRF_EXPIRED_MESSAGE: "جلسه شما به پایان رسیده است. لطفاً فرم را مجدداً ارسال کنید." @@ -235,9 +238,9 @@ fa_IR: SubmitBtnLabel: برو VALIDATIONCREDITNUMBER: "لطفاً اطمینان حاصل‌کنید که {number} شماره کارت اعتباری را به درستی وارد کرده‌اید" VALIDATIONNOTUNIQUE: "مقدار وارد شده یکتا نیست" - VALIDATIONPASSWORDSDONTMATCH: "رمزهای عبور همانند هم نیستند" - VALIDATIONPASSWORDSNOTEMPTY: "رمزهای عبور نباید تهی باشند" - VALIDATIONSTRONGPASSWORD: "رمزهای عبور باید حداقل شامل یک شماره و یک کاراکتر الفبایی باشند" + VALIDATIONPASSWORDSDONTMATCH: "گذرواژه‌ها همانند هم نیستند" + VALIDATIONPASSWORDSNOTEMPTY: "گذرواژه‌ها نباید تهی باشند" + VALIDATIONSTRONGPASSWORD: "گذرواژه‌ها باید حداقل شامل یک شماره و یک کاراکتر الفبایی باشند" VALIDATOR: اعتبارسنج VALIDCURRENCY: "لطفاً یک واحد پول معتبر وارد نمایید" FormField: @@ -303,6 +306,7 @@ fa_IR: ANCHORSCANNOTACCESSPAGE: "شما مجاز به دسترسی به محتوای صفحه هدف نیستید." ANCHORSPAGENOTFOUND: "صفحه‌ی هدف پیدا نشد." BUTTONADDURL: "افزودن نشانی اینترنتی" + CAPTIONTEXT: "متن کپشن" CSSCLASS: "چیدمان / سبک" DETAILS: جزئیات EMAIL: "نشانی ایمیل" @@ -315,7 +319,12 @@ fa_IR: INSERTMEDIA: "واردکردن رسانه از" LINK: "واردکردن لینک" LINKDESCR: "توضیحات لینک" + LINKDETAILS: "جزئیات لینک" + LINKEMAIL: "لینک به یک نشانی ایمیل" + LINKEXTERNAL: "لینک به وب‌سایت دیگر" + LINKFILE: "لینک به یک فایل قابل دانلود" LINKOPENNEWWIN: "لینک در پنجره جدید باز شود؟" + LINKTO: "نوع لینک" PAGE: صفحه SUBJECT: "موضوع ایمیل" URL: "نشانی اینترنتی" @@ -330,8 +339,8 @@ fa_IR: ANCHORSPAGENOTFOUND: "صفحه‌ی هدف پیدا نشد" BUTTONADDURL: "افزودن نشانی اینترنتی" BUTTONINSERT: "وارد کردن" - BUTTONINSERTLINK: "گذاشتن پیوند" - BUTTONREMOVELINK: "برداشتن پیوند" + BUTTONINSERTLINK: "وارد کردن لینک" + BUTTONREMOVELINK: "حذف لینک" BUTTONUpdate: "به روزرسانی" CAPTIONTEXT: "متن کپشن" CSSCLASS: "جاگیری / الگو" @@ -347,14 +356,14 @@ fa_IR: IMAGEHEIGHTPX: بلندی IMAGEWIDTHPX: پهنا INSERTMEDIA: "واردکردن رسانه" - LINK: پیوند + LINK: "واردکردن لینک" LINKDESCR: "توضیحات لینک" LINKEMAIL: "پست الکترونیک" LINKEXTERNAL: "تارگاه دیگر" LINKFILE: "یک پرونده را بارگزاری کنید" LINKINTERNAL: "برگ در تارگاه" - LINKOPENNEWWIN: "در پنجره جدید باز شود ؟" - LINKTO: "پیوند به" + LINKOPENNEWWIN: "در یک پنجره‌ی جدید باز شود؟" + LINKTO: "لینک به" PAGE: برگ SUBJECT: "موضوع پست الکترونیک" URL: نشانی @@ -370,13 +379,17 @@ fa_IR: LeftAndMain: CANCEL: لغو DELETED: "حذف شده" + DropdownBatchActionsDefault: "یک عملکرد انتخاب کنید..." HELP: کمک - PERMAGAIN: "شما از سیستم مدیریت محتوا خارج شده اید.اگر میخواهید دوباره وارد شوید نام کاربری و رمز عبور خود را در قسمت زیر وارد کنید" + PAGETYPE: "نوع صفحه" + PERMAGAIN: "شما از سیستم مدیریت محتوا خارج شده اید.اگر میخواهید دوباره وارد شوید نام کاربری و گذرواژه خود را در قسمت زیر وارد کنید" + PERMDEFAULT: "جهت ورود به محیط مدیریت باید وارد شده باشید؛ لطفاً اطلاعات خود را در زیر وارد نمایید." PreviewButton: پیش‌نمایش SAVEDUP: "ذخیره شده" ShowAsList: "نمایش به‌صورت لیست" TooManyPages: "صفحات بسیار زیاد" ValidationError: "خطای اعتبارسنجی" + VersionUnknown: نامشخص LeftAndMain_Menu_ss: Hello: درود LOGOUT: خروج @@ -390,46 +403,49 @@ fa_IR: Status: وضعیت Member: ADDGROUP: "افزودن گروه" - BUTTONCHANGEPASSWORD: "تغییر رمز عبور" + BUTTONCHANGEPASSWORD: "تغییر گذرواژه" BUTTONLOGIN: ورود BUTTONLOGINOTHER: "ورود به عنوان شخصی دیگر" - BUTTONLOSTPASSWORD: "من رمز عبور خود را فراموش کرده‌ام" + BUTTONLOSTPASSWORD: "من گذرواژه خود را فراموش کرده‌ام" CANTEDIT: "شما دسترسی انجام این کار را ندارید." - CONFIRMNEWPASSWORD: "تکرار رمز عبور جدید" - CONFIRMPASSWORD: "تکرار رمز عبور" - CURRENT_PASSWORD: "رمز ورود کنونی" + CONFIRMNEWPASSWORD: "تکرار گذرواژه جدید" + CONFIRMPASSWORD: "تکرار گذرواژه" + CURRENT_PASSWORD: "گذرواژه کنونی" DATEFORMAT: "قالب تاریخ" DefaultAdminFirstname: "مدیر پیشفرض" DefaultDateTime: پیش‌فرض - EDIT_PASSWORD: "رمز ورود جدید" + EDIT_PASSWORD: "گذرواژه جدید" EMAIL: "پست الکترونیک" EMPTYNEWPASSWORD: "رمز عبور جدید نمیتواند خالی باشد، لطفا دوباره تلاش کنید" - ENTEREMAIL: "لطفاً یک نشانی ایمیل وارد نمایید تا پیوند ازنوسازی رمز عبور را دریافت کنید." - ERRORPASSWORDNOTMATCH: "رمز عبور کنونی همانند نیست، لطفاً مجدداً تلاش نمایید" + ENTEREMAIL: "لطفاً یک نشانی ایمیل وارد نمایید تا لینک ازنوسازی گذرواژه را دریافت کنید." + ERRORNEWPASSWORD: "شما گذرواژه جدید خود را متفاوت وارد کرده‌اید، دوباره امتحان نمایید" + ERRORPASSWORDNOTMATCH: "گذرواژه کنونی همانند نیست، لطفاً مجدداً تلاش نمایید" FIRSTNAME: نام INTERFACELANG: "زبان برنامه" + INVALIDNEWPASSWORD: "ما نتوانستیم این گذرواژه را بپذیریم: {password}" KEEPMESIGNEDIN: "مرا واردشده نگه‌دار" LOGGEDINAS: "شما به {name} عنوان وارد شده‌اید." NEWPASSWORD: "گذرواژه تازه" - NoPassword: "رمز عبوری برای این کاربر وجود ندارد" - PASSWORD: "رمز عبور" - PASSWORDEXPIRED: "رمز عبور شما منقضی شده‌است. لطفاً یکی جدید برگزینید." + NoPassword: "گذرواژه‌ای برای این کاربر وجود ندارد" + PASSWORD: گذرواژه + PASSWORDEXPIRED: "گذرواژه شما منقضی شده‌است. لطفاً یکی جدید برگزینید." PLURALNAME: اعضاء + REMEMBERME: "مرا برای بار بعد به خاطر بسپار؟" SINGULARNAME: عضو - SUBJECTPASSWORDCHANGED: "گذرواژه شما دگرگون شد" - SUBJECTPASSWORDRESET: "پیوند ازنوسازی گذرواژه شما" + SUBJECTPASSWORDCHANGED: "گذرواژه شما تغییر یافته است" + SUBJECTPASSWORDRESET: "لینک ازنوسازی گذرواژه شما" SURNAME: "نام خانوادگی" TIMEFORMAT: "قالب زمان" WELCOMEBACK: "خوش آمدید، {firstname}" - YOUROLDPASSWORD: "رمز عبور قدیمی" + YOUROLDPASSWORD: "گذرواژه قدیمی شما" belongs_many_many_Groups: گروه‌ها db_LastVisited: "تاریخ آخرین بازدید" db_LockedOutUntil: "بسته شده تا " db_NumVisit: "شمار بازدید" - db_Password: "رمز عبور" - db_PasswordExpiry: "تاریخ از میان رفتن گذرواژه" + db_Password: گذرواژه + db_PasswordExpiry: "تاریخ انقضاء گذرواژه" MemberAuthenticator: - TITLE: "ایمیل و رمز عبور" + TITLE: "ایمیل و گذرواژه" MemberDatetimeOptionsetField: AMORPM: "ق‌ظ (قبل‌از‌ظهر) یا ب‌ظ (بعد‌از‌ظهر)" Custom: دلخواه @@ -437,6 +453,8 @@ fa_IR: DAYNOLEADING: "روز از ماه بدون نمایش صفر در ابتدا" FOURDIGITYEAR: "سال چهار عددی" FULLNAMEMONTH: "نام کامل ماه (مثال ژوئن)" + HOURNOLEADING: "ساعت بدون صفر آغازین" + HOURNOLEADING24: "ساعت بدون صفر آغازین، قالب ۲۴ ساعته" MINUTENOLEADING: "دقیقه بدون نمایش صفر در ابتدا" MONTHNOLEADING: "عدد ماه بدون نمایش صفر در ابتدا" Preview: پیش‌نمایش @@ -454,8 +472,8 @@ fa_IR: ResultNone: "تغییری ایجاد نشد" ResultUpdated: "به‌روز‌رسانی {count} عضو" MemberPassword: - PLURALNAME: "رمزهای عبور کاربر" - SINGULARNAME: "رمز عبور کاربر" + PLURALNAME: "گذرواژه‌های کاربر" + SINGULARNAME: "گذرواژه کاربر" MemberTableField: APPLY_FILTER: "اعمال پالایش" ModelAdmin: @@ -488,7 +506,7 @@ fa_IR: Page: صفحه View: نمایش PasswordValidator: - TOOSHORT: "رمز عبور بسیار کوتاه است، باید %s کاراکتر یا بیشتر باشد" + TOOSHORT: "گذرواژه بسیار کوتاه است، باید %s کاراکتر یا بیشتر باشد" Permission: AdminGroup: "مدیر کل" CMS_ACCESS_CATEGORY: "دسترسی CMS" @@ -512,15 +530,15 @@ fa_IR: VALIDATION: "لطفاً شماره تلفن معتبر وارد کنید" Security: ALREADYLOGGEDIN: "شما به این صفحه دسترسی ندارید. اگر حساب کاربری دیگری دارید که به این صفحه دسترسی دارد، شما میتوانید دوباره وارد شوید.." - BUTTONSEND: "برایم یک ازنوسازی رمز عبور ارسال کن" - CHANGEPASSWORDBELOW: "می‌توانید رمز عبور خود را در پایین تغییر دهید." + BUTTONSEND: "برایم لینک ازنوسازی گذرواژه ارسال کن" + CHANGEPASSWORDBELOW: "می‌توانید گذرواژه خود را در پایین تغییر دهید." CHANGEPASSWORDHEADER: "تغییر گذرواژه" ENTERNEWPASSWORD: "لطفاً گذرواژه جدید را وارد کنید." - ERRORPASSWORDPERMISSION: "جهت تغییر رمز عبور خود باید وارد شده باشید!" + ERRORPASSWORDPERMISSION: "جهت تغییر گذرواژه خود باید وارد شده باشید!" LOGGEDOUT: "شما خارج شده‌اید. اگر مایل هستید دوباره وارد شوید، اطلاعات معتبر خود را در زیر وارد نمایید." LOGIN: ورود - LOSTPASSWORDHEADER: "فراموشی رمز عبور" - PASSWORDSENTHEADER: "پیوند ازنوسازی رمز عبور به '{email}' ارسال شد" + LOSTPASSWORDHEADER: "فراموشی گذرواژه" + PASSWORDSENTHEADER: "لینک ازنوسازی گذرواژه به '{email}' ارسال شد" SecurityAdmin: APPLY_ROLES: "اعمال وظایف به گروه" EDITPERMISSIONS: "مدیریت دسترسی‌های گروه‌ها" @@ -579,8 +597,8 @@ fa_IR: PLURALNAME: اعضاء SINGULARNAME: عضو SilverStripe\Security\MemberPassword: - PLURALNAME: "رمز عبورهای عضو" - SINGULARNAME: "رمز عبور عضو" + PLURALNAME: "گذرواژه‌های کاربر" + SINGULARNAME: "گذرواژه کاربر" SilverStripe\Security\Permission: PLURALNAME: مجوز‌ها SINGULARNAME: مجوز @@ -594,6 +612,7 @@ fa_IR: TimeField: VALIDATEFORMAT: "لطفاً یک قالب زمان معتبر وارد نمایید ({format})" ToggleField: + LESS: کمتر MORE: بیشتر UploadField: ATTACHFILE: "ضمیمه کردن یک فایل" @@ -611,6 +630,7 @@ fa_IR: FROMCOMPUTER: "از کامپیوتر شما" FROMCOMPUTERINFO: "انتخاب از فایل‌ها" FROMFILES: "از فایل‌ها" + HOTLINKINFO: "اطلاعات: این تصویر هات‌لینک‌شده می‌شود. لطفاً مطمئن شوید برای این‌کار دارای مجوزهایی از خالق سایت اصلی هستید." MAXNUMBEROFFILESONE: "تنها یک فایل را می‌تواند آپلود کند" MAXNUMBEROFFILESSHORT: "تنها {count} فایل را می‌تواند آپلود کند" OVERWRITEWARNING: "فایل با نام یکسان از پیش وجود دارد" @@ -625,5 +645,6 @@ fa_IR: BUTTONARCHIVEDESC: "عدم انتشار و ارسال به بایگانی" BUTTONPUBLISH: انتشار BUTTONUNPUBLISH: "عدم انتشار" + Published: "منتشرشده {name} {link}" i18n: PLURAL: "{number} {form}" diff --git a/lang/fi.yml b/lang/fi.yml index e5d05ac73..9d286724a 100644 --- a/lang/fi.yml +++ b/lang/fi.yml @@ -225,7 +225,7 @@ fi: PngType: "PNG-kuva - hyvä yleinen muoto" SINGULARNAME: Tiedosto TOOLARGE: "Tiedostokoko on liian suuri: maks. sallittu koko on {size}" - TOOLARGESHORT: "Sallittu tiedostokoko ylitetty {size}" + TOOLARGESHORT: "Sallittu tiedostokoko {size} ylitetty " TiffType: TIFF-kuva Title: Otsikko WavType: WAV-äänitiedosto @@ -391,7 +391,7 @@ fi: FindInFolder: "Etsi kansiosta" IMAGEALT: "Vaihtoehtoinen teksti (alt)" IMAGEALTTEXT: "Vaihtoehtoinen teksti (alt) - näytetään jos kuvaa ei voida näyttää" - IMAGEALTTEXTDESC: "Näytetään ruudunlukuohjelmille tai jos kuvaa ei voi näyttää" + IMAGEALTTEXTDESC: "Näytetään ruudunlukuohjelmille tai jos kuvia ei voi näyttää" IMAGEDIMENSIONS: Mitat IMAGEHEIGHTPX: Korkeus IMAGETITLE: "Otsikko (tooltip) - kuvan lisätietoja varten" @@ -426,13 +426,13 @@ fi: CANCEL: Peruuta CANT_REORGANISE: "Sinulla ei ole oikeuksia mennä ylemmän tason sivuille. Muutoksiasi ei tallennettu." DELETED: Poistettu. - DropdownBatchActionsDefault: Toiminnot + DropdownBatchActionsDefault: "Valitse toiminto..." HELP: Ohje - PAGETYPE: "Sivutyyppi:" + PAGETYPE: "Sivun tyyppi" PERMAGAIN: "Olet kirjautunut ulos CMS:stä. Jos haluat kirjautua uudelleen sisään, syötä käyttäjätunnuksesi ja salasanasi alla." PERMALREADY: "Pahoittelut, mutta et pääse tähän osaan CMS:ää. Jos haluat kirjautua jonain muuna, voit tehdä sen alta." PERMDEFAULT: "Sinun tulee olla kirjautuneena ylläpito-osioon; syötä tunnuksesi kenttiin." - PLEASESAVE: "Tallenna sivu: tätä sivua ei voitu päivittää, koska sitä ei ole vielä tallennettu." + PLEASESAVE: "Tätä sivua ei voitu päivittää, koska sitä ei ole vielä tallennettu. Tallenna sivu." PreviewButton: Esikatselu REORGANISATIONSUCCESSFUL: "Hakemistopuu uudelleenjärjestettiin onnistuneesti." SAVEDUP: Tallennettu. @@ -488,7 +488,7 @@ fi: SUBJECTPASSWORDRESET: "Salasanasi palautuslinkki" SURNAME: Sukunimi TIMEFORMAT: Aikamuoto - VALIDATIONMEMBEREXISTS: "Toisella käyttäjällä on jo olemassa sama %s" + VALIDATIONMEMBEREXISTS: "Rekisteröityneellä käyttäjällä on jo käytössä tämä {identifier}." ValidationIdentifierFailed: "Olemassa olevan käyttäjän id:n #{id} päälle ei voida kirjoittaa samalla tunnisteella ({name} = {value}))" WELCOMEBACK: "Tervetuloa takaisin, {firstname}" YOUROLDPASSWORD: "Vanha salasanasi" diff --git a/lang/it.yml b/lang/it.yml index be6271309..fa489c409 100644 --- a/lang/it.yml +++ b/lang/it.yml @@ -216,15 +216,12 @@ it: MODIFIED: Modificato Mp3Type: "File audio MP3" MpgType: "File video MPEG" - NOFILESIZE: "La dimensione del file è zero byte." NOVALIDUPLOAD: "Il file caricato non è valido" Name: Nome PLURALNAME: File PdfType: "File Adobe Acrobat PDF" PngType: "Immagine PNG - consigliata per utilizzo generico" SINGULARNAME: File - TOOLARGE: "La dimensione del file è troppo grande, massimo consentito {size}" - TOOLARGESHORT: "La dimensione del file eccede {size}" TiffType: "Immagine TIFF" Title: Titolo WavType: "File audio WAV" @@ -389,8 +386,6 @@ it: FROMWEB: "Dal web" FindInFolder: "Trova nella Cartella" IMAGEALT: "Testo alternativo (alt)" - IMAGEALTTEXT: "Testo alternativo (alt) - mostrato nel caso l'immagine non possa essere visualizzata" - IMAGEALTTEXTDESC: "Mostrato agli screen reader o se l'immagine non può essere visualizzata" IMAGEDIMENSIONS: Dimensioni IMAGEHEIGHTPX: Altezza IMAGETITLE: "Titolo (tooltip) - per informazioni aggiuntive sull'immagine." @@ -425,13 +420,10 @@ it: CANCEL: Annulla CANT_REORGANISE: "Non hai i permessi per modificare le pagine di primo livello. Le modifiche non sono state salvate." DELETED: Eliminato. - DropdownBatchActionsDefault: Azioni HELP: Aiuto - PAGETYPE: "Tipo di pagina:" PERMAGAIN: "Sei stato disconnesso dal CMS. Se desideri autenticarti nuovamente, inserisci qui sotto nome utente e password." PERMALREADY: "Siamo spiacenti, ma non puoi accedere a questa sezione del CMS. Se desideri autenticarti come qualcun altro, fallo qui sotto." PERMDEFAULT: "Devi essere autenticato per accedere all'area amministrativa; Per favore inserisci le tue credenziali qui sotto" - PLEASESAVE: "Per favore salva la pagina: La stessa potrebbe non venire aggiornata se non si provvede quanto prima a salvarla." PreviewButton: Anteprima REORGANISATIONSUCCESSFUL: "Albero del sito riorganizzato con successo." SAVEDUP: Salvato. @@ -487,7 +479,6 @@ it: SUBJECTPASSWORDRESET: "Link per azzerare la tua password" SURNAME: Cognome TIMEFORMAT: "Formato dell'ora" - VALIDATIONMEMBEREXISTS: "Esiste già un utente con l'e-mail %s" ValidationIdentifierFailed: "Non posso sovrascrivere l'utente esistente #{id} con identificatore identico ({name} = {value}))" WELCOMEBACK: "Bentornato, {firstname}" YOUROLDPASSWORD: "La tua vecchia password" From 98b8fefad8e0c615b2948067c6fd1cad866df1c2 Mon Sep 17 00:00:00 2001 From: Dan Hensby Date: Mon, 19 Dec 2016 12:21:39 +0000 Subject: [PATCH 08/16] Added 3.4.3-rc1 changelog --- docs/en/04_Changelogs/rc/3.4.3-rc1.md | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 docs/en/04_Changelogs/rc/3.4.3-rc1.md diff --git a/docs/en/04_Changelogs/rc/3.4.3-rc1.md b/docs/en/04_Changelogs/rc/3.4.3-rc1.md new file mode 100644 index 000000000..0749cfd32 --- /dev/null +++ b/docs/en/04_Changelogs/rc/3.4.3-rc1.md @@ -0,0 +1,17 @@ +# 3.4.3-rc1 + + + +## Change Log + +### Bugfixes + + * 2016-12-16 [c007e85](https://github.com/silverstripe/silverstripe-framework/commit/c007e85d1b9a1affd0ea7646b6a8c37d78b4450c) Suppress HtmlEditorField casting (Damian Mooyman) + * 2016-12-08 [5248be9](https://github.com/silverstripe/silverstripe-framework/commit/5248be92268e343dc0bacafd4c15de0c79d1f592) Handle fields with square brackets (Daniel Hensby) + * 2016-12-05 [2181e3b](https://github.com/silverstripe/silverstripe-framework/commit/2181e3b86b3663352efdfb2e3896081b1e0ae4db) Fix localisation issues (Damian Mooyman) + * 2016-12-05 [224b2a4](https://github.com/silverstripe/silverstripe-cms/commit/224b2a4cbad768f27a19b14c2b9ce53efa619619) Fix localisation issues in CMS (Damian Mooyman) + * 2016-11-29 [9ec1d35](https://github.com/silverstripe/silverstripe-framework/commit/9ec1d35f2bd09bee50d3a3629d9589f8871abd98) Fix behat tests unable to capture HTML editor fields (Damian Mooyman) + * 2016-11-24 [a4760b8](https://github.com/silverstripe/silverstripe-framework/commit/a4760b8ee409c2c96a0e77445debf931259cb9aa) Fixed issue where a shortcode's location would not get set to split when using the class leftAlone (UndefinedOffset) + * 2016-11-23 [03b4e6e](https://github.com/silverstripe/silverstripe-framework/commit/03b4e6ea3201736c62a73e301489fe6a65a01a0f) Tests shouldnt set date or time format to null (Daniel Hensby) + * 2016-11-22 [b2503ac](https://github.com/silverstripe/silverstripe-cms/commit/b2503ac004f5e99d2041732dea702735128ecf1e) content authors unable to duplicate top-level pages (fixes #1685) (Loz Calver) + * 2016-11-04 [dd9ade4](https://github.com/silverstripe/silverstripe-framework/commit/dd9ade429454b1053ab5c2003663eeb66b5866d6) UploadField incorrectly setting max upload size (Daniel Hensby) From eecdf56b36221738009a8ce781c93ba9e74b5393 Mon Sep 17 00:00:00 2001 From: Andrew Aitken-Fincham Date: Mon, 19 Dec 2016 13:50:48 +0000 Subject: [PATCH 09/16] remove Created field on duplicate --- model/DataObject.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/model/DataObject.php b/model/DataObject.php index 1ac147fcd..d52b4d860 100644 --- a/model/DataObject.php +++ b/model/DataObject.php @@ -531,7 +531,9 @@ class DataObject extends ViewableData implements DataObjectInterface, i18nEntity */ public function duplicate($doWrite = true) { $className = $this->class; - $clone = new $className( $this->toMap(), false, $this->model ); + $map = $this->toMap(); + unset($map['Created']); + $clone = new $className( $map, false, $this->model ); $clone->ID = 0; $clone->invokeWithExtensions('onBeforeDuplicate', $this, $doWrite); From 273a06d47d01493afabae60a604fa58484165652 Mon Sep 17 00:00:00 2001 From: Daniel Hensby Date: Mon, 19 Dec 2016 14:01:05 +0000 Subject: [PATCH 10/16] TEST Duplicated DataObjects dont keep Created date value --- tests/model/DataObjectDuplicationTest.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/tests/model/DataObjectDuplicationTest.php b/tests/model/DataObjectDuplicationTest.php index 33650f3e5..e3b24fece 100644 --- a/tests/model/DataObjectDuplicationTest.php +++ b/tests/model/DataObjectDuplicationTest.php @@ -11,10 +11,11 @@ class DataObjectDuplicationTest extends SapphireTest { ); public function testDuplicate() { + SS_Datetime::set_mock_now('2016-01-01 01:01:01'); $orig = new DataObjectDuplicateTestClass1(); $orig->text = 'foo'; $orig->write(); - + SS_Datetime::set_mock_now('2016-01-02 01:01:01'); $duplicate = $orig->duplicate(); $this->assertInstanceOf('DataObjectDuplicateTestClass1', $duplicate, 'Creates the correct type' @@ -28,6 +29,8 @@ class DataObjectDuplicationTest extends SapphireTest { $this->assertEquals(2, DataObjectDuplicateTestClass1::get()->Count(), 'Only creates a single duplicate' ); + $this->assertEquals(SS_Datetime::now()->Nice(), $duplicate->dbObject('Created')->Nice()); + $this->assertNotEquals($orig->dbObject('Created')->Nice(), $duplicate->dbObject('Created')->Nice()); } public function testDuplicateHasOne() { From 222ee6bde270712fee60c1b796a65f7b7dd4979f Mon Sep 17 00:00:00 2001 From: PingMetal Date: Sun, 18 Dec 2016 05:13:58 -0500 Subject: [PATCH 11/16] Fixed a pagination bug Depending on the current page, a page not supposed to show up in the pagination summary can be skipped without returning a null value. It makes it difficult to know it is existent, but just skipped. --- core/PaginatedList.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/core/PaginatedList.php b/core/PaginatedList.php index 2d07f82d2..a332f57c8 100644 --- a/core/PaginatedList.php +++ b/core/PaginatedList.php @@ -293,6 +293,7 @@ class PaginatedList extends SS_ListDecorator { } $left = max($current - $offset, 1); + $right = min($current + $offset, $total); $range = range($current - $offset, $current + $offset); if ($left + $context > $total) { @@ -304,7 +305,7 @@ class PaginatedList extends SS_ListDecorator { $num = $i + 1; $emptyRange = $num != 1 && $num != $total && ( - $num == $left - 1 || $num == $left + $context + 1 + $num == $left - 1 || $num == $right + 1 ); if ($emptyRange) { From 26cd99de224a2005a7cbefaa2f4872c5480fce9f Mon Sep 17 00:00:00 2001 From: Dan Hensby Date: Mon, 19 Dec 2016 16:28:18 +0000 Subject: [PATCH 12/16] Added 3.5.1-rc2 changelog --- docs/en/04_Changelogs/rc/3.5.1-rc2.md | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 docs/en/04_Changelogs/rc/3.5.1-rc2.md diff --git a/docs/en/04_Changelogs/rc/3.5.1-rc2.md b/docs/en/04_Changelogs/rc/3.5.1-rc2.md new file mode 100644 index 000000000..7cd84f524 --- /dev/null +++ b/docs/en/04_Changelogs/rc/3.5.1-rc2.md @@ -0,0 +1,10 @@ +# 3.5.1-rc2 + + + +## Change Log + +### Bugfixes + + * 2016-12-18 [222ee6b](https://github.com/silverstripe/silverstripe-framework/commit/222ee6bde270712fee60c1b796a65f7b7dd4979f) ed a pagination bug (PingMetal) + * 2016-12-16 [c007e85](https://github.com/silverstripe/silverstripe-framework/commit/c007e85d1b9a1affd0ea7646b6a8c37d78b4450c) Suppress HtmlEditorField casting (Damian Mooyman) From ffdb99e78d6ff179c22c5b53f0517fdd75abb858 Mon Sep 17 00:00:00 2001 From: Damian Mooyman Date: Wed, 21 Dec 2016 18:55:00 +1300 Subject: [PATCH 13/16] BUG Temp disable shortcode SPLIT behaviour due to crash (#6436) Fixes #5987 --- parsers/ShortcodeParser.php | 3 ++- tests/parsers/ShortcodeParserTest.php | 12 +++++++++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/parsers/ShortcodeParser.php b/parsers/ShortcodeParser.php index db69e677e..ef0633756 100644 --- a/parsers/ShortcodeParser.php +++ b/parsers/ShortcodeParser.php @@ -608,7 +608,8 @@ class ShortcodeParser extends Object { $location = self::INLINE; if($class == 'left' || $class == 'right') $location = self::BEFORE; - if($class == 'center' || $class == 'leftAlone') $location = self::SPLIT; + // Note: center / leftAlone should be `self::SPLIT`, but this crashes so we fall back to self::INLINE + // if($class == 'center' || $class == 'leftAlone') $location = self::SPLIT; if(!$parent) { if($location !== self::INLINE) { diff --git a/tests/parsers/ShortcodeParserTest.php b/tests/parsers/ShortcodeParserTest.php index 85dcaa3b4..796d06478 100644 --- a/tests/parsers/ShortcodeParserTest.php +++ b/tests/parsers/ShortcodeParserTest.php @@ -185,7 +185,8 @@ class ShortcodeParserTest extends SapphireTest { $this->assertEquals(preg_replace('/\s+/', '', $a), preg_replace('/\s+/', '', $b), $message); } - public function testtExtract() { + public function testtExtractBefore() + { // Left extracts to before the current block $this->assertEqualsIgnoringWhitespace( 'Code
FooBar
', @@ -197,6 +198,13 @@ class ShortcodeParserTest extends SapphireTest { 'Code
FooBarBazQux
', $this->parser->parse('
FooBar[test_shortcode class=left]Code[/test_shortcode]BazQux
') ); + } + + public function testExtractSplit() + { + $this->markTestSkipped( + 'Feature disabled due to https://github.com/silverstripe/silverstripe-framework/issues/5987' + ); // Center splits the current block $this->assertEqualsIgnoringWhitespace( @@ -209,7 +217,9 @@ class ShortcodeParserTest extends SapphireTest { '
FooBar
Code
BazQux
', $this->parser->parse('
FooBar[test_shortcode class=center]Code[/test_shortcode]BazQux
') ); + } + public function testExtractNone() { // No class means don't extract $this->assertEqualsIgnoringWhitespace( '
FooCodeBar
', From f314b86ad804b021cda255e4645e99e8d971fa8a Mon Sep 17 00:00:00 2001 From: Damian Mooyman Date: Wed, 21 Dec 2016 18:55:00 +1300 Subject: [PATCH 14/16] BUG Temp disable shortcode SPLIT behaviour due to crash (#6436) Fixes #5987 --- parsers/ShortcodeParser.php | 3 ++- tests/parsers/ShortcodeParserTest.php | 12 +++++++++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/parsers/ShortcodeParser.php b/parsers/ShortcodeParser.php index be3b52d4c..b3e7076a8 100644 --- a/parsers/ShortcodeParser.php +++ b/parsers/ShortcodeParser.php @@ -584,7 +584,8 @@ class ShortcodeParser extends Object { $location = self::INLINE; if($class == 'left' || $class == 'right') $location = self::BEFORE; - if($class == 'center' || $class == 'leftAlone') $location = self::SPLIT; + // Note: center / leftAlone should be `self::SPLIT`, but this crashes so we fall back to self::INLINE + // if($class == 'center' || $class == 'leftAlone') $location = self::SPLIT; if(!$parent) { if($location !== self::INLINE) { diff --git a/tests/parsers/ShortcodeParserTest.php b/tests/parsers/ShortcodeParserTest.php index 85dcaa3b4..796d06478 100644 --- a/tests/parsers/ShortcodeParserTest.php +++ b/tests/parsers/ShortcodeParserTest.php @@ -185,7 +185,8 @@ class ShortcodeParserTest extends SapphireTest { $this->assertEquals(preg_replace('/\s+/', '', $a), preg_replace('/\s+/', '', $b), $message); } - public function testtExtract() { + public function testtExtractBefore() + { // Left extracts to before the current block $this->assertEqualsIgnoringWhitespace( 'Code
FooBar
', @@ -197,6 +198,13 @@ class ShortcodeParserTest extends SapphireTest { 'Code
FooBarBazQux
', $this->parser->parse('
FooBar[test_shortcode class=left]Code[/test_shortcode]BazQux
') ); + } + + public function testExtractSplit() + { + $this->markTestSkipped( + 'Feature disabled due to https://github.com/silverstripe/silverstripe-framework/issues/5987' + ); // Center splits the current block $this->assertEqualsIgnoringWhitespace( @@ -209,7 +217,9 @@ class ShortcodeParserTest extends SapphireTest { '
FooBar
Code
BazQux
', $this->parser->parse('
FooBar[test_shortcode class=center]Code[/test_shortcode]BazQux
') ); + } + public function testExtractNone() { // No class means don't extract $this->assertEqualsIgnoringWhitespace( '
FooCodeBar
', From 9de539fdababce5cd506e1f02661071adeda7a6a Mon Sep 17 00:00:00 2001 From: Damian Mooyman Date: Thu, 22 Dec 2016 10:43:34 +1300 Subject: [PATCH 15/16] Added 3.5.1 changelog --- docs/en/04_Changelogs/3.5.1.md | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 docs/en/04_Changelogs/3.5.1.md diff --git a/docs/en/04_Changelogs/3.5.1.md b/docs/en/04_Changelogs/3.5.1.md new file mode 100644 index 000000000..64dea0c60 --- /dev/null +++ b/docs/en/04_Changelogs/3.5.1.md @@ -0,0 +1,20 @@ +# 3.5.1 + + + +## Change Log + +### Bugfixes + + * 2016-12-21 [ffdb99e](https://github.com/silverstripe/silverstripe-framework/commit/ffdb99e78d6ff179c22c5b53f0517fdd75abb858) Temp disable shortcode SPLIT behaviour due to crash (#6436) (Damian Mooyman) + * 2016-12-18 [222ee6b](https://github.com/silverstripe/silverstripe-framework/commit/222ee6bde270712fee60c1b796a65f7b7dd4979f) ed a pagination bug (PingMetal) + * 2016-12-16 [c007e85](https://github.com/silverstripe/silverstripe-framework/commit/c007e85d1b9a1affd0ea7646b6a8c37d78b4450c) Suppress HtmlEditorField casting (Damian Mooyman) + * 2016-12-08 [5248be9](https://github.com/silverstripe/silverstripe-framework/commit/5248be92268e343dc0bacafd4c15de0c79d1f592) Handle fields with square brackets (Daniel Hensby) + * 2016-12-06 [3fca7b3](https://github.com/silverstripe/silverstripe-framework/commit/3fca7b3c4d8ada19e8abbed70548eb63d1f476e3) hard-coded boolean in CsvBulkLoader (Colin Tucker) + * 2016-12-05 [2181e3b](https://github.com/silverstripe/silverstripe-framework/commit/2181e3b86b3663352efdfb2e3896081b1e0ae4db) Fix localisation issues (Damian Mooyman) + * 2016-12-05 [224b2a4](https://github.com/silverstripe/silverstripe-cms/commit/224b2a4cbad768f27a19b14c2b9ce53efa619619) Fix localisation issues in CMS (Damian Mooyman) + * 2016-11-29 [9ec1d35](https://github.com/silverstripe/silverstripe-framework/commit/9ec1d35f2bd09bee50d3a3629d9589f8871abd98) Fix behat tests unable to capture HTML editor fields (Damian Mooyman) + * 2016-11-24 [a4760b8](https://github.com/silverstripe/silverstripe-framework/commit/a4760b8ee409c2c96a0e77445debf931259cb9aa) Fixed issue where a shortcode's location would not get set to split when using the class leftAlone (UndefinedOffset) + * 2016-11-23 [03b4e6e](https://github.com/silverstripe/silverstripe-framework/commit/03b4e6ea3201736c62a73e301489fe6a65a01a0f) Tests shouldnt set date or time format to null (Daniel Hensby) + * 2016-11-22 [b2503ac](https://github.com/silverstripe/silverstripe-cms/commit/b2503ac004f5e99d2041732dea702735128ecf1e) content authors unable to duplicate top-level pages (fixes #1685) (Loz Calver) + * 2016-11-04 [dd9ade4](https://github.com/silverstripe/silverstripe-framework/commit/dd9ade429454b1053ab5c2003663eeb66b5866d6) UploadField incorrectly setting max upload size (Daniel Hensby) From 28d065c587601597473cb1ce247f60a38fe75f72 Mon Sep 17 00:00:00 2001 From: Damian Mooyman Date: Thu, 22 Dec 2016 12:02:45 +1300 Subject: [PATCH 16/16] Added 3.4.3 changelog --- docs/en/04_Changelogs/3.4.3.md | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 docs/en/04_Changelogs/3.4.3.md diff --git a/docs/en/04_Changelogs/3.4.3.md b/docs/en/04_Changelogs/3.4.3.md new file mode 100644 index 000000000..7af4d2918 --- /dev/null +++ b/docs/en/04_Changelogs/3.4.3.md @@ -0,0 +1,19 @@ +# 3.4.3 + + + +## Change Log + +### Bugfixes + + * 2016-12-21 [f314b86](https://github.com/silverstripe/silverstripe-framework/commit/f314b86ad804b021cda255e4645e99e8d971fa8a) Temp disable shortcode SPLIT behaviour due to crash (#6436) (Damian Mooyman) + * 2016-12-18 [222ee6b](https://github.com/silverstripe/silverstripe-framework/commit/222ee6bde270712fee60c1b796a65f7b7dd4979f) ed a pagination bug (PingMetal) + * 2016-12-16 [c007e85](https://github.com/silverstripe/silverstripe-framework/commit/c007e85d1b9a1affd0ea7646b6a8c37d78b4450c) Suppress HtmlEditorField casting (Damian Mooyman) + * 2016-12-08 [5248be9](https://github.com/silverstripe/silverstripe-framework/commit/5248be92268e343dc0bacafd4c15de0c79d1f592) Handle fields with square brackets (Daniel Hensby) + * 2016-12-05 [2181e3b](https://github.com/silverstripe/silverstripe-framework/commit/2181e3b86b3663352efdfb2e3896081b1e0ae4db) Fix localisation issues (Damian Mooyman) + * 2016-12-05 [224b2a4](https://github.com/silverstripe/silverstripe-cms/commit/224b2a4cbad768f27a19b14c2b9ce53efa619619) Fix localisation issues in CMS (Damian Mooyman) + * 2016-11-29 [9ec1d35](https://github.com/silverstripe/silverstripe-framework/commit/9ec1d35f2bd09bee50d3a3629d9589f8871abd98) Fix behat tests unable to capture HTML editor fields (Damian Mooyman) + * 2016-11-24 [a4760b8](https://github.com/silverstripe/silverstripe-framework/commit/a4760b8ee409c2c96a0e77445debf931259cb9aa) Fixed issue where a shortcode's location would not get set to split when using the class leftAlone (UndefinedOffset) + * 2016-11-23 [03b4e6e](https://github.com/silverstripe/silverstripe-framework/commit/03b4e6ea3201736c62a73e301489fe6a65a01a0f) Tests shouldnt set date or time format to null (Daniel Hensby) + * 2016-11-22 [b2503ac](https://github.com/silverstripe/silverstripe-cms/commit/b2503ac004f5e99d2041732dea702735128ecf1e) content authors unable to duplicate top-level pages (fixes #1685) (Loz Calver) + * 2016-11-04 [dd9ade4](https://github.com/silverstripe/silverstripe-framework/commit/dd9ade429454b1053ab5c2003663eeb66b5866d6) UploadField incorrectly setting max upload size (Daniel Hensby)