From 8720595874094a8fe6f4aac899506f8978542ce9 Mon Sep 17 00:00:00 2001 From: Simon LEBLANC Date: Wed, 21 Feb 2018 11:07:11 +0100 Subject: [PATCH 01/19] Allow setting SMTP config Signed-off-by: Thomas Citharel --- action/add_comment.php | 2 +- action/send_edit_link_by_email_action.php | 4 +- adminstuds.php | 2 +- .../Framadate/Services/MailService.php | 38 ++++++++++++++++--- app/inc/config.template.php | 10 ++++- create_classic_poll.php | 4 +- create_date_poll.php | 2 +- find_polls.php | 8 ++-- studs.php | 2 +- 9 files changed, 54 insertions(+), 18 deletions(-) diff --git a/action/add_comment.php b/action/add_comment.php index 55f98de..df75385 100644 --- a/action/add_comment.php +++ b/action/add_comment.php @@ -42,7 +42,7 @@ $is_admin = false; $logService = new LogService(); $pollService = new PollService($connect, $logService); $inputService = new InputService(); -$mailService = new MailService($config['use_smtp']); +$mailService = new MailService($config['use_smtp'], $config['smtp_options']); $notificationService = new NotificationService($mailService); $securityService = new SecurityService(); diff --git a/action/send_edit_link_by_email_action.php b/action/send_edit_link_by_email_action.php index 83d3184..f5f2d54 100644 --- a/action/send_edit_link_by_email_action.php +++ b/action/send_edit_link_by_email_action.php @@ -28,7 +28,7 @@ include_once __DIR__ . '/../app/inc/init.php'; $logService = new LogService(); $sessionService = new SessionService(); -$mailService = new MailService($config['use_smtp']); +$mailService = new MailService($config['use_smtp'], $config['smtp_options']); $pollService = new PollService($connect, $logService); $result = false; @@ -91,4 +91,4 @@ $smarty->error_reporting = E_ALL & ~E_NOTICE; $response = ['result' => $result, 'message' => $message]; -echo json_encode($response); \ No newline at end of file +echo json_encode($response); diff --git a/adminstuds.php b/adminstuds.php index b8a155e..356f815 100644 --- a/adminstuds.php +++ b/adminstuds.php @@ -49,7 +49,7 @@ $logService = new LogService(); $pollService = new PollService($connect, $logService); $adminPollService = new AdminPollService($connect, $pollService, $logService); $inputService = new InputService(); -$mailService = new MailService($config['use_smtp']); +$mailService = new MailService($config['use_smtp'], $config['smtp_options']); $notificationService = new NotificationService($mailService); /* PAGE */ diff --git a/app/classes/Framadate/Services/MailService.php b/app/classes/Framadate/Services/MailService.php index b78325b..9c32f3f 100644 --- a/app/classes/Framadate/Services/MailService.php +++ b/app/classes/Framadate/Services/MailService.php @@ -10,21 +10,26 @@ class MailService { private $smtp_allowed; + private $smtp_options = []; + private $logService; - function __construct($smtp_allowed) { + function __construct($smtp_allowed, $smtp_options = []) { $this->logService = new LogService(); $this->smtp_allowed = $smtp_allowed; + if (true === is_array($smtp_options)) { + $this->smtp_options = $smtp_options; + } } public function isValidEmail($email) { return filter_var($email, FILTER_VALIDATE_EMAIL); } - function send($to, $subject, $body, $msgKey = null) { + public function send($to, $subject, $body, $msgKey = null) { if ($this->smtp_allowed === true && $this->canSendMsg($msgKey)) { $mail = new PHPMailer(true); - $mail->isSMTP(); + $this->configureMailer($mail); // From $mail->FromName = NOMAPPLICATION; @@ -60,7 +65,7 @@ class MailService { } } - function canSendMsg($msgKey) { + public function canSendMsg($msgKey) { if ($msgKey === null) { return true; } @@ -70,5 +75,28 @@ class MailService { } return !isset($_SESSION[self::MAILSERVICE_KEY][$msgKey]) || time() - $_SESSION[self::MAILSERVICE_KEY][$msgKey] > self::DELAY_BEFORE_RESEND; } + + /** + * Configure the mailer with the options + * + * @param PHPMailer $mailer + */ + private function configureMailer(PHPMailer $mailer) { + $mailer->isSMTP(); + + $available_options = [ + 'host' => 'Host', + 'auth' => 'SMTPAuth', + 'username' => 'Username', + 'password' => 'Password', + 'secure' => 'SMTPSecure', + 'port' => 'Port', + ]; + + foreach ($available_options as $config_option => $mailer_option) { + if (true === isset($this->smtp_options[$config_option]) && false === empty($this->smtp_options[$config_option])) { + $mailer->{$mailer_option} = $this->smtp_options[$config_option]; + } + } + } } - \ No newline at end of file diff --git a/app/inc/config.template.php b/app/inc/config.template.php index 367d50d..b5a62bf 100644 --- a/app/inc/config.template.php +++ b/app/inc/config.template.php @@ -89,6 +89,14 @@ const TIME_EDIT_LINK_EMAIL = 60; $config = [ /* general config */ 'use_smtp' => true, // use email for polls creation/modification/responses notification + 'smtp_options' => [ + 'host' => 'localhost', // SMTP server (you could add many servers (main and backup for example) : use ";" like separator + 'auth' => false, // Enable SMTP authentication + 'username' => '', // SMTP username + 'password' => '', // SMTP password + 'secure' => '', // Enable encryption (false, tls or ssl) + 'port' => 25, // TCP port to connect to + ], 'tracking_code' => '', // add HTML code to every page, useful for tools like Piwik /* home */ 'show_what_is_that' => true, // display "how to use" section @@ -98,5 +106,5 @@ $config = [ 'default_poll_duration' => 180, // default values for the new poll duration (number of days). /* create_classic_poll.php */ 'user_can_add_img_or_link' => true, // user can add link or URL when creating his poll. - 'markdown_editor_by_default' => true // The markdown editor for the description is enabled by default + 'markdown_editor_by_default' => true, // The markdown editor for the description is enabled by default ]; diff --git a/create_classic_poll.php b/create_classic_poll.php index 6dc1246..5e88774 100644 --- a/create_classic_poll.php +++ b/create_classic_poll.php @@ -29,7 +29,7 @@ include_once __DIR__ . '/app/inc/init.php'; /*---------*/ $logService = new LogService(); $pollService = new PollService($connect, $logService); -$mailService = new MailService($config['use_smtp']); +$mailService = new MailService($config['use_smtp'], $config['smtp_options']); $purgeService = new PurgeService($connect, $logService); if (is_file('bandeaux_local.php')) { @@ -44,7 +44,7 @@ if (empty($_SESSION['form']->title) || empty($_SESSION['form']->admin_name) || ( $smarty->assign('error', __('Error', 'You haven\'t filled the first section of the poll creation.')); $smarty->display('error.tpl'); exit; -} +} // Min/Max archive date $min_expiry_time = $pollService->minExpiryDate(); $max_expiry_time = $pollService->maxExpiryDate(); diff --git a/create_date_poll.php b/create_date_poll.php index 05261b0..9b0fa49 100644 --- a/create_date_poll.php +++ b/create_date_poll.php @@ -30,7 +30,7 @@ include_once __DIR__ . '/app/inc/init.php'; /*---------*/ $logService = new LogService(); $pollService = new PollService($connect, $logService); -$mailService = new MailService($config['use_smtp']); +$mailService = new MailService($config['use_smtp'], $config['smtp_options']); $purgeService = new PurgeService($connect, $logService); $inputService = new InputService(); diff --git a/find_polls.php b/find_polls.php index c9fa931..fdfc3ca 100644 --- a/find_polls.php +++ b/find_polls.php @@ -4,16 +4,16 @@ * is not distributed with this file, you can obtain one at * http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.txt * - * Authors of STUdS (initial project): Guilhem BORGHESI (borghesi@unistra.fr) and Raphal DROZ + * Authors of STUdS (initial project): Guilhem BORGHESI (borghesi@unistra.fr) and Raphaël DROZ * Authors of Framadate/OpenSondage: Framasoft (https://github.com/framasoft) * * ============================= * - * Ce logiciel est rgi par la licence CeCILL-B. Si une copie de cette licence + * Ce logiciel est régi par la licence CeCILL-B. Si une copie de cette licence * ne se trouve pas avec ce fichier vous pouvez l'obtenir sur * http://www.cecill.info/licences/Licence_CeCILL-B_V1-fr.txt * - * Auteurs de STUdS (projet initial) : Guilhem BORGHESI (borghesi@unistra.fr) et Raphal DROZ + * Auteurs de STUdS (projet initial) : Guilhem BORGHESI (borghesi@unistra.fr) et Raphaël DROZ * Auteurs de Framadate/OpenSondage : Framasoft (https://github.com/framasoft) */ @@ -28,7 +28,7 @@ include_once __DIR__ . '/app/inc/init.php'; /* -------- */ $logService = new LogService(); $pollService = new PollService($connect, $logService); -$mailService = new MailService($config['use_smtp']); +$mailService = new MailService($config['use_smtp'], $config['smtp_options']); /* PAGE */ /* ---- */ diff --git a/studs.php b/studs.php index b9a30b2..531bf13 100644 --- a/studs.php +++ b/studs.php @@ -57,7 +57,7 @@ $comments = []; $logService = new LogService(); $pollService = new PollService($connect, $logService); $inputService = new InputService(); -$mailService = new MailService($config['use_smtp']); +$mailService = new MailService($config['use_smtp'], $config['smtp_options']); $notificationService = new NotificationService($mailService); $securityService = new SecurityService(); $sessionService = new SessionService(); From edee5626f4c4e30efed46c803556d6d145054257 Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Mon, 19 Mar 2018 13:04:09 +0100 Subject: [PATCH 02/19] Use own framasoft/framadate-ci image for CI Signed-off-by: Thomas Citharel --- .gitlab-ci.yml | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index ec8f868..dc8a46e 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,19 +1,13 @@ -image: php +image: framasoft/framadate-ci stages: - test - deploy - funky -# install zip, git, composer on each build -before_script: - - apt-get update -yqq - - apt-get install zip unzip git -yqq - # Run php-cs-fixer and phpunit on all branches test: stage: test script: - - curl --silent --show-error https://getcomposer.org/installer | php - php composer.phar install -o --no-interaction --no-progress --prefer-dist - mkdir tpl_c - php vendor/bin/php-cs-fixer fix --verbose --dry-run @@ -28,7 +22,6 @@ pages: script: - latesttag=$(git describe --tags) - git checkout ${latesttag} - - curl --silent --show-error https://getcomposer.org/installer | php - php composer.phar install -o --no-interaction --no-progress --prefer-dist --no-dev - php composer.phar dump-autoload --optimize --no-dev --classmap-authoritative - rm -rf composer.phar @@ -50,7 +43,6 @@ funky: stage: funky script: - git checkout funky - - curl --silent --show-error https://getcomposer.org/installer | php - php composer.phar install - mkdir tpl_c - mkdir .public From e9458c18394a9fa75b667eeff8eb9eddc3cef57c Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Mon, 19 Mar 2018 13:06:31 +0100 Subject: [PATCH 03/19] Move `php composer.phar` to `composer` Signed-off-by: Thomas Citharel --- .gitlab-ci.yml | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index dc8a46e..8ba26c7 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -8,7 +8,7 @@ stages: test: stage: test script: - - php composer.phar install -o --no-interaction --no-progress --prefer-dist + - composer install -o --no-interaction --no-progress --prefer-dist - mkdir tpl_c - php vendor/bin/php-cs-fixer fix --verbose --dry-run - vendor/bin/phpunit --bootstrap app/tests/bootstrap.php --debug app/tests @@ -22,9 +22,8 @@ pages: script: - latesttag=$(git describe --tags) - git checkout ${latesttag} - - php composer.phar install -o --no-interaction --no-progress --prefer-dist --no-dev - - php composer.phar dump-autoload --optimize --no-dev --classmap-authoritative - - rm -rf composer.phar + - composer install -o --no-interaction --no-progress --prefer-dist --no-dev + - composer dump-autoload --optimize --no-dev --classmap-authoritative - mkdir tpl_c - mkdir framadate - mv `ls -A | grep -v framadate` ./framadate @@ -43,7 +42,7 @@ funky: stage: funky script: - git checkout funky - - php composer.phar install + - composer install - mkdir tpl_c - mkdir .public - cp -r * .public From 2711b3a019fbf49a3c7322c805efcd0fe8fe878c Mon Sep 17 00:00:00 2001 From: Pierre Rudloff Date: Mon, 19 Mar 2018 12:15:38 +0100 Subject: [PATCH 04/19] lang attribute must be a valid IETF language tag --- app/inc/i18n.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/inc/i18n.php b/app/inc/i18n.php index c2ddd1c..14a28cb 100644 --- a/app/inc/i18n.php +++ b/app/inc/i18n.php @@ -29,7 +29,7 @@ if (isset($_POST['lang']) && is_string($_POST['lang']) && in_array($_POST['lang' /* */ $i18n->get('', 'Something, just to load the dictionary'); -$locale = $i18n->getLoadedLang(); +$locale = str_replace('_', '-', $i18n->getLoadedLang()); /* Date Format */ $date_format['txt_full'] = __('Date', 'FULL'); //summary in create_date_poll.php and removal date in choix_(date|autre).php From f34416915718b8e48d8a496f06d1e867d04cecaa Mon Sep 17 00:00:00 2001 From: Pierre Rudloff Date: Mon, 19 Mar 2018 13:45:50 +0100 Subject: [PATCH 05/19] Missing string in French and English locales --- locale/en.json | 1 + locale/fr.json | 1 + locale/fr_FR.json | 1 + 3 files changed, 3 insertions(+) diff --git a/locale/en.json b/locale/en.json index 3689697..ecd961e 100644 --- a/locale/en.json +++ b/locale/en.json @@ -180,6 +180,7 @@ "Day": "Day", "Description": "Description", "Edit": "Edit", + "Framadate is an online service for planning an appointment or make a decision quickly and easily.": "Framadate is an online service for planning an appointment or make a decision quickly and easily.", "Home": "Home", "Ifneedbe": "Ifneedbe", "Legend:": "Legend:", diff --git a/locale/fr.json b/locale/fr.json index 4eb501e..0e28bcd 100644 --- a/locale/fr.json +++ b/locale/fr.json @@ -180,6 +180,7 @@ "Day": "Jour", "Description": "Description", "Edit": "Modifier", + "Framadate is an online service for planning an appointment or make a decision quickly and easily.": "Framadate est un service en ligne permettant de planifier un rendez-vous ou prendre des décisions rapidement et simplement.", "Home": "Accueil", "Ifneedbe": "Si nécessaire", "Legend:": "Légende :", diff --git a/locale/fr_FR.json b/locale/fr_FR.json index 4eb501e..0e28bcd 100644 --- a/locale/fr_FR.json +++ b/locale/fr_FR.json @@ -180,6 +180,7 @@ "Day": "Jour", "Description": "Description", "Edit": "Modifier", + "Framadate is an online service for planning an appointment or make a decision quickly and easily.": "Framadate est un service en ligne permettant de planifier un rendez-vous ou prendre des décisions rapidement et simplement.", "Home": "Accueil", "Ifneedbe": "Si nécessaire", "Legend:": "Légende :", From 05e9ea158994a830b53f2b9be03b632ede95c557 Mon Sep 17 00:00:00 2001 From: Luc Didry Date: Mon, 19 Mar 2018 16:12:53 +0100 Subject: [PATCH 06/19] Update locales --- locale/br.json | 1 + locale/de.json | 1 + locale/es.json | 1 + locale/it.json | 1 + locale/nl.json | 1 + locale/oc.json | 1 + 6 files changed, 6 insertions(+) diff --git a/locale/br.json b/locale/br.json index 4d2b288..190c3d1 100644 --- a/locale/br.json +++ b/locale/br.json @@ -176,6 +176,7 @@ "Day": "Devezh", "Description": "Deskrivadur", "Edit": "Modify", + "Framadate is an online service for planning an appointment or make a decision quickly and easily.": "Ur gwazerezh enlinenn evit prientiñ un emgav pe kemer un diviz a-stroll en un doare eeun hag aes eo Framadate. ", "Home": "Degemer", "Ifneedbe": "Marteze", "Legend:": "Alc'hwez:", diff --git a/locale/de.json b/locale/de.json index cadcc27..43db9a3 100644 --- a/locale/de.json +++ b/locale/de.json @@ -176,6 +176,7 @@ "Day": "Tag", "Description": "Beschreibung", "Edit": "Bearbeiten", + "Framadate is an online service for planning an appointment or make a decision quickly and easily.": "Framadate ist ein Online-Dienst, der Ihnen bei der Absprache von Terminen oder der Entscheidungsfindung hilft.", "Home": "Startseite", "Ifneedbe": "Wenn notwendig", "Legend:": "Legende:", diff --git a/locale/es.json b/locale/es.json index 7e9c02b..9ebc4d0 100644 --- a/locale/es.json +++ b/locale/es.json @@ -176,6 +176,7 @@ "Day": "Día", "Description": "Descripción", "Edit": "Cambio", + "Framadate is an online service for planning an appointment or make a decision quickly and easily.": "Framadate es un servicio en línea que permite planificar un encuentro o tomar decisiones rapidamente y de manera sencilla.", "Home": "Inicio", "Ifneedbe": "En caso de ser necesario", "Legend:": "Leyenda:", diff --git a/locale/it.json b/locale/it.json index c86e4ac..8d58553 100644 --- a/locale/it.json +++ b/locale/it.json @@ -176,6 +176,7 @@ "Day": "giorni", "Description": "Descrizione", "Edit": "Modificare", + "Framadate is an online service for planning an appointment or make a decision quickly and easily.": "Framadate è un servizio online per pianificare un appuntamento o prendere una decisione velocemente e facilmente.", "Home": "Home Page", "Ifneedbe": "Se necessario", "Legend:": "Legenda:", diff --git a/locale/nl.json b/locale/nl.json index b20d5a5..f2e2bc2 100644 --- a/locale/nl.json +++ b/locale/nl.json @@ -176,6 +176,7 @@ "Day": "dagen", "Description": "Beschrijving", "Edit": "Bewerk", + "Framadate is an online service for planning an appointment or make a decision quickly and easily.": "Framadate is een online service om snel en makkelijk een afspraak te plannen of een beslissing te nemen.", "Home": "Home", "Ifneedbe": "Indien nodig", "Legend:": "Legenda:", diff --git a/locale/oc.json b/locale/oc.json index b66c3da..ee4dbc7 100644 --- a/locale/oc.json +++ b/locale/oc.json @@ -180,6 +180,7 @@ "Day": "Jorn", "Description": "Descripcion", "Edit": "Modificar", + "Framadate is an online service for planning an appointment or make a decision quickly and easily.": "Framadate es un servici en linha que permet d’organizar un rendètz-vos o de prene de decisions rapidament e simplament.", "Home": "Acuèlh", "Ifneedbe": "Se cal", "Legend:": "Legenda :", From ea3e391b877f90c1c828415972d1a5bf67fffbf5 Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Mon, 19 Mar 2018 18:01:19 +0100 Subject: [PATCH 07/19] Fix datepicker locale path Closes #279 Signed-off-by: Thomas Citharel --- app/inc/smarty.php | 27 +++++++++++++++++++++++++++ tpl/page.tpl | 4 ++-- tpl/part/description_markdown.tpl | 4 ++-- 3 files changed, 31 insertions(+), 4 deletions(-) diff --git a/app/inc/smarty.php b/app/inc/smarty.php index 90afe4b..e3d6d4b 100644 --- a/app/inc/smarty.php +++ b/app/inc/smarty.php @@ -75,3 +75,30 @@ function smarty_modifier_addslashes_single_quote($string) { function smarty_modifier_html($html) { return Utils::htmlEscape($html); } + +function smarty_modifier_datepicker_path($lang) { + $i = 0; + while (!is_file(path_for_datepicker_locale($lang)) && $i < 3) { + $lang_arr = explode('-', $lang); + if ($lang_arr && count($lang_arr) > 1) { + $lang = $lang_arr[0]; + } else { + $lang = 'en'; + } + $i += 1; + } + return 'js/locales/bootstrap-datepicker.' . $lang . '.js'; +} + +function smarty_modifier_locale_2_lang($locale) { + $lang_arr = explode('-', $locale); + if ($lang_arr && count($lang_arr) > 1) { + return $lang_arr[0]; + } else { + return $locale; + } +} + +function path_for_datepicker_locale($lang) { + return __DIR__ . '/../../js/locales/bootstrap-datepicker.' . $lang . '.js'; +} diff --git a/tpl/page.tpl b/tpl/page.tpl index e307e59..f04705d 100644 --- a/tpl/page.tpl +++ b/tpl/page.tpl @@ -23,8 +23,8 @@ - {if "en" != $locale} - + {if 'en' != $locale} + {/if} diff --git a/tpl/part/description_markdown.tpl b/tpl/part/description_markdown.tpl index e2bb823..7a407df 100644 --- a/tpl/part/description_markdown.tpl +++ b/tpl/part/description_markdown.tpl @@ -26,9 +26,9 @@

{__('Step 1', 'More informations here:')} - http://{$locale}.wikipedia.org/wiki/Markdown + http://{$locale|locale_2_lang}.wikipedia.org/wiki/Markdown

- \ No newline at end of file + From 3705e6c493e2bad235b3200fba431746e97fe506 Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Mon, 19 Mar 2018 18:06:13 +0100 Subject: [PATCH 08/19] CS Signed-off-by: Thomas Citharel --- app/inc/smarty.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/app/inc/smarty.php b/app/inc/smarty.php index e3d6d4b..96f57ac 100644 --- a/app/inc/smarty.php +++ b/app/inc/smarty.php @@ -94,9 +94,8 @@ function smarty_modifier_locale_2_lang($locale) { $lang_arr = explode('-', $locale); if ($lang_arr && count($lang_arr) > 1) { return $lang_arr[0]; - } else { - return $locale; } + return $locale; } function path_for_datepicker_locale($lang) { From 65d8fd9639754a4a721e0d43a3525879f0f77ccd Mon Sep 17 00:00:00 2001 From: Luc Didry Date: Tue, 20 Mar 2018 17:09:02 +0100 Subject: [PATCH 09/19] [zanata] Use en translation string if not translated --- .po2json.sh | 4 +++- .renest_json.pl | 18 ++++++++++++++++-- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/.po2json.sh b/.po2json.sh index c39517e..2ff9045 100755 --- a/.po2json.sh +++ b/.po2json.sh @@ -1,7 +1,9 @@ #!/bin/bash +po2json -i po/en.po -t locale/en.json --progress none -o po/default.json + for i in po/*.po do j=$(echo $i | cut -d '.' -f 1 | cut -d '/' -f 2) po2json -i $i -t locale/en.json --progress none | ./.renest_json.pl > po/$j.json + mv po/$j.json locale/ done -mv po/*.json locale/ diff --git a/.renest_json.pl b/.renest_json.pl index 55bf8d1..2c72278 100755 --- a/.renest_json.pl +++ b/.renest_json.pl @@ -3,10 +3,20 @@ use strict; use warnings; use JSON; -#use Hash::Merge::Simple qw(merge); my $json = JSON->new->utf8->space_before(0)->space_after(1)->indent(4)->canonical(1); +my $en_file = 'po/default.json'; +my $en; +{ + open my $fh, '<', $en_file or die; + local $/ = undef; + $en = <$fh>; + close $fh; +} + +$en = $json->decode($en); + my $new_json = {}; my $old_json = ''; @@ -20,7 +30,11 @@ for my $key (keys %{$old_json}) { my $real_key = substr($key, 0, $index++); my $trad_key = substr($key, $index); - $new_json->{$real_key}->{$trad_key} = $old_json->{$key} if $old_json->{$key}; + if ($old_json->{$key}) { + $new_json->{$real_key}->{$trad_key} = $old_json->{$key}; + } else { + $new_json->{$real_key}->{$trad_key} = $en->{$key}; + } } print $json->encode($new_json); From eccae40718aa0937b30ba0e1072d86ed15e8b787 Mon Sep 17 00:00:00 2001 From: Luc Didry Date: Tue, 20 Mar 2018 17:10:04 +0100 Subject: [PATCH 10/19] Update translations --- locale/ar.json | 448 +++++++++++++++++++++++++++++++++++++++++++++++++ locale/br.json | 7 + locale/de.json | 7 + locale/es.json | 7 + locale/it.json | 7 + locale/nl.json | 15 +- locale/oc.json | 3 + 7 files changed, 493 insertions(+), 1 deletion(-) create mode 100644 locale/ar.json diff --git a/locale/ar.json b/locale/ar.json new file mode 100644 index 0000000..34883d8 --- /dev/null +++ b/locale/ar.json @@ -0,0 +1,448 @@ +{ + "1st section": { + "Define dates or subjects to choose": "Define dates or subjects to choose from", + "Discuss and make a decision": "Discuss and make a decision", + "Do you want to": "Do you want to", + "Framadate is an online service for planning an appointment or make a decision quickly and easily. No registration is required.": "Framadate is an online service for planning an appointment or making a decision quickly and easily. No registration is required.", + "Here is how it works:": "Here is how it works:", + "Make a poll": "Create a poll", + "Send the poll link to your friends or colleagues": "Send the poll link to your friends or colleagues", + "What is that?": "What is Framadate?", + "view an example?": "view an example?" + }, + "2nd section": { + "CeCILL-B license": "CeCILL-B license", + "Framadate was initially based on ": "Framadate was initially based on ", + "It is governed by the": "Framadate is licensed under the", + "The software": "The software", + "This software needs javascript and cookies enabled. It is compatible with the following web browsers:": "This software needs JavaScript and cookies enabled. It is compatible with the following web browsers:", + "a software developed by the University of Strasbourg. Today, it is devevoped by the association Framasoft.": "software developed by the University of Strasbourg. These days, it is developed by the Framasoft association." + }, + "3rd section": { + "Cultivate your garden": "Grow your own", + "If you want to install the software for your own use and thus increase your independence, we help you on:": "If you want to install the software for your own use and thus increase your independence, we can help you at:", + "To participate in the software development, suggest improvements or simply download it, please visit ": "To participate in the software development, suggest improvements or simply download it, please visit ", + "the development site": "the development site" + }, + "Admin": { + "Actions": "Actions", + "Administration": "Administration", + "Author": "Author", + "Back to administration": "Back to administration", + "Change the poll": "Change the poll", + "Confirm removal of the poll": "Confirm removal of the poll ", + "Deleted the poll": "Deleted the poll", + "Email": "Email", + "Expiration date": "Expiry date", + "Fail": "Fail", + "Failed:": "Failed:", + "Format": "Format", + "Installation": "Installation", + "Logs": "Logs", + "Migration": "Migration", + "Nothing": "Nothing", + "Pages:": "الصفحات :", + "Poll ID": "Poll ID", + "Polls": "إستطلاعات الرأي", + "Purge": "Purge", + "Purge the polls": "Purge the polls", + "Purged:": "Purged:", + "See the poll": "See the poll", + "Skipped:": "Skipped:", + "Succeeded:": "Succeeded:", + "Success": "Success", + "Summary": "الملخص", + "Title": "Title", + "Votes": "الأصوات", + "polls in the database at this time": "polls in the database at this time" + }, + "Check": { + "Check again": "Check again", + "Consider enabling the PHP extension OpenSSL for increased security.": "Consider enabling the PHP extension OpenSSL for increased security.", + "Consider setting the date.timezone in php.ini.": "Consider setting the date.timezone in php.ini.", + "Consider setting « session.cookie_httponly = 1 » inside your php.ini or add « php_value session.cookie_httponly 1 » to your .htaccess so that cookies can't be accessed through Javascript.": "Consider setting « session.cookie_httponly = 1 » inside your php.ini or add « php_value session.cookie_httponly 1 » to your .htaccess so that cookies can't be accessed through Javascript.", + "Continue the installation": "مواصلة التنصيب", + "Cookies are served from HTTP only.": "Cookies are served from HTTP only.", + "Installation checking": "Installation checking", + "OpenSSL extension loaded.": "OpenSSL extension loaded.", + "PHP Intl extension is enabled.": "PHP Intl extension is enabled.", + "PHP version %s is enough (needed at least PHP %s).": "PHP version %s is enough (needed at least PHP %s).", + "The config file directory (%s) is not writable and the config file (%s) does not exists.": "The config file directory (%s) is not writable and the config file (%s) does not exists.", + "The config file directory (%s) is writable.": "The config file directory (%s) is writable.", + "The config file exists.": "ملف الإعداد موجود.", + "The template compile directory (%s) doesn't exist in \"%s\". Retry the installation process.": "The template compile directory (%s) doesn't exist in \"%s\". Retry the installation process.", + "The template compile directory (%s) is not writable.": "The template compile directory (%s) is not writable.", + "The template compile directory (%s) is writable.": "The template compile directory (%s) is writable.", + "You need to enable the PHP Intl extension.": "You need to enable the PHP Intl extension.", + "Your PHP version (%s) is too old. This application needs at least PHP %s.": "Your PHP version (%s) is too old. This application needs at least PHP %s.", + "date.timezone is set.": "date.timezone is set." + }, + "Comments": { + "Add a comment to the poll": "إضافة تعليق إلى إستطلاع الرأي", + "Comment added": "تم حفظ التعليق", + "Comments of polled people": "التعليقات", + "Remove the comment": "حذف التعليق", + "Send the comment": "إرسال التعليق", + "Your comment": "تعليق", + "anonyme": "مجهول" + }, + "Date": { + "Add range dates": "Add range dates", + "DATE": "%Y-%m-%d", + "DATETIME": "%m/%d/%Y %H:%M", + "DAY": "%a %e", + "End date": "End date", + "FULL": "%A, %B %e, %Y", + "MONTH_YEAR": "%B %Y", + "Max dates count": "You can select at most 4 months", + "SHORT": "%A %e %B %Y", + "Start date": "Start date", + "datepicker": "yyyy-mm-dd", + "datetime_parseformat": "Y-m-d", + "dd/mm/yyyy": "yyyy-mm-dd" + }, + "EditLink": { + "Edit link for poll \"%s\"": "Edit link for poll \"%s\"", + "Here is the link for editing your vote:": "Here is the link for editing your vote:", + "If you don't want to lose your personalized link, we can send it to your email.": "If you don't want to lose your personalized link, we can send it to your email.", + "Please wait %d seconds before we can send an email to you then try again.": "Please wait %d seconds before we can send an email to you then try again.", + "REMINDER": "تذكير", + "Send": "إرسال", + "The email address is not correct.": "عنوان البريد الإلكتروني غير صحيح.", + "Your reminder has been successfully sent!": "تم إرسال الإخطار بالتذكير بنجاح !" + }, + "Error": { + "Adding vote failed": "Adding vote failed", + "CANT_CONNECT_TO_DATABASE": "Unable to connect to database", + "Can't create an empty column.": "Can't create an empty column.", + "Can't create the config.php file in '%s'.": "Can't create the config.php file in '%s'.", + "Comment failed": "Comment failed", + "Cookies are disabled on your browser. Theirs activation is required to create a poll.": "Cookies are disabled on your browser. They are required to be able to create a poll.", + "Enter a name": "Enter a name", + "Enter a name and a comment!": "Enter a name and a comment!", + "Enter a title": "Enter a title", + "Enter an email address": "Enter an email address", + "Error!": "خطأ !", + "Failed to delete all comments": "Failed to delete all comments", + "Failed to delete all votes": "Failed to delete all votes", + "Failed to delete column": "Failed to delete column", + "Failed to delete the comment": "Failed to delete the comment", + "Failed to delete the poll": "Failed to delete the poll", + "Failed to delete the vote!": "Failed to delete the vote!", + "Failed to insert the comment!": "Failed to insert the comment!", + "Failed to save poll": "Failed to save poll", + "Forbidden!": "ممنوع !", + "Framadate is not properly installed, please check the \"INSTALL\" to setup the database before continuing.": "Framadate is not properly installed, please see the 'INSTALL' file for instructions on setting up the database before continuing.", + "Javascript is disabled on your browser. Its activation is required to create a poll.": "JavaScript is disabled on your browser. It is required to create a poll.", + "MISSING_VALUES": "Missing values", + "No polls found": "No polls found", + "Password is empty": "كلمة السر فارغة.", + "Passwords do not match": "كلمتي السر غير متطابقتان.", + "Poll has been updated before you vote": "Poll has been updated before you vote", + "Poll id already used": "Identifier is already used", + "Something is going wrong...": "حدث هناك خطأ ما ...", + "Something is wrong with the format": "Something is wrong with the format", + "The address is not correct! You should enter a valid email address (like r.stallman@outlock.com) in order to receive the link to your poll.": "The address is not correct! You should enter a valid email address (like r.stallman@outlock.com) in order to receive the link to your poll.", + "The column already exists": "The column already exists", + "The name is invalid.": "The name is invalid.", + "The name you've chosen already exist in this poll!": "The name you've chosen already exists in this poll!", + "There is a problem with your choices": "There is a problem with your choices", + "This poll doesn't exist !": "This poll doesn't exist!", + "Update vote failed": "Update vote failed", + "You already voted": "You already voted", + "You can't create a poll with hidden results with the following edition option:": "You can't create a poll with hidden results with the following option: ", + "You can't select more than %d dates": "You can't select more than %d dates", + "You haven't filled the first section of the poll creation.": "You haven't filled in the first section of the poll.", + "Your vote wasn't counted, because someone voted in the meantime and it conflicted with your choices and the poll conditions. Please retry.": "Your vote wasn't counted, because someone voted in the meantime and it conflicted with your choices and the poll conditions. Please retry." + }, + "FindPolls": { + "Have a good day!": "طاب نهارك !", + "Here is the list of the polls that you manage on %s:": "Here is the list of the polls that you manage on %s:", + "If you weren't the source of this action and if you think this is an abuse of the service, please notify the administrator on %s.": "If you weren't the source of this action and if you think this is an abuse of the service, please notify the administrator on %s.", + "List of your polls": "قائمة إستطلاعات الرأي الخاصة بك", + "PS: this email has been sent because you – or someone else – asked to get back the polls created with your email address.": "PS: this email has been sent because you – or someone else – asked to get back the polls created with your email address.", + "Polls sent": "Polls sent", + "Send me my polls": "Send me my polls" + }, + "Generic": { + "(in the format name@mail.com)": "(على نسق name@mail.com)", + "ASTERISK": "*", + "Add": "إضافة", + "Back": "العودة", + "Back to the homepage of": "العودة إلى صفحة", + "Cancel": "إلغاء", + "Caption": "Caption", + "Choice": "الخَيار", + "Classic": "عادي", + "Close": "إغلاق", + "Creation date:": "تاريخ الإنشاء :", + "Date": "التاريخ", + "Day": "يوم", + "Description": "الوصف", + "Edit": "تعديل", + "Framadate is an online service for planning an appointment or make a decision quickly and easily.": "Framadate is an online service for planning an appointment or make a decision quickly and easily.", + "Home": "الرئيسية", + "Ifneedbe": "Ifneedbe", + "Legend:": "Legend:", + "Link": "الرابط", + "Make your polls": "Make your polls", + "Markdown": "Markdown", + "Next": "التالي", + "No": "لا", + "Page generated in": "تم توليد الصفحة في", + "Poll": "Poll", + "Remove": "حذف", + "Save": "حفظ", + "Search": "البحث", + "Time": "الوقت", + "Validate": "Validate", + "Yes": "نعم", + "Your email address": "عنوان بريدك الإلكتروني", + "Your name": "إسمك", + "days": "أيام", + "for": "for", + "months": "أشهر", + "seconds": "ثواني", + "vote": "vote", + "votes": "أصوات", + "with": "with" + }, + "Homepage": { + "Make a classic poll": "Make a standard poll", + "Schedule an event": "Schedule an event", + "Where are my polls": "Where are my polls?" + }, + "Installation": { + "AppMail": "عنوان البريد الإلكتروني الخاص بالمدير", + "AppName": "إسم التطبيق", + "CleanUrl": "Clean URL", + "Database": "إسم قاعدة البيانات", + "DbConnectionString": "Connection string", + "DbPassword": "كلمة السر", + "DbPrefix": "Prefix", + "DbUser": "المستخدم", + "DefaultLanguage": "اللغة الإفتراضية", + "General": "General", + "Install": "تنصيب", + "MigrationTable": "Migration table", + "ResponseMail": "Respond-to mail address" + }, + "Language selector": { + "Change the language": "تغيير اللغة", + "Select the language": "إختيار لغة" + }, + "Mail": { + "Author's message": "Author's message", + "FOOTER": "\"The road is long, but the way is clear…\"
Framasoft lives only by your donations.
Thank you in advance for your support https://soutenir.framasoft.org", + "For sending to the polled users": "Participant link", + "Notification of poll: %s": "Notification of poll: %s", + "Poll's participation: %s": "Poll participation: %s", + "Someone just change your poll available at the following link %s.": "Someone just changed your poll at the following link %1$s.", + "Someone just delete your poll %s.": "Someone just deleted your poll \"%s\".", + "Thanks for filling the poll at the link above": "Please fill in the poll at the link above", + "Thanks for your trust.": "شكرا لك على ثقتك.", + "This is the message you have to send to the people you want to poll. \nNow, you have to send this message to everyone you want to poll.": "This is the message to forward to the poll participants.", + "This message should NOT be sent to the polled people. It is private for the poll's creator.\n\nYou can now modify it at the link above": "This message should NOT be sent to the poll participants. You should keep it private.

You can modify your poll at the link above", + "You have changed the settings of your poll. \nYou can modify this poll with this link": "You have changed the settings of your poll.
You can modify this poll with this link", + "[ADMINISTRATOR] New settings for your poll": "[ADMINISTRATOR] New settings for your poll", + "filled a vote.\nYou can find your poll at the link": "added a vote.
You can visit your poll at the link", + "hast just created a poll called": "has just created a poll called", + "updated a vote.\nYou can find your poll at the link": "updated a vote.
You can visit your poll at the link", + "wrote a comment.\nYou can find your poll at the link": "wrote a comment.
You can visit your poll at the link" + }, + "Maintenance": { + "Thank you for your understanding.": "نشكرك على تفهمك.", + "The application": "التطبيق", + "is currently under maintenance.": "حاليا تجرى عليها عملية صيانة." + }, + "Password": { + "Password": "كلمة السر", + "Submit access": "Submit access", + "Wrong password": "كلمة السر خاطئة", + "You have to provide a password so you can participate to the poll.": "You have to provide a password so you can participate to the poll.", + "You have to provide a password to access the poll.": "You have to provide a password to access the poll." + }, + "Poll results": { + "Addition": "العدد الإجمالي", + "Best choice": "Best choice", + "Best choices": "Best choices", + "Chart": "المنحنى البياني", + "Display the chart of the results": "عرض المنحنى البياني للنتائج", + "Edit the line: %s": "Edit line: %s", + "Remove the line:": "Remove line:", + "Save the choices": "Save choices", + "Scroll to the left": "Scroll to the left", + "Scroll to the right": "Scroll to the right", + "The best choice at this time is:": "The current best choice is:", + "The bests choices at this time are:": "The current best choices are:", + "Vote ifneedbe for": "Vote \"ifneedbe\" for", + "Vote no for": "Vote \"no\" for", + "Vote yes for": "Vote \"yes\" for", + "Votes of the poll": "الأصوات", + "polled user": "polled user", + "polled users": "polled users" + }, + "PollInfo": { + "Admin link of the poll": "Admin link for the poll", + "Cancel the description edit": "Cancel the description edit", + "Cancel the email address edit": "Cancel the email address edit", + "Cancel the expiration date edit": "Cancel the expiration date edit", + "Cancel the name edit": "Cancel the name edit", + "Cancel the rules edit": "Cancel the rules edit", + "Cancel the title edit": "Cancel the title edit", + "Edit the description": "تعديل الوصف", + "Edit the email adress": "تعديل عنوان البريد الإلكتروني", + "Edit the expiration date": "تعديل تاريخ النهاية", + "Edit the name": "تعديل الإسم", + "Edit the poll rules": "Edit the poll rules", + "Edit the title": "تعديل العنوان", + "Email": "البريد الإلكتروني", + "Expiration date": "Expiry date", + "Export to CSV": "Export to CSV", + "Initiator of the poll": "Creator of the poll", + "No password": "No password", + "Only votes are protected": "Only votes are protected", + "Password protected": "Password protected", + "Poll rules": "Poll rules", + "Print": "طباعة", + "Public link of the poll": "Public link to the poll", + "Remove all the comments": "إزالة كافة التعليقات", + "Remove all the votes": "إزالة كافة التصويتات", + "Remove password": "Remove password", + "Remove the poll": "حذف إستطلاع الرأي", + "Results are hidden": "النتائج مخفية", + "Results are visible": "Results are visible", + "Rich editor": "Rich editor", + "Save the description": "حفظ الوصف", + "Save the email address": "حفظ عنوان البريد الإلكتروني", + "Save the new expiration date": "Save the new expiration date", + "Save the new name": "حفظ الإسم الجديد", + "Save the new rules": "حفظ القواعد الجديدة", + "Save the new title": "حفظ العنوان الجديد", + "Simple editor": "محرر بسيط", + "Title": "عنوان موضوع إستطلاع الرأي", + "Votes and comments are locked": "Votes and comments are locked", + "Votes protected by password": "Votes protected by password" + }, + "Step 1": { + "All voters can modify any vote": "All voters can modify any vote", + "Customize the URL": "Customize the URL", + "Go to step 2": "الإنتقال إلى الخطوة 2", + "Limit the ammount of voters per option": "Limit the ammount of voters per option", + "More informations here:": "المزيد من التفاصيل هنا :", + "Only the poll maker can see the poll's results": "Only the poll maker can see the poll results", + "Optional parameters": "Optional parameters", + "Password choice": "Choice", + "Password confirmation": "Confirmation", + "Permissions": "التصريحات", + "Poll creation (1 on 3)": "Poll creation (1 of 3)", + "Poll id": "رابط إستطلاع الرأي", + "Poll id rules": "The identifier can contain letters, numbers and dashes \"-\".", + "Poll id warning": "By defining an identifier that can facilitate access to the poll for unwanted people. It is recommended to protect it with a password.", + "Poll password": "كلمة السر", + "Poll title": "عنوان موضوع إستطلاع الرأي", + "Required fields cannot be left blank.": "لا يجب أن تترك الحقول فارغة.", + "The results are publicly visible": "The results are publicly visible", + "To make the description more attractive, you can use the Markdown format.": "To make the description more attractive, you can use the Markdown format.", + "To receive an email for each new comment": "Receive an email for each new comment", + "To receive an email for each new vote": "Receive an email for each new vote", + "Use a password to restrict access": "Use a password to restrict access", + "Value Max": "Value Max", + "ValueMax instructions": "voters per options ", + "Voters can modify their vote themselves": "Voters can modify their vote themselves", + "Votes cannot be modified": "Votes cannot be modified", + "You are in the poll creation section.": "You are in the poll creation section.", + "You can enable or disable the editor at will.": "You can enable or disable the editor at will." + }, + "Step 2": { + "Back to step 1": "العودة إلى المرحلة 1", + "Go to step 3": "الإنتقال إلى الخطوة 3" + }, + "Step 2 classic": { + "Add a choice": "إضافة خيار", + "Add a link or an image": "إضافة رابط أو صورة", + "Alternative text": "نص بديل", + "It's possible to propose links or images by using": "Links or images can be included using", + "Poll subjects (2 on 3)": "Poll options (2 of 3)", + "Remove a choice": "حذف خيار", + "These fields are optional. You can add a link, an image or both.": "These fields are optional. You can add a link, an image or both.", + "To make a generic poll you need to propose at least two choices between differents subjects.": "To create a poll you should provide at least two different choices.", + "URL of the image": "عنوان رابط الصورة", + "You can add or remove additional choices with the buttons": "بإمكانك إضافة أو حذف خيارات بالنقر على الأزرار", + "the Markdown syntax": "Markdown syntax" + }, + "Step 2 date": { + "Add a day": "إضافة يوم", + "Add an hour": "إضافة مدة زمنية", + "Choose the dates of your poll": "إختر تواريخ إستطلاع الرأي", + "Copy hours of the first day": "Copy times from the first day", + "For each selected day, you can choose, or not, meeting hours (e.g.: \"8h\", \"8:30\", \"8h-10h\", \"evening\", etc.)": "For each selected day, you are free to suggest meeting times (e.g., \"8h\", \"8:30\", \"8h-10h\", \"evening\", etc.)", + "Poll dates (2 on 3)": "Poll dates (2 of 3)", + "Remove a day": "Remove a day", + "Remove all days": "Remove all days", + "Remove all hours": "Remove all times", + "Remove an hour": "Remove a time slot", + "Remove this day": "Remove this day", + "To schedule an event you need to propose at least two choices (two hours for one day or two days).": "To schedule an event you need to provide at least two choices (e.g., two time slots on one day or two days).", + "You can add or remove additionnal days and hours with the buttons": "You can add or remove additional days and times with the buttons" + }, + "Step 3": { + "Archiving date:": "Expiry date:", + "Back to step 2": "Back to step 2", + "Confirm the creation of your poll": "Confirm the creation of your poll", + "Create the poll": "Create the poll", + "List of your choices": "قائمة الخيارات", + "Once you have confirmed the creation of your poll, you will be automatically redirected on the administration page of your poll.": "Once you have confirmed the creation of your poll, you will automatically be redirected to the poll's administration page.", + "Removal date and confirmation (3 on 3)": "Removal date and confirmation (3 of 3)", + "Then, you will receive quickly two emails: one contening the link of your poll for sending it to the voters, the other contening the link to the administration page of your poll.": "Then you will receive two emails: one containing the link of your poll for sending to the participants, the other containing the link to the poll administration page.", + "You can set a closer archiving date for it.": "You can set a specific expiry date for the poll.", + "Your poll will automatically be archived": "Your poll will automatically be archived", + "Your poll will be automatically archived in %d days.": "Your poll will be automatically archived in %d days.", + "after the last date of your poll.": "after the last date of your poll." + }, + "adminstuds": { + "Add a column": "إضافة عمود", + "All comments deleted": "تم حذف كافة التعليقات", + "All votes deleted": "تم حذف كافة الأصوات", + "As poll administrator, you can change all the lines of this poll with this button": "As poll administrator, you can change all the lines of this poll with this button", + "Back to the poll": "العودة إلى إستطلاع الرأي", + "Choice added": "Choice added", + "Column removed": "تم حذف العمود", + "Column's adding": "Adding a column", + "Comment deleted": "تم حذف التعليق", + "Confirm removal of all comments of the poll": "Confirm removal of all comments", + "Confirm removal of all votes of the poll": "Confirm removal of all votes", + "Confirm removal of the column.": "Confirm removal of the column.", + "Confirm removal of the poll": "Confirm removal of your poll", + "Delete the poll": "حذف إستطلاع الرأي", + "Finally, you can change the informations of this poll like the title, the comments or your email address.": "Finally, you can change the properties of this poll such as the title, the comments or your email address.", + "If you just want to add a new hour to an existant date, put the same date and choose a new hour.": "If you just want to add a new time slot to an existing date, add that date here and choose a new time slot.", + "Keep comments": "الإحتفاظ بالتعليقات", + "Keep the comments": "الإحتفاظ بالتعليقات", + "Keep the poll": "الإحتفاظ باستطلاع الرأي", + "Keep the votes": "الإحتفاظ على الأصوات", + "Keep this poll": "Keep this poll", + "Keep votes": "Keep votes", + "Poll fully deleted": "تم حذف إستطلاع الرأي بالكامل", + "Poll saved": "تم حفظ إستطلاع الرأي", + "Remove the column": "حذف عمود", + "Remove the comments": "إزالة التعليقات", + "Remove the votes": "حذف الأصوات", + "Vote added": "Vote added", + "Vote deleted": "Vote deleted", + "Vote updated": "تم تحديث التصويت", + "You can add a new scheduling date to your poll.": "You can add a new scheduling date to your poll.", + "Your poll has been removed!": "Your poll has been removed!", + "and add a new column with": "and add a new column with", + "remove a column or a line with": "remove a column or a line with" + }, + "studs": { + "Adding the vote succeeded": "Vote added", + "Deletion date:": "Deletion date:", + "If you want to vote in this poll, you have to give your name, choose the values that fit best for you and validate with the plus button at the end of the line.": "If you want to vote in this poll, you have to give your name, make your choice, and submit it with the plus button at the end of the line.", + "POLL_LOCKED_WARNING": "The administrator locked this poll. Votes and comments are frozen, it is no longer possible to participate", + "The poll is expired, it will be deleted soon.": "The poll has expired, it will soon be deleted.", + "Update vote succeeded": "Vote updated", + "Your vote has been registered successfully, but be careful: regarding this poll options, you need to keep this personal link to edit your own vote:": "Your vote has been saved, but please note: you need to keep this personalised link to be able to edit your vote." + } +} diff --git a/locale/br.json b/locale/br.json index 190c3d1..7121b7d 100644 --- a/locale/br.json +++ b/locale/br.json @@ -123,7 +123,11 @@ "Enter a title": "Ret eo enankañ un titl!", "Enter an email address": "Ret eo enankañ ur chomlec'h postel", "Error!": "Fazi!", + "Failed to delete all comments": "Failed to delete all comments", + "Failed to delete all votes": "Failed to delete all votes", "Failed to delete column": "C'hwitadenn war zilemel ar bann", + "Failed to delete the comment": "Failed to delete the comment", + "Failed to delete the poll": "Failed to delete the poll", "Failed to delete the vote!": "C'hwitadenn en ur zilemel ar vouezh!", "Failed to insert the comment!": "C'hwitadenn en ur enlakaat an evezhiadenn!", "Failed to save poll": "C'hwitadenn war enrolladenn ar sontadeg", @@ -324,6 +328,7 @@ "All voters can modify any vote": "An holl vouezhierien a c'hall kemmañ an holl vouezhioù", "Customize the URL": "Personelaat an ere", "Go to step 2": "Mont d'ar bazenn 2", + "Limit the ammount of voters per option": "Limit the ammount of voters per option", "More informations here:": "Titouroù ouzhpenn amañ:", "Only the poll maker can see the poll's results": "N'eus nemet krouer ar sontadeg a c'hell gwelet an disoc'hoù", "Optional parameters": "Arventennoù diret", @@ -342,6 +347,8 @@ "To receive an email for each new comment": "Degemer ur postel evit pep evezhiadenn nevez", "To receive an email for each new vote": "Degemer ur postel evit pep mouezh nevez", "Use a password to restrict access": "Lakaat ur ger-tremen evit bevenniñ an haeziñ", + "Value Max": "Value Max", + "ValueMax instructions": "voters per options ", "Voters can modify their vote themselves": "Pep mouezhier a c'hell kemmañ e vouezh", "Votes cannot be modified": "N'hall ket ar mouezhioù bezañ kemmet", "You are in the poll creation section.": "Dibabet ho peus krouiñ ur sontadeg nevez.", diff --git a/locale/de.json b/locale/de.json index 43db9a3..e68657e 100644 --- a/locale/de.json +++ b/locale/de.json @@ -123,7 +123,11 @@ "Enter a title": "Titel eingeben", "Enter an email address": "Geben Sie eine E-Mail Adresse ein", "Error!": "Fehler!", + "Failed to delete all comments": "Alle kommentare konnten nicht gelöscht werden.", + "Failed to delete all votes": "Alle stimmen konnten nicht gelöscht werden.", "Failed to delete column": "Löschen der Spalte fehlgeschlagen", + "Failed to delete the comment": "Der kommentar konnte nicht gelöscht werden.", + "Failed to delete the poll": "Die umfrage konnte nicht gelöscht werden.", "Failed to delete the vote!": "Löschen der Wertung gescheitert!", "Failed to insert the comment!": "Einfügen des Kommentars gescheitert!", "Failed to save poll": "Speichern der Umfrage fehlgeschlagen", @@ -324,6 +328,7 @@ "All voters can modify any vote": "Jeder Teilnehmer kann jede abgegebene Wertung ändern", "Customize the URL": "Link anpassen", "Go to step 2": "Weiter zum 2. Schritt", + "Limit the ammount of voters per option": "Begrenzung der anzahl der aähler pro option", "More informations here:": "DE_Plus d'informations ici :", "Only the poll maker can see the poll's results": "Einzig der Autor der Abstimmung kann die Ergebnisse einsehen", "Optional parameters": "Optionale Einstellungen", @@ -342,6 +347,8 @@ "To receive an email for each new comment": "Bei jedem neuen Kommentar eine E-Mail erhalten", "To receive an email for each new vote": "Bei jeder neuen Wertung eine E-Mail erhalten", "Use a password to restrict access": "Verwende ein Passwort um den Zugriff zu beschänken", + "Value Max": "Wert Max", + "ValueMax instructions": "wähler pro option ", "Voters can modify their vote themselves": "Teilnehmer können ihre Wertungen verändern", "Votes cannot be modified": "Wertungen können nicht verändert werden", "You are in the poll creation section.": "Hier erstellen Sie die Umfrage", diff --git a/locale/es.json b/locale/es.json index 9ebc4d0..c47caa9 100644 --- a/locale/es.json +++ b/locale/es.json @@ -123,7 +123,11 @@ "Enter a title": "Introducza un título", "Enter an email address": "Introduzca un correo electrónico", "Error!": "¡Error!", + "Failed to delete all comments": "No se han eliminado todos los comentarios", + "Failed to delete all votes": "No se han eliminado todos los votos", "Failed to delete column": "Error al eliminar la columna", + "Failed to delete the comment": "No se ha podido eliminar el comentario", + "Failed to delete the poll": "No se borró la encuesta", "Failed to delete the vote!": "Error al borrar el voto", "Failed to insert the comment!": "Error al crear el comentario", "Failed to save poll": "Error al guardar la encuesta", @@ -324,6 +328,7 @@ "All voters can modify any vote": "Los votos pueden ser modificados por cualquiera", "Customize the URL": "ES_Personnaliser le lien", "Go to step 2": "Ir al paso número 2", + "Limit the ammount of voters per option": "Limitar el número de votantes por opción", "More informations here:": "ES_Plus d'informations ici :", "Only the poll maker can see the poll's results": "Solo el creador de la encuesta puede ver los resultados", "Optional parameters": "ES_Paramètres optionnels", @@ -342,6 +347,8 @@ "To receive an email for each new comment": "Recibir un correo electrónico para cada nuevo comentario", "To receive an email for each new vote": "Recibir un correo electrónico para cada nuevo voto", "Use a password to restrict access": "ES_Utiliser un mot de passe pour restreindre l'accès au sondage", + "Value Max": "Valor max", + "ValueMax instructions": "votantes por opciones ", "Voters can modify their vote themselves": "Los votos peuden ser modificados por su autor", "Votes cannot be modified": "Los votos no pueden ser modificados", "You are in the poll creation section.": "Usted ha eligido crear una nueva encuesta", diff --git a/locale/it.json b/locale/it.json index 8d58553..700fec0 100644 --- a/locale/it.json +++ b/locale/it.json @@ -123,7 +123,11 @@ "Enter a title": "È necessario inserire un titolo !", "Enter an email address": "È necessario inserire un indirizzo e-mail!", "Error!": "Errore!", + "Failed to delete all comments": "Failed to delete all comments", + "Failed to delete all votes": "Failed to delete all votes", "Failed to delete column": "Impossibile eliminare la colonna", + "Failed to delete the comment": "Failed to delete the comment", + "Failed to delete the poll": "Failed to delete the poll", "Failed to delete the vote!": "Failed to delete the vote!", "Failed to insert the comment!": "Errore nell'inserimento del commento !", "Failed to save poll": "Errore nel salvataggio del sondaggio", @@ -324,6 +328,7 @@ "All voters can modify any vote": "Tutti i votanti possono cambiare tutti i voti", "Customize the URL": "Personalizzare il link", "Go to step 2": "Andare al punto 2", + "Limit the ammount of voters per option": "Limit the ammount of voters per option", "More informations here:": "IT_Plus d'informations ici :", "Only the poll maker can see the poll's results": "Solo il creatore sondaggio possono vedere i risultati", "Optional parameters": "Parametri opzionali", @@ -342,6 +347,8 @@ "To receive an email for each new comment": "Per ricevere una e-mail per ogni nuovo commento", "To receive an email for each new vote": "Per ricevere un'email per ogni nuovo voto", "Use a password to restrict access": "Utilizzare una passwor per limitare l'accesso al sondaggio", + "Value Max": "Value Max", + "ValueMax instructions": "voters per options ", "Voters can modify their vote themselves": "I partecipanti possono modificare il loro voto in autonomia", "Votes cannot be modified": "Nessun voto può essere modificato", "You are in the poll creation section.": "Avete scelto di creare un nuovo sondaggio.", diff --git a/locale/nl.json b/locale/nl.json index f2e2bc2..b719759 100644 --- a/locale/nl.json +++ b/locale/nl.json @@ -123,7 +123,11 @@ "Enter a title": "Voer een titel in", "Enter an email address": "Voer een emailadres in", "Error!": "Fout!", + "Failed to delete all comments": "Failed to delete all comments", + "Failed to delete all votes": "Failed to delete all votes", "Failed to delete column": "Kolom verwijderen mislukt", + "Failed to delete the comment": "Failed to delete the comment", + "Failed to delete the poll": "Failed to delete the poll", "Failed to delete the vote!": "Het is niet gelukt de stem te verwijderen!", "Failed to insert the comment!": "Het is niet gelukt om de opmerking in te voegen!", "Failed to save poll": "Opslaan van de poll gefaald", @@ -229,6 +233,7 @@ }, "Mail": { "Author's message": "Bericht van de auteur", + "FOOTER": "\"The road is long, but the way is clear…\"
Framasoft lives only by your donations.
Thank you in advance for your support https://soutenir.framasoft.org", "For sending to the polled users": "Link voor deelnemers", "Notification of poll: %s": "Bericht van poll: %s", "Poll's participation: %s": "Poll deelname: %s", @@ -307,12 +312,14 @@ "Remove the poll": "Verwijder de poll", "Results are hidden": "Resultaten zijn verborgen.", "Results are visible": "Resultaten zijn zichtbaar.", + "Rich editor": "Rich editor", "Save the description": "Beschrijving opslaan", "Save the email address": "Emailadres opslaan", "Save the new expiration date": "Nieuwe vervaldatum opslaan", "Save the new name": "Nieuwe naam opslaan", "Save the new rules": "Nieuwe regels opslaan", "Save the new title": "Nieuwe titel opslaan", + "Simple editor": "Simple editor", "Title": "Titel van de poll", "Votes and comments are locked": "Stemmen en opmerkingen zijn uitgeschakeld", "Votes protected by password": "Stemmen beveiligd met een wachtwoord" @@ -321,6 +328,8 @@ "All voters can modify any vote": "Alle stemmers kunnen elke stem aanpassen", "Customize the URL": "Link verpersoonlijken", "Go to step 2": "Ga naar stap 2", + "Limit the ammount of voters per option": "Limit the ammount of voters per option", + "More informations here:": "More informations here:", "Only the poll maker can see the poll's results": "Alleen degene die de poll aangemaakt heeft kan de resultaten zien", "Optional parameters": "Optionele parameters", "Password choice": "Keuze", @@ -334,12 +343,16 @@ "Poll title": "Poll titel", "Required fields cannot be left blank.": "Verplichte velden kunnen niet leeg blijven.", "The results are publicly visible": "De resultaten zijn zichtbaar zonder wachtwoord", + "To make the description more attractive, you can use the Markdown format.": "To make the description more attractive, you can use the Markdown format.", "To receive an email for each new comment": "Ontvang een email bij elke nieuwe opmerking", "To receive an email for each new vote": "Ontvang een email bij elke nieuwe stem", "Use a password to restrict access": "Toegang tot poll beperken met een paswoord", + "Value Max": "Value Max", + "ValueMax instructions": "voters per options ", "Voters can modify their vote themselves": "Stemmers kunnen hun eigen stem aanpassen", "Votes cannot be modified": "Stemmen kunnen niet worden aangepast", - "You are in the poll creation section.": "Je bent in het onderdeel poll aanmaken." + "You are in the poll creation section.": "Je bent in het onderdeel poll aanmaken.", + "You can enable or disable the editor at will.": "You can enable or disable the editor at will." }, "Step 2": { "Back to step 1": "Terug naar stap 1", diff --git a/locale/oc.json b/locale/oc.json index ee4dbc7..2cc86d3 100644 --- a/locale/oc.json +++ b/locale/oc.json @@ -328,6 +328,7 @@ "All voters can modify any vote": "Totes los votants pòdon modificar sos vòtes", "Customize the URL": "Personalizar lo ligam", "Go to step 2": "Anar a l’etapa 2", + "Limit the ammount of voters per option": "Limit the ammount of voters per option", "More informations here:": "More informations here:", "Only the poll maker can see the poll's results": "Solament lo creator del sondatge pòt veire los resultats", "Optional parameters": "Paramètres opcionals", @@ -346,6 +347,8 @@ "To receive an email for each new comment": "Recebre un messatge per cada comentari", "To receive an email for each new vote": "Recebre un messatge per cada participacion", "Use a password to restrict access": "Emplegar un senhal per restrénher l’accès al sondatge", + "Value Max": "Value Max", + "ValueMax instructions": "voters per options ", "Voters can modify their vote themselves": "Cadun pòt modificar son pròpri vòte", "Votes cannot be modified": "Cap de vòte pòt pas èsser modificat", "You are in the poll creation section.": "Avètz causit de crear un sondatge novèl.", From cf48c9c2d77c259ac17d892699a6e68ee2094570 Mon Sep 17 00:00:00 2001 From: Luc Didry Date: Tue, 20 Mar 2018 18:06:07 +0100 Subject: [PATCH 11/19] [i18n] update oc translation --- locale/oc.json | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/locale/oc.json b/locale/oc.json index 2cc86d3..1b0f45a 100644 --- a/locale/oc.json +++ b/locale/oc.json @@ -60,9 +60,9 @@ "Check again": "Tornar verificar", "Consider enabling the PHP extension OpenSSL for increased security.": "Mercés de pensar a activar l’extension PHP OpenSSL per milhorar la seguritat.", "Consider setting the date.timezone in php.ini.": "Mercés de far cas a la definicion de date.timezone dins lo php.ini.", - "Consider setting « session.cookie_httponly = 1 » inside your php.ini or add « php_value session.cookie_httponly 1 » to your .htaccess so that cookies can't be accessed through Javascript.": "Consider setting « session.cookie_httponly = 1 » inside your php.ini or add « php_value session.cookie_httponly 1 » to your .htaccess so that cookies can't be accessed through Javascript.", + "Consider setting « session.cookie_httponly = 1 » inside your php.ini or add « php_value session.cookie_httponly 1 » to your .htaccess so that cookies can't be accessed through Javascript.": "Agachatz de configurar « session.cookie_httponly = 1 » dins de vòstre php.ini o ajustatz « php_value session.cookie_httponly 1 » a vòstre .htaccess per empachar d’accedir als cookies amb lo Javascript.", "Continue the installation": "Contunhar l’installacion", - "Cookies are served from HTTP only.": "Cookies are served from HTTP only.", + "Cookies are served from HTTP only.": "Los cookies son pas que fornits en HTTP.", "Installation checking": "Verificacions de l’installacion", "OpenSSL extension loaded.": "L’extension PHP OpenSSL es cargada.", "PHP Intl extension is enabled.": "L’extension PHP Intl es activada.", @@ -312,14 +312,14 @@ "Remove the poll": "Suprimir lo sondatge", "Results are hidden": "Los resultats son amagats", "Results are visible": "Los resultats son visibles", - "Rich editor": "Rich editor", + "Rich editor": "Editor avençat", "Save the description": "Enregistrar la descripcion", "Save the email address": "Enregistrar l’adreça", "Save the new expiration date": "Enregistrar la data d’expiracion", "Save the new name": "Enregistrar l’autor", "Save the new rules": "Enregistrar las permissions novèlas", "Save the new title": "Enregistrar lo novèl títol", - "Simple editor": "Simple editor", + "Simple editor": "Editor simple", "Title": "Títol del sondatge", "Votes and comments are locked": "Los vòtes e comentaris son clavats", "Votes protected by password": "Vòtes protegits per senhal" @@ -328,8 +328,8 @@ "All voters can modify any vote": "Totes los votants pòdon modificar sos vòtes", "Customize the URL": "Personalizar lo ligam", "Go to step 2": "Anar a l’etapa 2", - "Limit the ammount of voters per option": "Limit the ammount of voters per option", - "More informations here:": "More informations here:", + "Limit the ammount of voters per option": "Limitar lo nombre de votants per opcion", + "More informations here:": "Mai d’informacion aquí :", "Only the poll maker can see the poll's results": "Solament lo creator del sondatge pòt veire los resultats", "Optional parameters": "Paramètres opcionals", "Password choice": "Causida", @@ -343,16 +343,16 @@ "Poll title": "Títol del sondatge", "Required fields cannot be left blank.": "Mercés de garnir totes los formularis obligatòris, marcats amb una *.", "The results are publicly visible": "Los resultats son visibles sens senhal", - "To make the description more attractive, you can use the Markdown format.": "To make the description more attractive, you can use the Markdown format.", + "To make the description more attractive, you can use the Markdown format.": "Per dire de far venir la descripcion mai bèla, podètz utilizar la sintaxi Markdown.", "To receive an email for each new comment": "Recebre un messatge per cada comentari", "To receive an email for each new vote": "Recebre un messatge per cada participacion", "Use a password to restrict access": "Emplegar un senhal per restrénher l’accès al sondatge", - "Value Max": "Value Max", - "ValueMax instructions": "voters per options ", + "Value Max": "Valor maximala", + "ValueMax instructions": "votants per opcions", "Voters can modify their vote themselves": "Cadun pòt modificar son pròpri vòte", "Votes cannot be modified": "Cap de vòte pòt pas èsser modificat", "You are in the poll creation section.": "Avètz causit de crear un sondatge novèl.", - "You can enable or disable the editor at will.": "You can enable or disable the editor at will." + "You can enable or disable the editor at will.": "Podètz activar o desactivar l’editor coma volgatz." }, "Step 2": { "Back to step 1": "Tornar a l’etapa 1", From 18cbfb7b7528b051a6eb1a335d2a6daf71faa111 Mon Sep 17 00:00:00 2001 From: Luc Didry Date: Wed, 21 Mar 2018 09:50:14 +0100 Subject: [PATCH 12/19] [zanata] Add locales target in Makefile to generate framadate.pot --- Makefile | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 08696d2..30fa4c0 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,7 @@ -push-locales: +locales: json2po -P -i locale/en.json -t locale/en.json -o po/framadate.pot + +push-locales: locales zanata-cli -q -B push pull-locales: From 5b5330ceb91f6a32b6967bacd9a5d5d9e0ccee46 Mon Sep 17 00:00:00 2001 From: Luc Didry Date: Wed, 21 Mar 2018 09:52:00 +0100 Subject: [PATCH 13/19] [i18n] Update translations --- locale/ar.json | 2 +- locale/br.json | 2 +- locale/de.json | 14 +++++++------- locale/en.json | 2 +- locale/it.json | 14 +++++++------- locale/nl.json | 2 +- 6 files changed, 18 insertions(+), 18 deletions(-) diff --git a/locale/ar.json b/locale/ar.json index 34883d8..8068fa0 100644 --- a/locale/ar.json +++ b/locale/ar.json @@ -328,7 +328,7 @@ "All voters can modify any vote": "All voters can modify any vote", "Customize the URL": "Customize the URL", "Go to step 2": "الإنتقال إلى الخطوة 2", - "Limit the ammount of voters per option": "Limit the ammount of voters per option", + "Limit the ammount of voters per option": "Limit the amount of voters per option", "More informations here:": "المزيد من التفاصيل هنا :", "Only the poll maker can see the poll's results": "Only the poll maker can see the poll results", "Optional parameters": "Optional parameters", diff --git a/locale/br.json b/locale/br.json index 7121b7d..01ca765 100644 --- a/locale/br.json +++ b/locale/br.json @@ -328,7 +328,7 @@ "All voters can modify any vote": "An holl vouezhierien a c'hall kemmañ an holl vouezhioù", "Customize the URL": "Personelaat an ere", "Go to step 2": "Mont d'ar bazenn 2", - "Limit the ammount of voters per option": "Limit the ammount of voters per option", + "Limit the ammount of voters per option": "Limit the amount of voters per option", "More informations here:": "Titouroù ouzhpenn amañ:", "Only the poll maker can see the poll's results": "N'eus nemet krouer ar sontadeg a c'hell gwelet an disoc'hoù", "Optional parameters": "Arventennoù diret", diff --git a/locale/de.json b/locale/de.json index e68657e..281e4ad 100644 --- a/locale/de.json +++ b/locale/de.json @@ -3,11 +3,11 @@ "Define dates or subjects to choose": "Zeitpunkte oder andere Alternativen zur Auswahl stellen", "Discuss and make a decision": "Besprechen und Entscheidungen treffen", "Do you want to": "Wollen Sie sich", - "Framadate is an online service for planning an appointment or make a decision quickly and easily. No registration is required.": "Framadate ist ein Online-Dienst, der Ihnen bei der Absprache von Terminen oder der Entscheidungsfindung hilft. Es ist keinerlei Registrierung ist erforderlich. ", - "Here is how it works:": "So geht es:", + "Framadate is an online service for planning an appointment or make a decision quickly and easily. No registration is required.": "Framadate ist ein Online-Dienst, der Ihnen bei der Absprache von Terminen oder der Entscheidungsfindung hilft. Es ist keinerlei Registrierung erforderlich.", + "Here is how it works:": "So funktioniert es:", "Make a poll": "Umfrage erstellen", "Send the poll link to your friends or colleagues": "Link zur Umfrage an Ihre Freunde oder Kollegen schicken", - "What is that?": "Was ist das?", + "What is that?": "Was ist Framadate?", "view an example?": "ein Beispiel ansehen?" }, "2nd section": { @@ -15,7 +15,7 @@ "Framadate was initially based on ": "Framadate basierte zunächst auf ", "It is governed by the": "Sie ist lizenziert unter der", "The software": "Die Software", - "This software needs javascript and cookies enabled. It is compatible with the following web browsers:": "Javascript und Cookie aktiviert sein, damit Framadate funktioniert. Die Software ist mit den folgenden Browsern kompatibel:", + "This software needs javascript and cookies enabled. It is compatible with the following web browsers:": "Javascript und Cookies müssen aktiviert sein, damit Framadate funktioniert. Die Software ist mit den folgenden Browsern kompatibel:", "a software developed by the University of Strasbourg. Today, it is devevoped by the association Framasoft.": ", einer von der Universität von Straßburg entwickelten Software. Heute wird sie vom Verein Framasoft weiterentwickelt." }, "3rd section": { @@ -237,12 +237,12 @@ "For sending to the polled users": "Nachricht für die Teilnehmer", "Notification of poll: %s": "Mitteilung bezüglich der Umfrage: %s", "Poll's participation: %s": "Beteiligung an der Umfrage: %s", - "Someone just change your poll available at the following link %s.": "Jemand hat gerade Ihre Umfrage auf %s geändert.", + "Someone just change your poll available at the following link %s.": "Jemand hat gerade Ihre Umfrage auf %1$s geändert.", "Someone just delete your poll %s.": "Jemand hat gerade Ihre Umfrage auf %s gelöscht.", "Thanks for filling the poll at the link above": "Danke, dass Sie die Umfrage unter dem obigen Link ausgefüllt haben", "Thanks for your trust.": "Danke für Ihr Vertrauen.", - "This is the message you have to send to the people you want to poll. \nNow, you have to send this message to everyone you want to poll.": "Dies ist die Nachricht an die Leute, die Sie zur Abstimmung bitten.
Schicken Sie sie an alle, die Sie zur Teilnahme aufrufen möchten.", - "This message should NOT be sent to the polled people. It is private for the poll's creator.\n\nYou can now modify it at the link above": "Diese Meldung sollte NICHT an die befragten Personen gesendet werden. Sie richtet sich einzig an den Autor der Umfrage. Sie können sie jetzt über den oben genannten Link abändern.", + "This is the message you have to send to the people you want to poll. \nNow, you have to send this message to everyone you want to poll.": "Dies ist die Nachricht an die Leute, die Sie zur Abstimmung bitten.", + "This message should NOT be sent to the polled people. It is private for the poll's creator.\n\nYou can now modify it at the link above": "Diese Meldung sollte NICHT an die befragten Personen gesendet werden. Sie sollten sie für sich behalten.

Sie können Ihre Umfrage über den oben genannten Link abändern", "You have changed the settings of your poll. \nYou can modify this poll with this link": "Sie haben die Einstellungen Ihrer Umfrage verändert.
Sie können diese Umfrage über diesen Link ändern", "[ADMINISTRATOR] New settings for your poll": "[ADMINISTRATOR] Neue Einstellungen für Ihre Umfrage ", "filled a vote.\nYou can find your poll at the link": "hat abgestimmt.
Sie finden Ihre Umfrage über den Link", diff --git a/locale/en.json b/locale/en.json index ecd961e..1d23cb8 100644 --- a/locale/en.json +++ b/locale/en.json @@ -328,7 +328,7 @@ "All voters can modify any vote": "All voters can modify any vote", "Customize the URL": "Customize the URL", "Go to step 2": "Go to step 2", - "Limit the ammount of voters per option": "Limit the ammount of voters per option", + "Limit the ammount of voters per option": "Limit the amount of voters per option", "More informations here:": "More informations here:", "Only the poll maker can see the poll's results": "Only the poll maker can see the poll results", "Optional parameters": "Optional parameters", diff --git a/locale/it.json b/locale/it.json index 700fec0..de4939f 100644 --- a/locale/it.json +++ b/locale/it.json @@ -123,12 +123,12 @@ "Enter a title": "È necessario inserire un titolo !", "Enter an email address": "È necessario inserire un indirizzo e-mail!", "Error!": "Errore!", - "Failed to delete all comments": "Failed to delete all comments", - "Failed to delete all votes": "Failed to delete all votes", + "Failed to delete all comments": "Impossibile eliminare tutti i commenti", + "Failed to delete all votes": "Impossibile eliminare tutti i voti", "Failed to delete column": "Impossibile eliminare la colonna", - "Failed to delete the comment": "Failed to delete the comment", - "Failed to delete the poll": "Failed to delete the poll", - "Failed to delete the vote!": "Failed to delete the vote!", + "Failed to delete the comment": "Impossibile cancellare il commento", + "Failed to delete the poll": "Impossibile cancellare il sondaggio", + "Failed to delete the vote!": "Impossibile cancellare il voto!", "Failed to insert the comment!": "Errore nell'inserimento del commento !", "Failed to save poll": "Errore nel salvataggio del sondaggio", "Forbidden!": "Proibito!", @@ -328,7 +328,7 @@ "All voters can modify any vote": "Tutti i votanti possono cambiare tutti i voti", "Customize the URL": "Personalizzare il link", "Go to step 2": "Andare al punto 2", - "Limit the ammount of voters per option": "Limit the ammount of voters per option", + "Limit the ammount of voters per option": "Limitare la quantità di elettori per opzione", "More informations here:": "IT_Plus d'informations ici :", "Only the poll maker can see the poll's results": "Solo il creatore sondaggio possono vedere i risultati", "Optional parameters": "Parametri opzionali", @@ -348,7 +348,7 @@ "To receive an email for each new vote": "Per ricevere un'email per ogni nuovo voto", "Use a password to restrict access": "Utilizzare una passwor per limitare l'accesso al sondaggio", "Value Max": "Value Max", - "ValueMax instructions": "voters per options ", + "ValueMax instructions": "elettori per opzione", "Voters can modify their vote themselves": "I partecipanti possono modificare il loro voto in autonomia", "Votes cannot be modified": "Nessun voto può essere modificato", "You are in the poll creation section.": "Avete scelto di creare un nuovo sondaggio.", diff --git a/locale/nl.json b/locale/nl.json index b719759..1c54aa5 100644 --- a/locale/nl.json +++ b/locale/nl.json @@ -328,7 +328,7 @@ "All voters can modify any vote": "Alle stemmers kunnen elke stem aanpassen", "Customize the URL": "Link verpersoonlijken", "Go to step 2": "Ga naar stap 2", - "Limit the ammount of voters per option": "Limit the ammount of voters per option", + "Limit the ammount of voters per option": "Limit the amount of voters per option", "More informations here:": "More informations here:", "Only the poll maker can see the poll's results": "Alleen degene die de poll aangemaakt heeft kan de resultaten zien", "Optional parameters": "Optionele parameters", From 4e021c2bc36813b5beb79e17e9620510c6358c7a Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Wed, 21 Mar 2018 15:27:57 +0100 Subject: [PATCH 14/19] Remove the check on Valuemax Signed-off-by: Thomas Citharel --- .../Framadate/Migration/AddColumn_ValueMax_In_poll_For_1_1.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/app/classes/Framadate/Migration/AddColumn_ValueMax_In_poll_For_1_1.php b/app/classes/Framadate/Migration/AddColumn_ValueMax_In_poll_For_1_1.php index 6715f9b..8b1caa2 100644 --- a/app/classes/Framadate/Migration/AddColumn_ValueMax_In_poll_For_1_1.php +++ b/app/classes/Framadate/Migration/AddColumn_ValueMax_In_poll_For_1_1.php @@ -65,7 +65,6 @@ class AddColumn_ValueMax_In_poll_For_1_1 implements Migration { private function alterPollTable(\PDO $pdo) { $pdo->exec(' ALTER TABLE `' . Utils::table('poll') . '` - ADD `ValueMax` TINYINT, - ADD CHECK (ValueMax > 0)'); + ADD `ValueMax` TINYINT NULL;'); } } From bfc986a66e963ed7be8819c6a1946b6d56312cec Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Wed, 21 Mar 2018 15:28:58 +0100 Subject: [PATCH 15/19] Fix everyone can vote Signed-off-by: Thomas Citharel --- studs.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/studs.php b/studs.php index 531bf13..f202c4a 100644 --- a/studs.php +++ b/studs.php @@ -168,7 +168,7 @@ if ($accessGranted) { try { $result = $pollService->addVote($poll_id, $name, $choices, $slots_hash); if ($result) { - if ($poll->editable === Editable::EDITABLE_BY_OWN) { + if (intval($poll->editable) === Editable::EDITABLE_BY_OWN) { $editedVoteUniqueId = $result->uniqId; $message = getMessageForOwnVoteEditableVote($sessionService, $smarty, $editedVoteUniqueId, $config['use_smtp'], $poll_id, $name); } else { From 991f51aac03abb1f2a30c3d02feaf7e569d6447d Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Wed, 21 Mar 2018 15:29:14 +0100 Subject: [PATCH 16/19] Fix left editing button always shown Signed-off-by: Thomas Citharel --- tpl/part/vote_table_classic.tpl | 10 ++++++++-- tpl/part/vote_table_date.tpl | 12 +++++++++--- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/tpl/part/vote_table_classic.tpl b/tpl/part/vote_table_classic.tpl index 62d94e2..fd07e1d 100644 --- a/tpl/part/vote_table_classic.tpl +++ b/tpl/part/vote_table_classic.tpl @@ -101,7 +101,13 @@ {$vote->name|html} - {if $slots gt 4} + {if $active && !$expired && $accessGranted && + ( + $poll->editable == constant('Framadate\Editable::EDITABLE_BY_ALL') + or $admin + or ($poll->editable == constant('Framadate\Editable::EDITABLE_BY_OWN') && $editedVoteUniqueId == $vote->uniqId) + ) && $slots gt 4 + } {__('Generic', 'Edit')} @@ -168,7 +174,7 @@ {foreach $slots as $id=>$slot}