Merge remote-tracking branch 'origin/3.1'

Conflicts:
	tests/travis/before_script
This commit is contained in:
Ingo Schommer 2013-02-27 13:34:03 +01:00
commit ce66bc1eaf
57 changed files with 1462 additions and 536 deletions

View File

@ -26,7 +26,7 @@ matrix:
before_script: before_script:
- pear install pear/PHP_CodeSniffer - pear install pear/PHP_CodeSniffer
- phpenv rehash - phpenv rehash
- ./tests/travis/before_script ~/builds/ss - ./tests/travis/before.php --target ~/builds/ss --version="dev-master" --installer="master"
- cd ~/builds/ss - cd ~/builds/ss
script: script:

View File

@ -1,6 +1,6 @@
## SilverStripe Framework ## SilverStripe Framework
[![Build Status](https://secure.travis-ci.org/silverstripe/sapphire.png?branch=3.0)](https://travis-ci.org/silverstripe/sapphire) [![Build Status](https://secure.travis-ci.org/silverstripe/sapphire.png?branch=master)](https://travis-ci.org/silverstripe/sapphire)
PHP5 framework forming the base for the SilverStripe CMS ([http://silverstripe.org](http://silverstripe.org)). PHP5 framework forming the base for the SilverStripe CMS ([http://silverstripe.org](http://silverstripe.org)).
Requires a [`silverstripe-installer`](http://github.com/silverstripe/silverstripe-installer) base project. Typically used alongside the [`cms`](http://github.com/silverstripe/silverstripe-cms) module. Requires a [`silverstripe-installer`](http://github.com/silverstripe/silverstripe-installer) base project. Typically used alongside the [`cms`](http://github.com/silverstripe/silverstripe-cms) module.

6
_config/config.yml Normal file
View File

@ -0,0 +1,6 @@
---
Name: coreconfig
---
Upload:
# Replace an existing file rather than renaming the new one.
replaceFile: false

View File

@ -150,15 +150,14 @@ class CMSMenu extends Object implements IteratorAggregate, i18nEntityProvider
} }
} }
// Sort menu items according to priority // Sort menu items according to priority, then title asc
$menuPriority = array(); $menuPriority = array();
$i = 0; $menuTitle = array();
foreach($menuItems as $key => $menuItem) { foreach($menuItems as $key => $menuItem) {
$i++; $menuPriority[$key] = $menuItem->priority;
// This funny litle formula ensures that the first item added with the same priority will be left-most. $menuTitle[$key] = $menuItem->title;
$menuPriority[$key] = $menuItem->priority*100 - $i;
} }
array_multisort($menuPriority, SORT_DESC, $menuItems); array_multisort($menuPriority, SORT_DESC, $menuTitle, SORT_ASC, $menuItems);
return $menuItems; return $menuItems;
} }

View File

@ -54,6 +54,13 @@ abstract class ModelAdmin extends LeftAndMain {
* @var array|string * @var array|string
*/ */
public static $managed_models = null; public static $managed_models = null;
/**
* Override menu_priority so that ModelAdmin CMSMenu objects
* are grouped together directly above the Help menu item.
* @var float
*/
public static $menu_priority = -0.5;
public static $allowed_actions = array( public static $allowed_actions = array(
'ImportForm', 'ImportForm',

View File

@ -1,5 +1,5 @@
if(typeof(ss) == 'undefined' || typeof(ss.i18n) == 'undefined') { if(typeof(ss) == 'undefined' || typeof(ss.i18n) == 'undefined') {
if(typeof(console) != 'undefined') console.error('Class ss.i18n not defined'); if(typeof(console) != 'undefined') console.error('Class ss.i18n not defined');
} else { } else {
ss.i18n.addDictionary('nl_NL', { ss.i18n.addDictionary('nl_NL', {
'LeftAndMain.CONFIRMUNSAVED': "Weet u zeker dat u deze pagina wilt verlaten?\n\WAARSCHUWING: Uw veranderingen zijn niet opgeslagen.\n\nKies OK om te verlaten, of Cancel om op de huidige pagina te blijven.", 'LeftAndMain.CONFIRMUNSAVED': "Weet u zeker dat u deze pagina wilt verlaten?\n\WAARSCHUWING: Uw veranderingen zijn niet opgeslagen.\n\nKies OK om te verlaten, of Cancel om op de huidige pagina te blijven.",

View File

@ -674,8 +674,8 @@ class Director implements TemplateGlobalProvider {
$matched = false; $matched = false;
if($patterns) { if($patterns) {
// Calling from the command-line? // Calling from the command-line?
if(!isset($_SERVER['REQUEST_URI'])) return; if(!isset($_SERVER['REQUEST_URI'])) return;
// protect portions of the site based on the pattern // protect portions of the site based on the pattern
$relativeURL = self::makeRelative(Director::absoluteURL($_SERVER['REQUEST_URI'])); $relativeURL = self::makeRelative(Director::absoluteURL($_SERVER['REQUEST_URI']));

View File

@ -107,7 +107,7 @@ class HTTP {
} }
return $matches[1] . $rewritten . $matches[3]; return $matches[1] . $rewritten . $matches[3];
}; };
// Execute each expression // Execute each expression
foreach($regExps as $regExp) { foreach($regExps as $regExp) {
$content = preg_replace_callback($regExp, $callback, $content); $content = preg_replace_callback($regExp, $callback, $content);
@ -314,7 +314,8 @@ class HTTP {
$responseHeaders["Cache-Control"] = "max-age=" . self::$cache_age . ", must-revalidate, no-transform"; $responseHeaders["Cache-Control"] = "max-age=" . self::$cache_age . ", must-revalidate, no-transform";
$responseHeaders["Pragma"] = ""; $responseHeaders["Pragma"] = "";
// To do: User-Agent should only be added in situations where you *are* actually varying according to it. // To do: User-Agent should only be added in situations where you *are* actually
// varying according to user-agent.
$responseHeaders['Vary'] = 'Cookie, X-Forwarded-Protocol, User-Agent, Accept'; $responseHeaders['Vary'] = 'Cookie, X-Forwarded-Protocol, User-Agent, Accept';
} else { } else {
@ -324,14 +325,12 @@ class HTTP {
if(self::$modification_date && self::$cache_age > 0) { if(self::$modification_date && self::$cache_age > 0) {
$responseHeaders["Last-Modified"] = self::gmt_date(self::$modification_date); $responseHeaders["Last-Modified"] = self::gmt_date(self::$modification_date);
/* Chrome ignores Varies when redirecting back (http://code.google.com/p/chromium/issues/detail?id=79758) // Chrome ignores Varies when redirecting back (http://code.google.com/p/chromium/issues/detail?id=79758)
which means that if you log out, you get redirected back to a page which Chrome then checks against // which means that if you log out, you get redirected back to a page which Chrome then checks against
last-modified (which passes, getting a 304) when it shouldn't be trying to use that page at all because // last-modified (which passes, getting a 304)
it's the "logged in" version. // when it shouldn't be trying to use that page at all because it's the "logged in" version.
// By also using and etag that includes both the modification date and all the varies
By also using and etag that includes both the modification date and all the varies values which we also // values which we also check against we can catch this and not return a 304
check against we can catch this and not return a 304
*/
$etagParts = array(self::$modification_date, serialize($_COOKIE)); $etagParts = array(self::$modification_date, serialize($_COOKIE));
if (isset($_SERVER['HTTP_X_FORWARDED_PROTOCOL'])) $etagParts[] = $_SERVER['HTTP_X_FORWARDED_PROTOCOL']; if (isset($_SERVER['HTTP_X_FORWARDED_PROTOCOL'])) $etagParts[] = $_SERVER['HTTP_X_FORWARDED_PROTOCOL'];
if (isset($_SERVER['HTTP_USER_AGENT'])) $etagParts[] = $_SERVER['HTTP_USER_AGENT']; if (isset($_SERVER['HTTP_USER_AGENT'])) $etagParts[] = $_SERVER['HTTP_USER_AGENT'];

View File

@ -160,9 +160,6 @@ class SS_HTTPResponse {
*/ */
public function setBody($body) { public function setBody($body) {
$this->body = $body; $this->body = $body;
// Set content-length in bytes. Use mbstring to avoid problems with mb_internal_encoding() and mbstring.func_overload
$this->headers['Content-Length'] = mb_strlen($this->body,'8bit');
} }
/** /**
@ -244,17 +241,21 @@ class SS_HTTPResponse {
<meta http-equiv=\"refresh\" content=\"1; url=$url\" /> <meta http-equiv=\"refresh\" content=\"1; url=$url\" />
<script type=\"text/javascript\">setTimeout('window.location.href = \"$url\"', 50);</script>"; <script type=\"text/javascript\">setTimeout('window.location.href = \"$url\"', 50);</script>";
} else { } else {
$line = $file = null; $line = $file = null;
if(!headers_sent($file, $line)) { if(!headers_sent($file, $line)) {
header($_SERVER['SERVER_PROTOCOL'] . " $this->statusCode " . $this->getStatusDescription()); header($_SERVER['SERVER_PROTOCOL'] . " $this->statusCode " . $this->getStatusDescription());
foreach($this->headers as $header => $value) { foreach($this->headers as $header => $value) {
header("$header: $value", true, $this->statusCode); header("$header: $value", true, $this->statusCode);
} }
} else { } else {
// It's critical that these status codes are sent; we need to report a failure if not. // It's critical that these status codes are sent; we need to report a failure if not.
if($this->statusCode >= 300) { if($this->statusCode >= 300) {
user_error("Couldn't set response type to $this->statusCode because of output on line $line of $file", E_USER_WARNING); user_error(
} "Couldn't set response type to $this->statusCode because " .
"of output on line $line of $file",
E_USER_WARNING
);
}
} }
// Only show error pages or generic "friendly" errors if the status code signifies // Only show error pages or generic "friendly" errors if the status code signifies

View File

@ -240,7 +240,7 @@ class Debug {
if(Director::isDev()) { if(Director::isDev()) {
return self::showError($errno, $errstr, $errfile, $errline, $errcontext, "Notice"); return self::showError($errno, $errstr, $errfile, $errline, $errcontext, "Notice");
} else { } else {
return false; return false;
} }
} }
@ -258,7 +258,15 @@ class Debug {
ini_set('display_errors', 0); ini_set('display_errors', 0);
if(self::$send_warnings_to) { if(self::$send_warnings_to) {
return self::emailError(self::$send_warnings_to, $errno, $errstr, $errfile, $errline, $errcontext, "Warning"); return self::emailError(
self::$send_warnings_to,
$errno,
$errstr,
$errfile,
$errline,
$errcontext,
"Warning"
);
} }
// Send out the error details to the logger for writing // Send out the error details to the logger for writing
@ -280,8 +288,8 @@ class Debug {
if(Director::isDev()) { if(Director::isDev()) {
return self::showError($errno, $errstr, $errfile, $errline, $errcontext, "Warning"); return self::showError($errno, $errstr, $errfile, $errline, $errcontext, "Warning");
} else { } else {
return false; return false;
} }
} }
/** /**

View File

@ -0,0 +1,13 @@
# 3.0.5 (2013-02-20)
## Overview
* Fixes unpublish and "delete" actions in CMS (regression from $allowed_actions changes in 3.0.4)
### Bugfixes
* 2013-02-18 [16d0c18](https://github.com/silverstripe/sapphire/commit/16d0c18) Find Form actions in CompositeFields for access checks (Ingo Schommer)
### Other
* 2013-02-19 [9e7c622](https://github.com/silverstripe/sapphire/commit/9e7c622) fixed error property $ of object is not a function (roed)

View File

@ -7,6 +7,7 @@
Composer is a package management tool for PHP that lets you install and upgrade SilverStripe and its modules. Although installing Composer is one extra step, it will give you much more flexibility than just downloading the file from silverstripe.org. This is our recommended way of downloading SilverStripe and managing your code. Composer is a package management tool for PHP that lets you install and upgrade SilverStripe and its modules. Although installing Composer is one extra step, it will give you much more flexibility than just downloading the file from silverstripe.org. This is our recommended way of downloading SilverStripe and managing your code.
For more information about Composer, visit [its website](http://getcomposer.org/). For more information about Composer, visit [its website](http://getcomposer.org/).
We also have separate instructions for [installing modules with Composer](/topics/modules).
# Basic usage # Basic usage
@ -40,7 +41,7 @@ Composer updates regularly, so you should run this command fairly often. These i
## Create a new site ## Create a new site
Composer can create a new site for you, using the installer as a template. To do so, run this: Composer can create a new site for you, using the installer as a template:
composer create-project silverstripe/installer ./my/website/folder composer create-project silverstripe/installer ./my/website/folder
@ -50,7 +51,7 @@ As long as your web server is up and running, this will get all the code that yo
Now visit the site in your web browser, and the installation process will be completed. Now visit the site in your web browser, and the installation process will be completed.
By default composer will download the latest stable version. You can also specify By default composer will download the latest stable version. You can also specify
a version to download that version explicitly, i.e. this will download 3.0.3: a version to download that version explicitly, i.e. this will download the older `3.0.3` release:
composer create-project silverstripe/installer ./my/website/folder 3.0.3 composer create-project silverstripe/installer ./my/website/folder 3.0.3
@ -74,7 +75,7 @@ This will return a list of package names of the forum `vendor/package`. If you
The second part after the colon, `*`, is a version string. `*` is a good default: it will give you the latest version that works with the other modules you have installed. Alternatively, you can specificy a specific version, or a constraint such as `>=3.0`. For more information, read the [Composer documentation](http://getcomposer.org/doc/01-basic-usage.md#the-require-key). The second part after the colon, `*`, is a version string. `*` is a good default: it will give you the latest version that works with the other modules you have installed. Alternatively, you can specificy a specific version, or a constraint such as `>=3.0`. For more information, read the [Composer documentation](http://getcomposer.org/doc/01-basic-usage.md#the-require-key).
<div class="warning" markdown="1"> <div class="warning" markdown="1">
`master` is not a legal version string - it's a branch name. These are different things. The version string that would get you the branch is `dev-master`. The version string that would get you a numeric branch is a little different. The version string for the `3.0` branch is `3.0.x-dev`. But, frankly, maybe you should just use `*`. `master` is not a legal version string - it's a branch name. These are different things. The version string that would get you the branch is `dev-master`. The version string that would get you a numeric branch is a little different. The version string for the `3.0` branch is `3.0.x-dev`.
</div> </div>
## Updating dependencies ## Updating dependencies
@ -100,7 +101,7 @@ So, your deployment process, as it relates to Composer, should be as follows:
* Deploy your project code base, using the deployment tool of your choice. * Deploy your project code base, using the deployment tool of your choice.
* Run `composer install` on your production version. * Run `composer install` on your production version.
# Setting up an environment for contributing to SilverStripe {#contributing} # Dev Environments for Contributing Code {#contributing}
So you want to contribute to SilverStripe? Fantastic! You can do this with composer too. So you want to contribute to SilverStripe? Fantastic! You can do this with composer too.
You have to tell composer three things in order to be able to do this: You have to tell composer three things in order to be able to do this:
@ -109,20 +110,28 @@ You have to tell composer three things in order to be able to do this:
- Include dependancies marked as "developer" requirements - Include dependancies marked as "developer" requirements
- Use the development version, not the latest stable version - Use the development version, not the latest stable version
The first two steps are done as part of the initial create project using additional arguments. For instance: The first two steps are done as part of the initial create project using additional arguments.
composer create-project --keep-vcs --dev silverstripe/installer ./my/website/folder 3.0.x-dev composer create-project --keep-vcs --dev silverstripe/installer ./my/website/folder 3.0.x-dev
The process will take a bit longer, since all modules are checked out as full git repositories which you can work on. The process will take a bit longer, since all modules are checked out as full git repositories which you can work on. The command checks out from the 3.0 release line. To check out from master instead,
replace `3.0.x-dev` with `dev-master` (more info on [composer version naming](http://getcomposer.org/doc/02-libraries.md#specifying-the-version)).
The `--keep-vcs` flag will make sure you have access to the git history of the installer and the requirements The `--keep-vcs` flag will make sure you have access to the git history of the installer and the requirements
The `--dev` flag will add a couple modules which are useful for SilverStripe development: The `--dev` flag is optional, and can be used to add a couple modules which are useful for
SilverStripe development:
* The `behat-extension` module allows running [Behat](http://behat.org) integration tests
* The `docsviewer` module will let you preview changes to the project documentation * The `docsviewer` module will let you preview changes to the project documentation
* The `buildtools` module which adds [phing](http://phing.info) tasks for creating SilverStripe releases * The `buildtools` module which adds [phing](http://phing.info) tasks for creating SilverStripe releases
Note that you can also include those into an existing project by running `composer update --dev`. Once the `create-project` command completes, you need to edit the `composer.json` in the project root
and remove the `@stable` markers from the `silverstripe/cms` and `silverstripe/framework` version entries.
Another `composer update --dev` call will now fetch from the development branch instead.
Note that you can also convert an existing composer project with these steps.
Please read the ["Contributing Code"](/misc/contributing/code) documentation to find out how to Please read the ["Contributing Code"](/misc/contributing/code) documentation to find out how to
create forks and send pull requests. create forks and send pull requests.
@ -235,3 +244,58 @@ Both the version and the alias are specified as Composer versions, not branch na
This is not the only way to set things up in Composer. For more information on this topic, read the ["Aliases" chapter of the Composer documentation](http://getcomposer.org/doc/articles/aliases.md). This is not the only way to set things up in Composer. For more information on this topic, read the ["Aliases" chapter of the Composer documentation](http://getcomposer.org/doc/articles/aliases.md).
## FAQ
### How do I convert an existing module to using Composer?
Simply decide on a [unique name and vendor prefix](https://packagist.org/about),
create a `composer.json`, and either commit it or send a pull request to the module author.
Look at existing modules like the ["blog" module](https://github.com/silverstripe/silverstripe-blog/blob/master/composer.json) for good examples on what this file should contain.
It's important that the file contains a custom "type" to declare it as a
`silverstripe-module` or `silverstripe-theme` (see [custom installers](http://getcomposer.org/doc/articles/custom-installers.md)).
Then register the module on [packagist.org](http://packagist.org).
### How should I name my module?
Follow the packagist.org advice on choosing a [unique name and vendor prefix](https://packagist.org/about). Please don't use the `silverstripe/<modulename>` vendor prefix, since that's reserved
for modules produced by SilverStripe Ltd. In order to declare that your module is
in fact a SilverStripe module, use the "silverstripe" tag in the composer.json file,
and set the "type" to "silverstripe-module".
### What about themes?
Themes are technically just "modules" which are placed in the `themes/` subdirectory.
We denote a special type for them in the `composer.json` (`"type": "silverstripe-theme"`),
which triggers their installation into the correct path.
### How do I convert an existing project to Composer?
The easiest way is to follow the [upgrading](/installation/upgrading) instructions
and switch to a newer release. Alternatively, copy the `composer.json` file from
a newer release, and adjust the version settings in the "require" section to your needs.
You'll also need to update your webserver configuration
from there (`.htaccess` or `web.config` files), in order to prevent
web access to the composer-generated files.
### Do I need composer on my live server?
It depends on your deployment process. If you copy or rsync files to your live server,
the process stays the same. If the live server hosts a git repository checkout,
which is updated to push a newer version, you'll also need to run `composer install` afterwards.
We recommend looking into [Composer "lock" files](http://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file) for this purpose.
### Can I keep using Downloads, Subversion Externals or Git Submodules?
Yes and no. Composer comes with additional features such as
[autoloading](http://getcomposer.org/doc/01-basic-usage.md#autoloading)
or [scripts](http://getcomposer.org/doc/articles/scripts.md)
which some modules will start relying on.
Please check the module README for specific installation instructions.
### I don't want to get development versions of everything!
You don't have to, Composer is designed to work on the constraints you set.
You can declare the ["minimum-stability"](http://getcomposer.org/doc/04-schema.md#minimum-stability)
on your project as suitable, or even whitelist specific modules as tracking
a development branch while keeping others to their stable release.
Read up on [Composer "lock" files](http://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file) on how this all fits together.

View File

@ -16,9 +16,19 @@ For all modules listed there, we automatically import new master strings as they
## FAQ ## FAQ
### How do I translate substituted strings? (e.g. '%s') ### How do I translate a module not listed on getlocalization?
You don't have to - if the english master-string reads 'Hello %s', your german translation would be 'Hallo %s'. Strings prefixed by a percentage-sign are automatically replaced by silverstripe with dynamic content. See http://php.net/sprintf for details. At the moment, only the core modules ("framework" and "cms") are managed through
the getlocalization service.
For other modules, have a look in the module README if there's any specific instructions.
If there aren't, you'll need to translate the YAML files directly. If the module is on github,
you can create a fork, edit the files, and send back your pull request all directly on
the website ([instructions](https://help.github.com/articles/fork-a-repo)).
### How do I translate substituted strings? (e.g. '%s' or '{my-variable}')
You don't have to - if the english master-string reads 'Hello %s', your german translation would be 'Hallo %s'. Strings prefixed by a percentage-sign are automatically replaced by silverstripe with dynamic content. See http://php.net/sprintf for details. The newer `{my-variable}` format works the same way,
but makes its intent clearer, and allows reordering of placeholders in your translation.
### Do I need to convert special characters (e.g. HTML-entities)? ### Do I need to convert special characters (e.g. HTML-entities)?

View File

@ -219,6 +219,13 @@ editform, or 'fileEditValidator' to determine the validator (eg RequiredFields).
(of a method on File to provide a actions) for the EditForm (Example: 'getCMSActions') (of a method on File to provide a actions) for the EditForm (Example: 'getCMSActions')
- `fileEditValidator`: (string) Validator (eg RequiredFields) or string $name - `fileEditValidator`: (string) Validator (eg RequiredFields) or string $name
(of a method on File to provide a Validator) for the EditForm (Example: 'getCMSValidator') (of a method on File to provide a Validator) for the EditForm (Example: 'getCMSValidator')
You can also configure the underlying `[api:Upload]` class, by using the YAML config system.
:::yaml
Upload:
# Globally disables automatic renaming of files
replaceFile: true
## TODO: Using the UploadField in a frontend form ## TODO: Using the UploadField in a frontend form

View File

@ -27,67 +27,82 @@ Because of the broad definition of modules, they can be created for a number of
from your mysite folder. "cms" is an example of this. from your mysite folder. "cms" is an example of this.
* **CMS Add-ons:** A module can define an extension to the CMS, usually by defining special page types with their own * **CMS Add-ons:** A module can define an extension to the CMS, usually by defining special page types with their own
templates and behaviour. "blog", "ecommerce", "forum", and "gallery" are examples of this. templates and behaviour. "blog", "ecommerce", "forum", and "gallery" are examples of this.
* **Blog Widgets:** A module can provide 1 or more blog-widget classes. See [widgets](/topics/widgets) for more information. * **Widgets:** Small pieces of functionality such as showing the latest Comments or Flickr Photos. Since SilverStripe 3.0, they have been moved into a standalone module at [github.com/silverstripe/silverstripe-widgets](https://github.com/silverstripe/silverstripe-widgets).
* **Developer Tools:** A module can provide a number of classes or resource files that do nothing by themselves, but * **Developer Tools:** A module can provide a number of classes or resource files that do nothing by themselves, but
instead make it easier for developers to build other applications. instead make it easier for developers to build other applications.
## Finding Modules ## Finding Modules
* [Official module list on silverstripe.org](http://silverstripe.org/modules) * [Official module list on silverstripe.org](http://silverstripe.org/modules)
* [Subversion repository on open.silverstripe.org](http://open.silverstripe.org/browser/modules) * [Packagist.org "silverstripe" tag](https://packagist.org/search/?tags=silverstripe)
* [Github.com "silverstripe" search](https://github.com/search?q=silverstripe&ref=commandbar)
## Installation ## Installation
Modules should exist in the root folder of your SilverStripe. The root folder being the one that contains the Modules should exist in the root folder of your SilverStripe installation
*framework*, *cms* and other folders. (the directory containing the *framework* and *cms* subdirectories).
The following article explains the generic installation of a module. Individual modules have their own requirements such The following article explains the generic installation of a module. Individual modules have their own requirements such
as creating folders or configuring API keys. For information about installing or configuring a specific module see the as creating folders or configuring API keys. For information about installing or configuring a specific module see the
modules *INSTALL* (or *README*) file. Modules should adhere to the [directory-structure](/topics/directory-structure) modules *README* file. Modules should adhere to the [directory-structure](/topics/directory-structure)
guidelines. guidelines.
### Download ### From a Composer Package
To install a module you need to download the tar.gz file from the [modules page](http://www.silverstripe.org/modules) and extract this tar.gz to the root folder mentioned Our preferred way to manage module dependencies is through the [Composer][http://getcomposer.org]
above. package manager. It enables you to install modules from specific versions, checking for
compatibilities between modules and even allowing to track development branches of them.
Note some times the folders extracted from the tar.gz contain the version number or some other folders. You need to make After [installing Composer](/installation/composer) itself,
sure the folder name is the correct name of the module. you can run a simple command to install a module.
Each module has a unique identifier, consisting of a vendor prefix and name.
For example, the popular "blog" module has the identifier `silverstripe/blog`,
and would be installed with the following command executed in the root folder:
### Subversion composer require silverstripe/blog:*@stable
#### Option 1: Checkout This will fetch the latest compatible stable version. Every time you run
`composer update` afterwards, Composer will check for a new stable version.
To lock down to a specific version, branch or commit, read up on
[Composer "lock" files](http://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file).
You can also add modules by editing the "require" section of the `composer.json` file.
cd ~/Sites/yourSilverStripeProject/ To find modules and their identifiers, search for them on [packagist.org](http://packagist.org).
svn co http://svn.silverstripe.com/open/modules/modulename/trunk modulename/
<div class="notice" markdown="1">
Older releases (<3.0.3, <2.4.9) don't come with a `composer.json` file in your root folder,
which is required for its operation. In this case, we recommend upgrading to a newer release.
</div>
Note: Some modules are stored in subfolders. If you want to use a module that is in a subfolder, such as widgets, put ### From an Archive Download
an _ between the subfolder name and the module name, like this:
cd /your/website/root Alternatively, you can download the archive file from the
svn co http://svn.silverstripe.com/open/modules/widgets/twitter/trunk widgets_twitter [modules page](http://www.silverstripe.org/modules)
and extract it to the root folder mentioned above.
Github also provides archive downloads which are generated automatically for every tag/version.
<div class="notice" markdown="1">
The main folder extracted from the archive
might contain the version number or additional "container" folders above the actual module
codebase. You need to make sure the folder name is the correct name of the module
(e.g. "blog/" rather than "silverstripe-blog/"). This folder should contain a `_config.php` file.
While the module might register and operate in other structures,
paths to static files such as CSS or JavaScript won't work.
</div>
<div class="warning" markdown="1">
Some modules might not work at all with this approach since they rely on the
Composer [autoloader](http://getcomposer.org/doc/01-basic-usage.md#autoloading)
or post-install hooks, so we recommend using Composer.
</div>
#### Option 2: Add to svn:externals ### Git Submodules and Subversion Externals
cd ~/Sites/yourSilverStripeProject/ Git and Subversion provide their own facilities for managing dependent repositories.
svn propedit svn:externals . This is essentially a variation of the "Archive Download" approach,
and comes with the same caveats.
## Related
In the editor add the following line (lines if you want multiple) * [Modules Development](/topics/module-developement)
* [Module Release Process](/misc/module-release-process)
modulename/ http://svn.silverstripe.com/open/modules/modulename/trunk
Exit the editor and then run
svn up
**Useful Links:**
* [Modules](/topics/module-developement)
* [Module Release Process](/misc/module-release-process)

View File

@ -45,6 +45,12 @@ class Upload extends Controller {
* @var array * @var array
*/ */
protected $tmpFile; protected $tmpFile;
/**
* Replace an existing file rather than renaming the new one.
* @var Boolean
*/
protected $replaceFile;
/** /**
* Processing errors that can be evaluated, * Processing errors that can be evaluated,
@ -61,10 +67,11 @@ class Upload extends Controller {
* @var string * @var string
*/ */
public static $uploads_folder = "Uploads"; public static $uploads_folder = "Uploads";
public function __construct() { public function __construct() {
parent::__construct(); parent::__construct();
$this->validator = new Upload_Validator(); $this->validator = new Upload_Validator();
$this->replaceFile = $this->config()->get('replaceFile');
} }
/** /**
@ -100,11 +107,6 @@ class Upload extends Controller {
if(!$folderPath) $folderPath = self::$uploads_folder; if(!$folderPath) $folderPath = self::$uploads_folder;
if(!$this->file) {
$fileClass = File::get_class_for_file_extension(pathinfo($tmpFile['name'], PATHINFO_EXTENSION));
$this->file = new $fileClass();
}
if(!is_array($tmpFile)) { if(!is_array($tmpFile)) {
user_error("Upload::load() Not passed an array. Most likely, the form hasn't got the right enctype", user_error("Upload::load() Not passed an array. Most likely, the form hasn't got the right enctype",
E_USER_ERROR); E_USER_ERROR);
@ -137,25 +139,40 @@ class Upload extends Controller {
$fileName = basename($file); $fileName = basename($file);
$relativeFilePath = ASSETS_DIR . "/" . $folderPath . "/$fileName"; $relativeFilePath = ASSETS_DIR . "/" . $folderPath . "/$fileName";
// Create a new file record (or try to retrieve an existing one)
if(!$this->file) {
$fileClass = File::get_class_for_file_extension(pathinfo($tmpFile['name'], PATHINFO_EXTENSION));
if($this->replaceFile) {
$this->file = File::get()
->filter(array(
'Name' => $fileName,
'ParentID' => $parentFolder ? $parentFolder->ID : 0
))->First();
}
if(!$this->file) $this->file = new $fileClass();
}
// if filename already exists, version the filename (e.g. test.gif to test1.gif) // if filename already exists, version the filename (e.g. test.gif to test1.gif)
while(file_exists("$base/$relativeFilePath")) { if(!$this->replaceFile) {
$i = isset($i) ? ($i+1) : 2; while(file_exists("$base/$relativeFilePath")) {
$oldFilePath = $relativeFilePath; $i = isset($i) ? ($i+1) : 2;
// make sure archives retain valid extensions $oldFilePath = $relativeFilePath;
if(substr($relativeFilePath, strlen($relativeFilePath) - strlen('.tar.gz')) == '.tar.gz' || // make sure archives retain valid extensions
substr($relativeFilePath, strlen($relativeFilePath) - strlen('.tar.bz2')) == '.tar.bz2') { if(substr($relativeFilePath, strlen($relativeFilePath) - strlen('.tar.gz')) == '.tar.gz' ||
$relativeFilePath = preg_replace('/[0-9]*(\.tar\.[^.]+$)/', $i . '\\1', $relativeFilePath); substr($relativeFilePath, strlen($relativeFilePath) - strlen('.tar.bz2')) == '.tar.bz2') {
} else if (strpos($relativeFilePath, '.') !== false) { $relativeFilePath = preg_replace('/[0-9]*(\.tar\.[^.]+$)/', $i . '\\1', $relativeFilePath);
$relativeFilePath = preg_replace('/[0-9]*(\.[^.]+$)/', $i . '\\1', $relativeFilePath); } else if (strpos($relativeFilePath, '.') !== false) {
} else if (strpos($relativeFilePath, '_') !== false) { $relativeFilePath = preg_replace('/[0-9]*(\.[^.]+$)/', $i . '\\1', $relativeFilePath);
$relativeFilePath = preg_replace('/_([^_]+$)/', '_'.$i, $relativeFilePath); } else if (strpos($relativeFilePath, '_') !== false) {
} else { $relativeFilePath = preg_replace('/_([^_]+$)/', '_'.$i, $relativeFilePath);
$relativeFilePath .= '_'.$i; } else {
} $relativeFilePath .= '_'.$i;
if($oldFilePath == $relativeFilePath && $i > 2) { }
user_error("Couldn't fix $relativeFilePath with $i tries", E_USER_ERROR); if($oldFilePath == $relativeFilePath && $i > 2) {
} user_error("Couldn't fix $relativeFilePath with $i tries", E_USER_ERROR);
}
}
} }
if(file_exists($tmpFile['tmp_name']) && copy($tmpFile['tmp_name'], "$base/$relativeFilePath")) { if(file_exists($tmpFile['tmp_name']) && copy($tmpFile['tmp_name'], "$base/$relativeFilePath")) {
@ -181,6 +198,20 @@ class Upload extends Controller {
$this->file = $file; $this->file = $file;
return $this->load($tmpFile, $folderPath); return $this->load($tmpFile, $folderPath);
} }
/**
* @return Boolean
*/
public function setReplaceFile($bool) {
$this->replaceFile = $bool;
}
/**
* @return Boolean
*/
public function getReplaceFile() {
return $this->replaceFile;
}
/** /**
* Container for all validation on the file * Container for all validation on the file

View File

@ -78,7 +78,7 @@ class FileField extends FormField {
* @param int $value The value of the field. * @param int $value The value of the field.
*/ */
public function __construct($name, $title = null, $value = null) { public function __construct($name, $title = null, $value = null) {
$this->upload = new Upload(); $this->upload = Upload::create();
parent::__construct($name, $title, $value); parent::__construct($name, $title, $value);
} }

View File

@ -120,10 +120,6 @@ class FormAction extends FormField {
return $this->useButtonTag; return $this->useButtonTag;
} }
public function extraClass() {
return 'action ' . parent::extraClass();
}
/** /**
* Does not transform to readonly by purpose. * Does not transform to readonly by purpose.
* Globally disabled buttons would break the CMS. * Globally disabled buttons would break the CMS.

View File

@ -8,8 +8,8 @@ ar:
FILENAME: 'اسم الملف' FILENAME: 'اسم الملف'
FOLDER: Folder FOLDER: Folder
LASTEDIT: 'آخر التعديلات' LASTEDIT: 'آخر التعديلات'
OWNER: 'المالك' OWNER: المالك
SIZE: 'الحجم' SIZE: الحجم
TITLE: العنوان TITLE: العنوان
TYPE: النوع TYPE: النوع
URL: الرابط URL: الرابط
@ -28,7 +28,7 @@ ar:
UPLOADINPROGRESS: 'Please wait… upload in progress' UPLOADINPROGRESS: 'Please wait… upload in progress'
UPLOADOR: OR UPLOADOR: OR
BBCodeParser: BBCodeParser:
ALIGNEMENT: 'المحاذاة' ALIGNEMENT: المحاذاة
ALIGNEMENTEXAMPLE: 'محاذاة إلى اليمين' ALIGNEMENTEXAMPLE: 'محاذاة إلى اليمين'
BOLD: 'خط عريض' BOLD: 'خط عريض'
BOLDEXAMPLE: عريض BOLDEXAMPLE: عريض
@ -42,7 +42,7 @@ ar:
IMAGE: الصورة IMAGE: الصورة
IMAGEDESCRIPTION: 'عرض الصورة في الموضوع' IMAGEDESCRIPTION: 'عرض الصورة في الموضوع'
ITALIC: 'خط مائل' ITALIC: 'خط مائل'
ITALICEXAMPLE: 'مائل' ITALICEXAMPLE: مائل
LINK: 'رابط الموقع' LINK: 'رابط الموقع'
LINKDESCRIPTION: 'رابط إلى موقع آخر' LINKDESCRIPTION: 'رابط إلى موقع آخر'
STRUCK: 'خط في المنتصف' STRUCK: 'خط في المنتصف'
@ -61,7 +61,7 @@ ar:
Boolean: Boolean:
0: لا 0: لا
ANY: أي ANY: أي
1: 'نعم' 1: نعم
CMSLoadingScreen.ss: CMSLoadingScreen.ss:
LOADING: Loading... LOADING: Loading...
REQUIREJS: 'The CMS requires that you have JavaScript enabled.' REQUIREJS: 'The CMS requires that you have JavaScript enabled.'
@ -80,7 +80,7 @@ ar:
PASSWORD: 'الرقم السري' PASSWORD: 'الرقم السري'
CheckboxField: CheckboxField:
- لا - لا
- 'نعم' - نعم
ComplexTableField: ComplexTableField:
CLOSEPOPUP: 'إغلاق النافذة' CLOSEPOPUP: 'إغلاق النافذة'
SUCCESSADD2: 'Added {name}' SUCCESSADD2: 'Added {name}'
@ -109,8 +109,8 @@ ar:
PLURALNAME: 'بيانات كائن' PLURALNAME: 'بيانات كائن'
SINGULARNAME: 'بيانات كائن' SINGULARNAME: 'بيانات كائن'
Date: Date:
DAY: 'اليوم' DAY: اليوم
DAYS: 'الأيام' DAYS: الأيام
HOUR: ساعة HOUR: ساعة
HOURS: ساعات HOURS: ساعات
MIN: دقيقة MIN: دقيقة
@ -125,7 +125,7 @@ ar:
YEARS: السنوات YEARS: السنوات
DateField: DateField:
NOTSET: 'غير محدد' NOTSET: 'غير محدد'
TODAY: 'اليوم' TODAY: اليوم
VALIDDATEFORMAT2: 'Please enter a valid date format ({format})' VALIDDATEFORMAT2: 'Please enter a valid date format ({format})'
VALIDDATEMAXDATE: 'Your date has to be older or matching the maximum allowed date ({date})' VALIDDATEMAXDATE: 'Your date has to be older or matching the maximum allowed date ({date})'
VALIDDATEMINDATE: 'Your date has to be newer or matching the minimum allowed date ({date})' VALIDDATEMINDATE: 'Your date has to be newer or matching the minimum allowed date ({date})'
@ -144,7 +144,7 @@ ar:
ANY: أي ANY: أي
File: File:
AviType: 'AVI video file' AviType: 'AVI video file'
Content: 'المحتوى' Content: المحتوى
CssType: 'CSS file' CssType: 'CSS file'
DmgType: 'Apple disk image' DmgType: 'Apple disk image'
DocType: 'Word document' DocType: 'Word document'
@ -162,11 +162,11 @@ ar:
MpgType: 'MPEG video file' MpgType: 'MPEG video file'
NOFILESIZE: 'حجم الملف 0 بايت' NOFILESIZE: 'حجم الملف 0 بايت'
NOVALIDUPLOAD: 'نوع الملف غير قابل للرفع' NOVALIDUPLOAD: 'نوع الملف غير قابل للرفع'
Name: 'الاسم' Name: الاسم
PLURALNAME: 'الملفات' PLURALNAME: الملفات
PdfType: 'Adobe Acrobat PDF file' PdfType: 'Adobe Acrobat PDF file'
PngType: 'PNG image - good general-purpose format' PngType: 'PNG image - good general-purpose format'
SINGULARNAME: 'الملف' SINGULARNAME: الملف
TOOLARGE: 'Filesize is too large, maximum {size} allowed' TOOLARGE: 'Filesize is too large, maximum {size} allowed'
TOOLARGESHORT: 'Filesize exceeds {size}' TOOLARGESHORT: 'Filesize exceeds {size}'
TiffType: 'Tagged image format' TiffType: 'Tagged image format'
@ -180,7 +180,7 @@ ar:
ATTACHONCESAVED2: 'Files can be attached once you have saved the record for the first time.' ATTACHONCESAVED2: 'Files can be attached once you have saved the record for the first time.'
DELETE: 'Delete {type}' DELETE: 'Delete {type}'
DISALLOWEDFILETYPE: 'This filetype is not allowed to be uploaded' DISALLOWEDFILETYPE: 'This filetype is not allowed to be uploaded'
FILE: 'ملف' FILE: ملف
FROMCOMPUTER: 'من جهازك الشخصي' FROMCOMPUTER: 'من جهازك الشخصي'
FROMFILESTORE: 'من مكتبة الملفات' FROMFILESTORE: 'من مكتبة الملفات'
NOSOURCE: 'الرجاء اختيارمصدر ملف المرفق' NOSOURCE: 'الرجاء اختيارمصدر ملف المرفق'
@ -205,7 +205,7 @@ ar:
VALIDATIONPASSWORDSDONTMATCH: 'رقم المرور غير صحيح' VALIDATIONPASSWORDSDONTMATCH: 'رقم المرور غير صحيح'
VALIDATIONPASSWORDSNOTEMPTY: 'أرقام المرور لا يمكن أن تكون فارغة' VALIDATIONPASSWORDSNOTEMPTY: 'أرقام المرور لا يمكن أن تكون فارغة'
VALIDATIONSTRONGPASSWORD: 'Passwords must have at least one digit and one alphanumeric character' VALIDATIONSTRONGPASSWORD: 'Passwords must have at least one digit and one alphanumeric character'
VALIDATOR: 'المحقق' VALIDATOR: المحقق
VALIDCURRENCY: 'Please enter a valid currency' VALIDCURRENCY: 'Please enter a valid currency'
FormField: FormField:
NONE: لايوجد NONE: لايوجد
@ -279,8 +279,8 @@ ar:
CSSCLASSRIGHT: 'إلى اليمين ، مع التفاف النص' CSSCLASSRIGHT: 'إلى اليمين ، مع التفاف النص'
DETAILS: Details DETAILS: Details
EMAIL: 'بريد إلكتروني' EMAIL: 'بريد إلكتروني'
FILE: 'ملف' FILE: ملف
FOLDER: 'المجلد' FOLDER: المجلد
FROMCMS: 'From the CMS' FROMCMS: 'From the CMS'
FROMCOMPUTER: 'From your computer' FROMCOMPUTER: 'From your computer'
FROMWEB: 'From the web' FROMWEB: 'From the web'
@ -322,7 +322,7 @@ ar:
CANT_REORGANISE: 'You do not have permission to alter Top level pages. Your change was not saved.' CANT_REORGANISE: 'You do not have permission to alter Top level pages. Your change was not saved.'
DELETED: Deleted. DELETED: Deleted.
DropdownBatchActionsDefault: Actions DropdownBatchActionsDefault: Actions
HELP: 'مساعدة' HELP: مساعدة
PAGETYPE: 'نوع الصفحة:' PAGETYPE: 'نوع الصفحة:'
PERMAGAIN: 'تم خروجك من النظام بنجاح. للدخول مرة أخرى أدحل البريد الإلكتروني و الرقم السري بالأسفل' PERMAGAIN: 'تم خروجك من النظام بنجاح. للدخول مرة أخرى أدحل البريد الإلكتروني و الرقم السري بالأسفل'
PERMALREADY: 'عذراً , لكن لا يمكنك الوصول لهذا القسم من النظام. يتوجب عليك الدخول بصلاحية أخرى' PERMALREADY: 'عذراً , لكن لا يمكنك الوصول لهذا القسم من النظام. يتوجب عليك الدخول بصلاحية أخرى'
@ -377,7 +377,7 @@ ar:
ValidationIdentifierFailed: 'Can''t overwrite existing member #{id} with identical identifier ({name} = {value}))' ValidationIdentifierFailed: 'Can''t overwrite existing member #{id} with identical identifier ({name} = {value}))'
WELCOMEBACK: 'Welcome Back, {firstname}' WELCOMEBACK: 'Welcome Back, {firstname}'
YOUROLDPASSWORD: 'رقم المرور السابق' YOUROLDPASSWORD: 'رقم المرور السابق'
belongs_many_many_Groups: 'المجموعات' belongs_many_many_Groups: المجموعات
db_LastVisited: 'تاريخ آخر زيارة' db_LastVisited: 'تاريخ آخر زيارة'
db_Locale: 'واجهة الموقع' db_Locale: 'واجهة الموقع'
db_LockedOutUntil: 'مغلق حتى تاريخ' db_LockedOutUntil: 'مغلق حتى تاريخ'
@ -441,8 +441,8 @@ ar:
IMPORT_TAB_HEADER: Import IMPORT_TAB_HEADER: Import
SEARCHLISTINGS: Search SEARCHLISTINGS: Search
MoneyField: MoneyField:
FIELDLABELAMOUNT: 'الكمية' FIELDLABELAMOUNT: الكمية
FIELDLABELCURRENCY: 'العملة' FIELDLABELCURRENCY: العملة
NullableField: NullableField:
IsNullLabel: باطل IsNullLabel: باطل
NumericField: NumericField:

View File

@ -4,7 +4,7 @@ bg:
NEWFOLDER: НоваПапка NEWFOLDER: НоваПапка
AssetTableField: AssetTableField:
CREATED: Създаден CREATED: Създаден
DIM: 'Размери' DIM: Размери
FILENAME: 'Име на файл' FILENAME: 'Име на файл'
FOLDER: Папка FOLDER: Папка
LASTEDIT: 'Последна промяна' LASTEDIT: 'Последна промяна'
@ -88,8 +88,8 @@ bg:
ComplexTableField.ss: ComplexTableField.ss:
ADDITEM: 'Добави %s' ADDITEM: 'Добави %s'
NOITEMSFOUND: 'No items found' NOITEMSFOUND: 'No items found'
SORTASC: 'Възходящ' SORTASC: Възходящ
SORTDESC: 'Низходящ' SORTDESC: Низходящ
ComplexTableField_popup.ss: ComplexTableField_popup.ss:
NEXT: Следващо NEXT: Следващо
PREVIOUS: Предишно PREVIOUS: Предишно
@ -253,7 +253,7 @@ bg:
RolesAddEditLink: 'Управление на ролите' RolesAddEditLink: 'Управление на ролите'
SINGULARNAME: Group SINGULARNAME: Group
Sort: Сортиране Sort: Сортиране
has_many_Permissions: 'Разрешения' has_many_Permissions: Разрешения
many_many_Members: Потребители many_many_Members: Потребители
GroupImportForm: GroupImportForm:
Help1: '<p>Внасяне на една или повече групи в <em>CSV формат</em> (comma-separated values). <small><a href="#" class="toggle-advanced">Покажи начин на употреба</a></small></p>' Help1: '<p>Внасяне на една или повече групи в <em>CSV формат</em> (comma-separated values). <small><a href="#" class="toggle-advanced">Покажи начин на употреба</a></small></p>'
@ -288,7 +288,7 @@ bg:
IMAGEALT: 'Алтернативен текст (alt)' IMAGEALT: 'Алтернативен текст (alt)'
IMAGEALTTEXT: 'Алтернативен текст (alt) - показва се ако изображението не е заредено' IMAGEALTTEXT: 'Алтернативен текст (alt) - показва се ако изображението не е заредено'
IMAGEALTTEXTDESC: 'Вижда се на екранните четци или ако картинката не може да бъде показана' IMAGEALTTEXTDESC: 'Вижда се на екранните четци или ако картинката не може да бъде показана'
IMAGEDIMENSIONS: 'Размери' IMAGEDIMENSIONS: Размери
IMAGEHEIGHTPX: Височина IMAGEHEIGHTPX: Височина
IMAGETITLE: 'Описание (tooltip) - за допълнителна информация към изображението' IMAGETITLE: 'Описание (tooltip) - за допълнителна информация към изображението'
IMAGETITLETEXT: 'Описание (tooltip)' IMAGETITLETEXT: 'Описание (tooltip)'
@ -506,16 +506,16 @@ bg:
MENUTITLE: Сигурност MENUTITLE: Сигурност
MemberListCaution: 'Внимание: изтривайки потребители от този списък, ще ги премахне от всички групи и от базата данни.' MemberListCaution: 'Внимание: изтривайки потребители от този списък, ще ги премахне от всички групи и от базата данни.'
NEWGROUP: 'Нова група' NEWGROUP: 'Нова група'
PERMISSIONS: 'Разрешения' PERMISSIONS: Разрешения
ROLES: 'Роли' ROLES: Роли
ROLESDESCRIPTION: 'Ролите са предварително зададени сетове от разрешения и могат да бъдат присвоявани на групи.<br />Ако е нужно, те се наследяват от родителските групи.' ROLESDESCRIPTION: 'Ролите са предварително зададени сетове от разрешения и могат да бъдат присвоявани на групи.<br />Ако е нужно, те се наследяват от родителските групи.'
TABROLES: 'Роли' TABROLES: Роли
Users: Потребители Users: Потребители
SecurityAdmin_MemberImportForm: SecurityAdmin_MemberImportForm:
BtnImport: 'Внасяне от CSV' BtnImport: 'Внасяне от CSV'
FileFieldLabel: 'CSV файл <small>(разширение: *.csv)</small>' FileFieldLabel: 'CSV файл <small>(разширение: *.csv)</small>'
SilverStripeNavigator: SilverStripeNavigator:
Edit: 'Редакция' Edit: Редакция
SimpleImageField: SimpleImageField:
NOUPLOAD: 'Няма качени изображения' NOUPLOAD: 'Няма качени изображения'
SiteTree: SiteTree:
@ -556,7 +556,7 @@ bg:
DOEDIT: Запис DOEDIT: Запис
DROPFILE: 'пуснете файл' DROPFILE: 'пуснете файл'
DROPFILES: 'пускане на файлове' DROPFILES: 'пускане на файлове'
Dimensions: 'Размери' Dimensions: Размери
EDIT: Edit EDIT: Edit
EDITINFO: 'Редактирай този файл' EDITINFO: 'Редактирай този файл'
FIELDNOTSET: 'Информация за файла не беше намерена' FIELDNOTSET: 'Информация за файла не беше намерена'
@ -566,7 +566,7 @@ bg:
HOTLINKINFO: 'Info: This image will be hotlinked. Please ensure you have permissions from the original site creator to do so.' HOTLINKINFO: 'Info: This image will be hotlinked. Please ensure you have permissions from the original site creator to do so.'
MAXNUMBEROFFILES: 'Максималния брой файлове ({count}) е надхвърлен.' MAXNUMBEROFFILES: 'Максималния брой файлове ({count}) е надхвърлен.'
MAXNUMBEROFFILESSHORT: 'Максималният брой файлове за качване е {count}' MAXNUMBEROFFILESSHORT: 'Максималният брой файлове за качване е {count}'
REMOVE: 'Премахни' REMOVE: Премахни
REMOVEERROR: 'Грешка при премахване на файл' REMOVEERROR: 'Грешка при премахване на файл'
REMOVEINFO: 'Премахни файла без да го изтриваш' REMOVEINFO: 'Премахни файла без да го изтриваш'
STARTALL: 'Старт на всички' STARTALL: 'Старт на всички'

View File

@ -293,7 +293,7 @@ bs:
IMAGETITLE: 'Title text (tooltip) - for additional information about the image' IMAGETITLE: 'Title text (tooltip) - for additional information about the image'
IMAGETITLETEXT: 'Title text (tooltip)' IMAGETITLETEXT: 'Title text (tooltip)'
IMAGETITLETEXTDESC: 'For additional information about the image' IMAGETITLETEXTDESC: 'For additional information about the image'
IMAGEWIDTHPX: 'Širina' IMAGEWIDTHPX: Širina
INSERTMEDIA: 'Insert Media' INSERTMEDIA: 'Insert Media'
LINK: Link LINK: Link
LINKANCHOR: 'Sidro na ovoj stranici' LINKANCHOR: 'Sidro na ovoj stranici'
@ -365,7 +365,7 @@ bs:
INVALIDNEWPASSWORD: 'We couldn''t accept that password: {password}' INVALIDNEWPASSWORD: 'We couldn''t accept that password: {password}'
LOGGEDINAS: 'You''re logged in as {name}.' LOGGEDINAS: 'You''re logged in as {name}.'
NEWPASSWORD: 'Nova šifra' NEWPASSWORD: 'Nova šifra'
PASSWORD: 'Šifra' PASSWORD: Šifra
PLURALNAME: Members PLURALNAME: Members
REMEMBERME: 'Zapamti me slijedeći put' REMEMBERME: 'Zapamti me slijedeći put'
SINGULARNAME: Member SINGULARNAME: Member
@ -527,7 +527,7 @@ bs:
ADDITEM: 'Add %s' ADDITEM: 'Add %s'
TableListField: TableListField:
CSVEXPORT: 'Izvezi u CSV' CSVEXPORT: 'Izvezi u CSV'
PRINT: 'Štampaj' PRINT: Štampaj
Print: Print Print: Print
SELECT: 'Select:' SELECT: 'Select:'
TableListField.ss: TableListField.ss:

View File

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

View File

@ -293,7 +293,7 @@ cs:
IMAGETITLE: 'Titul text (tooltip) - další informace o obrázku' IMAGETITLE: 'Titul text (tooltip) - další informace o obrázku'
IMAGETITLETEXT: 'Titulek textu (tooltip)' IMAGETITLETEXT: 'Titulek textu (tooltip)'
IMAGETITLETEXTDESC: 'Pro další informace o obrázku' IMAGETITLETEXTDESC: 'Pro další informace o obrázku'
IMAGEWIDTHPX: 'Šířka' IMAGEWIDTHPX: Šířka
INSERTMEDIA: 'Vložit média' INSERTMEDIA: 'Vložit média'
LINK: 'Vložit nebo upravit odkaz' LINK: 'Vložit nebo upravit odkaz'
LINKANCHOR: 'Záložka (kotva) na stránce' LINKANCHOR: 'Záložka (kotva) na stránce'

View File

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

View File

@ -81,6 +81,18 @@ en:
CheckboxField: CheckboxField:
NO: No NO: No
YES: Yes YES: Yes
ComplexTableField:
CLOSEPOPUP: 'Close Popup'
SUCCESSADD2: 'Added {name}'
SUCCESSEDIT: 'Saved %s %s %s'
ComplexTableField.ss:
ADDITEM: 'Add %s'
NOITEMSFOUND: 'No items found'
SORTASC: 'Sort ascending'
SORTDESC: 'Sort descending'
ComplexTableField_popup.ss:
NEXT: Next
PREVIOUS: Previous
ConfirmedPasswordField: ConfirmedPasswordField:
ATLEAST: 'Passwords must be at least {min} characters long.' ATLEAST: 'Passwords must be at least {min} characters long.'
BETWEEN: 'Passwords must be {min} to {max} characters long.' BETWEEN: 'Passwords must be {min} to {max} characters long.'
@ -163,7 +175,18 @@ en:
XlsType: 'Excel spreadsheet' XlsType: 'Excel spreadsheet'
ZipType: 'ZIP compressed file' ZipType: 'ZIP compressed file'
FileIFrameField: FileIFrameField:
ATTACH: 'Attach {type}'
ATTACHONCESAVED: '{type}s can be attached once you have saved the record for the first time.'
ATTACHONCESAVED2: 'Files can be attached once you have saved the record for the first time.' ATTACHONCESAVED2: 'Files can be attached once you have saved the record for the first time.'
DELETE: 'Delete {type}'
DISALLOWEDFILETYPE: 'This filetype is not allowed to be uploaded'
FILE: File
FROMCOMPUTER: 'From your Computer'
FROMFILESTORE: 'From the File Store'
NOSOURCE: 'Please select a source file to attach'
REPLACE: 'Replace {type}'
FileIFrameField_iframe.ss:
TITLE: 'Image Uploading Iframe'
Filesystem: Filesystem:
SYNCRESULTS: 'Sync complete: {createdcount} items created, {deletedcount} items deleted' SYNCRESULTS: 'Sync complete: {createdcount} items created, {deletedcount} items deleted'
Folder: Folder:
@ -289,6 +312,8 @@ en:
Image: Image:
PLURALNAME: Files PLURALNAME: Files
SINGULARNAME: File SINGULARNAME: File
ImageField:
IMAGE: Image
Image_Cached: Image_Cached:
PLURALNAME: Files PLURALNAME: Files
SINGULARNAME: File SINGULARNAME: File
@ -451,6 +476,10 @@ en:
UserPermissionsIntro: 'Assigning groups to this user will adjust the permissions they have. See the groups section for details of permissions on individual groups.' UserPermissionsIntro: 'Assigning groups to this user will adjust the permissions they have. See the groups section for details of permissions on individual groups.'
PhoneNumberField: PhoneNumberField:
VALIDATION: 'Please enter a valid phone number' VALIDATION: 'Please enter a valid phone number'
RelationComplexTableField.ss:
ADD: Add
CSVEXPORT: 'Export to CSV'
NOTFOUND: 'No items found'
Security: 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.' 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' BUTTONSEND: 'Send me the password reset link'
@ -488,13 +517,32 @@ en:
FileFieldLabel: 'CSV File <small>(Allowed extensions: *.csv)</small>' FileFieldLabel: 'CSV File <small>(Allowed extensions: *.csv)</small>'
SilverStripeNavigator: SilverStripeNavigator:
Edit: Edit Edit: Edit
SimpleImageField:
NOUPLOAD: 'No Image Uploaded'
SiteTree: SiteTree:
TABMAIN: Main TABMAIN: Main
TableField:
ISREQUIRED: 'In %s ''%s'' is required'
TableField.ss:
ADD: 'Add a new row'
ADDITEM: 'Add %s'
TableListField: TableListField:
CSVEXPORT: 'Export to CSV' CSVEXPORT: 'Export to CSV'
PRINT: Print
Print: Print Print: Print
SELECT: 'Select:'
TableListField.ss:
NOITEMSFOUND: 'No items found'
SORTASC: 'Sort in ascending order'
SORTDESC: 'Sort in descending order'
TableListField_PageControls.ss: TableListField_PageControls.ss:
DISPLAYING: Displaying
OF: of OF: of
TO: to
VIEWFIRST: 'View first'
VIEWLAST: 'View last'
VIEWNEXT: 'View next'
VIEWPREVIOUS: 'View previous'
TimeField: TimeField:
VALIDATEFORMAT: 'Please enter a valid time format ({format})' VALIDATEFORMAT: 'Please enter a valid time format ({format})'
ToggleField: ToggleField:

View File

@ -210,7 +210,7 @@ et_EE:
FormField: FormField:
NONE: puudub NONE: puudub
GridAction: GridAction:
DELETE_DESCRIPTION: Delete DELETE_DESCRIPTION: Kustuta
Delete: Delete Delete: Delete
UnlinkRelation: Unlink UnlinkRelation: Unlink
GridField: GridField:
@ -334,7 +334,7 @@ et_EE:
VersionUnknown: unknown VersionUnknown: unknown
LeftAndMain_Menu.ss: LeftAndMain_Menu.ss:
Hello: Hi Hello: Hi
LOGOUT: 'Log out' LOGOUT: 'Logi välja'
LoginAttempt: LoginAttempt:
Email: 'E-posti aadress' Email: 'E-posti aadress'
IP: 'IP Aadress' IP: 'IP Aadress'
@ -515,7 +515,7 @@ et_EE:
BtnImport: 'Import from CSV' BtnImport: 'Import from CSV'
FileFieldLabel: 'CSV File <small>(Allowed extensions: *.csv)</small>' FileFieldLabel: 'CSV File <small>(Allowed extensions: *.csv)</small>'
SilverStripeNavigator: SilverStripeNavigator:
Edit: Edit Edit: Muuda
SimpleImageField: SimpleImageField:
NOUPLOAD: 'Pilte pole üles laaditud' NOUPLOAD: 'Pilte pole üles laaditud'
SiteTree: SiteTree:

View File

@ -9,7 +9,7 @@ fa_IR:
FOLDER: Folder FOLDER: Folder
LASTEDIT: 'آخرین تغییرات' LASTEDIT: 'آخرین تغییرات'
OWNER: دارنده OWNER: دارنده
SIZE: 'حجم' SIZE: حجم
TITLE: عنوان TITLE: عنوان
TYPE: نوع TYPE: نوع
URL: نشانی URL: نشانی
@ -75,7 +75,7 @@ fa_IR:
ChangePasswordEmail.ss: ChangePasswordEmail.ss:
CHANGEPASSWORDTEXT1: 'شما گذرواژه تان را دگرگون کردید برای' CHANGEPASSWORDTEXT1: 'شما گذرواژه تان را دگرگون کردید برای'
CHANGEPASSWORDTEXT2: 'You can now use the following credentials to log in:' CHANGEPASSWORDTEXT2: 'You can now use the following credentials to log in:'
EMAIL: 'ايميل' EMAIL: ايميل
HELLO: درود HELLO: درود
PASSWORD: 'كلمه عبور' PASSWORD: 'كلمه عبور'
CheckboxField: CheckboxField:
@ -100,9 +100,9 @@ fa_IR:
SHOWONCLICKTITLE: 'تغيير كلمه عبور' SHOWONCLICKTITLE: 'تغيير كلمه عبور'
CreditCardField: CreditCardField:
FIRST: نخست FIRST: نخست
FOURTH: 'چهارم' FOURTH: چهارم
SECOND: 'دوم' SECOND: دوم
THIRD: 'سوم' THIRD: سوم
CurrencyField: CurrencyField:
CURRENCYSYMBOL: $ CURRENCYSYMBOL: $
DataObject: DataObject:
@ -115,7 +115,7 @@ fa_IR:
HOURS: ساعت HOURS: ساعت
MIN: دقیقه MIN: دقیقه
MINS: دقیقه MINS: دقیقه
MONTH: 'ماه' MONTH: ماه
MONTHS: 'ماه ها' MONTHS: 'ماه ها'
SEC: ثانیه SEC: ثانیه
SECS: ثانیه SECS: ثانیه
@ -125,7 +125,7 @@ fa_IR:
YEARS: سال YEARS: سال
DateField: DateField:
NOTSET: 'not set' NOTSET: 'not set'
TODAY: 'امروز' TODAY: امروز
VALIDDATEFORMAT2: 'Please enter a valid date format ({format})' VALIDDATEFORMAT2: 'Please enter a valid date format ({format})'
VALIDDATEMAXDATE: 'Your date has to be older or matching the maximum allowed date ({date})' VALIDDATEMAXDATE: 'Your date has to be older or matching the maximum allowed date ({date})'
VALIDDATEMINDATE: 'Your date has to be newer or matching the minimum allowed date ({date})' VALIDDATEMINDATE: 'Your date has to be newer or matching the minimum allowed date ({date})'
@ -144,7 +144,7 @@ fa_IR:
ANY: Any ANY: Any
File: File:
AviType: 'AVI video file' AviType: 'AVI video file'
Content: 'محتوا' Content: محتوا
CssType: 'CSS file' CssType: 'CSS file'
DmgType: 'Apple disk image' DmgType: 'Apple disk image'
DocType: 'Word document' DocType: 'Word document'
@ -162,7 +162,7 @@ fa_IR:
MpgType: 'MPEG video file' MpgType: 'MPEG video file'
NOFILESIZE: 'Filesize is zero bytes.' NOFILESIZE: 'Filesize is zero bytes.'
NOVALIDUPLOAD: 'File is not a valid upload' NOVALIDUPLOAD: 'File is not a valid upload'
Name: 'نام' Name: نام
PLURALNAME: 'فايل ها' PLURALNAME: 'فايل ها'
PdfType: 'Adobe Acrobat PDF file' PdfType: 'Adobe Acrobat PDF file'
PngType: 'PNG image - good general-purpose format' PngType: 'PNG image - good general-purpose format'
@ -253,7 +253,7 @@ fa_IR:
RolesAddEditLink: 'اضافه/ویرایش وظیفه' RolesAddEditLink: 'اضافه/ویرایش وظیفه'
SINGULARNAME: Group SINGULARNAME: Group
Sort: 'تربیت چیدن' Sort: 'تربیت چیدن'
has_many_Permissions: 'مجوز‌ها' has_many_Permissions: مجوز‌ها
many_many_Members: اعضاء many_many_Members: اعضاء
GroupImportForm: GroupImportForm:
Help1: '<p>Import one or more groups in <em>CSV</em> format (comma-separated values). <small><a href="#" class="toggle-advanced">Show advanced usage</a></small></p>' Help1: '<p>Import one or more groups in <em>CSV</em> format (comma-separated values). <small><a href="#" class="toggle-advanced">Show advanced usage</a></small></p>'
@ -322,7 +322,7 @@ fa_IR:
CANT_REORGANISE: 'You do not have permission to alter Top level pages. Your change was not saved.' CANT_REORGANISE: 'You do not have permission to alter Top level pages. Your change was not saved.'
DELETED: Deleted. DELETED: Deleted.
DropdownBatchActionsDefault: Actions DropdownBatchActionsDefault: Actions
HELP: 'کمک' HELP: کمک
PAGETYPE: 'نوع صفحه' PAGETYPE: 'نوع صفحه'
PERMAGAIN: 'شما از سیستم مدیریت محتوا خارج شده اید.اگر میخواهید دوباره وارد شوید نام کاربری و رمز عبور خود را در قسمت زیر وارد کنید' PERMAGAIN: 'شما از سیستم مدیریت محتوا خارج شده اید.اگر میخواهید دوباره وارد شوید نام کاربری و رمز عبور خود را در قسمت زیر وارد کنید'
PERMALREADY: 'من متاسفم، شما نمی توانید به آن قسمت از سیستم مدیریت محتوا دسترسی پیدا کنید. اگر میخواهید به عنوان شخص دیگری وارد شوید از قسمت زیر تلاش کنید' PERMALREADY: 'من متاسفم، شما نمی توانید به آن قسمت از سیستم مدیریت محتوا دسترسی پیدا کنید. اگر میخواهید به عنوان شخص دیگری وارد شوید از قسمت زیر تلاش کنید'
@ -360,7 +360,7 @@ fa_IR:
ERRORNEWPASSWORD: 'You have entered your new password differently, try again' ERRORNEWPASSWORD: 'You have entered your new password differently, try again'
ERRORPASSWORDNOTMATCH: 'Your current password does not match, please try again' ERRORPASSWORDNOTMATCH: 'Your current password does not match, please try again'
ERRORWRONGCRED: 'That doesn''t seem to be the right e-mail address or password. Please try again.' ERRORWRONGCRED: 'That doesn''t seem to be the right e-mail address or password. Please try again.'
FIRSTNAME: 'نام' FIRSTNAME: نام
INTERFACELANG: 'زبان برنامه' INTERFACELANG: 'زبان برنامه'
INVALIDNEWPASSWORD: 'We couldn''t accept that password: {password}' INVALIDNEWPASSWORD: 'We couldn''t accept that password: {password}'
LOGGEDINAS: 'You''re logged in as {name}.' LOGGEDINAS: 'You''re logged in as {name}.'

View File

@ -537,7 +537,7 @@ fr:
TableListField_PageControls.ss: TableListField_PageControls.ss:
DISPLAYING: 'Affichage de' DISPLAYING: 'Affichage de'
OF: de OF: de
TO: 'à' TO: à
VIEWFIRST: 'Voir premier' VIEWFIRST: 'Voir premier'
VIEWLAST: 'Voir dernier' VIEWLAST: 'Voir dernier'
VIEWNEXT: 'Voir suivant' VIEWNEXT: 'Voir suivant'

View File

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

576
lang/hi.yml Normal file
View File

@ -0,0 +1,576 @@
hi:
AssetAdmin:
ALLOWEDEXTS: 'Allowed extensions'
NEWFOLDER: NewFolder
AssetTableField:
CREATED: 'First uploaded'
DIM: Dimensions
FILENAME: Filename
FOLDER: Folder
LASTEDIT: 'Last changed'
OWNER: Owner
SIZE: 'File size'
TITLE: Title
TYPE: 'File type'
URL: URL
AssetUploadField:
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'
TOTAL: Total
TOUPLOAD: 'Choose files to upload...'
UPLOADINPROGRESS: 'Please wait… upload in progress'
UPLOADOR: OR
BBCodeParser:
ALIGNEMENT: Alignment
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'
IMAGE: Image
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'
STRUCKEXAMPLE: Struck-out
UNDERLINE: 'Underlined Text'
UNDERLINEEXAMPLE: Underlined
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'
Boolean:
0: 'False'
ANY: Any
1: 'True'
CMSLoadingScreen.ss:
LOADING: Loading...
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.'
SAVE: Save
CMSProfileController:
MENUTITLE: 'My Profile'
ChangePasswordEmail.ss:
CHANGEPASSWORDTEXT1: 'You changed your password for'
CHANGEPASSWORDTEXT2: 'You can now use the following credentials to log in:'
EMAIL: Email
HELLO: Hi
PASSWORD: Password
CheckboxField:
- 'False'
- 'True'
ComplexTableField:
CLOSEPOPUP: 'Close Popup'
SUCCESSADD2: 'Added {name}'
SUCCESSEDIT: 'Saved %s %s %s'
ComplexTableField.ss:
ADDITEM: 'Add %s'
NOITEMSFOUND: 'No items found'
SORTASC: 'Sort ascending'
SORTDESC: 'Sort descending'
ComplexTableField_popup.ss:
NEXT: Next
PREVIOUS: Previous
ConfirmedPasswordField:
ATLEAST: 'Passwords must be at least {min} characters long.'
BETWEEN: 'Passwords must be {min} to {max} characters long.'
MAXIMUM: 'Passwords must be at most {max} characters long.'
SHOWONCLICKTITLE: 'Change Password'
CreditCardField:
FIRST: first
FOURTH: fourth
SECOND: second
THIRD: third
CurrencyField:
CURRENCYSYMBOL: $
DataObject:
PLURALNAME: 'Data Objects'
SINGULARNAME: 'Data Object'
Date:
DAY: ' day'
DAYS: ' days'
HOUR: ' hour'
HOURS: ' hours'
MIN: ' min'
MINS: ' mins'
MONTH: ' month'
MONTHS: ' months'
SEC: ' sec'
SECS: ' secs'
TIMEDIFFAGO: '{difference} ago'
TIMEDIFFIN: 'in {difference}'
YEAR: ' year'
YEARS: ' years'
DateField:
NOTSET: 'not set'
TODAY: आज
VALIDDATEFORMAT2: 'Please enter a valid date format ({format})'
VALIDDATEMAXDATE: 'Your date has to be older or matching the maximum allowed date ({date})'
VALIDDATEMINDATE: 'Your date has to be newer or matching the minimum allowed date ({date})'
DatetimeField:
NOTSET: 'Not set'
Director:
INVALID_REQUEST: 'Invalid request'
DropdownField:
CHOOSE: (Choose)
EmailField:
VALIDATION: 'Please enter an email address'
Email_BounceRecord:
PLURALNAME: 'Email Bounce Records'
SINGULARNAME: 'Email Bounce Record'
Enum:
ANY: Any
File:
AviType: 'AVI video file'
Content: Content
CssType: 'CSS file'
DmgType: 'Apple disk image'
DocType: 'Word document'
Filename: Filename
GifType: 'GIF image - good for diagrams'
GzType: 'GZIP compressed file'
HtlType: 'HTML file'
HtmlType: 'HTML file'
INVALIDEXTENSION: 'Extension is not allowed (valid: {extensions})'
INVALIDEXTENSIONSHORT: 'Extension is not allowed'
IcoType: 'Icon image'
JpgType: 'JPEG image - good for photos'
JsType: 'Javascript file'
Mp3Type: 'MP3 audio file'
MpgType: 'MPEG video file'
NOFILESIZE: 'Filesize is zero bytes.'
NOVALIDUPLOAD: 'File is not a valid upload'
Name: Name
PLURALNAME: Files
PdfType: 'Adobe Acrobat PDF file'
PngType: 'PNG image - good general-purpose format'
SINGULARNAME: File
TOOLARGE: 'Filesize is too large, maximum {size} allowed'
TOOLARGESHORT: 'Filesize exceeds {size}'
TiffType: 'Tagged image format'
Title: Title
WavType: 'WAV audo file'
XlsType: 'Excel spreadsheet'
ZipType: 'ZIP compressed file'
FileIFrameField:
ATTACH: 'Attach {type}'
ATTACHONCESAVED: '{type}s can be attached once you have saved the record for the first time.'
ATTACHONCESAVED2: 'Files can be attached once you have saved the record for the first time.'
DELETE: 'Delete {type}'
DISALLOWEDFILETYPE: 'This filetype is not allowed to be uploaded'
FILE: File
FROMCOMPUTER: 'From your Computer'
FROMFILESTORE: 'From the File Store'
NOSOURCE: 'Please select a source file to attach'
REPLACE: 'Replace {type}'
FileIFrameField_iframe.ss:
TITLE: 'Image Uploading Iframe'
Filesystem:
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'
TEXT3: for
Form:
FIELDISREQUIRED: '%s is required'
SubmitBtnLabel: Go
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'
FormField:
NONE: none
GridAction:
DELETE_DESCRIPTION: Delete
Delete: Delete
UnlinkRelation: Unlink
GridField:
Add: 'Add {name}'
Filter: Filter
FilterBy: 'Filter by '
Find: Find
LEVELUP: 'Level up'
LinkExisting: 'Link Existing'
NewRecord: 'New %s'
NoItemsFound: 'No items found'
PRINTEDAT: 'Printed at'
PRINTEDBY: 'Printed by'
PlaceHolder: 'Find {type}'
PlaceHolderWithLabels: 'Find {type} by {name}'
RelationSearch: 'Relation search'
ResetFilter: Reset
GridFieldAction_Delete:
DeletePermissionsFailure: 'No delete permissions'
GridFieldDetailForm:
CancelBtn: Cancel
Create: Create
Delete: Delete
DeletePermissionsFailure: 'No delete permissions'
Deleted: 'Deleted %s %s'
Save: Save
Saved: 'Saved %s %s'
GridFieldItemEditView.ss: null
Group:
AddRole: 'इस समूह के लिए एक भूमिका जोड़ें'
Code: 'समूह कोड'
DefaultGroupTitleAdministrators: प्रबंधक
DefaultGroupTitleContentAuthors: 'सामग्री लेखक'
Description: विवरण
GroupReminder: 'If you choose a parent group, this group will take all it''s roles'
Locked: 'बंद?'
NoRoles: 'कोई भी भूमिका नहीं खोजी जा सकी '
PLURALNAME: Groups
Parent: 'अभिभावक समूह'
RolesAddEditLink: 'भूमिकाओं का प्रबंधन करे '
SINGULARNAME: Group
Sort: 'Sort Order'
has_many_Permissions: अनुमतियाँ
many_many_Members: सदस्य
GroupImportForm:
Help1: '<p>Import one or more groups in <em>CSV</em> format (comma-separated values). <small><a href="#" class="toggle-advanced">Show advanced usage</a></small></p>'
Help2: '<div class="advanced"> <h4>Advanced usage</h4> <ul> <li>Allowed columns: <em>%s</em></li> <li>Existing groups are matched by their unique <em>Code</em> value, and updated with any new values from the imported file</li> <li>Group hierarchies can be created by using a <em>ParentCode</em> column.</li> <li>Permission codes can be assigned by the <em>PermissionCode</em> column. Existing permission codes are not cleared.</li> </ul></div>'
ResultCreated: 'Created {count} groups'
ResultDeleted: 'Deleted %d groups'
ResultUpdated: 'Updated %d groups'
Hierarchy:
InfiniteLoopNotAllowed: 'Infinite loop found within the "{type}" hierarchy. Please change the parent to resolve this'
HtmlEditorField:
ADDURL: 'Add URL'
ADJUSTDETAILSDIMENSIONS: 'Details &amp; dimensions'
ANCHORVALUE: Anchor
BUTTONINSERT: Insert
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.'
DETAILS: Details
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 cannot be displayed'
IMAGEALTTEXTDESC: 'Shown to screen readers or if image can not 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'
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'
PAGE: Page
URL: URL
URLNOTANOEMBEDRESOURCE: 'The URL ''{url}'' could not be turned into a media resource.'
UpdateMEDIA: 'Update Media'
Image:
PLURALNAME: Files
SINGULARNAME: File
ImageField:
IMAGE: Image
Image_Cached:
PLURALNAME: Files
SINGULARNAME: File
Image_iframe.ss:
TITLE: 'Image Uploading Iframe'
LeftAndMain:
CANT_REORGANISE: 'You do not have permission to alter Top level pages. Your change was not saved.'
DELETED: Deleted.
DropdownBatchActionsDefault: Actions
HELP: Help
PAGETYPE: 'Page type: '
PERMAGAIN: 'You have been logged out of the CMS. If you would like to log in again, enter a username and password below.'
PERMALREADY: 'I''m sorry, but you can''t access that part of the CMS. If you want to log in as someone else, do so below'
PERMDEFAULT: 'Please choose an authentication method and enter your credentials to access the CMS.'
PLEASESAVE: 'Please Save Page: This page could not be upated because it hasn''t been saved yet.'
PreviewButton: Preview
REORGANISATIONSUCCESSFUL: 'Reorganised the site tree successfully.'
SAVEDUP: Saved.
VersionUnknown: unknown
LeftAndMain_Menu.ss:
Hello: Hi
LOGOUT: 'Log out'
LoginAttempt:
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'
DATEFORMAT: 'Date format'
DefaultAdminFirstname: 'Default Admin'
DefaultDateTime: default
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.'
ERRORLOCKEDOUT: 'Your account has been temporarily disabled because of too many failed attempts at logging in. Please try again in 20 minutes.'
ERRORNEWPASSWORD: 'You have entered your new password differently, try again'
ERRORPASSWORDNOTMATCH: 'Your current password does not match, please try again'
ERRORWRONGCRED: 'That doesn''t seem to be the right e-mail address or password. Please try again.'
FIRSTNAME: 'First Name'
INTERFACELANG: 'Interface Language'
INVALIDNEWPASSWORD: 'We couldn''t accept that password: {password}'
LOGGEDINAS: 'You''re logged in as {name}.'
NEWPASSWORD: 'New Password'
PASSWORD: Password
PLURALNAME: Members
REMEMBERME: 'Remember me next time?'
SINGULARNAME: Member
SUBJECTPASSWORDCHANGED: 'Your password has been changed'
SUBJECTPASSWORDRESET: 'Your password reset link'
SURNAME: Surname
TIMEFORMAT: 'Time format'
VALIDATIONMEMBEREXISTS: 'A member already exists with the same %s'
ValidationIdentifierFailed: 'Can''t overwrite existing member #{id} with identical identifier ({name} = {value}))'
WELCOMEBACK: 'Welcome Back, {firstname}'
YOUROLDPASSWORD: 'Your old password'
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_Password: Password
db_PasswordExpiry: 'Password Expiry Date'
MemberAuthenticator:
TITLE: 'E-mail &amp; Password'
MemberDatetimeOptionsetField:
AMORPM: 'AM (Ante meridiem) or PM (Post meridiem)'
'APPLY FILTER': 'Apply Filter'
Custom: Custom
DATEFORMATBAD: 'Date format is invalid'
DAYNOLEADING: 'Day of month without leading zero'
DIGITSDECFRACTIONSECOND: 'One or more digits representing a decimal fraction of a second'
FOURDIGITYEAR: 'Four-digit year'
FULLNAMEMONTH: 'Full name of month (e.g. June)'
HOURNOLEADING: 'Hour without leading zero'
MINUTENOLEADING: 'Minute without leading zero'
MONTHNOLEADING: 'Month digit without leading zero'
Preview: Preview
SHORTMONTH: 'Short name of month (e.g. Jun)'
TOGGLEHELP: 'Toggle formatting help'
TWODIGITDAY: 'Two-digit day of month'
TWODIGITHOUR: 'Two digits of hour (00 through 23)'
TWODIGITMINUTE: 'Two digits of minute (00 through 59)'
TWODIGITMONTH: 'Two-digit month (01=January, etc.)'
TWODIGITSECOND: 'Two digits of second (00 through 59)'
TWODIGITYEAR: 'Two-digit year'
MemberImportForm:
Help1: '<p>Import users in <em>CSV format</em> (comma-separated values). <small><a href="#" class="toggle-advanced">Show advanced usage</a></small></p>'
Help2: '<div class="advanced"> <h4>Advanced usage</h4> <ul> <li>Allowed columns: <em>%s</em></li> <li>Existing users are matched by their unique <em>Code</em> property, and updated with any new values from the imported file.</li> <li>Groups can be assigned by the <em>Groups</em> column. Groups are identified by their <em>Code</em> property, multiple groups can be separated by comma. Existing group memberships are not cleared.</li> </ul></div>'
ResultCreated: 'Created {count} members'
ResultDeleted: 'Deleted %d members'
ResultNone: 'No changes'
ResultUpdated: 'Updated {count} members'
MemberPassword:
PLURALNAME: 'Member Passwords'
SINGULARNAME: 'Member Password'
MemberTableField: null
ModelAdmin:
DELETE: Delete
DELETEDRECORDS: 'Deleted {count} records.'
EMPTYBEFOREIMPORT: 'Clear Database before import'
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.'
ModelAdmin_ImportSpec.ss:
IMPORTSPECFIELDS: 'Database columns'
IMPORTSPECLINK: 'Show Specification for %s'
IMPORTSPECRELATIONS: Relations
IMPORTSPECTITLE: 'Specification for %s'
ModelAdmin_Tools.ss:
FILTER: Filter
IMPORT: Import
ModelSidebar.ss:
IMPORT_TAB_HEADER: Import
SEARCHLISTINGS: Search
MoneyField:
FIELDLABELAMOUNT: Amount
FIELDLABELCURRENCY: Currency
NullableField:
IsNullLabel: 'Is Null'
NumericField:
VALIDATION: '''{value}'' is not a number, only numbers can be accepted for this field'
Pagination:
Page: Page
View: View
Permission:
AdminGroup: Administrator
CMS_ACCESS_CATEGORY: 'CMS 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"'
PermissionRole:
OnlyAdminCanApply: 'Only admin can apply'
PLURALNAME: Roles
SINGULARNAME: Role
Title: Title
PermissionRoleCode:
PLURALNAME: 'Permission Role Cods'
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.'
PhoneNumberField:
VALIDATION: 'Please enter a valid phone number'
RelationComplexTableField.ss:
ADD: Add
CSVEXPORT: 'Export to CSV'
NOTFOUND: 'No items found'
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'
NOTEPAGESECURED: 'That page is secured. Enter your credentials below and we will send you right along.'
NOTERESETLINKINVALID: '<p>The password reset link is invalid or expired.</p><p>You can request a new one <a href="{link1}">here</a> or change your password after you <a href="{link2}">logged in</a>.</p>'
NOTERESETPASSWORD: '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'
MEMBERS: Members
MENUTITLE: Security
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.<br />They are inherited from parent groups if required.'
TABROLES: Roles
Users: Users
SecurityAdmin_MemberImportForm:
BtnImport: 'Import from CSV'
FileFieldLabel: 'CSV File <small>(Allowed extensions: *.csv)</small>'
SilverStripeNavigator:
Edit: Edit
SimpleImageField:
NOUPLOAD: 'No Image Uploaded'
SiteTree:
TABMAIN: Main
TableField:
ISREQUIRED: 'In %s ''%s'' is required'
TableField.ss:
ADD: 'Add a new row'
ADDITEM: 'Add %s'
TableListField:
CSVEXPORT: 'Export to CSV'
PRINT: Print
Print: Print
SELECT: 'Select:'
TableListField.ss:
NOITEMSFOUND: 'No items found'
SORTASC: 'Sort in ascending order'
SORTDESC: 'Sort in descending order'
TableListField_PageControls.ss:
DISPLAYING: Displaying
OF: of
TO: to
VIEWFIRST: 'View first'
VIEWLAST: 'View last'
VIEWNEXT: 'View next'
VIEWPREVIOUS: 'View previous'
TimeField:
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)'
DELETE: 'Delete from files'
DELETEINFO: 'Permanently delete this file from the file store'
DOEDIT: Save
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.'
MAXNUMBEROFFILESSHORT: 'Can only upload {count} files'
REMOVE: Remove
REMOVEERROR: 'Error removing file'
REMOVEINFO: 'Remove this file from here, but do not delete it from the file store'
STARTALL: 'Start all'
STARTALLINFO: 'Start all uploads'
Saved: Saved
Versioned:
has_many_Versions: Versions

View File

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

View File

@ -8,7 +8,7 @@ ja_JP:
FILENAME: ファイル名 FILENAME: ファイル名
FOLDER: フォルダ FOLDER: フォルダ
LASTEDIT: 最終更新日 LASTEDIT: 最終更新日
OWNER: '所有者' OWNER: 所有者
SIZE: ファイルサイズ SIZE: ファイルサイズ
TITLE: タイトル TITLE: タイトル
TYPE: ファイルの種類 TYPE: ファイルの種類
@ -16,7 +16,7 @@ ja_JP:
AssetUploadField: AssetUploadField:
ChooseFiles: ファイルを選択 ChooseFiles: ファイルを選択
DRAGFILESHERE: ここにファイルをドラッグ DRAGFILESHERE: ここにファイルをドラッグ
DROPAREA: 'ドロップ領域' DROPAREA: ドロップ領域
EDITALL: すべて編集 EDITALL: すべて編集
EDITANDORGANIZE: 編集と管理 EDITANDORGANIZE: 編集と管理
EDITINFO: ファイルを編集 EDITINFO: ファイルを編集
@ -25,7 +25,7 @@ ja_JP:
FROMCOMPUTERINFO: コンピュータからアップロード FROMCOMPUTERINFO: コンピュータからアップロード
TOTAL: 合計 TOTAL: 合計
TOUPLOAD: 'Choose files to upload...' TOUPLOAD: 'Choose files to upload...'
UPLOADINPROGRESS: 'しばらくお待ちください...アップロードは進行中です' UPLOADINPROGRESS: しばらくお待ちください...アップロードは進行中です
UPLOADOR: もしくは UPLOADOR: もしくは
BBCodeParser: BBCodeParser:
ALIGNEMENT: 整列 ALIGNEMENT: 整列
@ -44,7 +44,7 @@ ja_JP:
ITALIC: テキストを斜体にする ITALIC: テキストを斜体にする
ITALICEXAMPLE: 斜体 ITALICEXAMPLE: 斜体
LINK: ウェブサイトのリンク LINK: ウェブサイトのリンク
LINKDESCRIPTION: '別のウェブサイトかURLにリンクしてください' LINKDESCRIPTION: 別のウェブサイトかURLにリンクしてください
STRUCK: テキストに取り消し線を引く STRUCK: テキストに取り消し線を引く
STRUCKEXAMPLE: 取り消し線 STRUCKEXAMPLE: 取り消し線
UNDERLINE: テキストに下線を引く UNDERLINE: テキストに下線を引く
@ -55,8 +55,8 @@ ja_JP:
BackLink_Button.ss: BackLink_Button.ss:
Back: 戻る Back: 戻る
BasicAuth: BasicAuth:
ENTERINFO: 'ユーザー名とパスワードを入力してください' ENTERINFO: ユーザー名とパスワードを入力してください
ERRORNOTADMIN: 'このユーザーは管理者(アドミニストレーター)ではありません' ERRORNOTADMIN: このユーザーは管理者(アドミニストレーター)ではありません
ERRORNOTREC: 'ユーザー名 / パスワードは認識されませんでした' ERRORNOTREC: 'ユーザー名 / パスワードは認識されませんでした'
Boolean: Boolean:
0: 0:
@ -64,7 +64,7 @@ ja_JP:
1: 1:
CMSLoadingScreen.ss: CMSLoadingScreen.ss:
LOADING: 読み込み中... LOADING: 読み込み中...
REQUIREJS: 'CMSを利用するにはJavascriptが有効化されている必要があります。' REQUIREJS: CMSを利用するにはJavascriptが有効化されている必要があります。
CMSMain: CMSMain:
ACCESS: 'Access to ''{title}'' section' ACCESS: 'Access to ''{title}'' section'
ACCESSALLINTERFACES: すべてのCMSのセクションへアクセス ACCESSALLINTERFACES: すべてのCMSのセクションへアクセス
@ -87,9 +87,9 @@ ja_JP:
SUCCESSEDIT: '更新日時 %s %s %s' SUCCESSEDIT: '更新日時 %s %s %s'
ComplexTableField.ss: ComplexTableField.ss:
ADDITEM: '%sを追加する' ADDITEM: '%sを追加する'
NOITEMSFOUND: '項目が見つかりませんでした' NOITEMSFOUND: 項目が見つかりませんでした
SORTASC: '昇順' SORTASC: 昇順
SORTDESC: 'ソート(下順)' SORTDESC: ソート(下順)
ComplexTableField_popup.ss: ComplexTableField_popup.ss:
NEXT: 次へ NEXT: 次へ
PREVIOUS: 前へ PREVIOUS: 前へ
@ -136,7 +136,7 @@ ja_JP:
DropdownField: DropdownField:
CHOOSE: (選択) CHOOSE: (選択)
EmailField: EmailField:
VALIDATION: 'メールアドレスを入力してください' VALIDATION: メールアドレスを入力してください
Email_BounceRecord: Email_BounceRecord:
PLURALNAME: 'Eメール 反応記録' PLURALNAME: 'Eメール 反応記録'
SINGULARNAME: 'Eメール 反応記録' SINGULARNAME: 'Eメール 反応記録'
@ -144,7 +144,7 @@ ja_JP:
ANY: 何でも ANY: 何でも
File: File:
AviType: 'AVI video file' AviType: 'AVI video file'
Content: '内容' Content: 内容
CssType: 'CSS file' CssType: 'CSS file'
DmgType: 'Apple disk image' DmgType: 'Apple disk image'
DocType: 'Word document' DocType: 'Word document'
@ -201,7 +201,7 @@ ja_JP:
FIELDISREQUIRED: '%s が必要です' FIELDISREQUIRED: '%s が必要です'
SubmitBtnLabel: Go SubmitBtnLabel: Go
VALIDATIONCREDITNUMBER: 'Please ensure you have entered the {number} credit card number correctly' VALIDATIONCREDITNUMBER: 'Please ensure you have entered the {number} credit card number correctly'
VALIDATIONNOTUNIQUE: '入力された値はユニークではありません' VALIDATIONNOTUNIQUE: 入力された値はユニークではありません
VALIDATIONPASSWORDSDONTMATCH: パスワードが一致しません VALIDATIONPASSWORDSDONTMATCH: パスワードが一致しません
VALIDATIONPASSWORDSNOTEMPTY: パスワードが空欄です VALIDATIONPASSWORDSNOTEMPTY: パスワードが空欄です
VALIDATIONSTRONGPASSWORD: 'Passwords must have at least one digit and one alphanumeric character' VALIDATIONSTRONGPASSWORD: 'Passwords must have at least one digit and one alphanumeric character'
@ -221,7 +221,7 @@ ja_JP:
LEVELUP: 'Level up' LEVELUP: 'Level up'
LinkExisting: 'Link Existing' LinkExisting: 'Link Existing'
NewRecord: 新しい%s NewRecord: 新しい%s
NoItemsFound: '項目が見つかりませんでした' NoItemsFound: 項目が見つかりませんでした
PRINTEDAT: 'Printed at' PRINTEDAT: 'Printed at'
PRINTEDBY: 'Printed by' PRINTEDBY: 'Printed by'
PlaceHolder: '{type}を探す' PlaceHolder: '{type}を探す'
@ -240,19 +240,19 @@ ja_JP:
Saved: '保存済み %s %s' Saved: '保存済み %s %s'
GridFieldItemEditView.ss: null GridFieldItemEditView.ss: null
Group: Group:
AddRole: 'このグループに役割を追加する' AddRole: このグループに役割を追加する
Code: グループコード Code: グループコード
DefaultGroupTitleAdministrators: '管理者' DefaultGroupTitleAdministrators: 管理者
DefaultGroupTitleContentAuthors: 'コンテンツの著者' DefaultGroupTitleContentAuthors: コンテンツの著者
Description: 説明文 Description: 説明文
GroupReminder: '元グループを選択された場合、このグループはその役割をすべて受け継ぎます。' GroupReminder: 元グループを選択された場合、このグループはその役割をすべて受け継ぎます。
Locked: ロックしますか? Locked: ロックしますか?
NoRoles: 役割が見つかりませんでした NoRoles: 役割が見つかりませんでした
PLURALNAME: Groups PLURALNAME: Groups
Parent: '元グループ' Parent: 元グループ
RolesAddEditLink: 役割の管理 RolesAddEditLink: 役割の管理
SINGULARNAME: Group SINGULARNAME: Group
Sort: '並び順' Sort: 並び順
has_many_Permissions: 承認 has_many_Permissions: 承認
many_many_Members: メンバー many_many_Members: メンバー
GroupImportForm: GroupImportForm:
@ -264,19 +264,19 @@ ja_JP:
Hierarchy: Hierarchy:
InfiniteLoopNotAllowed: 'Infinite loop found within the "{type}" hierarchy. Please change the parent to resolve this' InfiniteLoopNotAllowed: 'Infinite loop found within the "{type}" hierarchy. Please change the parent to resolve this'
HtmlEditorField: HtmlEditorField:
ADDURL: 'URLを追加' ADDURL: URLを追加
ADJUSTDETAILSDIMENSIONS: 'Details &amp; dimensions' ADJUSTDETAILSDIMENSIONS: 'Details &amp; dimensions'
ANCHORVALUE: アンカー ANCHORVALUE: アンカー
BUTTONINSERT: '追加' BUTTONINSERT: 追加
BUTTONINSERTLINK: 'リンクを追加' BUTTONINSERTLINK: リンクを追加
BUTTONREMOVELINK: リンクを削除 BUTTONREMOVELINK: リンクを削除
BUTTONUpdate: 更新 BUTTONUpdate: 更新
CAPTIONTEXT: タイトル CAPTIONTEXT: タイトル
CSSCLASS: '調整 / スタイル' CSSCLASS: '調整 / スタイル'
CSSCLASSCENTER: 中央はテキストのみ CSSCLASSCENTER: 中央はテキストのみ
CSSCLASSLEFT: '左側にテキストと一緒に処理してください' CSSCLASSLEFT: 左側にテキストと一緒に処理してください
CSSCLASSLEFTALONE: 中央はテキストのみ CSSCLASSLEFTALONE: 中央はテキストのみ
CSSCLASSRIGHT: '右側にテキストと一緒に処理してください' CSSCLASSRIGHT: 右側にテキストと一緒に処理してください
DETAILS: 詳細 DETAILS: 詳細
EMAIL: メールアドレス EMAIL: メールアドレス
FILE: ファイル FILE: ファイル
@ -284,18 +284,18 @@ ja_JP:
FROMCMS: CMSから FROMCMS: CMSから
FROMCOMPUTER: コンピュータから FROMCOMPUTER: コンピュータから
FROMWEB: Webから FROMWEB: Webから
FindInFolder: 'フォルダ内を探す' FindInFolder: フォルダ内を探す
IMAGEALT: 代替テキスト(Alt) IMAGEALT: 代替テキスト(Alt)
IMAGEALTTEXT: '代替(Alt)テキスト - 画像が表示されなかった場合に表示されます' IMAGEALTTEXT: '代替(Alt)テキスト - 画像が表示されなかった場合に表示されます'
IMAGEALTTEXTDESC: 'スクリーンリーダー利用者やイメージが表示されなかった場合に表示されます' IMAGEALTTEXTDESC: スクリーンリーダー利用者やイメージが表示されなかった場合に表示されます
IMAGEDIMENSIONS: サイズ IMAGEDIMENSIONS: サイズ
IMAGEHEIGHTPX: Height IMAGEHEIGHTPX: Height
IMAGETITLE: 'タイトル(ツールチップ)テキスト - 画像に対する追加的情報' IMAGETITLE: 'タイトル(ツールチップ)テキスト - 画像に対する追加的情報'
IMAGETITLETEXT: タイトルテキスト(ツールチップ) IMAGETITLETEXT: タイトルテキスト(ツールチップ)
IMAGETITLETEXTDESC: '画像に関する追加情報' IMAGETITLETEXTDESC: 画像に関する追加情報
IMAGEWIDTHPX: Width IMAGEWIDTHPX: Width
INSERTMEDIA: 'メディアを追加' INSERTMEDIA: メディアを追加
LINK: 'ハイライトテキストへのリンクの挿入/削除' LINK: ハイライトテキストへのリンクの挿入/削除
LINKANCHOR: このページにアンカーを置く LINKANCHOR: このページにアンカーを置く
LINKDESCR: リンクの説明 LINKDESCR: リンクの説明
LINKEMAIL: メールアドレス LINKEMAIL: メールアドレス
@ -324,9 +324,9 @@ ja_JP:
DropdownBatchActionsDefault: アクション DropdownBatchActionsDefault: アクション
HELP: ヘルプ HELP: ヘルプ
PAGETYPE: 'ページの種類:' PAGETYPE: 'ページの種類:'
PERMAGAIN: 'ログアウトしました。再度ログインする場合は下にユーザー名とパスワードを入力してください。' PERMAGAIN: ログアウトしました。再度ログインする場合は下にユーザー名とパスワードを入力してください。
PERMALREADY: '申し訳ございません。ご指定になられたCMSの箇所にはアクセスいただけません。別ユーザーとしてログインをされたい場合は、下記より行えます。' PERMALREADY: 申し訳ございません。ご指定になられたCMSの箇所にはアクセスいただけません。別ユーザーとしてログインをされたい場合は、下記より行えます。
PERMDEFAULT: '認証方法を選択し、CMSにアクセスするために利用する認証情報を入力してください。' PERMDEFAULT: 認証方法を選択し、CMSにアクセスするために利用する認証情報を入力してください。
PLEASESAVE: '保存してください: 保存してないため更新できません。' PLEASESAVE: '保存してください: 保存してないため更新できません。'
PreviewButton: プレビュー PreviewButton: プレビュー
REORGANISATIONSUCCESSFUL: サイトツリーの再編集に成功しました。 REORGANISATIONSUCCESSFUL: サイトツリーの再編集に成功しました。
@ -342,7 +342,7 @@ ja_JP:
SINGULARNAME: 'Login Attempt' SINGULARNAME: 'Login Attempt'
Status: ステータス Status: ステータス
Member: Member:
ADDGROUP: 'グループを追加' ADDGROUP: グループを追加
BUTTONCHANGEPASSWORD: パスワードの変更 BUTTONCHANGEPASSWORD: パスワードの変更
BUTTONLOGIN: ログイン BUTTONLOGIN: ログイン
BUTTONLOGINOTHER: 他の誰かとしてログイン BUTTONLOGINOTHER: 他の誰かとしてログイン
@ -351,15 +351,15 @@ ja_JP:
CONFIRMNEWPASSWORD: 新しいパスワードを確認します CONFIRMNEWPASSWORD: 新しいパスワードを確認します
CONFIRMPASSWORD: パスワード(確認のためもう一度) CONFIRMPASSWORD: パスワード(確認のためもう一度)
DATEFORMAT: 'Date format' DATEFORMAT: 'Date format'
DefaultAdminFirstname: '初期管理者' DefaultAdminFirstname: 初期管理者
DefaultDateTime: 初期設定 DefaultDateTime: 初期設定
EMAIL: メールアドレス EMAIL: メールアドレス
EMPTYNEWPASSWORD: 'パスワードが空です。もう一度入力して下さい。' EMPTYNEWPASSWORD: パスワードが空です。もう一度入力して下さい。
ENTEREMAIL: 'パスワードをリセットするためにメールアドレスを入力してください。' ENTEREMAIL: パスワードをリセットするためにメールアドレスを入力してください。
ERRORLOCKEDOUT: 'あなたのアカウントは何度もログインに失敗したため一時的に利用できなくなっています。20分後に試してください。' ERRORLOCKEDOUT: あなたのアカウントは何度もログインに失敗したため一時的に利用できなくなっています。20分後に試してください。
ERRORNEWPASSWORD: '入力されたパスワードが一致しません。再度お試しください' ERRORNEWPASSWORD: 入力されたパスワードが一致しません。再度お試しください
ERRORPASSWORDNOTMATCH: '登録されているパスワードと一致しません、もう一度入力し直してください' ERRORPASSWORDNOTMATCH: 登録されているパスワードと一致しません、もう一度入力し直してください
ERRORWRONGCRED: 'メールアドレスまたはパスワードが正しくありません、もう一度入力し直してください' ERRORWRONGCRED: メールアドレスまたはパスワードが正しくありません、もう一度入力し直してください
FIRSTNAME: FIRSTNAME:
INTERFACELANG: 画面言語 INTERFACELANG: 画面言語
INVALIDNEWPASSWORD: '次のパスワードは受け付けることができません: {password}' INVALIDNEWPASSWORD: '次のパスワードは受け付けることができません: {password}'
@ -373,7 +373,7 @@ ja_JP:
SUBJECTPASSWORDRESET: パスワード再発行 SUBJECTPASSWORDRESET: パスワード再発行
SURNAME: SURNAME:
TIMEFORMAT: 'Time format' TIMEFORMAT: 'Time format'
VALIDATIONMEMBEREXISTS: '入力したメールアドレス(%sは、他のメンバーにすでに使用されています。' VALIDATIONMEMBEREXISTS: 入力したメールアドレス(%sは、他のメンバーにすでに使用されています。
ValidationIdentifierFailed: 'Can''t overwrite existing member #{id} with identical identifier ({name} = {value}))' ValidationIdentifierFailed: 'Can''t overwrite existing member #{id} with identical identifier ({name} = {value}))'
WELCOMEBACK: '{firstname}さん、おかえりなさい' WELCOMEBACK: '{firstname}さん、おかえりなさい'
YOUROLDPASSWORD: 古いパスワード YOUROLDPASSWORD: 古いパスワード
@ -381,7 +381,7 @@ ja_JP:
db_LastVisited: 最終訪問日 db_LastVisited: 最終訪問日
db_Locale: インターフェースの言語地域 db_Locale: インターフェースの言語地域
db_LockedOutUntil: DBロックがされています。 db_LockedOutUntil: DBロックがされています。
db_NumVisit: '訪問者数' db_NumVisit: 訪問者数
db_Password: パスワード db_Password: パスワード
db_PasswordExpiry: パスワードの有効期限 db_PasswordExpiry: パスワードの有効期限
MemberAuthenticator: MemberAuthenticator:
@ -424,13 +424,13 @@ ja_JP:
EMPTYBEFOREIMPORT: 'Clear Database before import' EMPTYBEFOREIMPORT: 'Clear Database before import'
IMPORT: CSVからインポート IMPORT: CSVからインポート
IMPORTEDRECORDS: '{count}レコードを取り込みました。' IMPORTEDRECORDS: '{count}レコードを取り込みました。'
NOCSVFILE: 'インポートするためのCSVファイルを参照してください' NOCSVFILE: インポートするためのCSVファイルを参照してください
NOIMPORT: インポートするものがありません。 NOIMPORT: インポートするものがありません。
RESET: リセット RESET: リセット
Title: 'Data Models' Title: 'Data Models'
UPDATEDRECORDS: '{count}レコードを更新しました。' UPDATEDRECORDS: '{count}レコードを更新しました。'
ModelAdmin_ImportSpec.ss: ModelAdmin_ImportSpec.ss:
IMPORTSPECFIELDS: 'データベースカラム' IMPORTSPECFIELDS: データベースカラム
IMPORTSPECLINK: 'Show Specification for %s' IMPORTSPECLINK: 'Show Specification for %s'
IMPORTSPECRELATIONS: 関連 IMPORTSPECRELATIONS: 関連
IMPORTSPECTITLE: 'Specification for %s' IMPORTSPECTITLE: 'Specification for %s'
@ -451,9 +451,9 @@ ja_JP:
Page: Page Page: Page
View: View View: View
Permission: Permission:
AdminGroup: '管理者' AdminGroup: 管理者
CMS_ACCESS_CATEGORY: 'CMS Access' CMS_ACCESS_CATEGORY: 'CMS Access'
FULLADMINRIGHTS: '完全な管理権' FULLADMINRIGHTS: 完全な管理権
FULLADMINRIGHTS_HELP: 'Implies and overrules all other assigned permissions.' FULLADMINRIGHTS_HELP: 'Implies and overrules all other assigned permissions.'
PLURALNAME: Permissions PLURALNAME: Permissions
SINGULARNAME: Permission SINGULARNAME: Permission
@ -474,27 +474,27 @@ ja_JP:
PERMISSIONS_CATEGORY: 役割とアクセス権限 PERMISSIONS_CATEGORY: 役割とアクセス権限
UserPermissionsIntro: 'Assigning groups to this user will adjust the permissions they have. See the groups section for details of permissions on individual groups.' UserPermissionsIntro: 'Assigning groups to this user will adjust the permissions they have. See the groups section for details of permissions on individual groups.'
PhoneNumberField: PhoneNumberField:
VALIDATION: '電話番号を入力してください' VALIDATION: 電話番号を入力してください
RelationComplexTableField.ss: RelationComplexTableField.ss:
ADD: '追加' ADD: 追加
CSVEXPORT: CSVへ書き出し CSVEXPORT: CSVへ書き出し
NOTFOUND: '項目が見つかりませんでした' NOTFOUND: 項目が見つかりませんでした
Security: Security:
ALREADYLOGGEDIN: 'あなたはこのページにアクセスできません。別のアカウントを持っていたら <a href="%s">再ログイン</a>を行ってください。' ALREADYLOGGEDIN: 'あなたはこのページにアクセスできません。別のアカウントを持っていたら <a href="%s">再ログイン</a>を行ってください。'
BUTTONSEND: 'パスワードリセットのリンクを送信してください' BUTTONSEND: パスワードリセットのリンクを送信してください
CHANGEPASSWORDBELOW: 以下のパスワードを変更できます CHANGEPASSWORDBELOW: 以下のパスワードを変更できます
CHANGEPASSWORDHEADER: パスワードを変更しました CHANGEPASSWORDHEADER: パスワードを変更しました
ENTERNEWPASSWORD: '新しいパスワードを入力してください' ENTERNEWPASSWORD: 新しいパスワードを入力してください
ERRORPASSWORDPERMISSION: パスワードを変更する為に、ログインしなければなりません! ERRORPASSWORDPERMISSION: パスワードを変更する為に、ログインしなければなりません!
LOGGEDOUT: 'ログアウトしました。再度ログインする場合は証明書キーを入力してください' LOGGEDOUT: ログアウトしました。再度ログインする場合は証明書キーを入力してください
LOGIN: ログイン LOGIN: ログイン
NOTEPAGESECURED: 'このページはセキュリティで保護されております証明書キーを下記に入力してください。こちらからすぐに送信します' NOTEPAGESECURED: このページはセキュリティで保護されております証明書キーを下記に入力してください。こちらからすぐに送信します
NOTERESETLINKINVALID: '<p>The password reset link is invalid or expired.</p><p>You can request a new one <a href="{link1}">here</a> or change your password after you <a href="{link2}">logged in</a>.</p>' NOTERESETLINKINVALID: '<p>The password reset link is invalid or expired.</p><p>You can request a new one <a href="{link1}">here</a> or change your password after you <a href="{link2}">logged in</a>.</p>'
NOTERESETPASSWORD: 'メールアドレスを入力してください、パスワードをリセットするURLを送信致します' NOTERESETPASSWORD: メールアドレスを入力してください、パスワードをリセットするURLを送信致します
PASSWORDSENTHEADER: 'Password reset link sent to ''{email}''' PASSWORDSENTHEADER: 'Password reset link sent to ''{email}'''
PASSWORDSENTTEXT: 'Thank you! A reset link has been sent to ''{email}'', provided an account exists for this email address.' PASSWORDSENTTEXT: 'Thank you! A reset link has been sent to ''{email}'', provided an account exists for this email address.'
SecurityAdmin: SecurityAdmin:
ACCESS_HELP: 'ユーザを閲覧、追加、編集すること、及び、そのユーザに対して権限や役割を割り当てることを許可' ACCESS_HELP: ユーザを閲覧、追加、編集すること、及び、そのユーザに対して権限や役割を割り当てることを許可
APPLY_ROLES: 役割をグループへ適用 APPLY_ROLES: 役割をグループへ適用
APPLY_ROLES_HELP: 'Ability to edit the roles assigned to a group. Requires the "Access to ''Users'' section" permission.' APPLY_ROLES_HELP: 'Ability to edit the roles assigned to a group. Requires the "Access to ''Users'' section" permission.'
EDITPERMISSIONS: グループの権限を編集 EDITPERMISSIONS: グループの権限を編集
@ -523,7 +523,7 @@ ja_JP:
TableField: TableField:
ISREQUIRED: 'In %s ''%s'' is required' ISREQUIRED: 'In %s ''%s'' is required'
TableField.ss: TableField.ss:
ADD: '新しい行を追加' ADD: 新しい行を追加
ADDITEM: '%sを追加' ADDITEM: '%sを追加'
TableListField: TableListField:
CSVEXPORT: CSVにエクスポート CSVEXPORT: CSVにエクスポート
@ -531,9 +531,9 @@ ja_JP:
Print: Print Print: Print
SELECT: 選択: SELECT: 選択:
TableListField.ss: TableListField.ss:
NOITEMSFOUND: '項目が見つかりませんでした' NOITEMSFOUND: 項目が見つかりませんでした
SORTASC: '昇順で並べ替え' SORTASC: 昇順で並べ替え
SORTDESC: '降順で並べ替え' SORTDESC: 降順で並べ替え
TableListField_PageControls.ss: TableListField_PageControls.ss:
DISPLAYING: Displaying DISPLAYING: Displaying
OF: of OF: of
@ -546,20 +546,20 @@ ja_JP:
VALIDATEFORMAT: '正しい時間フォーマット{{format}}を入力してください' VALIDATEFORMAT: '正しい時間フォーマット{{format}}を入力してください'
ToggleField: ToggleField:
LESS: 減少 LESS: 減少
MORE: '増加' MORE: 増加
UploadField: UploadField:
ATTACHFILE: ファイルを添付 ATTACHFILE: ファイルを添付
ATTACHFILES: ファイルを添付 ATTACHFILES: ファイルを添付
AttachFile: ファイルを添付 AttachFile: ファイルを添付
DELETE: 'Delete from files' DELETE: 'Delete from files'
DELETEINFO: 'ファイルストレージから永久にこのファイルは削除されました' DELETEINFO: ファイルストレージから永久にこのファイルは削除されました
DOEDIT: 保存 DOEDIT: 保存
DROPFILE: ファイルをドロップ DROPFILE: ファイルをドロップ
DROPFILES: ファイルをドロップ DROPFILES: ファイルをドロップ
Dimensions: Dimensions Dimensions: Dimensions
EDIT: 編集 EDIT: 編集
EDITINFO: このファイルを編集 EDITINFO: このファイルを編集
FIELDNOTSET: 'ファイル情報が見つかりませんでした' FIELDNOTSET: ファイル情報が見つかりませんでした
FROMCOMPUTER: コンピュータから FROMCOMPUTER: コンピュータから
FROMCOMPUTERINFO: ファイルから選択 FROMCOMPUTERINFO: ファイルから選択
FROMFILES: ファイルから FROMFILES: ファイルから
@ -568,7 +568,7 @@ ja_JP:
MAXNUMBEROFFILESSHORT: '{count}ファイルしかアップロードすることができません' MAXNUMBEROFFILESSHORT: '{count}ファイルしかアップロードすることができません'
REMOVE: 削除 REMOVE: 削除
REMOVEERROR: ファイルの削除におけるエラー REMOVEERROR: ファイルの削除におけるエラー
REMOVEINFO: 'ここからこのファイルを削除。ただし、ファイルのストレージからこのファイルの削除はしない。' REMOVEINFO: ここからこのファイルを削除。ただし、ファイルのストレージからこのファイルの削除はしない。
STARTALL: すべて開始 STARTALL: すべて開始
STARTALLINFO: すべてのアップロードを開始 STARTALLINFO: すべてのアップロードを開始
Saved: 保存しました Saved: 保存しました

View File

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

View File

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

View File

@ -1,6 +1,6 @@
nl: nl:
AssetAdmin: AssetAdmin:
ALLOWEDEXTS: 'Allowed extensions' ALLOWEDEXTS: 'Toegestane extensies'
NEWFOLDER: 'Nieuwe Map' NEWFOLDER: 'Nieuwe Map'
AssetTableField: AssetTableField:
CREATED: 'Eerste upload' CREATED: 'Eerste upload'
@ -16,15 +16,15 @@ nl:
AssetUploadField: AssetUploadField:
ChooseFiles: 'Selecteer bestanden' ChooseFiles: 'Selecteer bestanden'
DRAGFILESHERE: 'Sleep bestanden hiernaar toe' DRAGFILESHERE: 'Sleep bestanden hiernaar toe'
DROPAREA: 'Hierheen slepen' DROPAREA: 'Sleep hier'
EDITALL: 'Alle bewerken' EDITALL: 'Alle bewerken'
EDITANDORGANIZE: 'Bewerk en beheer' EDITANDORGANIZE: 'Bewerk en beheer'
EDITINFO: 'Bewerk alle bestanden' EDITINFO: 'Bewerk alle bestanden'
FILES: Bestanden FILES: Bestanden
FROMCOMPUTER: 'Selecteer bestand op computer' FROMCOMPUTER: 'Selecteer bestand op computer'
FROMCOMPUTERINFO: 'Upload from your computer' FROMCOMPUTERINFO: 'Uploaden vanaf uw computer'
TOTAL: Totaal TOTAL: Totaal
TOUPLOAD: 'Choose files to upload...' TOUPLOAD: 'Selecteer bestanden'
UPLOADINPROGRESS: 'Even geduld... bezig met uploaden' UPLOADINPROGRESS: 'Even geduld... bezig met uploaden'
UPLOADOR: OF UPLOADOR: OF
BBCodeParser: BBCodeParser:
@ -39,7 +39,7 @@ nl:
COLOREDEXAMPLE: 'blauwe tekst' COLOREDEXAMPLE: 'blauwe tekst'
EMAILLINK: 'Email link' EMAILLINK: 'Email link'
EMAILLINKDESCRIPTION: 'Maak een koppeling naar een e-mailadres' EMAILLINKDESCRIPTION: 'Maak een koppeling naar een e-mailadres'
IMAGE: Foto IMAGE: Afbeelding
IMAGEDESCRIPTION: 'Toon een afbeelding in uw bericht' IMAGEDESCRIPTION: 'Toon een afbeelding in uw bericht'
ITALIC: 'Cursieve tekst' ITALIC: 'Cursieve tekst'
ITALICEXAMPLE: Cursief ITALICEXAMPLE: Cursief
@ -64,7 +64,7 @@ nl:
1: Ja 1: Ja
CMSLoadingScreen.ss: CMSLoadingScreen.ss:
LOADING: 'Bezig met laden...' LOADING: 'Bezig met laden...'
REQUIREJS: 'The CMS requires that you have JavaScript enabled.' REQUIREJS: 'Het CMS heeft JavaScript nodig om te werken.'
CMSMain: CMSMain:
ACCESS: 'Toegang tot het ''{title}'' gedeelte' ACCESS: 'Toegang tot het ''{title}'' gedeelte'
ACCESSALLINTERFACES: 'Toegang tot alle CMS onderdelen' ACCESSALLINTERFACES: 'Toegang tot alle CMS onderdelen'
@ -84,7 +84,7 @@ nl:
ComplexTableField: ComplexTableField:
CLOSEPOPUP: 'Sluit Popup' CLOSEPOPUP: 'Sluit Popup'
SUCCESSADD2: 'Toegevoegd {name}' SUCCESSADD2: 'Toegevoegd {name}'
SUCCESSEDIT: '%s %s %s opgeslagen' SUCCESSEDIT: '%s %s %s Opgeslagen'
ComplexTableField.ss: ComplexTableField.ss:
ADDITEM: 'Voeg %s toe' ADDITEM: 'Voeg %s toe'
NOITEMSFOUND: 'Geen items gevonden.' NOITEMSFOUND: 'Geen items gevonden.'
@ -120,23 +120,23 @@ nl:
SEC: seconde SEC: seconde
SECS: seconden SECS: seconden
TIMEDIFFAGO: '{difference} geleden' TIMEDIFFAGO: '{difference} geleden'
TIMEDIFFIN: 'in {difference}' TIMEDIFFIN: '{difference} geleden'
YEAR: jaar YEAR: jaar
YEARS: jaren YEARS: jaren
DateField: DateField:
NOTSET: 'niet ingesteld' NOTSET: 'niet ingesteld'
TODAY: vandaag TODAY: vandaag
VALIDDATEFORMAT2: 'Please enter a valid date format ({format})' VALIDDATEFORMAT2: 'Vul een geldige datumformaat in ({format})'
VALIDDATEMAXDATE: 'Your date has to be older or matching the maximum allowed date ({date})' VALIDDATEMAXDATE: 'De datum moet nieuwer of gelijk zijn aan de minimale datum ({date})'
VALIDDATEMINDATE: 'Your date has to be newer or matching the minimum allowed date ({date})' VALIDDATEMINDATE: 'De datum moet nieuwer of gelijk zijn aan de minimale datum ({date})'
DatetimeField: DatetimeField:
NOTSET: 'Not set' NOTSET: 'Niet ingesteld'
Director: Director:
INVALID_REQUEST: 'Invalid request' INVALID_REQUEST: 'Fout bij verwerken'
DropdownField: DropdownField:
CHOOSE: (Kies) CHOOSE: (Kies)
EmailField: EmailField:
VALIDATION: 'Please enter an email address' VALIDATION: 'Gelieve een email adres in te voeren.'
Email_BounceRecord: Email_BounceRecord:
PLURALNAME: 'Onbezorgbare emails' PLURALNAME: 'Onbezorgbare emails'
SINGULARNAME: 'Onbezorgbare email' SINGULARNAME: 'Onbezorgbare email'
@ -145,21 +145,21 @@ nl:
File: File:
AviType: 'AVI video bestand' AviType: 'AVI video bestand'
Content: Inhoud Content: Inhoud
CssType: 'CSS file' CssType: 'CSS bestand'
DmgType: 'Apple disk image' DmgType: 'Apple disk image'
DocType: 'Word document' DocType: 'Word document'
Filename: 'Bestandsnaam ' Filename: 'Bestandsnaam '
GifType: 'GIF afbeelding - voor diagrammen' GifType: 'GIF afbeelding - voor diagrammen'
GzType: 'GZIP compressed file' GzType: 'GZIP gecomprimeerd bestand'
HtlType: 'HTML bestand' HtlType: 'HTML bestand'
HtmlType: 'HTML bestand' HtmlType: 'HTML bestand'
INVALIDEXTENSION: 'Extension is not allowed (valid: {extensions})' INVALIDEXTENSION: 'Extensie is niet toegestaan (Toegestaan: {extensions})'
INVALIDEXTENSIONSHORT: 'Extension is not allowed' INVALIDEXTENSIONSHORT: 'Extensie is niet toegestaan'
IcoType: 'Icoon bestand' IcoType: 'Icoon bestand'
JpgType: 'JPG afbeelding - voor foto' JpgType: 'JPG afbeelding - voor foto'
JsType: 'Javascript bestand' JsType: 'Javascript bestand'
Mp3Type: 'MP3 audio file' Mp3Type: 'MP3 audio bestand'
MpgType: 'MPEG video file' MpgType: 'MPEG video bestand'
NOFILESIZE: 'Bestandsgrootte is nul bytes.' NOFILESIZE: 'Bestandsgrootte is nul bytes.'
NOVALIDUPLOAD: 'Geen geldig bestand' NOVALIDUPLOAD: 'Geen geldig bestand'
Name: Naam Name: Naam
@ -167,11 +167,11 @@ nl:
PdfType: 'Adobe Acrobat PDF bestand' PdfType: 'Adobe Acrobat PDF bestand'
PngType: 'PNG adbeelding - voor allerlei afbeeldingen' PngType: 'PNG adbeelding - voor allerlei afbeeldingen'
SINGULARNAME: Bestand SINGULARNAME: Bestand
TOOLARGE: 'Filesize is too large, maximum {size} allowed' TOOLARGE: 'Bestandsgrootte is te groot, maximaal {size} toegestaan'
TOOLARGESHORT: 'Filesize exceeds {size}' TOOLARGESHORT: 'Bestandsgrootte is hoger dan {size}'
TiffType: 'Tagged image format' TiffType: 'Tagged beeldformaat'
Title: 'Titel ' Title: 'Titel '
WavType: 'WAV audo file' WavType: 'WAV audio bestand'
XlsType: 'Excel document' XlsType: 'Excel document'
ZipType: 'ZIP bestand' ZipType: 'ZIP bestand'
FileIFrameField: FileIFrameField:
@ -190,8 +190,8 @@ nl:
Filesystem: Filesystem:
SYNCRESULTS: 'Synchroniseren compleet: {createdcount} bestanden aangemaakt, {deletedcount} bestanden verwijderd.' SYNCRESULTS: 'Synchroniseren compleet: {createdcount} bestanden aangemaakt, {deletedcount} bestanden verwijderd.'
Folder: Folder:
PLURALNAME: Folders PLURALNAME: Mappen
SINGULARNAME: Folder SINGULARNAME: Map
ForgotPasswordEmail.ss: ForgotPasswordEmail.ss:
HELLO: Hallo HELLO: Hallo
TEXT1: 'Hier is uw' TEXT1: 'Hier is uw'
@ -199,42 +199,42 @@ nl:
TEXT3: voor TEXT3: voor
Form: Form:
FIELDISREQUIRED: '%s is verplicht' FIELDISREQUIRED: '%s is verplicht'
SubmitBtnLabel: Go SubmitBtnLabel: Gaan
VALIDATIONCREDITNUMBER: 'Please ensure you have entered the {number} credit card number correctly' VALIDATIONCREDITNUMBER: 'Gelieve uw credit card number {number} juist in te vullen'
VALIDATIONNOTUNIQUE: 'De ingevoerde waarde is niet uniek' VALIDATIONNOTUNIQUE: 'De ingevoerde waarde is niet uniek'
VALIDATIONPASSWORDSDONTMATCH: 'Wachtwoorden komen niet overeen' VALIDATIONPASSWORDSDONTMATCH: 'Wachtwoorden komen niet overeen'
VALIDATIONPASSWORDSNOTEMPTY: 'Wachtwoorden mogen niet leeg zijn' VALIDATIONPASSWORDSNOTEMPTY: 'Wachtwoorden mogen niet leeg zijn'
VALIDATIONSTRONGPASSWORD: 'Passwords must have at least one digit and one alphanumeric character' VALIDATIONSTRONGPASSWORD: 'Wachtwoorden moeten bestaan uit minstens één cijfer en één alfanumeriek karakter.'
VALIDATOR: Controleur VALIDATOR: Controleur
VALIDCURRENCY: 'Please enter a valid currency' VALIDCURRENCY: 'Vul een geldige valuta in'
FormField: FormField:
NONE: geen NONE: geen
GridAction: GridAction:
DELETE_DESCRIPTION: Delete DELETE_DESCRIPTION: Verwijderen
Delete: Verwijder Delete: Verwijder
UnlinkRelation: Ontkoppelen UnlinkRelation: Ontkoppelen
GridField: GridField:
Add: 'Add {name}' Add: '{name} toevoegen'
Filter: Filter Filter: Filter
FilterBy: Filteren FilterBy: Filteren
Find: Zoek Find: Zoek
LEVELUP: 'Level up' LEVELUP: 'Niveau omhoog'
LinkExisting: 'Verwijs naar' LinkExisting: 'Bestaande link'
NewRecord: 'Nieuw %s' NewRecord: 'Nieuw %s'
NoItemsFound: 'Geen items gevonden.' NoItemsFound: 'Geen items gevonden.'
PRINTEDAT: 'Geprint om' PRINTEDAT: 'Geprint op'
PRINTEDBY: 'Geprint door' PRINTEDBY: 'Geprint door'
PlaceHolder: 'Find {type}' PlaceHolder: 'Zoek {type}'
PlaceHolderWithLabels: 'Find {type} by {name}' PlaceHolderWithLabels: 'Zoek {type} op {name}'
RelationSearch: 'Relation search' RelationSearch: 'Zoek relatie'
ResetFilter: Reset ResetFilter: Herstellen
GridFieldAction_Delete: GridFieldAction_Delete:
DeletePermissionsFailure: 'Onvoldoende rechten om te verwijderen' DeletePermissionsFailure: 'Onvoldoende rechten om te verwijderen'
GridFieldDetailForm: GridFieldDetailForm:
CancelBtn: Annuleren CancelBtn: Annuleren
Create: Creëren Create: Creëren
Delete: Verwijder Delete: Verwijder
DeletePermissionsFailure: 'No delete permissions' DeletePermissionsFailure: 'Onvoldoende rechten om te verwijderen'
Deleted: '%s %s verwijderd' Deleted: '%s %s verwijderd'
Save: Opslaan Save: Opslaan
Saved: '%s %s opgeslagen' Saved: '%s %s opgeslagen'
@ -248,13 +248,13 @@ nl:
GroupReminder: 'Als je de bovenliggende groep selecteert, neemt deze groep alle rollen over' GroupReminder: 'Als je de bovenliggende groep selecteert, neemt deze groep alle rollen over'
Locked: 'Gesloten?' Locked: 'Gesloten?'
NoRoles: 'Geen rollen gevonden' NoRoles: 'Geen rollen gevonden'
PLURALNAME: Groups PLURALNAME: Groepen
Parent: 'Bovenliggende groep' Parent: 'Bovenliggende groep'
RolesAddEditLink: 'Toevoegen/wijzigingen rollen' RolesAddEditLink: 'Toevoegen/wijzigingen rollen'
SINGULARNAME: Group SINGULARNAME: Groep
Sort: Sorteer-richting Sort: Sorteer-richting
has_many_Permissions: Rechten has_many_Permissions: Rechten
many_many_Members: Lid many_many_Members: Leden
GroupImportForm: GroupImportForm:
Help1: '<p>Importeer en of meerdere groepen in <em>CSV</em> formaat (Kommagescheiden bestandsformaat). <small><a href="#" class="toggle-advanced">Toon geavanceerd gebruik</a></small></p>' Help1: '<p>Importeer en of meerdere groepen in <em>CSV</em> formaat (Kommagescheiden bestandsformaat). <small><a href="#" class="toggle-advanced">Toon geavanceerd gebruik</a></small></p>'
Help2: '<div class="advanced"> <h4>Advanced usage</h4> <ul> <li>Allowed columns: <em>%s</em></li> <li>Existing groups are matched by their unique <em>Code</em> value, and updated with any new values from the imported file</li> <li>Group hierarchies can be created by using a <em>ParentCode</em> column.</li> <li>Permission codes can be assigned by the <em>PermissionCode</em> column. Existing permission codes are not cleared.</li> </ul></div>' Help2: '<div class="advanced"> <h4>Advanced usage</h4> <ul> <li>Allowed columns: <em>%s</em></li> <li>Existing groups are matched by their unique <em>Code</em> value, and updated with any new values from the imported file</li> <li>Group hierarchies can be created by using a <em>ParentCode</em> column.</li> <li>Permission codes can be assigned by the <em>PermissionCode</em> column. Existing permission codes are not cleared.</li> </ul></div>'
@ -262,7 +262,7 @@ nl:
ResultDeleted: '%d groepen verwijderd' ResultDeleted: '%d groepen verwijderd'
ResultUpdated: '%d groepen aangepast' ResultUpdated: '%d groepen aangepast'
Hierarchy: Hierarchy:
InfiniteLoopNotAllowed: 'Infinite loop found within the "{type}" hierarchy. Please change the parent to resolve this' InfiniteLoopNotAllowed: 'Oneindige lus gevonden in "{type}" hiërarchie. Wijzig de niveau hoger om dit op te lossen'
HtmlEditorField: HtmlEditorField:
ADDURL: 'Voeg URL toe' ADDURL: 'Voeg URL toe'
ADJUSTDETAILSDIMENSIONS: 'Details $amp; afmeting' ADJUSTDETAILSDIMENSIONS: 'Details $amp; afmeting'
@ -270,7 +270,7 @@ nl:
BUTTONINSERT: Invoegen BUTTONINSERT: Invoegen
BUTTONINSERTLINK: 'Link invoegen' BUTTONINSERTLINK: 'Link invoegen'
BUTTONREMOVELINK: 'Link verwijderen' BUTTONREMOVELINK: 'Link verwijderen'
BUTTONUpdate: Update BUTTONUpdate: Bijwerken
CAPTIONTEXT: Onderschrift CAPTIONTEXT: Onderschrift
CSSCLASS: 'Uitlijning / stijl' CSSCLASS: 'Uitlijning / stijl'
CSSCLASSCENTER: 'Gecentreerd, op zichzelf staand.' CSSCLASSCENTER: 'Gecentreerd, op zichzelf staand.'
@ -306,20 +306,20 @@ nl:
LINKTO: 'Verwijs naar' LINKTO: 'Verwijs naar'
PAGE: Pagina PAGE: Pagina
URL: URL URL: URL
URLNOTANOEMBEDRESOURCE: 'The URL ''{url}'' could not be turned into a media resource.' URLNOTANOEMBEDRESOURCE: '{url} kon niet worden omgezet in een media-bron.'
UpdateMEDIA: 'Update Media' UpdateMEDIA: 'Update Media'
Image: Image:
PLURALNAME: Files PLURALNAME: Bestanden
SINGULARNAME: File SINGULARNAME: Bestand
ImageField: ImageField:
IMAGE: Afbeelding IMAGE: Afbeelding
Image_Cached: Image_Cached:
PLURALNAME: Files PLURALNAME: Bestanden
SINGULARNAME: File SINGULARNAME: Bestand
Image_iframe.ss: Image_iframe.ss:
TITLE: 'Afbeelding uploaden' TITLE: 'Afbeelding uploaden'
LeftAndMain: LeftAndMain:
CANT_REORGANISE: 'You do not have permission to alter Top level pages. Your change was not saved.' CANT_REORGANISE: 'Je hebt geen rechten hiervoor'
DELETED: Verwijderd. DELETED: Verwijderd.
DropdownBatchActionsDefault: Acties DropdownBatchActionsDefault: Acties
HELP: Help HELP: Help
@ -329,11 +329,11 @@ nl:
PERMDEFAULT: 'Geef uw e-mailadres en wachtwoord voor toegang tot het CMS.' PERMDEFAULT: 'Geef uw e-mailadres en wachtwoord voor toegang tot het CMS.'
PLEASESAVE: 'Deze pagina kon niet bijgewerkt worden, omdat deze nog niet is bewaard.' PLEASESAVE: 'Deze pagina kon niet bijgewerkt worden, omdat deze nog niet is bewaard.'
PreviewButton: Preview PreviewButton: Preview
REORGANISATIONSUCCESSFUL: 'Reorganised the site tree successfully.' REORGANISATIONSUCCESSFUL: 'Menu-indeling is aangepast'
SAVEDUP: 'Succesvol opgeslagen' SAVEDUP: 'Succesvol opgeslagen'
VersionUnknown: onbekend VersionUnknown: onbekend
LeftAndMain_Menu.ss: LeftAndMain_Menu.ss:
Hello: Hi Hello: Hallo
LOGOUT: Uitloggen LOGOUT: Uitloggen
LoginAttempt: LoginAttempt:
Email: 'Email adres ' Email: 'Email adres '
@ -342,7 +342,7 @@ nl:
SINGULARNAME: 'Poging om in te loggen' SINGULARNAME: 'Poging om in te loggen'
Status: Status Status: Status
Member: Member:
ADDGROUP: 'Add group' ADDGROUP: 'Groep toevoegen'
BUTTONCHANGEPASSWORD: 'Wachtwoord veranderen' BUTTONCHANGEPASSWORD: 'Wachtwoord veranderen'
BUTTONLOGIN: Inloggen BUTTONLOGIN: Inloggen
BUTTONLOGINOTHER: 'Als iemand anders inloggen' BUTTONLOGINOTHER: 'Als iemand anders inloggen'
@ -350,7 +350,7 @@ nl:
CANTEDIT: 'Je hebt geen rechten hiervoor' CANTEDIT: 'Je hebt geen rechten hiervoor'
CONFIRMNEWPASSWORD: 'Bevestig het nieuwe wachtwoord' CONFIRMNEWPASSWORD: 'Bevestig het nieuwe wachtwoord'
CONFIRMPASSWORD: 'Bevestig wachtwoord' CONFIRMPASSWORD: 'Bevestig wachtwoord'
DATEFORMAT: 'Date format' DATEFORMAT: 'Datum formaat'
DefaultAdminFirstname: 'Standaard Beheerder' DefaultAdminFirstname: 'Standaard Beheerder'
DefaultDateTime: Standaard DefaultDateTime: Standaard
EMAIL: Email EMAIL: Email
@ -372,8 +372,8 @@ nl:
SUBJECTPASSWORDCHANGED: 'Uw wachtwoord is veranderd' SUBJECTPASSWORDCHANGED: 'Uw wachtwoord is veranderd'
SUBJECTPASSWORDRESET: 'Link om Uw wachtwoord opnieuw aan te maken' SUBJECTPASSWORDRESET: 'Link om Uw wachtwoord opnieuw aan te maken'
SURNAME: Achternaam SURNAME: Achternaam
TIMEFORMAT: 'Time format' TIMEFORMAT: 'Tijd formaat'
VALIDATIONMEMBEREXISTS: 'Er bestaat reeds een gebruiker met dit emailadres' VALIDATIONMEMBEREXISTS: 'Er bestaat al een lid met dit emailadres, %s'
ValidationIdentifierFailed: 'Can''t overwrite existing member #{id} with identical identifier ({name} = {value}))' ValidationIdentifierFailed: 'Can''t overwrite existing member #{id} with identical identifier ({name} = {value}))'
WELCOMEBACK: 'Welkom terug {firstname}' WELCOMEBACK: 'Welkom terug {firstname}'
YOUROLDPASSWORD: 'Uw oude wachtwoord' YOUROLDPASSWORD: 'Uw oude wachtwoord'
@ -387,25 +387,25 @@ nl:
MemberAuthenticator: MemberAuthenticator:
TITLE: 'Email &amp; Wachtwoord' TITLE: 'Email &amp; Wachtwoord'
MemberDatetimeOptionsetField: MemberDatetimeOptionsetField:
AMORPM: 'AM (Ante meridiem) or PM (Post meridiem)' AMORPM: 'AM (Ante meridiem) of PM (Post meridiem)'
'APPLY FILTER': 'Filter toepassen' 'APPLY FILTER': 'Filter toepassen'
Custom: Aangepast Custom: Aangepast
DATEFORMATBAD: 'Datum is niet correct opgegeven' DATEFORMATBAD: 'Datum is niet correct opgegeven'
DAYNOLEADING: 'Dag van de maand zonder voorloop-nul' DAYNOLEADING: 'Dag van de maand zonder voorloop-nul'
DIGITSDECFRACTIONSECOND: 'One or more digits representing a decimal fraction of a second' DIGITSDECFRACTIONSECOND: 'One or more digits representing a decimal fraction of a second'
FOURDIGITYEAR: 'jaar (yyyy)' FOURDIGITYEAR: 'jaar (yyyy)'
FULLNAMEMONTH: 'Full name of month (e.g. June)' FULLNAMEMONTH: 'Volledige naam van de maand (Bijv. Juni)'
HOURNOLEADING: 'Hour without leading zero' HOURNOLEADING: 'Uur zonder voorloopnul'
MINUTENOLEADING: 'Minute without leading zero' MINUTENOLEADING: 'Minuut zonder voorloopnul'
MONTHNOLEADING: 'Dag van de maand zonder voorloop-nul' MONTHNOLEADING: 'Dag van de maand zonder voorloop-nul'
Preview: Voorbeeld Preview: Voorbeeld
SHORTMONTH: 'Short name of month (e.g. Jun)' SHORTMONTH: 'Korte naam van de maand (Bijv. Jun)'
TOGGLEHELP: 'Hulp weergeven / verbergen' TOGGLEHELP: 'Hulp weergeven / verbergen'
TWODIGITDAY: 'Dag van de maand (met voorloop-nul)' TWODIGITDAY: 'Dag van de maand (met voorloop-nul)'
TWODIGITHOUR: 'Twee cijfer van het uur (00 tot 23)' TWODIGITHOUR: 'Twee cijfer van het uur (00 tot 23)'
TWODIGITMINUTE: 'Minuten met voorloop-nul (00 tot 59)' TWODIGITMINUTE: 'Minuten met voorloop-nul (00 tot 59)'
TWODIGITMONTH: 'Two-digit month (01=January, etc.)' TWODIGITMONTH: 'Maand in twee cijfers (01 = januari, enz.)'
TWODIGITSECOND: 'Two digits of second (00 through 59)' TWODIGITSECOND: 'Twee cijfer van het uur (00 tot 23)'
TWODIGITYEAR: 'Twee-cijferig jaar' TWODIGITYEAR: 'Twee-cijferig jaar'
MemberImportForm: MemberImportForm:
Help1: '<p>Importeer leden in <em>CSV</em> formaat (Kommagescheiden bestandsformaat). <small><a href="#" class="toggle-advanced">Toon geavanceerd gebruik</a></small></p>' Help1: '<p>Importeer leden in <em>CSV</em> formaat (Kommagescheiden bestandsformaat). <small><a href="#" class="toggle-advanced">Toon geavanceerd gebruik</a></small></p>'
@ -413,27 +413,27 @@ nl:
ResultCreated: '{count} leden aangemaakt' ResultCreated: '{count} leden aangemaakt'
ResultDeleted: '%d leden verwijderd' ResultDeleted: '%d leden verwijderd'
ResultNone: 'Geen wijzingen' ResultNone: 'Geen wijzingen'
ResultUpdated: 'Updated {count} members' ResultUpdated: '{count} leden bijgewerkt'
MemberPassword: MemberPassword:
PLURALNAME: 'Member Passwords' PLURALNAME: Gebruikerswachtwoorden
SINGULARNAME: 'Member Password' SINGULARNAME: Gebruikerswachtwoord
MemberTableField: null MemberTableField: null
ModelAdmin: ModelAdmin:
DELETE: Verwijderen DELETE: Verwijderen
DELETEDRECORDS: 'Deleted {count} records.' DELETEDRECORDS: '{count} records verwijderd'
EMPTYBEFOREIMPORT: 'Database legen voor importeren' EMPTYBEFOREIMPORT: 'Database legen voor importeren'
IMPORT: 'Importeren vanuit CSV' IMPORT: 'Importeren vanuit CSV'
IMPORTEDRECORDS: 'Imported {count} records.' IMPORTEDRECORDS: '{count} records geïmporteerd'
NOCSVFILE: 'Selecteer een CSV bestand op uw computer om te importeren' NOCSVFILE: 'Selecteer een CSV bestand op uw computer om te importeren'
NOIMPORT: 'Niks om te importeren' NOIMPORT: 'Niks om te importeren'
RESET: Herstel RESET: Herstel
Title: 'Data Models' Title: 'Gegevens modellen'
UPDATEDRECORDS: 'Updated {count} records.' UPDATEDRECORDS: '{count} records bijgewerkt'
ModelAdmin_ImportSpec.ss: ModelAdmin_ImportSpec.ss:
IMPORTSPECFIELDS: 'Database columns' IMPORTSPECFIELDS: 'Database kolommen'
IMPORTSPECLINK: 'Show Specification for %s' IMPORTSPECLINK: 'Toon specificaties van %s'
IMPORTSPECRELATIONS: Relations IMPORTSPECRELATIONS: Relaties
IMPORTSPECTITLE: 'Specification for %s' IMPORTSPECTITLE: 'Specificaties van %s'
ModelAdmin_Tools.ss: ModelAdmin_Tools.ss:
FILTER: Filter FILTER: Filter
IMPORT: Importeer IMPORT: Importeer
@ -448,28 +448,28 @@ nl:
NumericField: NumericField:
VALIDATION: '''{value}'' is geen getal. Dit velt accepteert alleen getallen.' VALIDATION: '''{value}'' is geen getal. Dit velt accepteert alleen getallen.'
Pagination: Pagination:
Page: Page Page: Pagina
View: View View: Bekijk
Permission: Permission:
AdminGroup: Beheerder AdminGroup: Beheerder
CMS_ACCESS_CATEGORY: 'CMS Toegang' CMS_ACCESS_CATEGORY: 'CMS Toegang'
FULLADMINRIGHTS: 'Volledige admin rechten' FULLADMINRIGHTS: 'Volledige admin rechten'
FULLADMINRIGHTS_HELP: 'Impliceert en overstemt alle andere toegewezen rechten.' FULLADMINRIGHTS_HELP: 'Impliceert en overstemt alle andere toegewezen rechten.'
PLURALNAME: Permissions PLURALNAME: Machtigingen
SINGULARNAME: Permission SINGULARNAME: Machtiging
PermissionCheckboxSetField: PermissionCheckboxSetField:
AssignedTo: 'toegewezen aan "{title}"' AssignedTo: 'toegewezen aan "{title}"'
FromGroup: 'inherited from group "{title}"' FromGroup: 'inherited from group "{title}"'
FromRole: 'inherited from role "{title}"' FromRole: 'inherited from role "{title}"'
FromRoleOnGroup: 'geërfd van rol "%s" in groep "%s"' FromRoleOnGroup: 'geërfd van rol "%s" in groep "%s"'
PermissionRole: PermissionRole:
OnlyAdminCanApply: 'Only admin can apply' OnlyAdminCanApply: 'Alleen admin kan doorvoeren'
PLURALNAME: Roles PLURALNAME: Rollen
SINGULARNAME: Role SINGULARNAME: Rol
Title: Titel Title: Titel
PermissionRoleCode: PermissionRoleCode:
PLURALNAME: 'Permission Role Cods' PLURALNAME: 'Machtigingen rol codes'
SINGULARNAME: 'Permission Role Code' SINGULARNAME: 'Machtigingen rol code'
Permissions: Permissions:
PERMISSIONS_CATEGORY: 'Rollen en toegangsrechten' PERMISSIONS_CATEGORY: 'Rollen en toegangsrechten'
UserPermissionsIntro: 'Assigning groups to this user will adjust the permissions they have. See the groups section for details of permissions on individual groups.' UserPermissionsIntro: 'Assigning groups to this user will adjust the permissions they have. See the groups section for details of permissions on individual groups.'
@ -477,7 +477,7 @@ nl:
VALIDATION: 'Voer een geldig telefoonnummer in' VALIDATION: 'Voer een geldig telefoonnummer in'
RelationComplexTableField.ss: RelationComplexTableField.ss:
ADD: Toevoegen ADD: Toevoegen
CSVEXPORT: 'Export to CSV' CSVEXPORT: 'Exporteren naar CSV'
NOTFOUND: 'Geen items gevonden.' NOTFOUND: 'Geen items gevonden.'
Security: Security:
ALREADYLOGGEDIN: 'Je hebt niet de juiste rechten, om deze pagina te kunnen bekijken. Als je een ander account met de juiste rechten hebt, kun je hier <a href="%s">opnieuw inloggen</a>.' ALREADYLOGGEDIN: 'Je hebt niet de juiste rechten, om deze pagina te kunnen bekijken. Als je een ander account met de juiste rechten hebt, kun je hier <a href="%s">opnieuw inloggen</a>.'
@ -489,10 +489,10 @@ nl:
LOGGEDOUT: 'U bent uitgelogd. Als U weer wilt inloggen kunt U Uw gegevens hier beneden invoeren.' LOGGEDOUT: 'U bent uitgelogd. Als U weer wilt inloggen kunt U Uw gegevens hier beneden invoeren.'
LOGIN: 'Meld aan' LOGIN: 'Meld aan'
NOTEPAGESECURED: 'Deze pagina is beveiligd. Voer Uw gegevens in en U wordt automatisch doorgestuurd.' NOTEPAGESECURED: 'Deze pagina is beveiligd. Voer Uw gegevens in en U wordt automatisch doorgestuurd.'
NOTERESETLINKINVALID: '<p>The password reset link is invalid or expired.</p><p>You can request a new one <a href="{link1}">here</a> or change your password after you <a href="{link2}">logged in</a>.</p>' NOTERESETLINKINVALID: '<p>De link om uw wachtwoord te kunnen wijzigen is niet meer geldig.</p><p>U kunt het <a href="{link1}">opnieuw proberen</a> of uw wachtwoord aanpassen door <a href="{link2}">in te loggen</a>.</p>'
NOTERESETPASSWORD: 'Voer Uw emailadres in en we zenden U een link waarmee U Uw wachtwoord opnieuw kunt aanmaken' NOTERESETPASSWORD: 'Voer Uw emailadres in en we zenden U een link waarmee U Uw wachtwoord opnieuw kunt aanmaken'
PASSWORDSENTHEADER: 'Password reset link sent to ''{email}''' PASSWORDSENTHEADER: 'Wachtwoord herstel link verzonden naar {email}'
PASSWORDSENTTEXT: 'Thank you! A reset link has been sent to ''{email}'', provided an account exists for this email address.' PASSWORDSENTTEXT: 'Bedankt! Er is een link verstuurt naar {email} om uw wachtwoord te herstellen.'
SecurityAdmin: SecurityAdmin:
ACCESS_HELP: 'Bevoegdheid voor bekijken, toevoegen en bewerken van leden, en toewijzen van rechten en rollen aan hen.' ACCESS_HELP: 'Bevoegdheid voor bekijken, toevoegen en bewerken van leden, en toewijzen van rechten en rollen aan hen.'
APPLY_ROLES: 'Pas rollen toe aan groepen' APPLY_ROLES: 'Pas rollen toe aan groepen'
@ -500,7 +500,7 @@ nl:
EDITPERMISSIONS: 'Bewerk rechten en IP-adressen bij elke groep' EDITPERMISSIONS: 'Bewerk rechten en IP-adressen bij elke groep'
EDITPERMISSIONS_HELP: 'Bewerkingsmogelijkheid van Rechten en IP adressen voor groepen. Heeft rechten voor "Beveiligingsectie" nodig.' EDITPERMISSIONS_HELP: 'Bewerkingsmogelijkheid van Rechten en IP adressen voor groepen. Heeft rechten voor "Beveiligingsectie" nodig.'
GROUPNAME: 'Groep naam' GROUPNAME: 'Groep naam'
IMPORTGROUPS: Groepen IMPORTGROUPS: 'Importeer groepen'
IMPORTUSERS: 'Importeer gebruikers' IMPORTUSERS: 'Importeer gebruikers'
MEMBERS: Leden MEMBERS: Leden
MENUTITLE: Beveiliging MENUTITLE: Beveiliging
@ -521,10 +521,10 @@ nl:
SiteTree: SiteTree:
TABMAIN: Hoofdgedeelte TABMAIN: Hoofdgedeelte
TableField: TableField:
ISREQUIRED: 'In %s ''%s'' is required' ISREQUIRED: 'In %s ''%s'' is verplicht'
TableField.ss: TableField.ss:
ADD: 'Nieuwe rij toevoegen' ADD: 'Nieuwe rij toevoegen'
ADDITEM: 'Add %s' ADDITEM: '%s toevoegen'
TableListField: TableListField:
CSVEXPORT: 'Exporteer naar CSV' CSVEXPORT: 'Exporteer naar CSV'
PRINT: Afdrukken PRINT: Afdrukken
@ -535,42 +535,42 @@ nl:
SORTASC: 'Sorteer in oplopende volgorde' SORTASC: 'Sorteer in oplopende volgorde'
SORTDESC: 'Sorteer in aflopende volgorde' SORTDESC: 'Sorteer in aflopende volgorde'
TableListField_PageControls.ss: TableListField_PageControls.ss:
DISPLAYING: Displaying DISPLAYING: Tonen
OF: of OF: van
TO: to TO: naar
VIEWFIRST: 'Bekijk eerste' VIEWFIRST: 'Bekijk eerste'
VIEWLAST: 'Bekijk laatste' VIEWLAST: 'Bekijk laatste'
VIEWNEXT: 'Bekijk volgende' VIEWNEXT: 'Bekijk volgende'
VIEWPREVIOUS: 'Bekijk vorige' VIEWPREVIOUS: 'Bekijk vorige'
TimeField: TimeField:
VALIDATEFORMAT: 'Please enter a valid time format ({format})' VALIDATEFORMAT: 'Vul een geldige datumformaat in ({format})'
ToggleField: ToggleField:
LESS: minder LESS: minder
MORE: meer MORE: meer
UploadField: UploadField:
ATTACHFILE: 'Voeg een bestand toe' ATTACHFILE: 'Voeg een bestand toe'
ATTACHFILES: 'Voeg bestanden toe' ATTACHFILES: 'Voeg bestanden toe'
AttachFile: 'Voeg bestanden toe' AttachFile: 'Voeg bestand(en) toe'
DELETE: 'Volledig verwijderen' DELETE: 'Volledig verwijderen'
DELETEINFO: 'Verwijder dit bestand uit bestandsopslag van de website.' DELETEINFO: 'Verwijder dit bestand uit bestandsopslag van de website.'
DOEDIT: Bewaar DOEDIT: Opslaan
DROPFILE: 'Bestand hiernaar toe slepen' DROPFILE: 'Bestand hiernaar toe slepen'
DROPFILES: 'Sleep hier je bestanden' DROPFILES: 'Sleep hier je bestanden'
Dimensions: Dimensions Dimensions: Afmeting
EDIT: Bewerken EDIT: Bewerken
EDITINFO: 'Bewerk dit bestand' EDITINFO: 'Bewerk dit bestand'
FIELDNOTSET: 'Bestandsinformatie niet gevonden' FIELDNOTSET: 'Bestandsinformatie niet gevonden'
FROMCOMPUTER: 'Vanaf computer' FROMCOMPUTER: 'Vanaf computer'
FROMCOMPUTERINFO: 'Select from files' FROMCOMPUTERINFO: 'Kies uit bestanden'
FROMFILES: 'Bestaande bestanden' FROMFILES: 'Bestaande bestanden'
HOTLINKINFO: 'Info: This image will be hotlinked. Please ensure you have permissions from the original site creator to do so.' HOTLINKINFO: 'Info: Deze afbeelding wordt hotlinked. Zorg ervoor dat u de machtigingen van de oorspronkelijke site maker om dit te doen.'
MAXNUMBEROFFILES: 'Maximale aantal van {count} bestand(en) overschreden.' MAXNUMBEROFFILES: 'Maximale aantal van {count} bestand(en) overschreden.'
MAXNUMBEROFFILESSHORT: 'Can only upload {count} files' MAXNUMBEROFFILESSHORT: 'Kan alleen {count} bestanden uploaden'
REMOVE: Verwijder REMOVE: Verwijder
REMOVEERROR: 'Fout bij verwijderen' REMOVEERROR: 'Fout bij verwijderen'
REMOVEINFO: 'Verwijder (ontkoppel) dit bestand, maar behoud het in bestandsopslag van de website.' REMOVEINFO: 'Verwijder (ontkoppel) dit bestand, maar behoud het in bestandsopslag van de website.'
STARTALL: 'Start alles' STARTALL: 'Start alle'
STARTALLINFO: 'Start all uploads' STARTALLINFO: 'Start alle'
Saved: 'Succesvol opgeslagen' Saved: Opgeslagen
Versioned: Versioned:
has_many_Versions: Versies has_many_Versions: Versies

View File

@ -91,7 +91,7 @@ pa:
SORTASC: 'Sort ascending' SORTASC: 'Sort ascending'
SORTDESC: 'Sort descending' SORTDESC: 'Sort descending'
ComplexTableField_popup.ss: ComplexTableField_popup.ss:
NEXT: 'ਅਗਲਾ' NEXT: ਅਗਲਾ
PREVIOUS: ਪਿਛਲਾ PREVIOUS: ਪਿਛਲਾ
ConfirmedPasswordField: ConfirmedPasswordField:
ATLEAST: 'Passwords must be at least {min} characters long.' ATLEAST: 'Passwords must be at least {min} characters long.'

View File

@ -1,6 +1,6 @@
pl: pl:
AssetAdmin: AssetAdmin:
ALLOWEDEXTS: 'Allowed extensions' ALLOWEDEXTS: 'Dopuszczalne rozszerzenia'
NEWFOLDER: NowyFolder NEWFOLDER: NowyFolder
AssetTableField: AssetTableField:
CREATED: 'Po raz pierwszy wgrany' CREATED: 'Po raz pierwszy wgrany'
@ -71,7 +71,7 @@ pl:
ACCESSALLINTERFACESHELP: 'Nadpisuje bardziej specyficzne ustawienia dostępu.' ACCESSALLINTERFACESHELP: 'Nadpisuje bardziej specyficzne ustawienia dostępu.'
SAVE: Zapisz SAVE: Zapisz
CMSProfileController: CMSProfileController:
MENUTITLE: 'My Profile' MENUTITLE: 'Mój profil'
ChangePasswordEmail.ss: ChangePasswordEmail.ss:
CHANGEPASSWORDTEXT1: 'Zmieniłeś hasło na' CHANGEPASSWORDTEXT1: 'Zmieniłeś hasło na'
CHANGEPASSWORDTEXT2: 'Teraz możesz używać następujących danych do logowania się:' CHANGEPASSWORDTEXT2: 'Teraz możesz używać następujących danych do logowania się:'
@ -115,8 +115,8 @@ pl:
HOURS: godziny HOURS: godziny
MIN: min MIN: min
MINS: minuty MINS: minuty
MONTH: 'miesiąc' MONTH: miesiąc
MONTHS: 'miesiące' MONTHS: miesiące
SEC: sekunda SEC: sekunda
SECS: sekundy SECS: sekundy
TIMEDIFFAGO: '{difference} temu' TIMEDIFFAGO: '{difference} temu'
@ -143,14 +143,14 @@ pl:
Enum: Enum:
ANY: Jakikolwiek ANY: Jakikolwiek
File: File:
AviType: 'AVI video file' AviType: 'Plik video AVI'
Content: Zawartość Content: Zawartość
CssType: 'Plik CSS' CssType: 'Plik CSS'
DmgType: 'Obraz dysku Apple' DmgType: 'Obraz dysku Apple'
DocType: 'Dokument Worda' DocType: 'Dokument Worda'
Filename: 'Nazwa pliku' Filename: 'Nazwa pliku'
GifType: 'Obrazek GIF, dobry do diagramów' GifType: 'Obrazek GIF, dobry do diagramów'
GzType: 'GZIP compressed file' GzType: 'Plik skompresowany GZIP'
HtlType: 'Plik HTML' HtlType: 'Plik HTML'
HtmlType: 'Plik HTML' HtmlType: 'Plik HTML'
INVALIDEXTENSION: 'Rozszerzenie niedozwolone (dozwolone: {extensions})' INVALIDEXTENSION: 'Rozszerzenie niedozwolone (dozwolone: {extensions})'
@ -159,7 +159,7 @@ pl:
JpgType: 'Obrazek JPEG, dobry do zdjęć' JpgType: 'Obrazek JPEG, dobry do zdjęć'
JsType: 'Plik JavaScript' JsType: 'Plik JavaScript'
Mp3Type: 'Plik MP3' Mp3Type: 'Plik MP3'
MpgType: 'MPEG video file' MpgType: 'Plik video MPEG'
NOFILESIZE: 'Rozmiar pliku to zero bajtów.' NOFILESIZE: 'Rozmiar pliku to zero bajtów.'
NOVALIDUPLOAD: 'Plik nie został poprawnie przesłany' NOVALIDUPLOAD: 'Plik nie został poprawnie przesłany'
Name: Nazwa Name: Nazwa
@ -171,8 +171,8 @@ pl:
TOOLARGESHORT: 'Rozmiar pliku przekracza {size}' TOOLARGESHORT: 'Rozmiar pliku przekracza {size}'
TiffType: 'Plik TIFF' TiffType: 'Plik TIFF'
Title: Tytuł Title: Tytuł
WavType: 'WAV audo file' WavType: 'Plik audio WAV'
XlsType: 'Excel spreadsheet' XlsType: 'Arkusz kalkulacyjny Excel'
ZipType: 'Plik ZIP, skompresowany' ZipType: 'Plik ZIP, skompresowany'
FileIFrameField: FileIFrameField:
ATTACH: 'Dołącz {type}' ATTACH: 'Dołącz {type}'
@ -328,7 +328,7 @@ pl:
PERMALREADY: 'Niestety nie masz dostępu do tej części CMS. Jeśli chcesz zalogować się jako ktoś inny, zrób to poniżej' PERMALREADY: 'Niestety nie masz dostępu do tej części CMS. Jeśli chcesz zalogować się jako ktoś inny, zrób to poniżej'
PERMDEFAULT: 'Proszę wybrać metodę identyfikacji i wpisać swoje dane, aby uruchomić CMSa.' PERMDEFAULT: 'Proszę wybrać metodę identyfikacji i wpisać swoje dane, aby uruchomić CMSa.'
PLEASESAVE: 'Proszę zapisać stronę. Ta strona nie mogła zostać uaktualniona, ponieważ nie została jeszcze zapisana.' PLEASESAVE: 'Proszę zapisać stronę. Ta strona nie mogła zostać uaktualniona, ponieważ nie została jeszcze zapisana.'
PreviewButton: 'Podgląd' PreviewButton: Podgląd
REORGANISATIONSUCCESSFUL: 'Pomyślnie zreorganizowano drzewo serwisu.' REORGANISATIONSUCCESSFUL: 'Pomyślnie zreorganizowano drzewo serwisu.'
SAVEDUP: Zapisano. SAVEDUP: Zapisano.
VersionUnknown: nieznany VersionUnknown: nieznany
@ -347,7 +347,7 @@ pl:
BUTTONLOGIN: Zaloguj BUTTONLOGIN: Zaloguj
BUTTONLOGINOTHER: 'Zaloguj jako ktoś inny' BUTTONLOGINOTHER: 'Zaloguj jako ktoś inny'
BUTTONLOSTPASSWORD: 'Zgubiłem hasło' BUTTONLOSTPASSWORD: 'Zgubiłem hasło'
CANTEDIT: 'You don''t have permission to do that' CANTEDIT: 'Nie posiadasz odpowiednich uprawnień.'
CONFIRMNEWPASSWORD: 'Potwierdź nowe hasło' CONFIRMNEWPASSWORD: 'Potwierdź nowe hasło'
CONFIRMPASSWORD: 'Potwierdź hasło' CONFIRMPASSWORD: 'Potwierdź hasło'
DATEFORMAT: 'Format daty' DATEFORMAT: 'Format daty'
@ -398,7 +398,7 @@ pl:
HOURNOLEADING: 'Godzina bez wiodącego zera' HOURNOLEADING: 'Godzina bez wiodącego zera'
MINUTENOLEADING: 'Minuta bez wiodącego zera' MINUTENOLEADING: 'Minuta bez wiodącego zera'
MONTHNOLEADING: 'Miesiąc bez wiodącego zera' MONTHNOLEADING: 'Miesiąc bez wiodącego zera'
Preview: 'Podgląd' Preview: Podgląd
SHORTMONTH: 'Skrócona nazwa miesiąca (np. Cze)' SHORTMONTH: 'Skrócona nazwa miesiąca (np. Cze)'
TOGGLEHELP: 'Przełącz pomoc formatowania' TOGGLEHELP: 'Przełącz pomoc formatowania'
TWODIGITDAY: 'Dwucyfrowy dzień miesiąca' TWODIGITDAY: 'Dwucyfrowy dzień miesiąca'
@ -421,7 +421,7 @@ pl:
ModelAdmin: ModelAdmin:
DELETE: Usuń DELETE: Usuń
DELETEDRECORDS: 'Usunięto rekordów: {count}' DELETEDRECORDS: 'Usunięto rekordów: {count}'
EMPTYBEFOREIMPORT: 'Clear Database before import' EMPTYBEFOREIMPORT: 'Wyczyść bazę danych przed importowaniem'
IMPORT: 'Import z CSV' IMPORT: 'Import z CSV'
IMPORTEDRECORDS: 'Zaimportowano rekordów: {count}' IMPORTEDRECORDS: 'Zaimportowano rekordów: {count}'
NOCSVFILE: 'Wybierz plik CSV do zaimportowania' NOCSVFILE: 'Wybierz plik CSV do zaimportowania'

View File

@ -4,12 +4,12 @@ ru:
NEWFOLDER: 'Новая папка' NEWFOLDER: 'Новая папка'
AssetTableField: AssetTableField:
CREATED: 'Первая загрузка' CREATED: 'Первая загрузка'
DIM: 'Размеры' DIM: Размеры
FILENAME: 'Имя файла' FILENAME: 'Имя файла'
FOLDER: Папка FOLDER: Папка
LASTEDIT: 'Последнее изменение' LASTEDIT: 'Последнее изменение'
OWNER: Владелец OWNER: Владелец
SIZE: 'Размер' SIZE: Размер
TITLE: Название TITLE: Название
TYPE: Тип TYPE: Тип
URL: URL URL: URL
@ -69,7 +69,7 @@ ru:
ACCESS: 'Доступ к разделу ''{title}''' ACCESS: 'Доступ к разделу ''{title}'''
ACCESSALLINTERFACES: 'Доступ ко всему интерфейсу CMS' ACCESSALLINTERFACES: 'Доступ ко всему интерфейсу CMS'
ACCESSALLINTERFACESHELP: 'Отменяет индивидуальные настройки прав доступа.' ACCESSALLINTERFACESHELP: 'Отменяет индивидуальные настройки прав доступа.'
SAVE: 'Сохранить' SAVE: Сохранить
CMSProfileController: CMSProfileController:
MENUTITLE: 'Мой профиль' MENUTITLE: 'Мой профиль'
ChangePasswordEmail.ss: ChangePasswordEmail.ss:
@ -236,7 +236,7 @@ ru:
Delete: Удалить Delete: Удалить
DeletePermissionsFailure: 'Нет прав на удаление' DeletePermissionsFailure: 'Нет прав на удаление'
Deleted: 'Удалено %s %s' Deleted: 'Удалено %s %s'
Save: 'Сохранить' Save: Сохранить
Saved: 'Сохранено %s %s' Saved: 'Сохранено %s %s'
GridFieldItemEditView.ss: null GridFieldItemEditView.ss: null
Group: Group:
@ -288,7 +288,7 @@ ru:
IMAGEALT: 'Альтернативный текст (alt)' IMAGEALT: 'Альтернативный текст (alt)'
IMAGEALTTEXT: 'Альтернативный текст (alt) - показывается, если изображение недоступно' IMAGEALTTEXT: 'Альтернативный текст (alt) - показывается, если изображение недоступно'
IMAGEALTTEXTDESC: 'Передается программе чтения экрана или отображается, если изображение недоступно' IMAGEALTTEXTDESC: 'Передается программе чтения экрана или отображается, если изображение недоступно'
IMAGEDIMENSIONS: 'Размеры' IMAGEDIMENSIONS: Размеры
IMAGEHEIGHTPX: Высота IMAGEHEIGHTPX: Высота
IMAGETITLE: 'Текст (всплывающая подсказка) - для дополнительной информации об изображении' IMAGETITLE: 'Текст (всплывающая подсказка) - для дополнительной информации об изображении'
IMAGETITLETEXT: 'Текст (всплывающая подсказка)' IMAGETITLETEXT: 'Текст (всплывающая подсказка)'
@ -330,11 +330,11 @@ ru:
PLEASESAVE: 'Пожалуйста, сохраните страницу: ее нельзя обновить, т.к. она еще не была сохранена.' PLEASESAVE: 'Пожалуйста, сохраните страницу: ее нельзя обновить, т.к. она еще не была сохранена.'
PreviewButton: Просмотр PreviewButton: Просмотр
REORGANISATIONSUCCESSFUL: 'Древесная структура сайта успешно реорганизована.' REORGANISATIONSUCCESSFUL: 'Древесная структура сайта успешно реорганизована.'
SAVEDUP: 'Сохранено.' SAVEDUP: Сохранено.
VersionUnknown: неизвестно VersionUnknown: неизвестно
LeftAndMain_Menu.ss: LeftAndMain_Menu.ss:
Hello: Здравствуйте Hello: Здравствуйте
LOGOUT: 'Выход' LOGOUT: Выход
LoginAttempt: LoginAttempt:
Email: Email Email: Email
IP: IP-адрес IP: IP-адрес
@ -464,8 +464,8 @@ ru:
FromRoleOnGroup: 'перенято из роли "%s" для группы "%s"' FromRoleOnGroup: 'перенято из роли "%s" для группы "%s"'
PermissionRole: PermissionRole:
OnlyAdminCanApply: 'Может применяться только администратором' OnlyAdminCanApply: 'Может применяться только администратором'
PLURALNAME: 'Роли' PLURALNAME: Роли
SINGULARNAME: 'Роль' SINGULARNAME: Роль
Title: Название Title: Название
PermissionRoleCode: PermissionRoleCode:
PLURALNAME: 'Коды ролей доступа' PLURALNAME: 'Коды ролей доступа'
@ -487,7 +487,7 @@ ru:
ENTERNEWPASSWORD: 'Пожалуйста, введите новый пароль.' ENTERNEWPASSWORD: 'Пожалуйста, введите новый пароль.'
ERRORPASSWORDPERMISSION: 'Вы должны войти в систему, чтобы изменить Ваш пароль!' ERRORPASSWORDPERMISSION: 'Вы должны войти в систему, чтобы изменить Ваш пароль!'
LOGGEDOUT: 'Вы вышли. Если Вы хотите войти снова, введите ваши учетные данные ниже.' LOGGEDOUT: 'Вы вышли. Если Вы хотите войти снова, введите ваши учетные данные ниже.'
LOGIN: 'Вход' LOGIN: Вход
NOTEPAGESECURED: 'Эта страница защищена. Пожалуйста, введите свои учетные данные для входа.' NOTEPAGESECURED: 'Эта страница защищена. Пожалуйста, введите свои учетные данные для входа.'
NOTERESETLINKINVALID: '<p>Неверная ссылка переустановки пароля или время действия ссылки истекло.</p><p>Вы можете повторно запросить ссылку, щелкнув <a href="{link1}">здесь</a>, или поменять пароль, <a href="{link2}">войдя в систему</a>.</p> ' NOTERESETLINKINVALID: '<p>Неверная ссылка переустановки пароля или время действия ссылки истекло.</p><p>Вы можете повторно запросить ссылку, щелкнув <a href="{link1}">здесь</a>, или поменять пароль, <a href="{link2}">войдя в систему</a>.</p> '
NOTERESETPASSWORD: 'Введите Ваш адрес email, и Вам будет отправлена ссылка, по которой Вы сможете переустановить свой пароль' NOTERESETPASSWORD: 'Введите Ваш адрес email, и Вам будет отправлена ссылка, по которой Вы сможете переустановить свой пароль'
@ -507,15 +507,15 @@ ru:
MemberListCaution: 'Внимание: при удалении участников из этого списка они будут удалены из всех групп и из базы данных ' MemberListCaution: 'Внимание: при удалении участников из этого списка они будут удалены из всех групп и из базы данных '
NEWGROUP: 'Новая группа' NEWGROUP: 'Новая группа'
PERMISSIONS: 'Права доступа' PERMISSIONS: 'Права доступа'
ROLES: 'Роли' ROLES: Роли
ROLESDESCRIPTION: 'Роли представляют собой сочетания различных прав доступа, которые могут быть присвоены группам.<br />При необходимости они наследуются от групп более высокого уровня.' ROLESDESCRIPTION: 'Роли представляют собой сочетания различных прав доступа, которые могут быть присвоены группам.<br />При необходимости они наследуются от групп более высокого уровня.'
TABROLES: 'Роли' TABROLES: Роли
Users: Пользователи Users: Пользователи
SecurityAdmin_MemberImportForm: SecurityAdmin_MemberImportForm:
BtnImport: 'Импорт из CSV' BtnImport: 'Импорт из CSV'
FileFieldLabel: 'Файл CSV <small>(Допустимые расширения: *.csv)</small>' FileFieldLabel: 'Файл CSV <small>(Допустимые расширения: *.csv)</small>'
SilverStripeNavigator: SilverStripeNavigator:
Edit: 'Редактировать' Edit: Редактировать
SimpleImageField: SimpleImageField:
NOUPLOAD: 'Не загружено ни одного изображения' NOUPLOAD: 'Не загружено ни одного изображения'
SiteTree: SiteTree:
@ -553,11 +553,11 @@ ru:
AttachFile: 'Прикрепить файл(ы)' AttachFile: 'Прикрепить файл(ы)'
DELETE: 'Удалить из файлов' DELETE: 'Удалить из файлов'
DELETEINFO: 'Окончательно удалить этот файл с сервера' DELETEINFO: 'Окончательно удалить этот файл с сервера'
DOEDIT: 'Сохранить' DOEDIT: Сохранить
DROPFILE: 'перетащите файл сюда' DROPFILE: 'перетащите файл сюда'
DROPFILES: 'перетащить файлы' DROPFILES: 'перетащить файлы'
Dimensions: 'Размеры' Dimensions: Размеры
EDIT: 'Редактировать' EDIT: Редактировать
EDITINFO: 'Редактировать этот файл' EDITINFO: 'Редактировать этот файл'
FIELDNOTSET: 'Информация о файле не найдена' FIELDNOTSET: 'Информация о файле не найдена'
FROMCOMPUTER: 'С диска' FROMCOMPUTER: 'С диска'
@ -571,6 +571,6 @@ ru:
REMOVEINFO: 'Удалить файл отсюда, но не удалять с сервера' REMOVEINFO: 'Удалить файл отсюда, но не удалять с сервера'
STARTALL: 'Стартовать все' STARTALL: 'Стартовать все'
STARTALLINFO: 'Стартовать все загрузки' STARTALLINFO: 'Стартовать все загрузки'
Saved: 'Сохранено' Saved: Сохранено
Versioned: Versioned:
has_many_Versions: Версии has_many_Versions: Версии

View File

@ -99,7 +99,7 @@ si:
MAXIMUM: 'Passwords must be at most {max} characters long.' MAXIMUM: 'Passwords must be at most {max} characters long.'
SHOWONCLICKTITLE: 'මුර පදය වෙනස් කිරීම' SHOWONCLICKTITLE: 'මුර පදය වෙනස් කිරීම'
CreditCardField: CreditCardField:
FIRST: 'පළමු' FIRST: පළමු
FOURTH: fourth FOURTH: fourth
SECOND: දෙවන SECOND: දෙවන
THIRD: third THIRD: third
@ -121,8 +121,8 @@ si:
SECS: 'තත්පර ' SECS: 'තත්පර '
TIMEDIFFAGO: '{difference} ago' TIMEDIFFAGO: '{difference} ago'
TIMEDIFFIN: 'in {difference}' TIMEDIFFIN: 'in {difference}'
YEAR: 'අවුරුද්ද' YEAR: අවුරුද්ද
YEARS: 'අවුරුදු' YEARS: අවුරුදු
DateField: DateField:
NOTSET: 'not set' NOTSET: 'not set'
TODAY: today TODAY: today
@ -253,7 +253,7 @@ si:
RolesAddEditLink: 'Manage roles' RolesAddEditLink: 'Manage roles'
SINGULARNAME: Group SINGULARNAME: Group
Sort: 'Sort Order' Sort: 'Sort Order'
has_many_Permissions: 'අවසර' has_many_Permissions: අවසර
many_many_Members: සාමාජිකයින් many_many_Members: සාමාජිකයින්
GroupImportForm: GroupImportForm:
Help1: '<p>Import one or more groups in <em>CSV</em> format (comma-separated values). <small><a href="#" class="toggle-advanced">Show advanced usage</a></small></p>' Help1: '<p>Import one or more groups in <em>CSV</em> format (comma-separated values). <small><a href="#" class="toggle-advanced">Show advanced usage</a></small></p>'
@ -545,7 +545,7 @@ si:
TimeField: TimeField:
VALIDATEFORMAT: 'Please enter a valid time format ({format})' VALIDATEFORMAT: 'Please enter a valid time format ({format})'
ToggleField: ToggleField:
LESS: 'අඩු' LESS: අඩු
MORE: වැඩි MORE: වැඩි
UploadField: UploadField:
ATTACHFILE: 'Attach a file' ATTACHFILE: 'Attach a file'

View File

@ -293,7 +293,7 @@ sk:
IMAGETITLE: 'Text titulky (tooltip) - pre doplňujúce informácie o obrázku' IMAGETITLE: 'Text titulky (tooltip) - pre doplňujúce informácie o obrázku'
IMAGETITLETEXT: 'Text titulky (tooltip)' IMAGETITLETEXT: 'Text titulky (tooltip)'
IMAGETITLETEXTDESC: 'Pre doplňujúce informácie o obrázku' IMAGETITLETEXTDESC: 'Pre doplňujúce informácie o obrázku'
IMAGEWIDTHPX: 'Šírka' IMAGEWIDTHPX: Šírka
INSERTMEDIA: 'Vložiť média' INSERTMEDIA: 'Vložiť média'
LINK: 'Vložiť/upraviť odkaz na zvýraznený text' LINK: 'Vložiť/upraviť odkaz na zvýraznený text'
LINKANCHOR: 'Odkaz na tejto stranke' LINKANCHOR: 'Odkaz na tejto stranke'

View File

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

View File

@ -92,7 +92,7 @@ sr:
SORTDESC: 'Сортирају у опадајућем поретку' SORTDESC: 'Сортирају у опадајућем поретку'
ComplexTableField_popup.ss: ComplexTableField_popup.ss:
NEXT: Следеће NEXT: Следеће
PREVIOUS: 'Претходно' PREVIOUS: Претходно
ConfirmedPasswordField: ConfirmedPasswordField:
ATLEAST: 'Passwords must be at least {min} characters long.' ATLEAST: 'Passwords must be at least {min} characters long.'
BETWEEN: 'Passwords must be {min} to {max} characters long.' BETWEEN: 'Passwords must be {min} to {max} characters long.'

View File

@ -321,7 +321,7 @@ sv:
LeftAndMain: LeftAndMain:
CANT_REORGANISE: 'Du har inte tillstånd att ändra sidor på toppnivå. Dina ändringar har inte sparats.' CANT_REORGANISE: 'Du har inte tillstånd att ändra sidor på toppnivå. Dina ändringar har inte sparats.'
DELETED: Raderad DELETED: Raderad
DropdownBatchActionsDefault: 'Åtgärder' DropdownBatchActionsDefault: Åtgärder
HELP: Hjälp HELP: Hjälp
PAGETYPE: Sidtyp PAGETYPE: Sidtyp
PERMAGAIN: 'Du har blivit utloggad. Om du vill logga in igen anger du dina uppgifter nedan.' PERMAGAIN: 'Du har blivit utloggad. Om du vill logga in igen anger du dina uppgifter nedan.'

View File

@ -39,8 +39,8 @@ th:
COLOREDEXAMPLE: 'blue text' COLOREDEXAMPLE: 'blue text'
EMAILLINK: ลิงก์อีเมล EMAILLINK: ลิงก์อีเมล
EMAILLINKDESCRIPTION: สร้างลิงค์ให้กับที่อยู่อีเมล์ EMAILLINKDESCRIPTION: สร้างลิงค์ให้กับที่อยู่อีเมล์
IMAGE: 'รูปภาพ' IMAGE: รูปภาพ
IMAGEDESCRIPTION: 'แสดงรูปภาพในหน้าบทความของคุณ' IMAGEDESCRIPTION: แสดงรูปภาพในหน้าบทความของคุณ
ITALIC: ข้อความตัวเอียง ITALIC: ข้อความตัวเอียง
ITALICEXAMPLE: ตัวเอียง ITALICEXAMPLE: ตัวเอียง
LINK: ลิงก์เว็บไซต์ LINK: ลิงก์เว็บไซต์
@ -271,7 +271,7 @@ th:
BUTTONINSERTLINK: แทรกลิงค์ BUTTONINSERTLINK: แทรกลิงค์
BUTTONREMOVELINK: ลบลิงค์ BUTTONREMOVELINK: ลบลิงค์
BUTTONUpdate: อัพเดท BUTTONUpdate: อัพเดท
CAPTIONTEXT: 'ข้อความคำอธิบายใต้ภาพ' CAPTIONTEXT: ข้อความคำอธิบายใต้ภาพ
CSSCLASS: 'การจัดวาง / รูปแบบ' CSSCLASS: 'การจัดวาง / รูปแบบ'
CSSCLASSCENTER: 'Centered, on its own.' CSSCLASSCENTER: 'Centered, on its own.'
CSSCLASSLEFT: 'On the left, with text wrapping around.' CSSCLASSLEFT: 'On the left, with text wrapping around.'
@ -312,7 +312,7 @@ th:
PLURALNAME: ไฟล์ PLURALNAME: ไฟล์
SINGULARNAME: ไฟล์ SINGULARNAME: ไฟล์
ImageField: ImageField:
IMAGE: 'รูปภาพ' IMAGE: รูปภาพ
Image_Cached: Image_Cached:
PLURALNAME: ไฟล์ PLURALNAME: ไฟล์
SINGULARNAME: ไฟล์ SINGULARNAME: ไฟล์
@ -361,7 +361,7 @@ th:
ERRORPASSWORDNOTMATCH: 'รหัสผ่านไม่ตรงกัน กรุณาลองใหม่อีกครั้ง' ERRORPASSWORDNOTMATCH: 'รหัสผ่านไม่ตรงกัน กรุณาลองใหม่อีกครั้ง'
ERRORWRONGCRED: 'That doesn''t seem to be the right e-mail address or password. Please try again.' ERRORWRONGCRED: 'That doesn''t seem to be the right e-mail address or password. Please try again.'
FIRSTNAME: ชื่อจริง FIRSTNAME: ชื่อจริง
INTERFACELANG: 'ภาษาสำหรับหน้าจอติดต่อผู้ใช้' INTERFACELANG: ภาษาสำหรับหน้าจอติดต่อผู้ใช้
INVALIDNEWPASSWORD: 'We couldn''t accept that password: {password}' INVALIDNEWPASSWORD: 'We couldn''t accept that password: {password}'
LOGGEDINAS: 'You''re logged in as {name}.' LOGGEDINAS: 'You''re logged in as {name}.'
NEWPASSWORD: รหัสผ่านใหม่ NEWPASSWORD: รหัสผ่านใหม่
@ -379,7 +379,7 @@ th:
YOUROLDPASSWORD: รหัสผ่านเก่าของคุณ YOUROLDPASSWORD: รหัสผ่านเก่าของคุณ
belongs_many_many_Groups: กลุ่ม belongs_many_many_Groups: กลุ่ม
db_LastVisited: วันที่เยี่ยมชมล่าสุด db_LastVisited: วันที่เยี่ยมชมล่าสุด
db_Locale: 'ภาษาสำหรับส่วนอินเทอร์เฟซ' db_Locale: ภาษาสำหรับส่วนอินเทอร์เฟซ
db_LockedOutUntil: ออกจากระบบจนกว่า db_LockedOutUntil: ออกจากระบบจนกว่า
db_NumVisit: จำนวนการเข้าชม db_NumVisit: จำนวนการเข้าชม
db_Password: รหัสผ่าน db_Password: รหัสผ่าน
@ -503,7 +503,7 @@ th:
IMPORTGROUPS: นำเข้ากลุ่ม IMPORTGROUPS: นำเข้ากลุ่ม
IMPORTUSERS: นำเข้าผู้ใช้งาน IMPORTUSERS: นำเข้าผู้ใช้งาน
MEMBERS: สมาชิก MEMBERS: สมาชิก
MENUTITLE: 'ความปลอดภัย' MENUTITLE: ความปลอดภัย
MemberListCaution: 'Caution: Removing members from this list will remove them from all groups and the database' MemberListCaution: 'Caution: Removing members from this list will remove them from all groups and the database'
NEWGROUP: สร้างกลุ่มใหม่ NEWGROUP: สร้างกลุ่มใหม่
PERMISSIONS: สิทธิ์อนุญาต PERMISSIONS: สิทธิ์อนุญาต
@ -517,7 +517,7 @@ th:
SilverStripeNavigator: SilverStripeNavigator:
Edit: แก้ไข Edit: แก้ไข
SimpleImageField: SimpleImageField:
NOUPLOAD: 'ยังไม่มีรูปภาพที่ถูกอัพโหลด' NOUPLOAD: ยังไม่มีรูปภาพที่ถูกอัพโหลด
SiteTree: SiteTree:
TABMAIN: หลัก TABMAIN: หลัก
TableField: TableField:

View File

@ -9,7 +9,7 @@ uk:
FOLDER: Folder FOLDER: Folder
LASTEDIT: 'Востаннє змінено' LASTEDIT: 'Востаннє змінено'
OWNER: Власник OWNER: Власник
SIZE: 'Розмір' SIZE: Розмір
TITLE: Назва TITLE: Назва
TYPE: Тип TYPE: Тип
URL: URL URL: URL
@ -113,8 +113,8 @@ uk:
DAYS: дні DAYS: дні
HOUR: година HOUR: година
HOURS: годин HOURS: годин
MIN: 'хв' MIN: хв
MINS: 'хв' MINS: хв
MONTH: місяць MONTH: місяць
MONTHS: місяці MONTHS: місяці
SEC: сек SEC: сек
@ -288,7 +288,7 @@ uk:
IMAGEALT: 'Alternative text (alt)' IMAGEALT: 'Alternative text (alt)'
IMAGEALTTEXT: 'Альтернативний текст (alt) - відображається якщо зображення не відображається' IMAGEALTTEXT: 'Альтернативний текст (alt) - відображається якщо зображення не відображається'
IMAGEALTTEXTDESC: 'Shown to screen readers or if image can not be displayed' IMAGEALTTEXTDESC: 'Shown to screen readers or if image can not be displayed'
IMAGEDIMENSIONS: 'Розміри' IMAGEDIMENSIONS: Розміри
IMAGEHEIGHTPX: Висота IMAGEHEIGHTPX: Висота
IMAGETITLE: 'Текст заголовку (tooltip) - для додаткової інформації про зображення' IMAGETITLE: 'Текст заголовку (tooltip) - для додаткової інформації про зображення'
IMAGETITLETEXT: 'Title text (tooltip)' IMAGETITLETEXT: 'Title text (tooltip)'
@ -507,9 +507,9 @@ uk:
MemberListCaution: 'Caution: Removing members from this list will remove them from all groups and the database' MemberListCaution: 'Caution: Removing members from this list will remove them from all groups and the database'
NEWGROUP: 'Нова Група' NEWGROUP: 'Нова Група'
PERMISSIONS: Дозволи PERMISSIONS: Дозволи
ROLES: 'Ролі' ROLES: Ролі
ROLESDESCRIPTION: 'Roles are predefined sets of permissions, and can be assigned to groups.<br />They are inherited from parent groups if required.' ROLESDESCRIPTION: 'Roles are predefined sets of permissions, and can be assigned to groups.<br />They are inherited from parent groups if required.'
TABROLES: 'Ролі' TABROLES: Ролі
Users: Користувачі Users: Користувачі
SecurityAdmin_MemberImportForm: SecurityAdmin_MemberImportForm:
BtnImport: 'Import from CSV' BtnImport: 'Import from CSV'

View File

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

View File

@ -3,12 +3,12 @@ zh_CN:
ALLOWEDEXTS: 'Allowed extensions' ALLOWEDEXTS: 'Allowed extensions'
NEWFOLDER: 新建文件夹 NEWFOLDER: 新建文件夹
AssetTableField: AssetTableField:
CREATED: '第一次被上传' CREATED: 第一次被上传
DIM: 尺寸 DIM: 尺寸
FILENAME: 文件名 FILENAME: 文件名
FOLDER: Folder FOLDER: Folder
LASTEDIT: 上一次被更改 LASTEDIT: 上一次被更改
OWNER: '拥有者' OWNER: 拥有者
SIZE: 大小 SIZE: 大小
TITLE: 文件名称 TITLE: 文件名称
TYPE: 类型 TYPE: 类型
@ -55,9 +55,9 @@ zh_CN:
BackLink_Button.ss: BackLink_Button.ss:
Back: Back Back: Back
BasicAuth: BasicAuth:
ENTERINFO: '请输入用户名和密码' ENTERINFO: 请输入用户名和密码
ERRORNOTADMIN: 此用户没有管理员权限。 ERRORNOTADMIN: 此用户没有管理员权限。
ERRORNOTREC: '没有找到此用户名/密码' ERRORNOTREC: 没有找到此用户名/密码
Boolean: Boolean:
0: 'False' 0: 'False'
ANY: Any ANY: Any
@ -73,7 +73,7 @@ zh_CN:
CMSProfileController: CMSProfileController:
MENUTITLE: 'My Profile' MENUTITLE: 'My Profile'
ChangePasswordEmail.ss: ChangePasswordEmail.ss:
CHANGEPASSWORDTEXT1: '您已更改了登陆%s的密码' CHANGEPASSWORDTEXT1: 您已更改了登陆%s的密码
CHANGEPASSWORDTEXT2: 您现在可以用下列权限信息进行登路: CHANGEPASSWORDTEXT2: 您现在可以用下列权限信息进行登路:
EMAIL: Email EMAIL: Email
HELLO: HELLO:
@ -86,7 +86,7 @@ zh_CN:
SUCCESSADD2: 'Added {name}' SUCCESSADD2: 'Added {name}'
SUCCESSEDIT: 'Saved %s %s %s' SUCCESSEDIT: 'Saved %s %s %s'
ComplexTableField.ss: ComplexTableField.ss:
ADDITEM: '新加' ADDITEM: 新加
NOITEMSFOUND: 'No items found' NOITEMSFOUND: 'No items found'
SORTASC: 正序排列 SORTASC: 正序排列
SORTDESC: 倒序排列 SORTDESC: 倒序排列
@ -97,7 +97,7 @@ zh_CN:
ATLEAST: 'Passwords must be at least {min} characters long.' ATLEAST: 'Passwords must be at least {min} characters long.'
BETWEEN: 'Passwords must be {min} to {max} characters long.' BETWEEN: 'Passwords must be {min} to {max} characters long.'
MAXIMUM: 'Passwords must be at most {max} characters long.' MAXIMUM: 'Passwords must be at most {max} characters long.'
SHOWONCLICKTITLE: '更改密码' SHOWONCLICKTITLE: 更改密码
CreditCardField: CreditCardField:
FIRST: first FIRST: first
FOURTH: fourth FOURTH: fourth
@ -201,9 +201,9 @@ zh_CN:
FIELDISREQUIRED: '%s是必需填写的' FIELDISREQUIRED: '%s是必需填写的'
SubmitBtnLabel: Go SubmitBtnLabel: Go
VALIDATIONCREDITNUMBER: 'Please ensure you have entered the {number} credit card number correctly' VALIDATIONCREDITNUMBER: 'Please ensure you have entered the {number} credit card number correctly'
VALIDATIONNOTUNIQUE: '输入值已被他人占用' VALIDATIONNOTUNIQUE: 输入值已被他人占用
VALIDATIONPASSWORDSDONTMATCH: '(密码相互不匹配)' VALIDATIONPASSWORDSDONTMATCH: (密码相互不匹配)
VALIDATIONPASSWORDSNOTEMPTY: '密码不能空白' VALIDATIONPASSWORDSNOTEMPTY: 密码不能空白
VALIDATIONSTRONGPASSWORD: 'Passwords must have at least one digit and one alphanumeric character' VALIDATIONSTRONGPASSWORD: 'Passwords must have at least one digit and one alphanumeric character'
VALIDATOR: Validator VALIDATOR: Validator
VALIDCURRENCY: 'Please enter a valid currency' VALIDCURRENCY: 'Please enter a valid currency'
@ -241,7 +241,7 @@ zh_CN:
GridFieldItemEditView.ss: null GridFieldItemEditView.ss: null
Group: Group:
AddRole: 'Add a role for this group' AddRole: 'Add a role for this group'
Code: '团队代码' Code: 团队代码
DefaultGroupTitleAdministrators: Administrators DefaultGroupTitleAdministrators: Administrators
DefaultGroupTitleContentAuthors: 'Content Authors' DefaultGroupTitleContentAuthors: 'Content Authors'
Description: Description Description: Description
@ -268,12 +268,12 @@ zh_CN:
ADJUSTDETAILSDIMENSIONS: 'Details &amp; dimensions' ADJUSTDETAILSDIMENSIONS: 'Details &amp; dimensions'
ANCHORVALUE: Anchor ANCHORVALUE: Anchor
BUTTONINSERT: Insert BUTTONINSERT: Insert
BUTTONINSERTLINK: '插入链接' BUTTONINSERTLINK: 插入链接
BUTTONREMOVELINK: '删除链接' BUTTONREMOVELINK: 删除链接
BUTTONUpdate: Update BUTTONUpdate: Update
CAPTIONTEXT: 'Caption text' CAPTIONTEXT: 'Caption text'
CSSCLASS: '对齐/样式' CSSCLASS: 对齐/样式
CSSCLASSCENTER: '自居中' CSSCLASSCENTER: 自居中
CSSCLASSLEFT: 左端自动换行 CSSCLASSLEFT: 左端自动换行
CSSCLASSLEFTALONE: 'On the left, on its own.' CSSCLASSLEFTALONE: 'On the left, on its own.'
CSSCLASSRIGHT: 右端自动换行 CSSCLASSRIGHT: 右端自动换行
@ -289,17 +289,17 @@ zh_CN:
IMAGEALTTEXT: 'Alternative text (alt) - shown if image cannot be displayed' IMAGEALTTEXT: 'Alternative text (alt) - shown if image cannot be displayed'
IMAGEALTTEXTDESC: 'Shown to screen readers or if image can not be displayed' IMAGEALTTEXTDESC: 'Shown to screen readers or if image can not be displayed'
IMAGEDIMENSIONS: 尺寸 IMAGEDIMENSIONS: 尺寸
IMAGEHEIGHTPX: '高(像素)' IMAGEHEIGHTPX: 高(像素)
IMAGETITLE: 'Title text (tooltip) - for additional information about the image' IMAGETITLE: 'Title text (tooltip) - for additional information about the image'
IMAGETITLETEXT: 'Title text (tooltip)' IMAGETITLETEXT: 'Title text (tooltip)'
IMAGETITLETEXTDESC: 'For additional information about the image' IMAGETITLETEXTDESC: 'For additional information about the image'
IMAGEWIDTHPX: '宽(像素)' IMAGEWIDTHPX: 宽(像素)
INSERTMEDIA: 'Insert Media' INSERTMEDIA: 'Insert Media'
LINK: '对所选文字插入/编辑链接' LINK: 对所选文字插入/编辑链接
LINKANCHOR: 'Anchor on this page' LINKANCHOR: 'Anchor on this page'
LINKDESCR: 链接描述 LINKDESCR: 链接描述
LINKEMAIL: 电子邮件地址 LINKEMAIL: 电子邮件地址
LINKEXTERNAL: '其它网站' LINKEXTERNAL: 其它网站
LINKFILE: 下载文件 LINKFILE: 下载文件
LINKINTERNAL: 本站网页 LINKINTERNAL: 本站网页
LINKOPENNEWWIN: 在新窗口打开链接? LINKOPENNEWWIN: 在新窗口打开链接?
@ -317,17 +317,17 @@ zh_CN:
PLURALNAME: Files PLURALNAME: Files
SINGULARNAME: File SINGULARNAME: File
Image_iframe.ss: Image_iframe.ss:
TITLE: '图象上传内嵌框架Iframe' TITLE: 图象上传内嵌框架Iframe
LeftAndMain: LeftAndMain:
CANT_REORGANISE: 'You do not have permission to alter Top level pages. Your change was not saved.' CANT_REORGANISE: 'You do not have permission to alter Top level pages. Your change was not saved.'
DELETED: Deleted. DELETED: Deleted.
DropdownBatchActionsDefault: Actions DropdownBatchActionsDefault: Actions
HELP: 帮助 HELP: 帮助
PAGETYPE: 网页类型 PAGETYPE: 网页类型
PERMAGAIN: '您于CMS的登录已被注销请在下面输入用户名和密码重新登录。' PERMAGAIN: 您于CMS的登录已被注销请在下面输入用户名和密码重新登录。
PERMALREADY: '对不起您无权登录CMS的这一部分。如果您要用另外的帐号请在下面登录。' PERMALREADY: 对不起您无权登录CMS的这一部分。如果您要用另外的帐号请在下面登录。
PERMDEFAULT: '请先选择一种验证方法并输入您的权限信息以登录CMS。' PERMDEFAULT: 请先选择一种验证方法并输入您的权限信息以登录CMS。
PLEASESAVE: '请先保存:因为该网页还未保存,所以该页无法更新。' PLEASESAVE: 请先保存:因为该网页还未保存,所以该页无法更新。
PreviewButton: Preview PreviewButton: Preview
REORGANISATIONSUCCESSFUL: 'Reorganised the site tree successfully.' REORGANISATIONSUCCESSFUL: 'Reorganised the site tree successfully.'
SAVEDUP: Saved. SAVEDUP: Saved.
@ -343,13 +343,13 @@ zh_CN:
Status: Status Status: Status
Member: Member:
ADDGROUP: 'Add group' ADDGROUP: 'Add group'
BUTTONCHANGEPASSWORD: '更改密码' BUTTONCHANGEPASSWORD: 更改密码
BUTTONLOGIN: 登录 BUTTONLOGIN: 登录
BUTTONLOGINOTHER: '使用其他帐户登录' BUTTONLOGINOTHER: 使用其他帐户登录
BUTTONLOSTPASSWORD: '忘记密码' BUTTONLOSTPASSWORD: 忘记密码
CANTEDIT: 'You don''t have permission to do that' CANTEDIT: 'You don''t have permission to do that'
CONFIRMNEWPASSWORD: '确认新密码' CONFIRMNEWPASSWORD: 确认新密码
CONFIRMPASSWORD: '确认密码' CONFIRMPASSWORD: 确认密码
DATEFORMAT: 'Date format' DATEFORMAT: 'Date format'
DefaultAdminFirstname: 'Default Admin' DefaultAdminFirstname: 'Default Admin'
DefaultDateTime: default DefaultDateTime: default
@ -357,35 +357,35 @@ zh_CN:
EMPTYNEWPASSWORD: 'The new password can''t be empty, please try again' EMPTYNEWPASSWORD: 'The new password can''t be empty, please try again'
ENTEREMAIL: 'Please enter an email address to get a password reset link.' ENTEREMAIL: 'Please enter an email address to get a password reset link.'
ERRORLOCKEDOUT: 'Your account has been temporarily disabled because of too many failed attempts at logging in. Please try again in 20 minutes.' ERRORLOCKEDOUT: 'Your account has been temporarily disabled because of too many failed attempts at logging in. Please try again in 20 minutes.'
ERRORNEWPASSWORD: '您输入了一个不同的新密码,请重新输入' ERRORNEWPASSWORD: 您输入了一个不同的新密码,请重新输入
ERRORPASSWORDNOTMATCH: '您当前的密码不正确,请再次输入' ERRORPASSWORDNOTMATCH: 您当前的密码不正确,请再次输入
ERRORWRONGCRED: '电邮地址或密码似乎不对。请重新输入。' ERRORWRONGCRED: 电邮地址或密码似乎不对。请重新输入。
FIRSTNAME: FIRSTNAME:
INTERFACELANG: 界面语言 INTERFACELANG: 界面语言
INVALIDNEWPASSWORD: 'We couldn''t accept that password: {password}' INVALIDNEWPASSWORD: 'We couldn''t accept that password: {password}'
LOGGEDINAS: 'You''re logged in as {name}.' LOGGEDINAS: 'You''re logged in as {name}.'
NEWPASSWORD: '新密码' NEWPASSWORD: 新密码
PASSWORD: '密码' PASSWORD: 密码
PLURALNAME: 成员 PLURALNAME: 成员
REMEMBERME: 记住我的信息? REMEMBERME: 记住我的信息?
SINGULARNAME: 成员 SINGULARNAME: 成员
SUBJECTPASSWORDCHANGED: '您的密码已更改' SUBJECTPASSWORDCHANGED: 您的密码已更改
SUBJECTPASSWORDRESET: '重设您的密码链接' SUBJECTPASSWORDRESET: 重设您的密码链接
SURNAME: SURNAME:
TIMEFORMAT: 'Time format' TIMEFORMAT: 'Time format'
VALIDATIONMEMBEREXISTS: 已经存在用这个电子邮件的会员 VALIDATIONMEMBEREXISTS: 已经存在用这个电子邮件的会员
ValidationIdentifierFailed: 'Can''t overwrite existing member #{id} with identical identifier ({name} = {value}))' ValidationIdentifierFailed: 'Can''t overwrite existing member #{id} with identical identifier ({name} = {value}))'
WELCOMEBACK: 'Welcome Back, {firstname}' WELCOMEBACK: 'Welcome Back, {firstname}'
YOUROLDPASSWORD: '您的旧密码' YOUROLDPASSWORD: 您的旧密码
belongs_many_many_Groups: 团队 belongs_many_many_Groups: 团队
db_LastVisited: 'Last Visited Date' db_LastVisited: 'Last Visited Date'
db_Locale: 'Interface Locale' db_Locale: 'Interface Locale'
db_LockedOutUntil: 禁止直至 db_LockedOutUntil: 禁止直至
db_NumVisit: 'Number of Visits' db_NumVisit: 'Number of Visits'
db_Password: Password db_Password: Password
db_PasswordExpiry: '密码过期日期' db_PasswordExpiry: 密码过期日期
MemberAuthenticator: MemberAuthenticator:
TITLE: '电邮地址和密码' TITLE: 电邮地址和密码
MemberDatetimeOptionsetField: MemberDatetimeOptionsetField:
AMORPM: 'AM (Ante meridiem) or PM (Post meridiem)' AMORPM: 'AM (Ante meridiem) or PM (Post meridiem)'
'APPLY FILTER': 'Apply Filter' 'APPLY FILTER': 'Apply Filter'
@ -419,7 +419,7 @@ zh_CN:
SINGULARNAME: 'Member Password' SINGULARNAME: 'Member Password'
MemberTableField: null MemberTableField: null
ModelAdmin: ModelAdmin:
DELETE: '删除' DELETE: 删除
DELETEDRECORDS: 'Deleted {count} records.' DELETEDRECORDS: 'Deleted {count} records.'
EMPTYBEFOREIMPORT: 'Clear Database before import' EMPTYBEFOREIMPORT: 'Clear Database before import'
IMPORT: 'Import from CSV' IMPORT: 'Import from CSV'
@ -474,23 +474,23 @@ zh_CN:
PERMISSIONS_CATEGORY: 'Roles and access permissions' PERMISSIONS_CATEGORY: 'Roles and access permissions'
UserPermissionsIntro: 'Assigning groups to this user will adjust the permissions they have. See the groups section for details of permissions on individual groups.' UserPermissionsIntro: 'Assigning groups to this user will adjust the permissions they have. See the groups section for details of permissions on individual groups.'
PhoneNumberField: PhoneNumberField:
VALIDATION: '请输入有效电话号码' VALIDATION: 请输入有效电话号码
RelationComplexTableField.ss: RelationComplexTableField.ss:
ADD: Add ADD: Add
CSVEXPORT: 'Export to CSV' CSVEXPORT: 'Export to CSV'
NOTFOUND: 'No items found' NOTFOUND: 'No items found'
Security: Security:
ALREADYLOGGEDIN: '您无访问此页的权限。如果您拥有另一个可访问次页的帐户,请在下面登录。' ALREADYLOGGEDIN: 您无访问此页的权限。如果您拥有另一个可访问次页的帐户,请在下面登录。
BUTTONSEND: '给我发送密码重设链接' BUTTONSEND: 给我发送密码重设链接
CHANGEPASSWORDBELOW: '您可在下面更改您的密码' CHANGEPASSWORDBELOW: 您可在下面更改您的密码
CHANGEPASSWORDHEADER: '更改您的密码' CHANGEPASSWORDHEADER: 更改您的密码
ENTERNEWPASSWORD: '请输入新密码' ENTERNEWPASSWORD: 请输入新密码
ERRORPASSWORDPERMISSION: '您必需登录以更改您的密码' ERRORPASSWORDPERMISSION: 您必需登录以更改您的密码
LOGGEDOUT: '您已被撤消登录。如果您想再次登录,在下面输入您的登录信息。' LOGGEDOUT: 您已被撤消登录。如果您想再次登录,在下面输入您的登录信息。
LOGIN: 登录 LOGIN: 登录
NOTEPAGESECURED: '此页是受安全保护的。输入您的登录信息,我们会将您送达。' NOTEPAGESECURED: 此页是受安全保护的。输入您的登录信息,我们会将您送达。
NOTERESETLINKINVALID: '<p>The password reset link is invalid or expired.</p><p>You can request a new one <a href="{link1}">here</a> or change your password after you <a href="{link2}">logged in</a>.</p>' NOTERESETLINKINVALID: '<p>The password reset link is invalid or expired.</p><p>You can request a new one <a href="{link1}">here</a> or change your password after you <a href="{link2}">logged in</a>.</p>'
NOTERESETPASSWORD: '输入您的电邮地址,我们会给您发送一个您可重设密码的链接' NOTERESETPASSWORD: 输入您的电邮地址,我们会给您发送一个您可重设密码的链接
PASSWORDSENTHEADER: 'Password reset link sent to ''{email}''' PASSWORDSENTHEADER: 'Password reset link sent to ''{email}'''
PASSWORDSENTTEXT: 'Thank you! A reset link has been sent to ''{email}'', provided an account exists for this email address.' PASSWORDSENTTEXT: 'Thank you! A reset link has been sent to ''{email}'', provided an account exists for this email address.'
SecurityAdmin: SecurityAdmin:
@ -517,7 +517,7 @@ zh_CN:
SilverStripeNavigator: SilverStripeNavigator:
Edit: Edit Edit: Edit
SimpleImageField: SimpleImageField:
NOUPLOAD: '没有上传的图像' NOUPLOAD: 没有上传的图像
SiteTree: SiteTree:
TABMAIN: 主要部分 TABMAIN: 主要部分
TableField: TableField:

View File

@ -8,7 +8,7 @@ zh_TW:
FILENAME: 檔案名稱 FILENAME: 檔案名稱
FOLDER: Folder FOLDER: Folder
LASTEDIT: 最後一次更新 LASTEDIT: 最後一次更新
OWNER: '擁有者' OWNER: 擁有者
SIZE: 大小 SIZE: 大小
TITLE: 標題 TITLE: 標題
TYPE: 類型 TYPE: 類型
@ -55,8 +55,8 @@ zh_TW:
BackLink_Button.ss: BackLink_Button.ss:
Back: Back Back: Back
BasicAuth: BasicAuth:
ENTERINFO: '請輸入帳號密碼。' ENTERINFO: 請輸入帳號密碼。
ERRORNOTADMIN: '那個使用者不是管理員。' ERRORNOTADMIN: 那個使用者不是管理員。
ERRORNOTREC: 那組帳號密碼不對。 ERRORNOTREC: 那組帳號密碼不對。
Boolean: Boolean:
0: 'False' 0: 'False'
@ -74,7 +74,7 @@ zh_TW:
MENUTITLE: 'My Profile' MENUTITLE: 'My Profile'
ChangePasswordEmail.ss: ChangePasswordEmail.ss:
CHANGEPASSWORDTEXT1: 您為這個帳戶改密碼: CHANGEPASSWORDTEXT1: 您為這個帳戶改密碼:
CHANGEPASSWORDTEXT2: '您可以用下列的帳號密碼登入:' CHANGEPASSWORDTEXT2: 您可以用下列的帳號密碼登入:
EMAIL: Email EMAIL: Email
HELLO: 您好 HELLO: 您好
PASSWORD: Password PASSWORD: Password
@ -201,8 +201,8 @@ zh_TW:
FIELDISREQUIRED: '必須要填 %s' FIELDISREQUIRED: '必須要填 %s'
SubmitBtnLabel: Go SubmitBtnLabel: Go
VALIDATIONCREDITNUMBER: 'Please ensure you have entered the {number} credit card number correctly' VALIDATIONCREDITNUMBER: 'Please ensure you have entered the {number} credit card number correctly'
VALIDATIONNOTUNIQUE: '您輸入的數值並不是獨特的。' VALIDATIONNOTUNIQUE: 您輸入的數值並不是獨特的。
VALIDATIONPASSWORDSDONTMATCH: '密碼不相配' VALIDATIONPASSWORDSDONTMATCH: 密碼不相配
VALIDATIONPASSWORDSNOTEMPTY: 密碼不能是空的 VALIDATIONPASSWORDSNOTEMPTY: 密碼不能是空的
VALIDATIONSTRONGPASSWORD: 'Passwords must have at least one digit and one alphanumeric character' VALIDATIONSTRONGPASSWORD: 'Passwords must have at least one digit and one alphanumeric character'
VALIDATOR: Validator VALIDATOR: Validator
@ -268,15 +268,15 @@ zh_TW:
ADJUSTDETAILSDIMENSIONS: 'Details &amp; dimensions' ADJUSTDETAILSDIMENSIONS: 'Details &amp; dimensions'
ANCHORVALUE: Anchor ANCHORVALUE: Anchor
BUTTONINSERT: Insert BUTTONINSERT: Insert
BUTTONINSERTLINK: '插入連結' BUTTONINSERTLINK: 插入連結
BUTTONREMOVELINK: 移除連結 BUTTONREMOVELINK: 移除連結
BUTTONUpdate: Update BUTTONUpdate: Update
CAPTIONTEXT: 'Caption text' CAPTIONTEXT: 'Caption text'
CSSCLASS: 對齊/樣式 CSSCLASS: 對齊/樣式
CSSCLASSCENTER: 獨立置中 CSSCLASSCENTER: 獨立置中
CSSCLASSLEFT: '靠左被字包圍。' CSSCLASSLEFT: 靠左被字包圍。
CSSCLASSLEFTALONE: 'On the left, on its own.' CSSCLASSLEFTALONE: 'On the left, on its own.'
CSSCLASSRIGHT: '靠右被字包圍。' CSSCLASSRIGHT: 靠右被字包圍。
DETAILS: Details DETAILS: Details
EMAIL: 電子郵件地址 EMAIL: 電子郵件地址
FILE: 檔案 FILE: 檔案
@ -295,7 +295,7 @@ zh_TW:
IMAGETITLETEXTDESC: 'For additional information about the image' IMAGETITLETEXTDESC: 'For additional information about the image'
IMAGEWIDTHPX: IMAGEWIDTHPX:
INSERTMEDIA: 'Insert Media' INSERTMEDIA: 'Insert Media'
LINK: '插入或編輯選取的連結' LINK: 插入或編輯選取的連結
LINKANCHOR: 'Anchor on this page' LINKANCHOR: 'Anchor on this page'
LINKDESCR: 連結敘述 LINKDESCR: 連結敘述
LINKEMAIL: 電子郵件地址 LINKEMAIL: 電子郵件地址
@ -304,7 +304,7 @@ zh_TW:
LINKINTERNAL: 此網站 LINKINTERNAL: 此網站
LINKOPENNEWWIN: 在新視窗打開連結 LINKOPENNEWWIN: 在新視窗打開連結
LINKTO: 連結至 LINKTO: 連結至
PAGE: '網頁' PAGE: 網頁
URL: 網址 URL: 網址
URLNOTANOEMBEDRESOURCE: 'The URL ''{url}'' could not be turned into a media resource.' URLNOTANOEMBEDRESOURCE: 'The URL ''{url}'' could not be turned into a media resource.'
UpdateMEDIA: 'Update Media' UpdateMEDIA: 'Update Media'
@ -323,11 +323,11 @@ zh_TW:
DELETED: Deleted. DELETED: Deleted.
DropdownBatchActionsDefault: Actions DropdownBatchActionsDefault: Actions
HELP: 說明 HELP: 說明
PAGETYPE: '網頁類型:' PAGETYPE: 網頁類型:
PERMAGAIN: '您已被登出,請在下面重新登入。' PERMAGAIN: 您已被登出,請在下面重新登入。
PERMALREADY: '抱歉,您沒有權力使用這個部分。您可以用別的帳號登入。' PERMALREADY: 抱歉,您沒有權力使用這個部分。您可以用別的帳號登入。
PERMDEFAULT: '請選擇一個認證方法並登入。' PERMDEFAULT: 請選擇一個認證方法並登入。
PLEASESAVE: '請儲存:這個網頁沒有被更新因為尚未被儲存。' PLEASESAVE: 請儲存:這個網頁沒有被更新因為尚未被儲存。
PreviewButton: Preview PreviewButton: Preview
REORGANISATIONSUCCESSFUL: 'Reorganised the site tree successfully.' REORGANISATIONSUCCESSFUL: 'Reorganised the site tree successfully.'
SAVEDUP: Saved. SAVEDUP: Saved.
@ -344,8 +344,8 @@ zh_TW:
Member: Member:
ADDGROUP: 'Add group' ADDGROUP: 'Add group'
BUTTONCHANGEPASSWORD: 更改密碼 BUTTONCHANGEPASSWORD: 更改密碼
BUTTONLOGIN: '登入' BUTTONLOGIN: 登入
BUTTONLOGINOTHER: '用別的帳戶登入' BUTTONLOGINOTHER: 用別的帳戶登入
BUTTONLOSTPASSWORD: 忘記密碼 BUTTONLOSTPASSWORD: 忘記密碼
CANTEDIT: 'You don''t have permission to do that' CANTEDIT: 'You don''t have permission to do that'
CONFIRMNEWPASSWORD: 確認新密碼 CONFIRMNEWPASSWORD: 確認新密碼
@ -357,7 +357,7 @@ zh_TW:
EMPTYNEWPASSWORD: 'The new password can''t be empty, please try again' EMPTYNEWPASSWORD: 'The new password can''t be empty, please try again'
ENTEREMAIL: 'Please enter an email address to get a password reset link.' ENTEREMAIL: 'Please enter an email address to get a password reset link.'
ERRORLOCKEDOUT: 'Your account has been temporarily disabled because of too many failed attempts at logging in. Please try again in 20 minutes.' ERRORLOCKEDOUT: 'Your account has been temporarily disabled because of too many failed attempts at logging in. Please try again in 20 minutes.'
ERRORNEWPASSWORD: '新密碼不相配,請再試一次。' ERRORNEWPASSWORD: 新密碼不相配,請再試一次。
ERRORPASSWORDNOTMATCH: 舊密碼不對,請再試一次。 ERRORPASSWORDNOTMATCH: 舊密碼不對,請再試一次。
ERRORWRONGCRED: 密碼或電子郵件地址錯誤。請再是一次。 ERRORWRONGCRED: 密碼或電子郵件地址錯誤。請再是一次。
FIRSTNAME: FIRSTNAME:
@ -474,23 +474,23 @@ zh_TW:
PERMISSIONS_CATEGORY: 'Roles and access permissions' PERMISSIONS_CATEGORY: 'Roles and access permissions'
UserPermissionsIntro: 'Assigning groups to this user will adjust the permissions they have. See the groups section for details of permissions on individual groups.' UserPermissionsIntro: 'Assigning groups to this user will adjust the permissions they have. See the groups section for details of permissions on individual groups.'
PhoneNumberField: PhoneNumberField:
VALIDATION: '請輸入有效的電話號碼' VALIDATION: 請輸入有效的電話號碼
RelationComplexTableField.ss: RelationComplexTableField.ss:
ADD: Add ADD: Add
CSVEXPORT: 'Export to CSV' CSVEXPORT: 'Export to CSV'
NOTFOUND: 'No items found' NOTFOUND: 'No items found'
Security: Security:
ALREADYLOGGEDIN: '你不能瀏覽此頁。請用別的帳戶登入。' ALREADYLOGGEDIN: 你不能瀏覽此頁。請用別的帳戶登入。
BUTTONSEND: 寄給我密碼重設網址。 BUTTONSEND: 寄給我密碼重設網址。
CHANGEPASSWORDBELOW: 請在下面更改密碼。 CHANGEPASSWORDBELOW: 請在下面更改密碼。
CHANGEPASSWORDHEADER: 更改密碼 CHANGEPASSWORDHEADER: 更改密碼
ENTERNEWPASSWORD: '請輸入新的密碼。' ENTERNEWPASSWORD: 請輸入新的密碼。
ERRORPASSWORDPERMISSION: '你必須先登入才能改密碼!' ERRORPASSWORDPERMISSION: 你必須先登入才能改密碼!
LOGGEDOUT: '你已登出。您在下面再登入一次。' LOGGEDOUT: 你已登出。您在下面再登入一次。
LOGIN: 'Log in' LOGIN: 'Log in'
NOTEPAGESECURED: '那的網頁是被保護的。請先登入。' NOTEPAGESECURED: 那的網頁是被保護的。請先登入。
NOTERESETLINKINVALID: '<p>The password reset link is invalid or expired.</p><p>You can request a new one <a href="{link1}">here</a> or change your password after you <a href="{link2}">logged in</a>.</p>' NOTERESETLINKINVALID: '<p>The password reset link is invalid or expired.</p><p>You can request a new one <a href="{link1}">here</a> or change your password after you <a href="{link2}">logged in</a>.</p>'
NOTERESETPASSWORD: '請輸入您的電子郵件。我們將寄給你重設密媽的網址。' NOTERESETPASSWORD: 請輸入您的電子郵件。我們將寄給你重設密媽的網址。
PASSWORDSENTHEADER: 'Password reset link sent to ''{email}''' PASSWORDSENTHEADER: 'Password reset link sent to ''{email}'''
PASSWORDSENTTEXT: 'Thank you! A reset link has been sent to ''{email}'', provided an account exists for this email address.' PASSWORDSENTTEXT: 'Thank you! A reset link has been sent to ''{email}'', provided an account exists for this email address.'
SecurityAdmin: SecurityAdmin:

View File

@ -144,11 +144,21 @@ class HTMLText extends Text {
*/ */
public function exists() { public function exists() {
// If it's blank, it's blank // If it's blank, it's blank
if(!parent::exists()) return false; if(!parent::exists()) {
return false;
}
// If it's got a content tag // If it's got a content tag
if(preg_match('/<(img|embed|object|iframe)[^>]*>/i', $this->value)) return true; if(preg_match('/<(img|embed|object|iframe)[^>]*>/i', $this->value)) {
// If it's just one or two tags on its own (and not the above) it's empty. This might be <p></p> or <h1></h1> or whatever. return true;
if(preg_match('/^[\\s]*(<[^>]+>[\\s]*){1,2}$/', $this->value)) return false; }
// If it's just one or two tags on its own (and not the above) it's empty.
// This might be <p></p> or <h1></h1> or whatever.
if(preg_match('/^[\\s]*(<[^>]+>[\\s]*){1,2}$/', $this->value)) {
return false;
}
// Otherwise its content is genuine content // Otherwise its content is genuine content
return true; return true;
} }

View File

@ -425,7 +425,8 @@ class Member extends DataObject implements TemplateGlobalProvider {
Cookie::set('alc_enc', null); // // Clear the Remember Me cookie Cookie::set('alc_enc', null); // // Clear the Remember Me cookie
Cookie::forceExpiry('alc_enc'); Cookie::forceExpiry('alc_enc');
// Switch back to live in order to avoid infinite loops when redirecting to the login screen (if this login screen is versioned) // Switch back to live in order to avoid infinite loops when
// redirecting to the login screen (if this login screen is versioned)
Session::clear('readingMode'); Session::clear('readingMode');
$this->write(); $this->write();

View File

@ -244,7 +244,7 @@ class Security extends Controller {
$controller->redirect( $controller->redirect(
Config::inst()->get('Security', 'login_url') Config::inst()->get('Security', 'login_url')
. "?BackURL=" . urlencode($_SERVER['REQUEST_URI']) . "?BackURL=" . urlencode($_SERVER['REQUEST_URI'])
); );
} }
return; return;
@ -941,14 +941,15 @@ class Security extends Controller {
* Set a custom log-in URL if you have built your own log-in page. * Set a custom log-in URL if you have built your own log-in page.
*/ */
public static function set_login_url($loginUrl) { public static function set_login_url($loginUrl) {
self::$login_url = $loginUrl; self::$login_url = $loginUrl;
} }
/** /**
* Get the URL of the log-in page. * Get the URL of the log-in page.
* Defaults to Security/login but can be re-set with {@link set_login_url()} * Defaults to Security/login but can be re-set with {@link set_login_url()}
*/ */
public static function login_url() { public static function login_url() {
return self::$login_url; return self::$login_url;
} }
} }

View File

@ -13,23 +13,6 @@ class HTTPResponseTest extends SapphireTest {
); );
} }
public function testContentLengthHeader() {
$r = new SS_HTTPResponse('123ü');
$this->assertNotNull($r->getHeader('Content-Length'), 'Content-length header is added');
$this->assertEquals(
5,
$r->getHeader('Content-Length'),
'Header matches actual content length in bytes'
);
$r->setBody('1234ü');
$this->assertEquals(
6,
$r->getHeader('Content-Length'),
'Header is updated when body is changed'
);
}
public function testHTTPResponseException() { public function testHTTPResponseException() {
$response = new SS_HTTPResponse("Test", 200, 'OK'); $response = new SS_HTTPResponse("Test", 200, 'OK');
@ -61,4 +44,4 @@ class HTTPResponseTest extends SapphireTest {
$this->assertFalse(true, 'Something went wrong with our test exception'); $this->assertFalse(true, 'Something went wrong with our test exception');
} }
} }

View File

@ -316,6 +316,62 @@ class UploadTest extends SapphireTest {
$file2->delete(); $file2->delete();
} }
public function testReplaceFile() {
// create tmp file
$tmpFileName = 'UploadTest-testUpload';
$tmpFilePath = TEMP_FOLDER . '/' . $tmpFileName;
$tmpFileContent = '';
for($i=0; $i<10000; $i++) $tmpFileContent .= '0';
file_put_contents($tmpFilePath, $tmpFileContent);
// emulates the $_FILES array
$tmpFile = array(
'name' => $tmpFileName,
'type' => 'text/plaintext',
'size' => filesize($tmpFilePath),
'tmp_name' => $tmpFilePath,
'extension' => 'txt',
'error' => UPLOAD_ERR_OK,
);
// Make sure there are none here, otherwise they get renamed incorrectly for the test.
$this->deleteTestUploadFiles("/UploadTest-testUpload.*/");
$v = new UploadTest_Validator();
$v->setAllowedExtensions(array(''));
// test upload into default folder
$u = new Upload();
$u->setValidator($v);
$u->load($tmpFile);
$file = $u->getFile();
$this->assertEquals(
'UploadTest-testUpload',
$file->Name,
'File is uploaded without extension'
);
$u = new Upload();
$u->setValidator($v);
$u->setReplaceFile(true);
$u->load($tmpFile);
$file2 = $u->getFile();
$this->assertEquals(
'UploadTest-testUpload',
$file2->Name,
'File does not receive new name'
);
$this->assertEquals(
$file->ID,
$file2->ID,
'File database record is the same'
);
$file->delete();
$file2->delete();
}
} }
class UploadTest_Validator extends Upload_Validator implements TestOnly { class UploadTest_Validator extends Upload_Validator implements TestOnly {

83
tests/travis/before.php Executable file
View File

@ -0,0 +1,83 @@
#!/usr/bin/env php
<?php
/**
* Initialises a test project that can be built by travis.
*
* The local framework checkout's composer file is parsed and used to built a
* custom local framework archive which is then installed into an installer
* base project.
*/
if (php_sapi_name() != 'cli') {
header('HTTP/1.0 404 Not Found');
exit;
}
$opts = getopt('', array(
'target:',
'version:',
'installer:'
));
if (!$opts) {
echo "Invalid arguments specified\n";
exit(1);
}
extract($opts);
$dir = __DIR__;
$framework = dirname(dirname($dir));
$parent = dirname($framework);
// Print out some environment information.
printf("Database versions:\n");
printf(" * MySQL: %s\n", trim(`mysql --version`));
printf(" * PostgreSQL: %s\n", trim(`pg_config --version`));
printf(" * SQLite: %s\n\n", trim(`sqlite3 -version`));
// Extract the package info from the framework composer file, and build a
// custom project composer file with the local package explicitly defined.
echo "Reading composer information...\n";
$package = json_decode(file_get_contents("$framework/composer.json"), true);
// Override the default framework requirement with the one being built.
$package += array(
'version' => $version,
'dist' => array(
'type' => 'tar',
'url' => "file://$parent/framework.tar"
)
);
// Generate a custom composer file.
$composer = json_encode(array(
'repositories' => array(array('type' => 'package', 'package' => $package)),
'require' => array(
'silverstripe/framework' => $version,
'silverstripe/postgresql' => '*',
'silverstripe/sqlite3' => '*'
),
'minimum-stability' => 'dev'
));
echo "Generated composer file:\n";
echo "$composer\n\n";
echo "Archiving framework...\n";
`cd $framework`;
`tar -cf $parent/framework.tar .`;
echo "Cloning installer@$installer...\n";
`git clone --depth=100 --quiet -b $installer git://github.com/silverstripe/silverstripe-installer.git $target`;
echo "Setting up project...\n";
`cp $dir/_ss_environment.php $target`;
`cp $dir/_config.php $target/mysite`;
echo "Replacing composer file...\n";
unlink("$target/composer.json");
file_put_contents("$target/composer.json", $composer);
echo "Running composer...\n";
`composer install --dev -d $target`;

View File

@ -1,34 +0,0 @@
#!/bin/sh
### USAGE: before_script <base-folder> <travis-branch>
BUILD_DIR=$1
# Environment info
echo "# Environment info"
echo " - `php --version`"
echo " - `mysql --version`"
echo " - `pg_config --version`"
echo " - SQLite3 `sqlite3 -version`"
echo ""
# Fetch all dependencies
# TODO Replace with different composer.json variations
echo "Checking out installer@master"
git clone --depth=100 --quiet -b master git://github.com/silverstripe/silverstripe-installer.git $BUILD_DIR
echo "Checking out sqlite3@master"
git clone --depth=100 --quiet git://github.com/silverstripe-labs/silverstripe-sqlite3.git $BUILD_DIR/sqlite3
echo "Checking out postgresql@master"
git clone --depth=100 --quiet git://github.com/silverstripe/silverstripe-postgresql.git $BUILD_DIR/postgresql
# Copy setup files
cp ./tests/travis/_ss_environment.php $BUILD_DIR
cp ./tests/travis/_config.php $BUILD_DIR/mysite
# Copy actual project code into build directory (checked out by travis)
cp -r . $BUILD_DIR/framework
cd $BUILD_DIR

View File

@ -0,0 +1,23 @@
/* Chinese initialisation for the jQuery UI date picker plugin. */
/* Written by Cloudream (cloudream@gmail.com). */
jQuery(function($){
$.datepicker.regional['zh-CN'] = {
closeText: '关闭',
prevText: '&#x3C;上月',
nextText: '下月&#x3E;',
currentText: '今天',
monthNames: ['一月','二月','三月','四月','五月','六月',
'七月','八月','九月','十月','十一月','十二月'],
monthNamesShort: ['一月','二月','三月','四月','五月','六月',
'七月','八月','九月','十月','十一月','十二月'],
dayNames: ['星期日','星期一','星期二','星期三','星期四','星期五','星期六'],
dayNamesShort: ['周日','周一','周二','周三','周四','周五','周六'],
dayNamesMin: ['日','一','二','三','四','五','六'],
weekHeader: '周',
dateFormat: 'yy-mm-dd',
firstDay: 1,
isRTL: false,
showMonthAfterYear: true,
yearSuffix: '年'};
$.datepicker.setDefaults($.datepicker.regional['zh-CN']);
});

View File

@ -0,0 +1,23 @@
/* Chinese initialisation for the jQuery UI date picker plugin. */
/* Written by Ressol (ressol@gmail.com). */
jQuery(function($){
$.datepicker.regional['zh-TW'] = {
closeText: '關閉',
prevText: '&#x3C;上月',
nextText: '下月&#x3E;',
currentText: '今天',
monthNames: ['一月','二月','三月','四月','五月','六月',
'七月','八月','九月','十月','十一月','十二月'],
monthNamesShort: ['一月','二月','三月','四月','五月','六月',
'七月','八月','九月','十月','十一月','十二月'],
dayNames: ['星期日','星期一','星期二','星期三','星期四','星期五','星期六'],
dayNamesShort: ['周日','周一','周二','周三','周四','周五','周六'],
dayNamesMin: ['日','一','二','三','四','五','六'],
weekHeader: '周',
dateFormat: 'yy/mm/dd',
firstDay: 1,
isRTL: false,
showMonthAfterYear: true,
yearSuffix: '年'};
$.datepicker.setDefaults($.datepicker.regional['zh-TW']);
});