From bcce2625a8cb0b630d945c6849014049869e10ce Mon Sep 17 00:00:00 2001 From: Igor Scheller Date: Tue, 27 Nov 2018 12:01:36 +0100 Subject: Implemented AuthController for login * Moved /login functionality to AuthController * Refactored password handling logic to use the Authenticator --- config/config.default.php | 9 +- config/routes.php | 2 + .../2018_10_01_000000_create_users_tables.php | 2 +- includes/controller/users_controller.php | 13 +- includes/pages/admin_user.php | 2 +- includes/pages/guest_login.php | 119 +- includes/pages/user_settings.php | 5 +- includes/sys_auth.php | 68 - includes/view/AngelTypes_view.php | 2 +- includes/view/User_view.php | 2 +- resources/lang/de_DE.UTF-8/LC_MESSAGES/default.po | 19 +- resources/lang/en_US.UTF-8/LC_MESSAGES/default.mo | Bin 0 -> 745 bytes resources/lang/en_US.UTF-8/LC_MESSAGES/default.po | 26 + resources/lang/pt_BR.UTF.8/LC_MESSAGES/default.mo | Bin 0 -> 41129 bytes resources/lang/pt_BR.UTF.8/LC_MESSAGES/default.po | 2645 +++++++++++++++++++ resources/lang/pt_BR.UTF.8/LC_MESSAGES/pt_BR.mo | Bin 41256 -> 0 bytes resources/lang/pt_BR.UTF.8/LC_MESSAGES/pt_BR.po | 2647 -------------------- resources/views/errors/405.twig | 5 + resources/views/macros/base.twig | 11 + resources/views/pages/login.twig | 104 + src/Controllers/AuthController.php | 90 +- src/Helpers/Authenticator.php | 93 +- src/Helpers/AuthenticatorServiceProvider.php | 4 + src/Middleware/LegacyMiddleware.php | 5 - tests/Unit/Controllers/AuthControllerTest.php | 132 +- .../Controllers/Stub/ControllerImplementation.php | 8 - .../Helpers/AuthenticatorServiceProviderTest.php | 9 + tests/Unit/Helpers/AuthenticatorTest.php | 125 +- .../Unit/Http/UrlGeneratorServiceProviderTest.php | 5 +- 29 files changed, 3249 insertions(+), 2903 deletions(-) create mode 100644 resources/lang/en_US.UTF-8/LC_MESSAGES/default.mo create mode 100644 resources/lang/en_US.UTF-8/LC_MESSAGES/default.po create mode 100644 resources/lang/pt_BR.UTF.8/LC_MESSAGES/default.mo create mode 100644 resources/lang/pt_BR.UTF.8/LC_MESSAGES/default.po delete mode 100644 resources/lang/pt_BR.UTF.8/LC_MESSAGES/pt_BR.mo delete mode 100644 resources/lang/pt_BR.UTF.8/LC_MESSAGES/pt_BR.po create mode 100644 resources/views/errors/405.twig create mode 100644 resources/views/macros/base.twig create mode 100644 resources/views/pages/login.twig diff --git a/config/config.default.php b/config/config.default.php index 693b0d19..9c9505c6 100644 --- a/config/config.default.php +++ b/config/config.default.php @@ -95,13 +95,10 @@ return [ // Number of hours that an angel has to sign out own shifts 'last_unsubscribe' => 3, - // Define the algorithm to use for `crypt()` of passwords + // Define the algorithm to use for `password_verify()` // If the user uses an old algorithm the password will be converted to the new format - // MD5 '$1' - // Blowfish '$2y$13' - // SHA-256 '$5$rounds=5000' - // SHA-512 '$6$rounds=5000' - 'crypt_alg' => '$6$rounds=5000', + // See https://secure.php.net/manual/en/password.constants.php for a complete list + 'password_algorithm' => PASSWORD_DEFAULT, // The minimum length for passwords 'min_password_length' => 8, diff --git a/config/routes.php b/config/routes.php index e999d026..02fd3abd 100644 --- a/config/routes.php +++ b/config/routes.php @@ -9,6 +9,8 @@ $route->get('/', 'HomeController@index'); $route->get('/credits', 'CreditsController@index'); // Authentication +$route->get('/login', 'AuthController@login'); +$route->post('/login', 'AuthController@postLogin'); $route->get('/logout', 'AuthController@logout'); // Stats diff --git a/db/migrations/2018_10_01_000000_create_users_tables.php b/db/migrations/2018_10_01_000000_create_users_tables.php index d8422ca0..52b3658f 100644 --- a/db/migrations/2018_10_01_000000_create_users_tables.php +++ b/db/migrations/2018_10_01_000000_create_users_tables.php @@ -28,7 +28,7 @@ class CreateUsersTables extends Migration $table->string('name', 24)->unique(); $table->string('email', 254)->unique(); - $table->string('password', 128); + $table->string('password', 255); $table->string('api_key', 32); $table->dateTime('last_login_at')->nullable(); diff --git a/includes/controller/users_controller.php b/includes/controller/users_controller.php index 7c6bde02..214998dc 100644 --- a/includes/controller/users_controller.php +++ b/includes/controller/users_controller.php @@ -47,6 +47,7 @@ function users_controller() function user_delete_controller() { $user = auth()->user(); + $auth = auth(); $request = request(); if ($request->has('user_id')) { @@ -68,14 +69,12 @@ function user_delete_controller() if ($request->hasPostData('submit')) { $valid = true; - if ( - !( + if (!( $request->has('password') - && verify_password($request->postData('password'), $user->password, $user->id) - ) - ) { + && $auth->verifyPassword($user, $request->postData('password')) + )) { $valid = false; - error(__('Your password is incorrect. Please try it again.')); + error(__('Your password is incorrect. Please try it again.')); } if ($valid) { @@ -341,7 +340,7 @@ function user_password_recovery_set_new_controller() } if ($valid) { - set_password($passwordReset->user->id, $request->postData('password')); + auth()->setPassword($passwordReset->user, $request->postData('password')); success(__('Password saved.')); $passwordReset->delete(); redirect(page_link_to('login')); diff --git a/includes/pages/admin_user.php b/includes/pages/admin_user.php index e6f94180..8482dea5 100644 --- a/includes/pages/admin_user.php +++ b/includes/pages/admin_user.php @@ -291,8 +291,8 @@ function admin_user() $request->postData('new_pw') != '' && $request->postData('new_pw') == $request->postData('new_pw2') ) { - set_password($user_id, $request->postData('new_pw')); $user_source = User::find($user_id); + auth()->setPassword($user_source, $request->postData('new_pw')); engelsystem_log('Set new password for ' . User_Nick_render($user_source, true)); $html .= success('Passwort neu gesetzt.', true); } else { diff --git a/includes/pages/guest_login.php b/includes/pages/guest_login.php index d152a092..3bc10fc3 100644 --- a/includes/pages/guest_login.php +++ b/includes/pages/guest_login.php @@ -8,14 +8,6 @@ use Engelsystem\Models\User\Settings; use Engelsystem\Models\User\State; use Engelsystem\Models\User\User; -/** - * @return string - */ -function login_title() -{ - return __('Login'); -} - /** * @return string */ @@ -226,7 +218,7 @@ function guest_register() // Assign user-group and set password DB::insert('INSERT INTO `UserGroups` (`uid`, `group_id`) VALUES (?, -20)', [$user->id]); - set_password($user->id, $request->postData('password')); + auth()->setPassword($user, $request->postData('password')); // Assign angel-types $user_angel_types_info = []; @@ -369,112 +361,3 @@ function entry_required() { return ''; } - -/** - * @return string - */ -function guest_login() -{ - $nick = ''; - $request = request(); - $session = session(); - $valid = true; - - $session->remove('uid'); - - if ($request->hasPostData('submit')) { - if ($request->has('nick') && !empty($request->input('nick'))) { - $nickValidation = User_validate_Nick($request->input('nick')); - $nick = $nickValidation->getValue(); - $login_user = User::whereName($nickValidation->getValue())->first(); - if ($login_user) { - if ($request->has('password')) { - if (!verify_password($request->postData('password'), $login_user->password, $login_user->id)) { - $valid = false; - error(__('Your password is incorrect. Please try it again.')); - } - } else { - $valid = false; - error(__('Please enter a password.')); - } - } else { - $valid = false; - error(__('No user was found with that Nickname. Please try again. If you are still having problems, ask a Dispatcher.')); - } - } else { - $valid = false; - error(__('Please enter a nickname.')); - } - - if ($valid && $login_user) { - $session->set('uid', $login_user->id); - $session->set('locale', $login_user->settings->language); - - redirect(page_link_to(config('home_site'))); - } - } - - return page([ - div('col-md-12', [ - div('row', [ - EventConfig_countdown_page() - ]), - div('row', [ - div('col-sm-6 col-sm-offset-3 col-md-4 col-md-offset-4', [ - div('panel panel-primary first', [ - div('panel-heading', [ - ' ' . __('Login') - ]), - div('panel-body', [ - msg(), - form([ - form_text_placeholder('nick', __('Nick'), $nick), - form_password_placeholder('password', __('Password')), - form_submit('submit', __('Login')), - !$valid ? buttons([ - button(page_link_to('user_password_recovery'), __('I forgot my password')) - ]) : '' - ]) - ]), - div('panel-footer', [ - glyph('info-sign') . __('Please note: You have to activate cookies!') - ]) - ]) - ]) - ]), - div('row', [ - div('col-sm-6 text-center', [ - heading(register_title(), 2), - get_register_hint() - ]), - div('col-sm-6 text-center', [ - heading(__('What can I do?'), 2), - '

' . __('Please read about the jobs you can do to help us.') . '

', - buttons([ - button( - page_link_to('angeltypes', ['action' => 'about']), - __('Teams/Job description') . ' »' - ) - ]) - ]) - ]) - ]) - ]); -} - -/** - * @return string - */ -function get_register_hint() -{ - if (auth()->can('register') && config('registration_enabled')) { - return join('', [ - '

' . __('Please sign up, if you want to help us!') . '

', - buttons([ - button(page_link_to('register'), register_title() . ' »') - ]) - ]); - } - - return error(__('Registration is disabled.'), true); -} diff --git a/includes/pages/user_settings.php b/includes/pages/user_settings.php index ae29e4d8..f6853191 100644 --- a/includes/pages/user_settings.php +++ b/includes/pages/user_settings.php @@ -101,9 +101,10 @@ function user_settings_main($user_source, $enable_tshirt_size, $tshirt_sizes) function user_settings_password($user_source) { $request = request(); + $auth = auth(); if ( !$request->has('password') - || !verify_password($request->postData('password'), $user_source->password, $user_source->id) + || !$auth->verifyPassword($user_source, $request->postData('password')) ) { error(__('-> not OK. Please try again.')); } elseif (strlen($request->postData('new_password')) < config('min_password_length')) { @@ -111,7 +112,7 @@ function user_settings_password($user_source) } elseif ($request->postData('new_password') != $request->postData('new_password2')) { error(__('Your passwords don\'t match.')); } else { - set_password($user_source->id, $request->postData('new_password')); + $auth->setPassword($user_source, $request->postData('new_password')); success(__('Password saved.')); } redirect(page_link_to('user_settings')); diff --git a/includes/sys_auth.php b/includes/sys_auth.php index 520b13eb..f0485495 100644 --- a/includes/sys_auth.php +++ b/includes/sys_auth.php @@ -1,74 +1,6 @@ password = crypt($password, config('crypt_alg') . '$' . generate_salt(16) . '$'); - $user->save(); -} - -/** - * verify a password given a precomputed salt. - * if $uid is given and $salt is an old-style salt (plain md5), we convert it automatically - * - * @param string $password - * @param string $salt - * @param int $uid - * @return bool - */ -function verify_password($password, $salt, $uid = null) -{ - $crypt_alg = config('crypt_alg'); - $correct = false; - if (substr($salt, 0, 1) == '$') { - // new-style crypt() - $correct = crypt($password, $salt) == $salt; - } elseif (substr($salt, 0, 7) == '{crypt}') { - // old-style crypt() with DES and static salt - not used anymore - $correct = crypt($password, '77') == $salt; - } elseif (strlen($salt) == 32) { - // old-style md5 without salt - not used anymore - $correct = md5($password) == $salt; - } - - if ($correct && substr($salt, 0, strlen($crypt_alg)) != $crypt_alg && intval($uid)) { - // this password is stored in another format than we want it to be. - // let's update it! - // we duplicate the query from the above set_password() function to have the extra safety of checking - // the old hash - $user = User::find($uid); - if ($user->password == $salt) { - $user->password = crypt($password, $crypt_alg . '$' . generate_salt() . '$'); - $user->save(); - } - } - return $correct; -} /** * @param int $user_id diff --git a/includes/view/AngelTypes_view.php b/includes/view/AngelTypes_view.php index f5434e8f..9f9bd736 100644 --- a/includes/view/AngelTypes_view.php +++ b/includes/view/AngelTypes_view.php @@ -578,7 +578,7 @@ function AngelTypes_about_view($angeltypes, $user_logged_in) $buttons[] = button(page_link_to('register'), register_title()); } - $buttons[] = button(page_link_to('login'), login_title()); + $buttons[] = button(page_link_to('login'), __('Login')); } $faqUrl = config('faq_url'); diff --git a/includes/view/User_view.php b/includes/view/User_view.php index 949bba87..21be0c9f 100644 --- a/includes/view/User_view.php +++ b/includes/view/User_view.php @@ -126,7 +126,7 @@ function User_registration_success_view($event_welcome_message) div('col-md-4', [ '

' . __('Login') . '

', form([ - form_text('nick', __('Nick'), ''), + form_text('login', __('Nick'), ''), form_password('password', __('Password')), form_submit('submit', __('Login')), buttons([ diff --git a/resources/lang/de_DE.UTF-8/LC_MESSAGES/default.po b/resources/lang/de_DE.UTF-8/LC_MESSAGES/default.po index d5a7b993..27ceb586 100644 --- a/resources/lang/de_DE.UTF-8/LC_MESSAGES/default.po +++ b/resources/lang/de_DE.UTF-8/LC_MESSAGES/default.po @@ -541,7 +541,7 @@ msgstr "Du kannst Dich nicht selber löschen." #: includes/controller/users_controller.php:78 #: includes/pages/guest_login.php:410 -msgid "Your password is incorrect. Please try it again." +msgid "Your password is incorrect. Please try it again." msgstr "Dein Passwort stimmt nicht. Bitte probiere es nochmal." #: includes/controller/users_controller.php:87 @@ -1530,18 +1530,21 @@ msgid "Entry required!" msgstr "Pflichtfeld!" #: includes/pages/guest_login.php:414 -msgid "Please enter a password." +msgid "auth.no-password" msgstr "Gib bitte ein Passwort ein." #: includes/pages/guest_login.php:418 -msgid "" -"No user was found with that Nickname. Please try again. If you are still " -"having problems, ask a Dispatcher." +msgid "auth.not-found" msgstr "" -"Es wurde kein Engel mit diesem Namen gefunden. Probiere es bitte noch " -"einmal. Wenn das Problem weiterhin besteht, frage einen Dispatcher." +"Es wurde kein Engel gefunden. Probiere es bitte noch einmal. Wenn das Problem " +"weiterhin besteht, melde dich im Himmel." #: includes/pages/guest_login.php:451 includes/view/User_view.php:130 +msgid "auth.no-nickname" +msgstr "Gib bitte einen Nick an." + +#: includes/pages/guest_login.php:481 +#: includes/view/User_view.php:122 msgid "I forgot my password" msgstr "Passwort vergessen" @@ -2357,7 +2360,7 @@ msgid "" "I have my own car with me and am willing to use it for the event (You'll get " "reimbursed for fuel)" msgstr "" -"Ich habe mein eigenes Auto dabei und möchte würde es zum Fahren für das " +"Ich habe mein eigenes Auto dabei und möchte es zum Fahren für das " "Event verwenden (Du wirst für Spritkosten entschädigt)" #: includes/view/UserDriverLicenses_view.php:30 diff --git a/resources/lang/en_US.UTF-8/LC_MESSAGES/default.mo b/resources/lang/en_US.UTF-8/LC_MESSAGES/default.mo new file mode 100644 index 00000000..e95ae703 Binary files /dev/null and b/resources/lang/en_US.UTF-8/LC_MESSAGES/default.mo differ diff --git a/resources/lang/en_US.UTF-8/LC_MESSAGES/default.po b/resources/lang/en_US.UTF-8/LC_MESSAGES/default.po new file mode 100644 index 00000000..22566e52 --- /dev/null +++ b/resources/lang/en_US.UTF-8/LC_MESSAGES/default.po @@ -0,0 +1,26 @@ +msgid "" +msgstr "" +"Project-Id-Version: Engelsystem 2.0\n" +"POT-Creation-Date: 2017-12-29 19:01+0100\n" +"PO-Revision-Date: 2018-11-27 00:28+0100\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.8.11\n" +"X-Poedit-KeywordsList: _;gettext;gettext_noop\n" +"X-Poedit-Basepath: .\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Poedit-SourceCharset: UTF-8\n" +"Last-Translator: \n" +"Language: en_US\n" +"X-Poedit-SearchPath-0: .\n" + +msgid "auth.no-nickname" +msgstr "Please enter a nickname." + +msgid "auth.no-password" +msgstr "Please enter a password." + +msgid "auth.not-found" +msgstr "No user was found. Please try again. If you are still having problems, ask Heaven." diff --git a/resources/lang/pt_BR.UTF.8/LC_MESSAGES/default.mo b/resources/lang/pt_BR.UTF.8/LC_MESSAGES/default.mo new file mode 100644 index 00000000..8b864156 Binary files /dev/null and b/resources/lang/pt_BR.UTF.8/LC_MESSAGES/default.mo differ diff --git a/resources/lang/pt_BR.UTF.8/LC_MESSAGES/default.po b/resources/lang/pt_BR.UTF.8/LC_MESSAGES/default.po new file mode 100644 index 00000000..b9bf420d --- /dev/null +++ b/resources/lang/pt_BR.UTF.8/LC_MESSAGES/default.po @@ -0,0 +1,2645 @@ +msgid "" +msgstr "" +"Project-Id-Version: Engelsystem 2.0\n" +"POT-Creation-Date: 2017-04-25 05:23+0200\n" +"PO-Revision-Date: 2018-11-27 00:29+0100\n" +"Last-Translator: samba \n" +"Language-Team: \n" +"Language: pt_BR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 2.0.1\n" +"X-Poedit-KeywordsList: _;gettext;gettext_noop\n" +"X-Poedit-Basepath: ../../..\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Poedit-SearchPath-0: .\n" + +#: includes/controller/angeltypes_controller.php:7 +#: includes/pages/user_shifts.php:164 includes/view/AngelTypes_view.php:62 +#: includes/view/AngelTypes_view.php:86 includes/view/User_view.php:356 +msgid "Angeltypes" +msgstr "Tipo de Anjo" + +#: includes/controller/angeltypes_controller.php:53 +#: includes/pages/guest_login.php:377 includes/view/AngelTypes_view.php:265 +#: includes/view/AngelTypes_view.php:326 includes/view/User_view.php:110 +msgid "Teams/Job description" +msgstr "Time/Descrição do trabalho" + +#: includes/controller/angeltypes_controller.php:72 +#, php-format +msgid "Angeltype %s deleted." +msgstr "Tipo de anjo %s apagado." + +#: includes/controller/angeltypes_controller.php:77 +#: includes/view/AngelTypes_view.php:41 +#, php-format +msgid "Delete angeltype %s" +msgstr "Apagar tipo de anjo %s" + +#: includes/controller/angeltypes_controller.php:116 +msgid "Please check the name. Maybe it already exists." +msgstr "Por favor verifique o nome. Pode ser que já exista." + +#: includes/controller/angeltypes_controller.php:141 +#: includes/view/AngelTypes_view.php:60 +#, php-format +msgid "Edit %s" +msgstr "Editar %s" + +#: includes/controller/angeltypes_controller.php:162 +#: includes/view/AngelTypes_view.php:252 +#, php-format +msgid "Team %s" +msgstr "Time %s" + +#: includes/controller/angeltypes_controller.php:181 +#: includes/view/User_view.php:274 +msgid "view" +msgstr "ver" + +#: includes/controller/angeltypes_controller.php:185 +#: includes/pages/admin_free.php:71 includes/pages/admin_groups.php:23 +#: includes/pages/admin_rooms.php:16 includes/view/AngelTypes_view.php:107 +#: includes/view/ShiftTypes_view.php:55 includes/view/ShiftTypes_view.php:67 +#: includes/view/Shifts_view.php:55 includes/view/User_view.php:277 +#: includes/view/User_view.php:328 +msgid "edit" +msgstr "editar" + +#: includes/controller/angeltypes_controller.php:186 +#: includes/controller/shifts_controller.php:178 +#: includes/pages/admin_questions.php:42 includes/pages/admin_questions.php:56 +#: includes/pages/admin_rooms.php:17 includes/pages/admin_user.php:120 +#: includes/view/AngelTypes_view.php:45 includes/view/AngelTypes_view.php:110 +#: includes/view/Questions_view.php:5 includes/view/Questions_view.php:12 +#: includes/view/ShiftTypes_view.php:16 includes/view/ShiftTypes_view.php:56 +#: includes/view/ShiftTypes_view.php:68 includes/view/Shifts_view.php:56 +msgid "delete" +msgstr "deletar" + +#: includes/controller/angeltypes_controller.php:191 +#: includes/view/AngelTypes_view.php:103 includes/view/AngelTypes_view.php:288 +msgid "leave" +msgstr "sair" + +#: includes/controller/angeltypes_controller.php:193 +#: includes/view/AngelTypes_view.php:94 includes/view/AngelTypes_view.php:290 +msgid "join" +msgstr "entrar" + +#: includes/controller/angeltypes_controller.php:220 +#: includes/controller/user_angeltypes_controller.php:29 +#: includes/controller/user_angeltypes_controller.php:35 +#: includes/controller/user_angeltypes_controller.php:65 +#: includes/controller/user_angeltypes_controller.php:71 +#: includes/controller/user_angeltypes_controller.php:119 +#: includes/controller/user_angeltypes_controller.php:170 +#: includes/controller/user_angeltypes_controller.php:235 +msgid "Angeltype doesn't exist." +msgstr "Esse tipo de anjo não existe." + +#: includes/controller/event_config_controller.php:4 +msgid "Event config" +msgstr "Configuração do evento" + +#: includes/controller/event_config_controller.php:48 +msgid "Please enter buildup start date." +msgstr "Por favor digite a data de início da montagem." + +#: includes/controller/event_config_controller.php:52 +msgid "Please enter event start date." +msgstr "Por favor digite a data de início do evento." + +#: includes/controller/event_config_controller.php:56 +msgid "Please enter event end date." +msgstr "Por favor digite a data de término do evento." + +#: includes/controller/event_config_controller.php:60 +msgid "Please enter teardown end date." +msgstr "Por favor digite a data de desmontagem do evento" + +#: includes/controller/event_config_controller.php:66 +msgid "The buildup start date has to be before the event start date." +msgstr "A data de montagem deve ser anterior a data de início do evento." + +#: includes/controller/event_config_controller.php:71 +msgid "The event start date has to be before the event end date." +msgstr "" +"A data de início do evento deve ser anterior a data de término do evento." + +#: includes/controller/event_config_controller.php:76 +msgid "The event end date has to be before the teardown end date." +msgstr "A data de término deve ser anterior a data de desmontagem do evento." + +#: includes/controller/event_config_controller.php:81 +msgid "The buildup start date has to be before the teardown end date." +msgstr "A data de montagem deve ser anterior a data de desmontagem do evento." + +#: includes/controller/event_config_controller.php:92 +#: includes/pages/user_settings.php:77 +msgid "Settings saved." +msgstr "Configurações salvas." + +#: includes/controller/shift_entries_controller.php:56 +msgid "" +"You are not allowed to sign up for this shift. Maybe shift is full or " +"already running." +msgstr "" +"Você não tem permissão para se inscrever nesse turno. Talvez o turno esteja " +"lotado ou já esteja em andamento." + +#: includes/controller/shift_entries_controller.php:103 +msgid "You are subscribed. Thank you!" +msgstr "Você já está inscrito. Obrigado!" + +#: includes/controller/shift_entries_controller.php:103 +#: includes/pages/user_myshifts.php:4 +msgid "My shifts" +msgstr "Meus turnos" + +#: includes/controller/shift_entries_controller.php:111 +#: includes/view/User_view.php:348 +msgid "Freeloader" +msgstr "Freeloader" + +#: includes/controller/shift_entries_controller.php:180 +msgid "Shift entry deleted." +msgstr "O turno foi deletado." + +#: includes/controller/shift_entries_controller.php:182 +msgid "Entry not found." +msgstr "Entrada não encontrada." + +#: includes/controller/shifts_controller.php:63 +msgid "Please select a room." +msgstr "Por favor selecione uma sala." + +#: includes/controller/shifts_controller.php:70 +msgid "Please select a shifttype." +msgstr "Por favor selecione um tssipo de turno." + +#: includes/controller/shifts_controller.php:77 +msgid "Please enter a valid starting time for the shifts." +msgstr "Por favor entre com um horário de início válido para os turnos." + +#: includes/controller/shifts_controller.php:84 +msgid "Please enter a valid ending time for the shifts." +msgstr "Por favor entre com um horário de término válido para os turnos." + +#: includes/controller/shifts_controller.php:89 +msgid "The ending time has to be after the starting time." +msgstr "O horário de término deve ser após o horário de início." + +#: includes/controller/shifts_controller.php:97 +#, php-format +msgid "Please check your input for needed angels of type %s." +msgstr "Por favor verifique seu input para os anjos de tipo %s necessários." + +#: includes/controller/shifts_controller.php:120 +msgid "Shift updated." +msgstr "Turno atualizado." + +#: includes/controller/shifts_controller.php:135 +msgid "This page is much more comfortable with javascript." +msgstr "Esta página é muito mais confortável com javascript" + +#: includes/controller/shifts_controller.php:137 +#: includes/pages/admin_import.php:98 includes/pages/admin_shifts.php:319 +msgid "Shifttype" +msgstr "Tipo de turno" + +#: includes/controller/shifts_controller.php:138 +#: includes/pages/admin_import.php:158 includes/pages/admin_import.php:167 +#: includes/pages/admin_import.php:176 includes/pages/admin_shifts.php:320 +#: includes/view/Shifts_view.php:62 +msgid "Title" +msgstr "Título" + +#: includes/controller/shifts_controller.php:139 +msgid "Room:" +msgstr "Sala:" + +#: includes/controller/shifts_controller.php:140 +msgid "Start:" +msgstr "Início:" + +#: includes/controller/shifts_controller.php:141 +msgid "End:" +msgstr "Fim:" + +#: includes/controller/shifts_controller.php:142 +#: includes/pages/admin_shifts.php:270 includes/pages/admin_shifts.php:334 +#: includes/view/Shifts_view.php:88 +msgid "Needed angels" +msgstr "Anjos necessários" + +#: includes/controller/shifts_controller.php:144 +#: includes/pages/admin_groups.php:54 includes/pages/admin_news.php:35 +#: includes/pages/admin_questions.php:40 includes/pages/admin_rooms.php:157 +#: includes/pages/admin_shifts.php:272 includes/pages/user_messages.php:44 +#: includes/pages/user_news.php:107 includes/pages/user_news.php:164 +#: includes/view/AngelTypes_view.php:76 includes/view/EventConfig_view.php:122 +#: includes/view/Questions_view.php:32 includes/view/ShiftEntry_view.php:32 +#: includes/view/ShiftTypes_view.php:39 +#: includes/view/UserDriverLicenses_view.php:34 includes/view/User_view.php:56 +#: includes/view/User_view.php:65 includes/view/User_view.php:70 +#: includes/view/User_view.php:75 includes/view/User_view.php:146 +#: includes/view/User_view.php:402 +msgid "Save" +msgstr "Salvar" + +#: includes/controller/shifts_controller.php:172 +msgid "Shift deleted." +msgstr "Turno deletado." + +#: includes/controller/shifts_controller.php:177 +#, php-format +msgid "Do you want to delete the shift %s from %s to %s?" +msgstr "Você quer deletar o turno %s de %s para %s?" + +#: includes/controller/shifts_controller.php:195 +msgid "Shift could not be found." +msgstr "O turno não pôde ser encontrado." + +#: includes/controller/shifttypes_controller.php:31 +#, php-format +msgid "Shifttype %s deleted." +msgstr "Tipo de turno %s deletado." + +#: includes/controller/shifttypes_controller.php:36 +#: includes/view/ShiftTypes_view.php:12 +#, php-format +msgid "Delete shifttype %s" +msgstr "Apagar tipo de turno %s" + +#: includes/controller/shifttypes_controller.php:58 +msgid "Shifttype not found." +msgstr "Tipo de turno não encontrado." + +#: includes/controller/shifttypes_controller.php:74 +#: includes/pages/admin_rooms.php:71 +msgid "Please enter a name." +msgstr "Por favor digite um nome." + +#: includes/controller/shifttypes_controller.php:94 +msgid "Updated shifttype." +msgstr "Tipo de turno atualizado." + +#: includes/controller/shifttypes_controller.php:101 +msgid "Created shifttype." +msgstr "Tipo de turno criado" + +#: includes/controller/shifttypes_controller.php:155 +msgid "Shifttypes" +msgstr "Tipos de turno" + +#: includes/controller/user_angeltypes_controller.php:19 +#, php-format +msgid "There is %d unconfirmed angeltype." +msgid_plural "There are %d unconfirmed angeltypes." +msgstr[0] "Há %d anjo não confirmado." +msgstr[1] "There are %d unconfirmed angeltypes." + +#: includes/controller/user_angeltypes_controller.php:19 +msgid "Angel types which need approvals:" +msgstr "Tipos de anjo que precisam de aprovações:" + +#: includes/controller/user_angeltypes_controller.php:40 +msgid "You are not allowed to delete all users for this angeltype." +msgstr "" +"Você não têm permissão para apagar todos os usuários desse tipo de anjo." + +#: includes/controller/user_angeltypes_controller.php:48 +#, php-format +msgid "Denied all users for angeltype %s." +msgstr "Todos os usuários com tipo de anjo %s negados." + +#: includes/controller/user_angeltypes_controller.php:53 +#: includes/view/UserAngelTypes_view.php:15 +msgid "Deny all users" +msgstr "Negar todos os usuários" + +#: includes/controller/user_angeltypes_controller.php:77 +#: includes/controller/user_angeltypes_controller.php:107 +#: includes/controller/user_angeltypes_controller.php:113 +#: includes/controller/user_angeltypes_controller.php:158 +#: includes/controller/user_angeltypes_controller.php:164 +#: includes/controller/user_angeltypes_controller.php:216 +#: includes/controller/user_angeltypes_controller.php:229 +msgid "User angeltype doesn't exist." +msgstr "O tipo de anjo deste usuário não existe." + +#: includes/controller/user_angeltypes_controller.php:82 +msgid "You are not allowed to confirm all users for this angeltype." +msgstr "" +"Você não tem permissão para confirmar todos os usuários com este tipo de " +"anjo." + +#: includes/controller/user_angeltypes_controller.php:90 +#, php-format +msgid "Confirmed all users for angeltype %s." +msgstr "Todos os usuários com tipo de anjo %s confirmados." + +#: includes/controller/user_angeltypes_controller.php:95 +#: includes/view/UserAngelTypes_view.php:26 +msgid "Confirm all users" +msgstr "Confirmar todos usuários" + +#: includes/controller/user_angeltypes_controller.php:124 +msgid "You are not allowed to confirm this users angeltype." +msgstr "Você não tem permissão para confirmar o tipo de anjo deste usuário." + +#: includes/controller/user_angeltypes_controller.php:130 +#: includes/controller/user_angeltypes_controller.php:176 +#: includes/controller/user_angeltypes_controller.php:241 +#: includes/controller/users_controller.php:312 +msgid "User doesn't exist." +msgstr "Usuário não existente." + +#: includes/controller/user_angeltypes_controller.php:141 +#, php-format +msgid "%s confirmed for angeltype %s." +msgstr "%s confirmado para o tipo de anjo %s." + +#: includes/controller/user_angeltypes_controller.php:146 +#: includes/view/UserAngelTypes_view.php:37 +msgid "Confirm angeltype for user" +msgstr "Confirme o tipo de anjo para o usuário" + +#: includes/controller/user_angeltypes_controller.php:181 +msgid "You are not allowed to delete this users angeltype." +msgstr "Você não tem permissão para deletar o tipo de anjo deste usuário." + +#: includes/controller/user_angeltypes_controller.php:191 +#, php-format +msgid "User %s removed from %s." +msgstr "Usuário %s removido de %s." + +#: includes/controller/user_angeltypes_controller.php:199 +#: includes/view/UserAngelTypes_view.php:48 +msgid "Remove angeltype" +msgstr "Remover esse tipo de anjo" + +#: includes/controller/user_angeltypes_controller.php:211 +msgid "You are not allowed to set supporter rights." +msgstr "Você não tem autorização para definir permissões de apoiadores." + +#: includes/controller/user_angeltypes_controller.php:223 +msgid "No supporter update given." +msgstr "Nenhuma atualização de apoiador informada." + +#: includes/controller/user_angeltypes_controller.php:248 +#, php-format +msgid "Added supporter rights for %s to %s." +msgstr "Permissões de apoiador incluídos para %s a %s." + +#: includes/controller/user_angeltypes_controller.php:248 +#, php-format +msgid "Removed supporter rights for %s from %s." +msgstr "Permissões de apoiador removidos para %s a %s." + +#: includes/controller/user_angeltypes_controller.php:256 +#: includes/view/AngelTypes_view.php:156 +#: includes/view/UserAngelTypes_view.php:4 +msgid "Add supporter rights" +msgstr "Adicionar permissão ao apoiador" + +#: includes/controller/user_angeltypes_controller.php:256 +#: includes/view/AngelTypes_view.php:147 +#: includes/view/UserAngelTypes_view.php:4 +msgid "Remove supporter rights" +msgstr "Remover permissões de apoiador" + +#: includes/controller/user_angeltypes_controller.php:289 +#, php-format +msgid "User %s added to %s." +msgstr "Usuário %s adicionado a %s." + +#: includes/controller/user_angeltypes_controller.php:299 +#: includes/view/UserAngelTypes_view.php:64 +msgid "Add user to angeltype" +msgstr "Adicionar usuário a tipo de anjo" + +#: includes/controller/user_angeltypes_controller.php:312 +#, php-format +msgid "You are already a %s." +msgstr "Você já é %s." + +#: includes/controller/user_angeltypes_controller.php:319 +#, php-format +msgid "You joined %s." +msgstr "Você se juntou a %s." + +#: includes/controller/user_angeltypes_controller.php:332 +#: includes/view/UserAngelTypes_view.php:78 +#, php-format +msgid "Become a %s" +msgstr "Torne-se %s" + +#: includes/controller/user_driver_licenses_controller.php:19 +#, php-format +msgid "" +"You joined an angeltype which requires a driving license. Please edit your " +"driving license information here: %s." +msgstr "" +"Você se tornou um tipo de anjo que requer carteira de motorista. Por favor " +"inclua \n" +"seus dados aqui: %s." + +#: includes/controller/user_driver_licenses_controller.php:19 +msgid "driving license information" +msgstr "dados da carteira de motorista" + +#: includes/controller/user_driver_licenses_controller.php:113 +msgid "Your driver license information has been saved." +msgstr "Dados da carteira de motorista salvos." + +#: includes/controller/user_driver_licenses_controller.php:116 +msgid "Please select at least one driving license." +msgstr "Selecione pelo menos uma carteira de motorista." + +#: includes/controller/user_driver_licenses_controller.php:121 +msgid "Your driver license information has been removed." +msgstr "Seus dados de carteira de motorista foram removidos." + +#: includes/controller/user_driver_licenses_controller.php:127 +#: includes/view/UserDriverLicenses_view.php:15 +#, php-format +msgid "Edit %s driving license information" +msgstr "Editar dados da carteira de motorista de %s" + +#: includes/controller/users_controller.php:52 +msgid "You cannot delete yourself." +msgstr "Você não pode se deletar." + +#: includes/controller/users_controller.php:61 +#: includes/pages/guest_login.php:315 +msgid "Your password is incorrect. Please try it again." +msgstr "Sua senha está incorreta. Por favor, tente novamente." + +#: includes/controller/users_controller.php:71 +msgid "User deleted." +msgstr "Usuário deletado." + +#: includes/controller/users_controller.php:79 includes/view/User_view.php:121 +#, php-format +msgid "Delete %s" +msgstr "Apagar %s" + +#: includes/controller/users_controller.php:120 +msgid "Please enter a valid number of vouchers." +msgstr "Por favor, entre com um número válido de vouchers." + +#: includes/controller/users_controller.php:131 +msgid "Saved the number of vouchers." +msgstr "Número de vouchers salvo." + +#: includes/controller/users_controller.php:139 includes/view/User_view.php:138 +#, php-format +msgid "%s's vouchers" +msgstr "Vouchers de %s" + +#: includes/controller/users_controller.php:151 +msgid "User not found." +msgstr "Usuário não encontrado." + +#: includes/controller/users_controller.php:205 includes/view/User_view.php:175 +msgid "All users" +msgstr "Todos usuários" + +#: includes/controller/users_controller.php:217 +msgid "Token is not correct." +msgstr "O token não está correto." + +#: includes/controller/users_controller.php:227 +#: includes/pages/guest_login.php:102 includes/pages/user_settings.php:97 +msgid "Your passwords don't match." +msgstr "Suas senhas não correspondem." + +#: includes/controller/users_controller.php:231 +#: includes/pages/user_settings.php:95 +msgid "Your password is to short (please use at least 6 characters)." +msgstr "Sua senha é muito curta (por favor use no mínimo 6 caracteres)." + +#: includes/controller/users_controller.php:236 +#: includes/pages/user_settings.php:99 +msgid "Password saved." +msgstr "Sua senha foi salva." + +#: includes/controller/users_controller.php:257 +#: includes/controller/users_controller.php:261 +#: includes/pages/guest_login.php:67 includes/pages/user_settings.php:21 +msgid "E-mail address is not correct." +msgstr "E-mail não está correto." + +#: includes/controller/users_controller.php:265 +#: includes/pages/guest_login.php:71 includes/pages/user_settings.php:25 +msgid "Please enter your e-mail." +msgstr "Por favor digite seu e-mail." + +#: includes/controller/users_controller.php:270 +#: includes/controller/users_controller.php:295 +msgid "Password recovery" +msgstr "Recuperação de senha" + +#: includes/controller/users_controller.php:270 +#, php-format +msgid "Please visit %s to recover your password." +msgstr "Por favor visite %s para recuperar sua senha" + +#: includes/controller/users_controller.php:271 +msgid "We sent an email containing your password recovery link." +msgstr "Nós enviamos um email com o link para recuperação da sua senha." + +#: includes/helper/email_helper.php:12 +#, php-format +msgid "Hi %s," +msgstr "Oi %s," + +#: includes/helper/email_helper.php:12 +#, php-format +msgid "here is a message for you from the %s:" +msgstr "aqui está uma mensagem do %s para você:" + +#: includes/helper/email_helper.php:12 +#, php-format +msgid "" +"This email is autogenerated and has not been signed. You got this email " +"because you are registered in the %s." +msgstr "Você recebeu esse email porque está registrado no %s." + +#: includes/mailer/shifts_mailer.php:10 +msgid "A Shift you are registered on has changed:" +msgstr "Um turno em que você estava registrado foi modificado:" + +#: includes/mailer/shifts_mailer.php:14 +#, php-format +msgid "* Shift type changed from %s to %s" +msgstr "* Tipo de turno alterado de %s para %s" + +#: includes/mailer/shifts_mailer.php:19 +#, php-format +msgid "* Shift title changed from %s to %s" +msgstr "* Título do turno alterado de %s para %s" + +#: includes/mailer/shifts_mailer.php:24 +#, php-format +msgid "* Shift Start changed from %s to %s" +msgstr "* Início do turno alterado de %s para %s" + +#: includes/mailer/shifts_mailer.php:29 +#, php-format +msgid "* Shift End changed from %s to %s" +msgstr "* Término do turno alterado de %s para %s" + +#: includes/mailer/shifts_mailer.php:34 +#, php-format +msgid "* Shift Location changed from %s to %s" +msgstr "* Local do turno alterado de %s para %s" + +#: includes/mailer/shifts_mailer.php:44 +msgid "The updated Shift:" +msgstr "Turno atualizado:" + +#: includes/mailer/shifts_mailer.php:53 +msgid "Your Shift has changed" +msgstr "O seu turno foi modificado" + +#: includes/mailer/shifts_mailer.php:62 +msgid "A Shift you are registered on was deleted:" +msgstr "Um turno em que você estava registrado foi apagado:" + +#: includes/mailer/shifts_mailer.php:71 +msgid "Your Shift was deleted" +msgstr "Seu turno foi apagado" + +#: includes/mailer/shifts_mailer.php:80 +msgid "You have been assigned to a Shift:" +msgstr "Você foi alocado a um turno:" + +#: includes/mailer/shifts_mailer.php:86 +msgid "Assigned to Shift" +msgstr "Alocado ao turno" + +#: includes/mailer/shifts_mailer.php:94 +msgid "You have been removed from a Shift:" +msgstr "Você foi removido de um turno:" + +#: includes/mailer/shifts_mailer.php:100 +msgid "Removed from Shift" +msgstr "Removido do turno" + +#: includes/mailer/users_mailer.php:7 +msgid "Your account has been deleted" +msgstr "A sua conta foi deletada." + +#: includes/mailer/users_mailer.php:7 +msgid "" +"Your angelsystem account has been deleted. If you have any questions " +"regarding your account deletion, please contact heaven." +msgstr "" +"Sua conta engelsystem foi deletada. Se você tiver questões sobre a deleção " +"da sua conta, por favor entre em contato com o paraíso." + +#: includes/pages/admin_active.php:4 +msgid "Active angels" +msgstr "Anjos ativos" + +#: includes/pages/admin_active.php:29 +#, php-format +msgid "" +"At least %s angels are forced to be active. The number has to be greater." +msgstr "No mínimo %s anjos precisam estar ativos. O número deve ser maior." + +#: includes/pages/admin_active.php:34 +msgid "Please enter a number of angels to be marked as active." +msgstr "Por favor insira o número de anjos a marcar como ativos." + +#: includes/pages/admin_active.php:59 +msgid "Marked angels." +msgstr "Anjos marcados." + +#: includes/pages/admin_active.php:61 includes/pages/admin_rooms.php:137 +#: includes/pages/admin_rooms.php:173 includes/pages/admin_shifts.php:266 +#: includes/view/UserAngelTypes_view.php:67 includes/view/User_view.php:124 +#: includes/view/User_view.php:141 +msgid "back" +msgstr "voltar" + +#: includes/pages/admin_active.php:61 +msgid "apply" +msgstr "aplicar" + +#: includes/pages/admin_active.php:71 +msgid "Angel has been marked as active." +msgstr "Anjo marcado como ativo." + +#: includes/pages/admin_active.php:73 includes/pages/admin_active.php:83 +#: includes/pages/admin_active.php:103 includes/pages/admin_arrive.php:23 +#: includes/pages/admin_arrive.php:34 +msgid "Angel not found." +msgstr "Anjo não encontrado." + +#: includes/pages/admin_active.php:81 +msgid "Angel has been marked as not active." +msgstr "Anjo marcado como não ativo." + +#: includes/pages/admin_active.php:91 +msgid "Angel has got a t-shirt." +msgstr "Anjo tem uma camiseta." + +#: includes/pages/admin_active.php:101 +msgid "Angel has got no t-shirt." +msgstr "Anjo não tem camiseta." + +#: includes/pages/admin_active.php:142 +msgid "set active" +msgstr "definir ativo" + +#: includes/pages/admin_active.php:145 +msgid "remove active" +msgstr "remover ativo" + +#: includes/pages/admin_active.php:146 +msgid "got t-shirt" +msgstr "pegou camiseta" + +#: includes/pages/admin_active.php:149 +msgid "remove t-shirt" +msgstr "remover camiseta" + +#: includes/pages/admin_active.php:168 includes/pages/admin_arrive.php:165 +#: includes/pages/admin_arrive.php:180 includes/pages/admin_arrive.php:195 +#: includes/view/AngelTypes_view.php:221 includes/view/AngelTypes_view.php:229 +#: includes/view/User_view.php:165 +msgid "Sum" +msgstr "Somatória" + +#: includes/pages/admin_active.php:175 +msgid "Search angel:" +msgstr "Buscar Anjo:" + +#: includes/pages/admin_active.php:176 +msgid "Show all shifts" +msgstr "Mostrar todos os turnos" + +#: includes/pages/admin_active.php:177 includes/pages/admin_arrive.php:141 +#: includes/pages/admin_arrive.php:142 includes/pages/admin_free.php:78 +#: includes/pages/admin_free.php:87 includes/pages/admin_log.php:23 +#: includes/pages/admin_log.php:24 +msgid "Search" +msgstr "Buscar" + +#: includes/pages/admin_active.php:180 +msgid "How much angels should be active?" +msgstr "Quantos anjos deverão estar ativos?" + +#: includes/pages/admin_active.php:181 includes/pages/admin_shifts.php:254 +#: includes/pages/admin_shifts.php:342 +msgid "Preview" +msgstr "Pré-visualizar" + +#: includes/pages/admin_active.php:185 includes/pages/admin_arrive.php:145 +msgid "Nickname" +msgstr "Apelido" + +#: includes/pages/admin_active.php:186 includes/pages/admin_active.php:196 +#: includes/view/User_view.php:191 +msgid "Size" +msgstr "Tamanho" + +#: includes/pages/admin_active.php:187 includes/pages/user_shifts.php:5 +#: includes/view/User_view.php:364 +msgid "Shifts" +msgstr "Turnos" + +#: includes/pages/admin_active.php:188 includes/pages/admin_shifts.php:329 +msgid "Length" +msgstr "Duração" + +#: includes/pages/admin_active.php:189 +msgid "Active?" +msgstr "Ativo?" + +#: includes/pages/admin_active.php:190 includes/view/User_view.php:189 +msgid "Forced" +msgstr "Forçados" + +#: includes/pages/admin_active.php:191 +msgid "T-shirt?" +msgstr "Camiseta?" + +#: includes/pages/admin_active.php:194 +msgid "Shirt statistics" +msgstr "Estatísticas de camiseta" + +#: includes/pages/admin_active.php:197 +msgid "Needed shirts" +msgstr "Camisetas necessárias" + +#: includes/pages/admin_active.php:198 +msgid "Given shirts" +msgstr "Camisetas entregues" + +#: includes/pages/admin_arrive.php:4 +msgid "Arrived angels" +msgstr "Anjos que chegaram" + +#: includes/pages/admin_arrive.php:20 +msgid "Reset done. Angel has not arrived." +msgstr "Reset realizado. Anjo não chegou." + +#: includes/pages/admin_arrive.php:31 +msgid "Angel has been marked as arrived." +msgstr "Chegada do anjo registrada." + +#: includes/pages/admin_arrive.php:71 includes/view/UserAngelTypes_view.php:9 +#: includes/view/UserAngelTypes_view.php:20 +#: includes/view/UserAngelTypes_view.php:31 +#: includes/view/UserAngelTypes_view.php:42 +#: includes/view/UserAngelTypes_view.php:53 +msgid "yes" +msgstr "sim" + +#: includes/pages/admin_arrive.php:72 +msgid "reset" +msgstr "resetar" + +#: includes/pages/admin_arrive.php:72 includes/pages/admin_arrive.php:156 +#: includes/pages/admin_arrive.php:171 includes/pages/admin_arrive.php:186 +#: includes/view/User_view.php:330 +msgid "arrived" +msgstr "chegou" + +#: includes/pages/admin_arrive.php:146 +msgid "Planned arrival" +msgstr "Chegada planejada" + +#: includes/pages/admin_arrive.php:147 +msgid "Arrived?" +msgstr "Chegou?" + +#: includes/pages/admin_arrive.php:148 +msgid "Arrival date" +msgstr "Data de chegada" + +#: includes/pages/admin_arrive.php:149 +msgid "Planned departure" +msgstr "Saída planejada" + +#: includes/pages/admin_arrive.php:154 +msgid "Planned arrival statistics" +msgstr "Estatísticas de chegadas planejadas" + +#: includes/pages/admin_arrive.php:157 includes/pages/admin_arrive.php:172 +#: includes/pages/admin_arrive.php:187 +msgid "arrived sum" +msgstr "soma dos que chegaram" + +#: includes/pages/admin_arrive.php:163 includes/pages/admin_arrive.php:178 +#: includes/pages/admin_arrive.php:193 includes/pages/admin_news.php:30 +#: includes/pages/user_messages.php:76 +msgid "Date" +msgstr "Data" + +#: includes/pages/admin_arrive.php:164 includes/pages/admin_arrive.php:179 +#: includes/pages/admin_arrive.php:194 +msgid "Count" +msgstr "Contar" + +#: includes/pages/admin_arrive.php:169 +msgid "Arrival statistics" +msgstr "Estatísticas de chegadas" + +#: includes/pages/admin_arrive.php:184 +msgid "Planned departure statistics" +msgstr "Estatísticas de saídas planejadas" + +#: includes/pages/admin_free.php:4 +msgid "Free angels" +msgstr "Anjos livres" + +#: includes/pages/admin_free.php:81 includes/view/ShiftTypes_view.php:36 +#: includes/view/UserAngelTypes_view.php:70 +msgid "Angeltype" +msgstr "Tipo de anjo" + +#: includes/pages/admin_free.php:84 +msgid "Only confirmed" +msgstr "Somente confirmados" + +#: includes/pages/admin_free.php:92 includes/pages/guest_login.php:225 +#: includes/pages/guest_login.php:354 includes/view/AngelTypes_view.php:177 +#: includes/view/AngelTypes_view.php:190 includes/view/User_view.php:40 +#: includes/view/User_view.php:97 includes/view/User_view.php:181 +msgid "Nick" +msgstr "Apelido" + +#: includes/pages/admin_free.php:94 includes/pages/guest_login.php:255 +#: includes/view/AngelTypes_view.php:178 includes/view/AngelTypes_view.php:191 +#: includes/view/User_view.php:47 includes/view/User_view.php:184 +msgid "DECT" +msgstr "DECT" + +#: includes/pages/admin_free.php:95 includes/pages/guest_login.php:264 +#: includes/view/User_view.php:52 +msgid "Jabber" +msgstr "Jabber" + +#: includes/pages/admin_free.php:96 includes/pages/guest_login.php:228 +#: includes/view/User_view.php:49 includes/view/User_view.php:386 +msgid "E-Mail" +msgstr "E-Mail" + +#: includes/pages/admin_groups.php:4 +msgid "Grouprights" +msgstr "Direitos de grupo" + +#: includes/pages/admin_groups.php:29 includes/pages/admin_import.php:145 +#: includes/pages/admin_import.php:149 includes/pages/admin_rooms.php:143 +#: includes/pages/admin_rooms.php:189 includes/view/AngelTypes_view.php:66 +#: includes/view/AngelTypes_view.php:268 includes/view/ShiftTypes_view.php:35 +#: includes/view/ShiftTypes_view.php:78 includes/view/User_view.php:183 +msgid "Name" +msgstr "Nome" + +#: includes/pages/admin_groups.php:30 +msgid "Privileges" +msgstr "Privilégios" + +#: includes/pages/admin_groups.php:55 +msgid "Edit group" +msgstr "Editar grupo" + +#: includes/pages/admin_import.php:4 includes/pages/admin_rooms.php:144 +#: includes/pages/admin_rooms.php:190 +msgid "Frab import" +msgstr "Importação Frab" + +#: includes/pages/admin_import.php:26 +msgid "Webserver has no write-permission on import directory." +msgstr "" +"O servidor web não possui permissão de escrita no diretório de importação." + +#: includes/pages/admin_import.php:54 includes/pages/admin_import.php:118 +#: includes/pages/admin_import.php:196 includes/pages/admin_shifts.php:53 +#: includes/pages/admin_shifts.php:59 +msgid "Please select a shift type." +msgstr "Por favor selecione um tipo de turno." + +#: includes/pages/admin_import.php:61 includes/pages/admin_import.php:125 +#: includes/pages/admin_import.php:203 +msgid "Please enter an amount of minutes to add to a talk's begin." +msgstr "" +"Por favor insira um número de minutos para adicionar ao início de uma " +"palestra." + +#: includes/pages/admin_import.php:68 includes/pages/admin_import.php:132 +#: includes/pages/admin_import.php:210 +msgid "Please enter an amount of minutes to add to a talk's end." +msgstr "" +"Por favor insira um número de minutos para adicionar ao término de uma " +"palestra." + +#: includes/pages/admin_import.php:76 +msgid "No valid xml/xcal file provided." +msgstr "Nenhum arquivo xml/xcal válido foi fornecido." + +#: includes/pages/admin_import.php:81 +msgid "File upload went wrong." +msgstr "Falha no upload do arquivo." + +#: includes/pages/admin_import.php:85 +msgid "Please provide some data." +msgstr "Por favor insira alguns dados." + +#: includes/pages/admin_import.php:93 includes/pages/admin_import.php:140 +#: includes/pages/admin_import.php:253 +msgid "File Upload" +msgstr "Enviar arquivo" + +#: includes/pages/admin_import.php:93 includes/pages/admin_import.php:140 +#: includes/pages/admin_import.php:253 +msgid "Validation" +msgstr "Validação" + +#: includes/pages/admin_import.php:93 includes/pages/admin_import.php:102 +#: includes/pages/admin_import.php:140 includes/pages/admin_import.php:179 +#: includes/pages/admin_import.php:253 +msgid "Import" +msgstr "Importar" + +#: includes/pages/admin_import.php:97 +msgid "" +"This import will create/update/delete rooms and shifts by given FRAB-export " +"file. The needed file format is xcal." +msgstr "" +"Esta importação irá criar/atualizar/deletar salas e turnos a partir do " +"arquivo FRAB-Export. O formato necessário é xcal." + +#: includes/pages/admin_import.php:99 +msgid "Add minutes to start" +msgstr "Adicionar minutos ao início" + +#: includes/pages/admin_import.php:100 +msgid "Add minutes to end" +msgstr "Adicionar minutos ao fim" + +#: includes/pages/admin_import.php:101 +msgid "xcal-File (.xcal)" +msgstr "Adicionar minutos ao fim" + +#: includes/pages/admin_import.php:111 includes/pages/admin_import.php:185 +msgid "Missing import file." +msgstr "Arquivo para importar não encontrado." + +#: includes/pages/admin_import.php:144 +msgid "Rooms to create" +msgstr "Salas para criar" + +#: includes/pages/admin_import.php:148 +msgid "Rooms to delete" +msgstr "Salas para apagar" + +#: includes/pages/admin_import.php:152 +msgid "Shifts to create" +msgstr "Turnos para criar" + +#: includes/pages/admin_import.php:154 includes/pages/admin_import.php:163 +#: includes/pages/admin_import.php:172 includes/view/User_view.php:366 +msgid "Day" +msgstr "Dia" + +#: includes/pages/admin_import.php:155 includes/pages/admin_import.php:164 +#: includes/pages/admin_import.php:173 includes/pages/admin_shifts.php:324 +#: includes/view/Shifts_view.php:66 +msgid "Start" +msgstr "Início" + +#: includes/pages/admin_import.php:156 includes/pages/admin_import.php:165 +#: includes/pages/admin_import.php:174 includes/pages/admin_shifts.php:325 +#: includes/view/Shifts_view.php:74 +msgid "End" +msgstr "Fim" + +#: includes/pages/admin_import.php:157 includes/pages/admin_import.php:166 +#: includes/pages/admin_import.php:175 +msgid "Shift type" +msgstr "Tipo de turno" + +#: includes/pages/admin_import.php:159 includes/pages/admin_import.php:168 +#: includes/pages/admin_import.php:177 includes/pages/admin_shifts.php:321 +msgid "Room" +msgstr "Sala" + +#: includes/pages/admin_import.php:161 +msgid "Shifts to update" +msgstr "Turnos para atualizar" + +#: includes/pages/admin_import.php:170 +msgid "Shifts to delete" +msgstr "Turnos para deletar" + +#: includes/pages/admin_import.php:254 +msgid "It's done!" +msgstr "Está feito!" + +#: includes/pages/admin_log.php:4 +msgid "Log" +msgstr "Log" + +#: includes/pages/admin_news.php:10 +msgid "Edit news entry" +msgstr "Editar notícia" + +#: includes/pages/admin_news.php:31 +msgid "Author" +msgstr "Autor" + +#: includes/pages/admin_news.php:32 includes/pages/user_news.php:161 +msgid "Subject" +msgstr "Assunto" + +#: includes/pages/admin_news.php:33 includes/pages/user_messages.php:79 +#: includes/pages/user_news.php:106 includes/pages/user_news.php:162 +msgid "Message" +msgstr "Mensagem" + +#: includes/pages/admin_news.php:34 includes/pages/user_news.php:163 +msgid "Meeting" +msgstr "Reunião" + +#: includes/pages/admin_news.php:38 includes/pages/admin_rooms.php:177 +#: includes/view/User_view.php:129 +msgid "Delete" +msgstr "Apagar" + +#: includes/pages/admin_news.php:52 +msgid "News entry updated." +msgstr "Notícia atualizada." + +#: includes/pages/admin_news.php:61 +msgid "News entry deleted." +msgstr "Notícia deletada." + +#: includes/pages/admin_questions.php:4 +msgid "Answer questions" +msgstr "Responder perguntas" + +#: includes/pages/admin_questions.php:18 +msgid "There are unanswered questions!" +msgstr "Existem perguntas não respondidas!" + +#: includes/pages/admin_questions.php:61 +msgid "Unanswered questions" +msgstr "Perguntas não respondidas" + +#: includes/pages/admin_questions.php:63 includes/pages/admin_questions.php:70 +msgid "From" +msgstr "De" + +#: includes/pages/admin_questions.php:64 includes/pages/admin_questions.php:71 +#: includes/view/Questions_view.php:19 includes/view/Questions_view.php:24 +msgid "Question" +msgstr "Questão" + +#: includes/pages/admin_questions.php:65 includes/pages/admin_questions.php:73 +#: includes/view/Questions_view.php:26 +msgid "Answer" +msgstr "Resposta" + +#: includes/pages/admin_questions.php:68 includes/view/Questions_view.php:22 +msgid "Answered questions" +msgstr "Perguntas respondidas" + +#: includes/pages/admin_questions.php:72 includes/view/Questions_view.php:25 +msgid "Answered by" +msgstr "Respondido por" + +#: includes/pages/admin_rooms.php:4 includes/pages/user_shifts.php:159 +#: includes/sys_menu.php:176 +msgid "Rooms" +msgstr "Salas" + +#: includes/pages/admin_rooms.php:67 +msgid "This name is already in use." +msgstr "Este nome já está em uso." + +#: includes/pages/admin_rooms.php:97 +#, php-format +msgid "Please enter needed angels for type %s." +msgstr "Por favor insira os anjos necessários de tipo %s." + +#: includes/pages/admin_rooms.php:124 +msgid "Room saved." +msgstr "Sala salva" + +#: includes/pages/admin_rooms.php:145 includes/pages/admin_rooms.php:191 +msgid "Public" +msgstr "Público" + +#: includes/pages/admin_rooms.php:146 +msgid "Room number" +msgstr "Número da sala" + +#: includes/pages/admin_rooms.php:151 +msgid "Needed angels:" +msgstr "Anjos necessários:" + +#: includes/pages/admin_rooms.php:167 +#, php-format +msgid "Room %s deleted." +msgstr "Sala %s deletada." + +#: includes/pages/admin_rooms.php:175 +#, php-format +msgid "Do you want to delete room %s?" +msgstr "Você quer deletar as salas %s?" + +#: includes/pages/admin_rooms.php:185 +msgid "add" +msgstr "adicionar" + +#: includes/pages/admin_shifts.php:4 +msgid "Create shifts" +msgstr "Criar turnos" + +#: includes/pages/admin_shifts.php:71 +msgid "Please select a location." +msgstr "Por favor, selecione uma localização." + +#: includes/pages/admin_shifts.php:78 +msgid "Please select a start time." +msgstr "Por favor, selecione um horário de início." + +#: includes/pages/admin_shifts.php:85 +msgid "Please select an end time." +msgstr "Por favor, selecione um horário de término." + +#: includes/pages/admin_shifts.php:90 +msgid "The shifts end has to be after its start." +msgstr "O término do turno deve ser posterior ao seu início." + +#: includes/pages/admin_shifts.php:102 +msgid "Please enter a shift duration in minutes." +msgstr "Por favor insira a duração do turno em minutos." + +#: includes/pages/admin_shifts.php:110 +msgid "Please split the shift-change hours by colons." +msgstr "Por favor divida os horários de mudança de turno por vírgulas." + +#: includes/pages/admin_shifts.php:115 +msgid "Please select a mode." +msgstr "Por favor selecione um modo." + +#: includes/pages/admin_shifts.php:128 +#, php-format +msgid "Please check the needed angels for team %s." +msgstr "Por favor confira os anjos necessários para o time %s." + +#: includes/pages/admin_shifts.php:133 +msgid "There are 0 angels needed. Please enter the amounts of needed angels." +msgstr "" +"Há 0 anjos necessários. Por favor insira o número de anjos necessários." + +#: includes/pages/admin_shifts.php:137 +msgid "Please select a mode for needed angels." +msgstr "Por favor escolha um modo para os anjos necessários." + +#: includes/pages/admin_shifts.php:141 +msgid "Please select needed angels." +msgstr "Por favor selecione os anjos necessários." + +#: includes/pages/admin_shifts.php:268 +msgid "Time and location" +msgstr "Horário e localização" + +#: includes/pages/admin_shifts.php:269 +msgid "Type and title" +msgstr "Tipo e título" + +#: includes/pages/admin_shifts.php:326 +msgid "Mode" +msgstr "Modo" + +#: includes/pages/admin_shifts.php:327 +msgid "Create one shift" +msgstr "Criar um turno" + +#: includes/pages/admin_shifts.php:328 +msgid "Create multiple shifts" +msgstr "Criar múltiplos turnos" + +#: includes/pages/admin_shifts.php:330 +msgid "Create multiple shifts with variable length" +msgstr "Criar múltiplos turnos com duração variável" + +#: includes/pages/admin_shifts.php:331 +msgid "Shift change hours" +msgstr "Mudança de horário do turno" + +#: includes/pages/admin_shifts.php:335 +msgid "Take needed angels from room settings" +msgstr "Pegar os anjos necessários a partir das configurações das salas" + +#: includes/pages/admin_shifts.php:336 +msgid "The following angels are needed" +msgstr "Os seguintes anjos são necessários" + +#: includes/pages/admin_user.php:4 +msgid "All Angels" +msgstr "Todos os anjos" + +#: includes/pages/admin_user.php:20 +msgid "This user does not exist." +msgstr "Esse usuário não existe." + +#: includes/pages/admin_user.php:46 includes/view/AngelTypes_view.php:67 +#: includes/view/AngelTypes_view.php:68 includes/view/AngelTypes_view.php:69 +msgid "Yes" +msgstr "Sim" + +#: includes/pages/admin_user.php:47 includes/view/AngelTypes_view.php:67 +#: includes/view/AngelTypes_view.php:68 includes/view/AngelTypes_view.php:69 +msgid "No" +msgstr "Não" + +#: includes/pages/admin_user.php:60 +msgid "Force active" +msgstr "Forçar ativação" + +#: includes/pages/admin_user.php:79 +msgid "" +"Please visit the angeltypes page or the users profile to manage users " +"angeltypes." +msgstr "" +"Por favor visite a página de tipos de anjo ou o perfil do usuário para " +"gerenciar\n" +"seus tipos de anjo." + +#: includes/pages/admin_user.php:204 +msgid "Edit user" +msgstr "Editar usuário" + +#: includes/pages/guest_credits.php:3 +msgid "Credits" +msgstr "Créditos" + +#: includes/pages/guest_login.php:4 includes/pages/guest_login.php:349 +#: includes/pages/guest_login.php:356 includes/view/User_view.php:95 +#: includes/view/User_view.php:99 +msgid "Login" +msgstr "Login" + +#: includes/pages/guest_login.php:8 includes/pages/guest_login.php:285 +msgid "Register" +msgstr "Registrar" + +#: includes/pages/guest_login.php:12 +msgid "Logout" +msgstr "Logout" + +#: includes/pages/guest_login.php:56 +#, php-format +msgid "Your nick "%s" already exists." +msgstr "Seu apelido "%s" já existe." + +#: includes/pages/guest_login.php:60 +#, php-format +msgid "Your nick "%s" is too short (min. 2 characters)." +msgstr "Seu apelido "%s" é muito pequeno (mínimo 2 caracteres)." + +#: includes/pages/guest_login.php:86 includes/pages/user_settings.php:36 +msgid "Please check your jabber account information." +msgstr "Por favor verifique a informação da sua conta jabber." + +#: includes/pages/guest_login.php:95 +msgid "Please select your shirt size." +msgstr "Por favor escolha o tamanho da camisa." + +#: includes/pages/guest_login.php:106 +#, php-format +msgid "Your password is too short (please use at least %s characters)." +msgstr "Sua senha é muito curta (por favor use pelo menos %s caracteres)." + +#: includes/pages/guest_login.php:115 includes/pages/user_settings.php:52 +msgid "" +"Please enter your planned date of arrival. It should be after the buildup " +"start date and before teardown end date." +msgstr "" +"Por favor insira a data planejada para sua chegada. Ela deve ser posterior à " +"data de montagem e anterior à data de desmontagem." + +#: includes/pages/guest_login.php:189 +msgid "Angel registration successful!" +msgstr "Conta criada com sucesso!" + +#: includes/pages/guest_login.php:217 +msgid "" +"By completing this form you're registering as a Chaos-Angel. This script " +"will create you an account in the angel task scheduler." +msgstr "" +"Ao completar esse formulário você estará se registrando como um voluntário. " +"Esse script criará uma conta no sistema." + +#: includes/pages/guest_login.php:229 includes/view/User_view.php:50 +#, php-format +msgid "" +"The %s is allowed to send me an email (e.g. when my shifts change)" +msgstr "" +"Permito que o %s me envie emails (por exemplo, quando meus turnos " +"mudam)" + +#: includes/pages/guest_login.php:230 includes/view/User_view.php:51 +msgid "Humans are allowed to send me an email (e.g. for ticket vouchers)" +msgstr "Permito que humanos me enviem emails (por exemplo, para um voucher)" + +#: includes/pages/guest_login.php:235 includes/view/User_view.php:43 +msgid "Planned date of arrival" +msgstr "Data planejada de chegada" + +#: includes/pages/guest_login.php:238 includes/view/User_view.php:54 +msgid "Shirt size" +msgstr "Tamanho da camiseta" + +#: includes/pages/guest_login.php:243 includes/pages/guest_login.php:355 +#: includes/view/User_view.php:98 includes/view/User_view.php:400 +msgid "Password" +msgstr "Senha" + +#: includes/pages/guest_login.php:246 includes/view/User_view.php:401 +msgid "Confirm password" +msgstr "Confirme a senha" + +#: includes/pages/guest_login.php:249 +msgid "What do you want to do?" +msgstr "O que você gostaria de fazer?" + +#: includes/pages/guest_login.php:249 +msgid "Description of job types" +msgstr "Descrição dos trabalhos" + +#: includes/pages/guest_login.php:250 +msgid "" +"Restricted angel types need will be confirmed later by a supporter. You can " +"change your selection in the options section." +msgstr "" +"Tipos de anjo restritos precisam de confirmação posterior de um apoiador. " +"Você pode \n" +"mudar sua seleção na seção 'Opções'." + +#: includes/pages/guest_login.php:258 includes/view/User_view.php:48 +msgid "Mobile" +msgstr "Celular" + +#: includes/pages/guest_login.php:261 includes/view/User_view.php:46 +msgid "Phone" +msgstr "Telefone" + +#: includes/pages/guest_login.php:267 includes/view/User_view.php:42 +msgid "First name" +msgstr "Nome" + +#: includes/pages/guest_login.php:270 includes/view/User_view.php:41 +msgid "Last name" +msgstr "Sobrenome" + +#: includes/pages/guest_login.php:275 includes/view/User_view.php:45 +msgid "Age" +msgstr "Idade" + +#: includes/pages/guest_login.php:278 includes/view/User_view.php:53 +msgid "Hometown" +msgstr "Cidade" + +#: includes/pages/guest_login.php:281 includes/view/User_view.php:39 +msgid "Entry required!" +msgstr "Campo necessário!" + +#: includes/pages/guest_login.php:319 +msgid "auth.no-password" +msgstr "Por favor digite uma senha." + +#: includes/pages/guest_login.php:323 +msgid "auth.not-found" +msgstr "" +"Nenhum usuário foi encontrado. Por favor tente novamente. \n" +"Se você continuar com problemas, pergunte a um Dispatcher." + +#: includes/pages/guest_login.php:327 +msgid "auth.no-nickname" +msgstr "Por favor digite um apelido." + +#: includes/pages/guest_login.php:358 includes/view/User_view.php:101 +msgid "I forgot my password" +msgstr "Esqueci minha senha" + +#: includes/pages/guest_login.php:363 includes/view/User_view.php:103 +msgid "Please note: You have to activate cookies!" +msgstr "Nota: você precisa habilitar cookies!" + +#: includes/pages/guest_login.php:374 includes/view/User_view.php:107 +msgid "What can I do?" +msgstr "O que posso fazer?" + +#: includes/pages/guest_login.php:375 includes/view/User_view.php:108 +msgid "Please read about the jobs you can do to help us." +msgstr "Por favor leia sobre as tarefas que pode realizar para nos ajudar." + +#: includes/pages/guest_login.php:390 +msgid "Please sign up, if you want to help us!" +msgstr "Se você quer nos ajudar, por favor se registre!" + +#: includes/pages/user_messages.php:4 +msgid "Messages" +msgstr "Mensagens" + +#: includes/pages/user_messages.php:26 +msgid "Select recipient..." +msgstr "Selecionar recipiente..." + +#: includes/pages/user_messages.php:62 +msgid "mark as read" +msgstr "marcar como lido" + +#: includes/pages/user_messages.php:65 +msgid "delete message" +msgstr "apagar mensagem" + +#: includes/pages/user_messages.php:72 +#, php-format +msgid "Hello %s, here can you leave messages for other angels" +msgstr "Oi %s, aqui você pode deixar mensagens para outros anjos." + +#: includes/pages/user_messages.php:75 +msgid "New" +msgstr "Nova" + +#: includes/pages/user_messages.php:77 +msgid "Transmitted" +msgstr "Enviado" + +#: includes/pages/user_messages.php:78 +msgid "Recipient" +msgstr "Recipiente" + +#: includes/pages/user_messages.php:90 includes/pages/user_messages.php:106 +msgid "Incomplete call, missing Message ID." +msgstr "Chamada incompleta, falta o ID da Mensagem." + +#: includes/pages/user_messages.php:98 includes/pages/user_messages.php:114 +msgid "No Message found." +msgstr "Nenhuma mensagem encontrada." + +#: includes/pages/user_messages.php:122 +msgid "Transmitting was terminated with an Error." +msgstr "Transmissão encerrada com um erro." + +#: includes/pages/user_messages.php:127 +msgid "Wrong action." +msgstr "Ação errada." + +#: includes/pages/user_myshifts.php:23 +msgid "Key changed." +msgstr "Chave modificada." + +#: includes/pages/user_myshifts.php:26 includes/view/User_view.php:335 +msgid "Reset API key" +msgstr "Resetar a chave API" + +#: includes/pages/user_myshifts.php:27 +msgid "" +"If you reset the key, the url to your iCal- and JSON-export and your atom " +"feed changes! You have to update it in every application using one of these " +"exports." +msgstr "" +"Se você reconfigurar a chave, as urls para seu iCal, a exportação em formato " +"JSON \n" +"e seu feed atom será alterada! Você precisará atualizá-las em todas as " +"aplicações que estiverem \n" +"usando uma delas." + +#: includes/pages/user_myshifts.php:28 +msgid "Continue" +msgstr "Continuar" + +#: includes/pages/user_myshifts.php:60 +msgid "Please enter a freeload comment!" +msgstr "Por favor insira um comentário freeload!" + +#: includes/pages/user_myshifts.php:79 +msgid "Shift saved." +msgstr "Turno salvo." + +#: includes/pages/user_myshifts.php:107 +msgid "Shift canceled." +msgstr "Turno cancelado." + +#: includes/pages/user_myshifts.php:109 +msgid "" +"It's too late to sign yourself off the shift. If neccessary, ask the " +"dispatcher to do so." +msgstr "" +"Está muito tarde para se retirar deste turno. Se necessário, peça a \n" +"um dispatcher para removê-lo." + +#: includes/pages/user_news.php:4 +msgid "News comments" +msgstr "Novos comentários" + +#: includes/pages/user_news.php:8 +msgid "News" +msgstr "Novidades" + +#: includes/pages/user_news.php:12 +msgid "Meetings" +msgstr "Encontros" + +#: includes/pages/user_news.php:68 +msgid "Comments" +msgstr "Comentários" + +#: includes/pages/user_news.php:86 includes/pages/user_news.php:127 +msgid "Entry saved." +msgstr "Entrada salva." + +#: includes/pages/user_news.php:104 +msgid "New Comment:" +msgstr "Novo comentário:" + +#: includes/pages/user_news.php:110 +msgid "Invalid request." +msgstr "Requisição inválida." + +#: includes/pages/user_news.php:158 +msgid "Create news:" +msgstr "Criar novidades:" + +#: includes/pages/user_questions.php:4 includes/view/Questions_view.php:29 +msgid "Ask the Heaven" +msgstr "Pergunte ao paraíso" + +#: includes/pages/user_questions.php:27 +msgid "Unable to save question." +msgstr "Não foi possível salvar a sua pergunta." + +#: includes/pages/user_questions.php:29 +msgid "You question was saved." +msgstr "Sua pergunta foi salva." + +#: includes/pages/user_questions.php:33 +msgid "Please enter a question!" +msgstr "Por favor digite sua dúvida!" + +#: includes/pages/user_questions.php:41 +msgid "Incomplete call, missing Question ID." +msgstr "Chamada incompletada, falta o ID da pergunta." + +#: includes/pages/user_questions.php:50 +msgid "No question found." +msgstr "Nenhuma dúvida encontrada." + +#: includes/pages/user_settings.php:4 includes/view/User_view.php:332 +msgid "Settings" +msgstr "Configurações" + +#: includes/pages/user_settings.php:62 +msgid "" +"Please enter your planned date of departure. It should be after your planned " +"arrival date and after buildup start date and before teardown end date." +msgstr "" +"Por favor digite sua data de saída. Ela deve ser posterior à data de " +"chegada\n" +"e ao início da montagem, e anterior à data de desmontagem." + +#: includes/pages/user_settings.php:93 +msgid "-> not OK. Please try again." +msgstr "-> não OK. Por favor tente novamente." + +#: includes/pages/user_settings.php:101 +msgid "Failed setting password." +msgstr "A alteração da senha falhaou." + +#: includes/pages/user_settings.php:126 +msgid "Theme changed." +msgstr "Tema alterado." + +#: includes/pages/user_shifts.php:82 +msgid "The administration has not configured any rooms yet." +msgstr "O administrador não configurou nenhuma sala ainda." + +#: includes/pages/user_shifts.php:94 +msgid "The administration has not configured any shifts yet." +msgstr "O administrador não configurou nenhum turno ainda." + +#: includes/pages/user_shifts.php:104 +msgid "" +"The administration has not configured any angeltypes yet - or you are not " +"subscribed to any angeltype." +msgstr "" +"O administrador ainda não configurou os tipos de anjos - ou você não está\n" +"inscrito em nenhum tipo de anjo." + +#: includes/pages/user_shifts.php:142 +msgid "occupied" +msgstr "ocupado" + +#: includes/pages/user_shifts.php:146 +msgid "free" +msgstr "livre" + +#: includes/pages/user_shifts.php:165 +msgid "Occupancy" +msgstr "Ocupação" + +#: includes/pages/user_shifts.php:166 +msgid "" +"The tasks shown here are influenced by the angeltypes you joined already!" +msgstr "" +"As tarefas mostradas aqui são influenciadas pelos tipos de anjos de que você " +"já faz parte!" + +#: includes/pages/user_shifts.php:166 +msgid "Description of the jobs." +msgstr "Descrição dos trabalhos." + +#: includes/pages/user_shifts.php:168 +msgid "iCal export" +msgstr "Exportar iCal" + +#: includes/pages/user_shifts.php:168 +#, php-format +msgid "" +"Export of shown shifts. iCal format or JSON format available (please keep secret, otherwise reset the api key)." +msgstr "" +"Exportar os turnos mostrados. formato iCal ou formato JSON disponíveis (por favor mantenha secreto, ou resete a chave API)." + +#: includes/pages/user_shifts.php:169 +msgid "Filter" +msgstr "Filtro" + +#: includes/pages/user_shifts.php:191 includes/view/ShiftTypes_view.php:23 +msgid "All" +msgstr "Todos" + +#: includes/pages/user_shifts.php:192 +msgid "None" +msgstr "Nenhum" + +#: includes/sys_menu.php:139 +msgid "Admin" +msgstr "Admin" + +#: includes/sys_menu.php:163 +msgid "Manage rooms" +msgstr "Gerenciar salas" + +#: includes/sys_template.php:166 +msgid "No data found." +msgstr "Nenhum dado encontrado." + +#: includes/view/AngelTypes_view.php:27 includes/view/AngelTypes_view.php:244 +msgid "Unconfirmed" +msgstr "Não confirmado" + +#: includes/view/AngelTypes_view.php:29 includes/view/AngelTypes_view.php:33 +msgid "Supporter" +msgstr "Apoiador" + +#: includes/view/AngelTypes_view.php:31 includes/view/AngelTypes_view.php:35 +msgid "Member" +msgstr "Membro" + +#: includes/view/AngelTypes_view.php:42 +#, php-format +msgid "Do you want to delete angeltype %s?" +msgstr "Você deseja apagar o tipo de anjo %s?" + +#: includes/view/AngelTypes_view.php:44 includes/view/ShiftTypes_view.php:15 +#: includes/view/UserAngelTypes_view.php:8 +#: includes/view/UserAngelTypes_view.php:19 +#: includes/view/UserAngelTypes_view.php:30 +#: includes/view/UserAngelTypes_view.php:41 +#: includes/view/UserAngelTypes_view.php:52 +#: includes/view/UserAngelTypes_view.php:82 +msgid "cancel" +msgstr "cancelar" + +#: includes/view/AngelTypes_view.php:67 includes/view/AngelTypes_view.php:269 +msgid "Restricted" +msgstr "Restrito" + +#: includes/view/AngelTypes_view.php:68 +msgid "No Self Sign Up" +msgstr "Auto inscrição não permitida" + +#: includes/view/AngelTypes_view.php:69 +msgid "Requires driver license" +msgstr "Requer carteira de motorista" + +#: includes/view/AngelTypes_view.php:73 +msgid "" +"Restricted angel types can only be used by an angel if enabled by a " +"supporter (double opt-in)." +msgstr "" +"Tipos de anjo restritos só podem ser usados por um anjo quando autorizados " +"por \n" +"um apoiador (duplo opt-in)." + +#: includes/view/AngelTypes_view.php:74 includes/view/AngelTypes_view.php:205 +#: includes/view/ShiftTypes_view.php:37 includes/view/ShiftTypes_view.php:58 +#: includes/view/Shifts_view.php:92 +msgid "Description" +msgstr "Descrição" + +#: includes/view/AngelTypes_view.php:75 includes/view/ShiftTypes_view.php:38 +msgid "Please use markdown for the description." +msgstr "Por favor use markdown para a descrição." + +#: includes/view/AngelTypes_view.php:90 +msgid "my driving license" +msgstr "Minha carteira de motorista" + +#: includes/view/AngelTypes_view.php:97 +msgid "" +"This angeltype requires a driver license. Please enter your driver license " +"information!" +msgstr "" +"Esse tipo de anjo requer carteira de motorista. Por favor digite sua " +"carteira de motorista." + +#: includes/view/AngelTypes_view.php:101 +#, php-format +msgid "" +"You are unconfirmed for this angeltype. Please go to the introduction for %s " +"to get confirmed." +msgstr "" +"Você não está confirmado para esse tipo de anjo. Por favor vá para a " +"apresentação para %s\n" +"para ser confirmado." + +#: includes/view/AngelTypes_view.php:140 +msgid "confirm" +msgstr "confirmar" + +#: includes/view/AngelTypes_view.php:141 +msgid "deny" +msgstr "rejeitar" + +#: includes/view/AngelTypes_view.php:157 +msgid "remove" +msgstr "remover" + +#: includes/view/AngelTypes_view.php:179 +msgid "Driver" +msgstr "Motorista" + +#: includes/view/AngelTypes_view.php:180 +msgid "Has car" +msgstr "Tem carro" + +#: includes/view/AngelTypes_view.php:181 +#: includes/view/UserDriverLicenses_view.php:27 +msgid "Car" +msgstr "Carro" + +#: includes/view/AngelTypes_view.php:182 +msgid "3,5t Transporter" +msgstr "Transporte 3,5t" + +#: includes/view/AngelTypes_view.php:183 +msgid "7,5t Truck" +msgstr "Caminhão 7,5t" + +#: includes/view/AngelTypes_view.php:184 +msgid "12,5t Truck" +msgstr "Caminhão 12,5t" + +#: includes/view/AngelTypes_view.php:185 +#: includes/view/UserDriverLicenses_view.php:31 +msgid "Forklift" +msgstr "Empilhadeira" + +#: includes/view/AngelTypes_view.php:215 +msgid "Supporters" +msgstr "Apoiadores" + +#: includes/view/AngelTypes_view.php:235 +msgid "Members" +msgstr "Membros" + +#: includes/view/AngelTypes_view.php:238 +#: includes/view/UserAngelTypes_view.php:72 +msgid "Add" +msgstr "Adicionar" + +#: includes/view/AngelTypes_view.php:246 +msgid "confirm all" +msgstr "confirmar todos" + +#: includes/view/AngelTypes_view.php:247 +msgid "deny all" +msgstr "rejeitar todos" + +#: includes/view/AngelTypes_view.php:264 +msgid "New angeltype" +msgstr "Novo tipo de anjo" + +#: includes/view/AngelTypes_view.php:270 +msgid "Self Sign Up Allowed" +msgstr "Auto Inscrição autorizada" + +#: includes/view/AngelTypes_view.php:271 +msgid "Membership" +msgstr "Membro" + +#: includes/view/AngelTypes_view.php:296 +msgid "" +"This angeltype is restricted by double-opt-in by a team supporter. Please " +"show up at the according introduction meetings." +msgstr "" +"Esse tipo de anjo é restrito por um opt-in duplo por um time de apoio. Por " +"favor\n" +"compareça de acordo com os encontros de introdução." + +#: includes/view/AngelTypes_view.php:317 +msgid "FAQ" +msgstr "FAQ" + +#: includes/view/AngelTypes_view.php:319 +msgid "" +"Here is the list of teams and their tasks. If you have questions, read the " +"FAQ." +msgstr "" +"Aqui está uma lista dos times e suas tarefas. Se você tem dúvidas, leia a\n" +"FAQ." + +#: includes/view/EventConfig_view.php:10 includes/view/EventConfig_view.php:18 +#, php-format +msgid "Welcome to the %s!" +msgstr "Bem vindo a %s!" + +#: includes/view/EventConfig_view.php:24 +msgid "Buildup starts" +msgstr "Início da montagem" + +#: includes/view/EventConfig_view.php:26 includes/view/EventConfig_view.php:34 +#: includes/view/EventConfig_view.php:42 includes/view/EventConfig_view.php:50 +#: includes/view/EventConfig_view.php:67 includes/view/EventConfig_view.php:72 +#: includes/view/EventConfig_view.php:77 includes/view/Shifts_view.php:68 +#: includes/view/Shifts_view.php:76 +msgid "Y-m-d" +msgstr "d/m/Y" + +#: includes/view/EventConfig_view.php:32 +msgid "Event starts" +msgstr "O evento começa em" + +#: includes/view/EventConfig_view.php:40 +msgid "Event ends" +msgstr "O evento termina em" + +#: includes/view/EventConfig_view.php:48 +msgid "Teardown ends" +msgstr "Desmontagem termina" + +#: includes/view/EventConfig_view.php:67 +#, php-format +msgid "%s, from %s to %s" +msgstr "%s, de %s para %s" + +#: includes/view/EventConfig_view.php:72 +#, php-format +msgid "%s, starting %s" +msgstr "%s, começando %s" + +#: includes/view/EventConfig_view.php:77 +#, php-format +msgid "Event from %s to %s" +msgstr "Evento de %s para %s" + +#: includes/view/EventConfig_view.php:106 +msgid "Event Name" +msgstr "Nome do evento" + +#: includes/view/EventConfig_view.php:107 +msgid "Event Name is shown on the start page." +msgstr "Nome do evento é mostrado na página inicial." + +#: includes/view/EventConfig_view.php:108 +msgid "Event Welcome Message" +msgstr "Mensagem de boas vindas do evento" + +#: includes/view/EventConfig_view.php:109 +msgid "" +"Welcome message is shown after successful registration. You can use markdown." +msgstr "" +"A mensagem de boas vindas é mostrada após a inscrição. Você pode usar " +"markdown." + +#: includes/view/EventConfig_view.php:112 +msgid "Buildup date" +msgstr "Data da montagem" + +#: includes/view/EventConfig_view.php:113 +msgid "Event start date" +msgstr "Data de início do evento" + +#: includes/view/EventConfig_view.php:116 +msgid "Teardown end date" +msgstr "Data da desmontagem" + +#: includes/view/EventConfig_view.php:117 +msgid "Event end date" +msgstr "Data de término do evento" + +#: includes/view/Questions_view.php:17 +msgid "Open questions" +msgstr "Dúvidas abertas" + +#: includes/view/Questions_view.php:31 +msgid "Your Question:" +msgstr "Sua dúvida:" + +#: includes/view/ShiftCalendarRenderer.php:209 includes/view/User_view.php:367 +msgid "Time" +msgstr "Hora" + +#: includes/view/ShiftCalendarRenderer.php:248 +msgid "Your shift" +msgstr "Seu turno" + +#: includes/view/ShiftCalendarRenderer.php:249 +msgid "Help needed" +msgstr "Necessita ajuda" + +#: includes/view/ShiftCalendarRenderer.php:250 +msgid "Other angeltype needed / collides with my shifts" +msgstr "Outro tipo de anjo necessário / colide com seus turnos" + +#: includes/view/ShiftCalendarRenderer.php:251 +msgid "Shift is full" +msgstr "O turno está lotado" + +#: includes/view/ShiftCalendarRenderer.php:252 +msgid "Shift running/ended" +msgstr "Turno em andamento/finalizado" + +#: includes/view/ShiftCalendarShiftRenderer.php:96 +msgid "Add more angels" +msgstr "Adicionar mais anjos" + +#: includes/view/ShiftCalendarShiftRenderer.php:127 +#, php-format +msgid "%d helper needed" +msgid_plural "%d helpers needed" +msgstr[0] "%d necessita de ajuda" +msgstr[1] "%d necessitam de ajuda" + +#: includes/view/ShiftCalendarShiftRenderer.php:132 +#: includes/view/Shifts_view.php:23 +msgid "Sign up" +msgstr "Registrar" + +#: includes/view/ShiftCalendarShiftRenderer.php:137 +msgid "ended" +msgstr "encerrado" + +#: includes/view/ShiftCalendarShiftRenderer.php:146 +#: includes/view/Shifts_view.php:25 +#, php-format +msgid "Become %s" +msgstr "Tornar-se %s" + +#: includes/view/ShiftEntry_view.php:18 includes/view/User_view.php:267 +#: includes/view/User_view.php:269 +msgid "Freeloaded" +msgstr "Freeloaded" + +#: includes/view/ShiftEntry_view.php:19 +msgid "Freeload comment (Only for shift coordination):" +msgstr "Comentário freeload (Apenas para coordenação de turno):" + +#: includes/view/ShiftEntry_view.php:22 +msgid "Edit shift entry" +msgstr "Editar entrada de turno" + +#: includes/view/ShiftEntry_view.php:25 +msgid "Angel:" +msgstr "Anjo:" + +#: includes/view/ShiftEntry_view.php:26 +msgid "Date, Duration:" +msgstr "Data, Duração:" + +#: includes/view/ShiftEntry_view.php:27 +msgid "Location:" +msgstr "Local:" + +#: includes/view/ShiftEntry_view.php:28 +msgid "Title:" +msgstr "Título:" + +#: includes/view/ShiftEntry_view.php:29 +msgid "Type:" +msgstr "Tipo:" + +#: includes/view/ShiftEntry_view.php:30 +msgid "Comment (for your eyes only):" +msgstr "Comentário (apenas para ler):" + +#: includes/view/ShiftTypes_view.php:13 +#, php-format +msgid "Do you want to delete shifttype %s?" +msgstr "Você quer apagar o turno %s?" + +#: includes/view/ShiftTypes_view.php:29 +msgid "Edit shifttype" +msgstr "Editar tipo de turno" + +#: includes/view/ShiftTypes_view.php:29 +msgid "Create shifttype" +msgstr "Criar tipo de turno" + +#: includes/view/ShiftTypes_view.php:48 +#, php-format +msgid "for team %s" +msgstr "para o time %s" + +#: includes/view/ShiftTypes_view.php:75 +msgid "New shifttype" +msgstr "Novo tipo de turno" + +#: includes/view/Shifts_view.php:7 +#, php-format +msgid "created at %s by %s" +msgstr "criado em %s por %s" + +#: includes/view/Shifts_view.php:10 +#, php-format +msgid "edited at %s by %s" +msgstr "editado em %s por %s" + +#: includes/view/Shifts_view.php:52 +msgid "This shift collides with one of your shifts." +msgstr "Esse turno colide com um dos seus outros turnos." + +#: includes/view/Shifts_view.php:53 +msgid "You are signed up for this shift." +msgstr "Você foi designado para esse turno." + +#: includes/view/Shifts_view.php:82 includes/view/User_view.php:368 +msgid "Location" +msgstr "Local" + +#: includes/view/UserAngelTypes_view.php:6 +#, php-format +msgid "Do you really want to add supporter rights for %s to %s?" +msgstr "Você realmente quer dar permissão de apoiador de %s para %s?" + +#: includes/view/UserAngelTypes_view.php:6 +#, php-format +msgid "Do you really want to remove supporter rights for %s from %s?" +msgstr "Você realmente quer remover a permissão de apoiador de %s para %s?" + +#: includes/view/UserAngelTypes_view.php:17 +#, php-format +msgid "Do you really want to deny all users for %s?" +msgstr "Você realmente quer negar todos os usuários para %s?" + +#: includes/view/UserAngelTypes_view.php:28 +#, php-format +msgid "Do you really want to confirm all users for %s?" +msgstr "Você realmente quer confirmar todos os usuários para %s?" + +#: includes/view/UserAngelTypes_view.php:39 +#, php-format +msgid "Do you really want to confirm %s for %s?" +msgstr "Você realmente quer confirmar %s para %s?" + +#: includes/view/UserAngelTypes_view.php:50 +#, php-format +msgid "Do you really want to delete %s from %s?" +msgstr "Você realmente quer apagar %s de %s?" + +#: includes/view/UserAngelTypes_view.php:71 +msgid "User" +msgstr "Usuário" + +#: includes/view/UserAngelTypes_view.php:80 +#, php-format +msgid "Do you really want to add %s to %s?" +msgstr "Você realmente quer adicionar %s em %s?" + +#: includes/view/UserAngelTypes_view.php:83 +msgid "save" +msgstr "salvar" + +#: includes/view/UserDriverLicenses_view.php:17 +msgid "Back to profile" +msgstr "Voltar para o perfil" + +#: includes/view/UserDriverLicenses_view.php:21 +msgid "Privacy" +msgstr "Privacidade" + +#: includes/view/UserDriverLicenses_view.php:21 +msgid "" +"Your driving license information is only visible for supporters and admins." +msgstr "" +"Os dados da sua carteira de motorista são apenas visíveis para os apoiadores " +"e os admins." + +#: includes/view/UserDriverLicenses_view.php:22 +msgid "I am willing to drive a car for the event" +msgstr "Eu desejo dirigir carros para o evento" + +#: includes/view/UserDriverLicenses_view.php:25 +msgid "" +"I have my own car with me and am willing to use it for the event (You'll get " +"reimbursed for fuel)" +msgstr "" +"Eu tenho meu próprio carro e estou disposto a usá-lo no evento\n" +"(Você terá o combustível reembolsado)" + +#: includes/view/UserDriverLicenses_view.php:26 +msgid "Driver license" +msgstr "Carteira de motorista" + +#: includes/view/UserDriverLicenses_view.php:28 +msgid "Transporter 3,5t" +msgstr "Transportador 3,5t" + +#: includes/view/UserDriverLicenses_view.php:29 +msgid "Truck 7,5t" +msgstr "Caminhão 7,5t" + +#: includes/view/UserDriverLicenses_view.php:30 +msgid "Truck 12,5t" +msgstr "Caminhão 12,5t" + +#: includes/view/User_view.php:7 +msgid "Please select..." +msgstr "Por favor selecione..." + +#: includes/view/User_view.php:38 +msgid "Here you can change your user details." +msgstr "Aqui você pode mudar os seus detalhes de usuário." + +#: includes/view/User_view.php:44 +msgid "Planned date of departure" +msgstr "Data planejada para saída" + +#: includes/view/User_view.php:55 +msgid "Please visit the angeltypes page to manage your angeltypes." +msgstr "" +"Por favor visite a página de tipos de anjo para gerenciar os tipos de anjo" + +#: includes/view/User_view.php:61 +msgid "Here you can change your password." +msgstr "Aqui você pode mudar sua senha." + +#: includes/view/User_view.php:62 +msgid "Old password:" +msgstr "Senha antiga:" + +#: includes/view/User_view.php:63 +msgid "New password:" +msgstr "Nova senha:" + +#: includes/view/User_view.php:64 +msgid "Password confirmation:" +msgstr "Confirmação de senha:" + +#: includes/view/User_view.php:68 +msgid "Here you can choose your color settings:" +msgstr "Aqui você pode selecionar sua configuração de cor:" + +#: includes/view/User_view.php:69 +msgid "Color settings:" +msgstr "Configuração de cor:" + +#: includes/view/User_view.php:73 +msgid "Here you can choose your language:" +msgstr "Aqui você pode selecionar seu idioma:" + +#: includes/view/User_view.php:74 +msgid "Language:" +msgstr "Idioma:" + +#: includes/view/User_view.php:88 +msgid "Registration successful" +msgstr "Registrado com sucesso" + +#: includes/view/User_view.php:126 +msgid "" +"Do you really want to delete the user including all his shifts and every " +"other piece of his data?" +msgstr "" +"Você realmente quer apagar o usuário, incluindo todos seus turnos e todos\n" +"os seus dados?" + +#: includes/view/User_view.php:128 +msgid "Your password" +msgstr "Sua senha" + +#: includes/view/User_view.php:143 +#, php-format +msgid "Angel should receive at least %d vouchers." +msgstr "Um anjo deve receber no mínimo %d vouchers." + +#: includes/view/User_view.php:145 +msgid "Number of vouchers given out" +msgstr "Número de vouchers dados" + +#: includes/view/User_view.php:159 +msgid "m/d/Y h:i a" +msgstr "d/m/Y H:i" + +#: includes/view/User_view.php:178 +msgid "New user" +msgstr "Novo usuário" + +#: includes/view/User_view.php:182 +msgid "Prename" +msgstr "Nome" + +#: includes/view/User_view.php:185 includes/view/User_view.php:350 +msgid "Arrived" +msgstr "Chegou" + +#: includes/view/User_view.php:186 +msgid "Voucher" +msgstr "Voucher" + +#: includes/view/User_view.php:187 +msgid "Freeloads" +msgstr "Freeloads" + +#: includes/view/User_view.php:188 includes/view/User_view.php:352 +msgid "Active" +msgstr "Ativo" + +#: includes/view/User_view.php:190 includes/view/User_view.php:353 +msgid "T-Shirt" +msgstr "Camiseta" + +#: includes/view/User_view.php:192 +msgid "Last login" +msgstr "Último login" + +#: includes/view/User_view.php:209 +msgid "Free" +msgstr "Livre" + +#: includes/view/User_view.php:214 includes/view/User_view.php:216 +#, php-format +msgid "Next shift %c" +msgstr "Próximo turno %c" + +#: includes/view/User_view.php:221 +#, php-format +msgid "Shift starts %c" +msgstr "Turno inicia em %c" + +#: includes/view/User_view.php:223 +#, php-format +msgid "Shift ends %c" +msgstr "Turno termina em %c" + +#: includes/view/User_view.php:280 +msgid "sign off" +msgstr "sair" + +#: includes/view/User_view.php:305 +msgid "Sum:" +msgstr "Soma:" + +#: includes/view/User_view.php:329 +msgid "driving license" +msgstr "carteira de motorista" + +#: includes/view/User_view.php:331 +msgid "Edit vouchers" +msgstr "Editar vouchers" + +#: includes/view/User_view.php:333 +msgid "iCal Export" +msgstr "Exportar iCal" + +#: includes/view/User_view.php:334 +msgid "JSON Export" +msgstr "Exportar em formato JSON" + +#: includes/view/User_view.php:347 +msgid "User state" +msgstr "Status" + +#: includes/view/User_view.php:350 +#, php-format +msgid "Arrived at %s" +msgstr "Chegous às %s" + +#: includes/view/User_view.php:350 +#, php-format +msgid "Not arrived (Planned: %s)" +msgstr "Não chegou (Planejado: %s)" + +#: includes/view/User_view.php:350 +msgid "Not arrived" +msgstr "Não chegou" + +#: includes/view/User_view.php:351 +#, php-format +msgid "Got %s voucher" +msgid_plural "Got %s vouchers" +msgstr[0] "Einen Voucher bekommen" +msgstr[1] "%s Voucher bekommen" + +#: includes/view/User_view.php:351 +msgid "Got no vouchers" +msgstr "Pegou voucher %s" + +#: includes/view/User_view.php:360 +msgid "Rights" +msgstr "Permissões" + +#: includes/view/User_view.php:369 +msgid "Name & workmates" +msgstr "Nome & colegas" + +#: includes/view/User_view.php:370 +msgid "Comment" +msgstr "Comentar" + +#: includes/view/User_view.php:371 +msgid "Action" +msgstr "Ação" + +#: includes/view/User_view.php:373 +#, php-format +msgid "Your night shifts between %d and %d am count twice." +msgstr "Os seus turnos noturnos entre %dh e %dh contam como dois." + +#: includes/view/User_view.php:374 +#, php-format +msgid "" +"Go to the shifts table to sign yourself up for some " +"shifts." +msgstr "" +"Vá para a tabela de turnos para se inscrever em alguns\n" +"turnos." + +#: includes/view/User_view.php:384 +msgid "" +"We will send you an e-mail with a password recovery link. Please use the " +"email address you used for registration." +msgstr "" +"Nós enviaremos um email com um link para recuperação de senha. Por favor use " +"o \n" +"endereço de email informado no seu registro." + +#: includes/view/User_view.php:387 +msgid "Recover" +msgstr "Recuperar" + +#: includes/view/User_view.php:398 +msgid "Please enter a new password." +msgstr "Por favor digite uma nova senha." + +#: includes/view/User_view.php:447 +msgid "" +"Please enter your planned date of departure on your settings page to give us " +"a feeling for teardown capacities." +msgstr "" +"Por favor digite sua data planejada de saída na sua página de configurações " +"para\n" +"termos uma noção da nossa capacidade de desmontagem." + +#: includes/view/User_view.php:457 +#, php-format +msgid "" +"You freeloaded at least %s shifts. Shift signup is locked. Please go to " +"heavens desk to be unlocked again." +msgstr "" +"Você deixou de participar de pelo menos %s dos turnos. O registro em turnos " +"está suspenso.\n" +"Por favor vá até a mesa do paraíso para ser desbloqueado novamente." + +#: includes/view/User_view.php:468 +msgid "" +"You are not marked as arrived. Please go to heaven's desk, get your angel " +"badge and/or tell them that you arrived already." +msgstr "" +"Sua chegada não foi marcada. Por favor vá até a mesa do paraíso, pegue sua " +"credencial\n" +"de anjo e/ou informe que você já chegou." + +#: includes/view/User_view.php:478 +msgid "You need to specify a tshirt size in your settings!" +msgstr "Você precisa especificar o tamanho de camiseta nas suas configurações!" + +#: includes/view/User_view.php:488 +msgid "" +"You need to specify a DECT phone number in your settings! If you don't have " +"a DECT phone, just enter \"-\"." +msgstr "" +"Você precisa especificar um número DECT de telefone nas suas configuracões!\n" +"Se você não tem um telefone DECT, apenas digite \\-\\." + +#: public/index.php:155 +msgid "No Access" +msgstr "Sem acesso" + +#: public/index.php:156 +msgid "" +"You don't have permission to view this page. You probably have to sign in or " +"register in order to gain access!" +msgstr "" +"Você não tem permissão para ver essa página. Você provavelmente terá que " +"fazer login ou se registrar para ganhar acesso!" + +#~ msgid "Registration is disabled." +#~ msgstr "Registros estão desabilitados." + +#~ msgid "Please enter your planned date of arrival." +#~ msgstr "Por favor digite seu horario planificado de chagada " + +#~ msgid "Password could not be updated." +#~ msgstr "Nao foi possivel atualizar a senha" + +#~ msgid "We got no information about the event right now." +#~ msgstr "Nao tem info sobre o evento agora" + +#~ msgid "from %s to %s" +#~ msgstr "desde %s ate %s" + +#~ msgid "Please enter your planned date of departure." +#~ msgstr "Por favor pone seu horario planificado de ida" + +#~ msgid "Please select a user." +#~ msgstr "Seleciona um usuario" + +#~ msgid "Unable to load user." +#~ msgstr "Nao foi possivel carregar o usuario" + +#~ msgid "Entries" +#~ msgstr "Entradas" + +#~ msgid "Use new style if possible" +#~ msgstr "Usa umo estilo novo se possivel" + +#~ msgid "Coordinator" +#~ msgstr "Coordinador" + +#~ msgid "Coordinators" +#~ msgstr "Coordinadores" + +#~ msgid " vouchers." +#~ msgstr " vouchers." + +#~ msgid "" +#~ "This is a automatically calculated MINIMUM value, you can of course give " +#~ "out more if appropriate!" +#~ msgstr "" +#~ "Esso e' calucula automaticamente o valor MINIMO, voce pode claramente " +#~ "mudar isso com umo mais appropriado! " + +#~ msgid "You have been signed off from the shift." +#~ msgstr "Voce se desconnecto do seu turno" + +#~ msgid "planned departure" +#~ msgstr "saida planejada" + +#~ msgid "Tasks" +#~ msgstr "tarefas" + +#~ msgid "User didnt got vouchers." +#~ msgstr "O usuario nao tem vouchers." + +#~ msgid "Remove vouchers" +#~ msgstr "Apaga voucher" + +#~ msgid "" +#~ "This shift is running now or ended already. Please contact a dispatcher " +#~ "to join the shift." +#~ msgstr "" +#~ "Esse turno esta ativo agora o ja acabou. Por favor contata o coordinador " +#~ "para partecipar nesse turno" + +#~ msgid "" +#~ "You already subscribed to shift in the same timeslot. Please contact a " +#~ "dispatcher to join the shift." +#~ msgstr "" +#~ "Voce ja se registrou al turno no mesmo timeslot. Por favor contata o " +#~ "coordinador para partecipar a esse turno." + +#~ msgid "" +#~ "Hello %s, here you can change your personal settings i.e. password, color " +#~ "settings etc." +#~ msgstr "" +#~ "Oi %s, aqui pode mudar as tuas configuraçeos pessoal (i.e. senha, " +#~ "cor, ...)" + +#~ msgid "Name/Description:" +#~ msgstr "Nome/Descriçao:" + +#~ msgid "Timeslot" +#~ msgstr "Timeslot" + +#~ msgid "The first wants to join %s." +#~ msgstr "O primeiro que quer partecipar %s" + +#~ msgid "Groups" +#~ msgstr "Grupos" + +#~ msgid "ICQ" +#~ msgstr "ICQ" + +#~ msgid "You are not confirmed for this angel type." +#~ msgstr "Voce nao ta confirmado por esse tipo de anjo." + +#~ msgid "Exports" +#~ msgstr "Esporta" + +#~ msgid "Add new angeltype" +#~ msgstr "Adicione um novo tipo de anjo" + +#~ msgid "Language" +#~ msgstr "Idioma" + +#~ msgid "You have %s new message." +#~ msgid_plural "You have %s new messages." +#~ msgstr[0] "Voce tem %s novo message" +#~ msgstr[1] "" + +#~ msgid "" +#~ "These are your shifts.
Please try to appear 15 minutes before " +#~ "your shift begins!
You can remove yourself from a shift up to %d " +#~ "hours before it starts." +#~ msgstr "" +#~ "Esses som teu turnos.
Por favor tenta chegar 15 minudos antes " +#~ "que seu turno comença!
Voce pode se tirar desse turno ate %d horas " +#~ "antes dele començar." + +#~ msgid "Page:" +#~ msgstr "Pagina" + +#~ msgid "Message:" +#~ msgstr "Messagem:" + +#~ msgid "Wakeup" +#~ msgstr "Wakeup" + +#~ msgid "Incomplete call, missing wake-up ID." +#~ msgstr "chamada incompleta, falta o wake-up ID" + +#~ msgid "Wake-up call deleted." +#~ msgstr "wake-up chamada apagada" + +#~ msgid "No wake-up found." +#~ msgstr "Nao encontrei nenhum wake-up" + +#~ msgid "" +#~ "Hello %s, here you can register for a wake-up call. Simply say when and " +#~ "where the angel should come to wake you." +#~ msgstr "" +#~ "Oi %s, aqui voce pode se registrar para a chamada wake-up. So tem que " +#~ "dizer quando e onde os anjos tem que chegar para te acordar (wake up)" + +#~ msgid "All ordered wake-up calls, next first." +#~ msgstr "Todos os ordem wake-up, o proximo primeiro" + +#~ msgid "Place" +#~ msgstr "Lugar" + +#~ msgid "Notes" +#~ msgstr "Notas" + +#~ msgid "Schedule a new wake-up here:" +#~ msgstr "Planifica um novo wake-up aqui:" + +#~ msgid "User %s confirmed as %s." +#~ msgstr "Usuario %s confirmado como %s" + +#~ msgid "" +#~ "Resistance is futile! Your biological and physical parameters will be " +#~ "added to our collectiv! Assimilating angel:" +#~ msgstr "" +#~ "Resistir e' inútil! Seus parâmetros biológico e físico serão adicionados " +#~ "dentro do nosso coletivo! Anjo assimilado: " + +#~ msgid "Confirmed all." +#~ msgstr "Tudo confirmado." + +#~ msgid "asdf" +#~ msgstr "asdf" diff --git a/resources/lang/pt_BR.UTF.8/LC_MESSAGES/pt_BR.mo b/resources/lang/pt_BR.UTF.8/LC_MESSAGES/pt_BR.mo deleted file mode 100644 index 95251feb..00000000 Binary files a/resources/lang/pt_BR.UTF.8/LC_MESSAGES/pt_BR.mo and /dev/null differ diff --git a/resources/lang/pt_BR.UTF.8/LC_MESSAGES/pt_BR.po b/resources/lang/pt_BR.UTF.8/LC_MESSAGES/pt_BR.po deleted file mode 100644 index e7307e5d..00000000 --- a/resources/lang/pt_BR.UTF.8/LC_MESSAGES/pt_BR.po +++ /dev/null @@ -1,2647 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: Engelsystem 2.0\n" -"POT-Creation-Date: 2017-04-25 05:23+0200\n" -"PO-Revision-Date: 2018-10-05 15:35+0200\n" -"Last-Translator: samba \n" -"Language-Team: \n" -"Language: pt_BR\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 2.0.1\n" -"X-Poedit-KeywordsList: _;gettext;gettext_noop\n" -"X-Poedit-Basepath: ../../..\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Poedit-SourceCharset: UTF-8\n" -"X-Poedit-SearchPath-0: .\n" - -#: includes/controller/angeltypes_controller.php:7 -#: includes/pages/user_shifts.php:164 includes/view/AngelTypes_view.php:62 -#: includes/view/AngelTypes_view.php:86 includes/view/User_view.php:356 -msgid "Angeltypes" -msgstr "Tipo de Anjo" - -#: includes/controller/angeltypes_controller.php:53 -#: includes/pages/guest_login.php:377 includes/view/AngelTypes_view.php:265 -#: includes/view/AngelTypes_view.php:326 includes/view/User_view.php:110 -msgid "Teams/Job description" -msgstr "Time/Descrição do trabalho" - -#: includes/controller/angeltypes_controller.php:72 -#, php-format -msgid "Angeltype %s deleted." -msgstr "Tipo de anjo %s apagado." - -#: includes/controller/angeltypes_controller.php:77 -#: includes/view/AngelTypes_view.php:41 -#, php-format -msgid "Delete angeltype %s" -msgstr "Apagar tipo de anjo %s" - -#: includes/controller/angeltypes_controller.php:116 -msgid "Please check the name. Maybe it already exists." -msgstr "Por favor verifique o nome. Pode ser que já exista." - -#: includes/controller/angeltypes_controller.php:141 -#: includes/view/AngelTypes_view.php:60 -#, php-format -msgid "Edit %s" -msgstr "Editar %s" - -#: includes/controller/angeltypes_controller.php:162 -#: includes/view/AngelTypes_view.php:252 -#, php-format -msgid "Team %s" -msgstr "Time %s" - -#: includes/controller/angeltypes_controller.php:181 -#: includes/view/User_view.php:274 -msgid "view" -msgstr "ver" - -#: includes/controller/angeltypes_controller.php:185 -#: includes/pages/admin_free.php:71 includes/pages/admin_groups.php:23 -#: includes/pages/admin_rooms.php:16 includes/view/AngelTypes_view.php:107 -#: includes/view/ShiftTypes_view.php:55 includes/view/ShiftTypes_view.php:67 -#: includes/view/Shifts_view.php:55 includes/view/User_view.php:277 -#: includes/view/User_view.php:328 -msgid "edit" -msgstr "editar" - -#: includes/controller/angeltypes_controller.php:186 -#: includes/controller/shifts_controller.php:178 -#: includes/pages/admin_questions.php:42 includes/pages/admin_questions.php:56 -#: includes/pages/admin_rooms.php:17 includes/pages/admin_user.php:120 -#: includes/view/AngelTypes_view.php:45 includes/view/AngelTypes_view.php:110 -#: includes/view/Questions_view.php:5 includes/view/Questions_view.php:12 -#: includes/view/ShiftTypes_view.php:16 includes/view/ShiftTypes_view.php:56 -#: includes/view/ShiftTypes_view.php:68 includes/view/Shifts_view.php:56 -msgid "delete" -msgstr "deletar" - -#: includes/controller/angeltypes_controller.php:191 -#: includes/view/AngelTypes_view.php:103 includes/view/AngelTypes_view.php:288 -msgid "leave" -msgstr "sair" - -#: includes/controller/angeltypes_controller.php:193 -#: includes/view/AngelTypes_view.php:94 includes/view/AngelTypes_view.php:290 -msgid "join" -msgstr "entrar" - -#: includes/controller/angeltypes_controller.php:220 -#: includes/controller/user_angeltypes_controller.php:29 -#: includes/controller/user_angeltypes_controller.php:35 -#: includes/controller/user_angeltypes_controller.php:65 -#: includes/controller/user_angeltypes_controller.php:71 -#: includes/controller/user_angeltypes_controller.php:119 -#: includes/controller/user_angeltypes_controller.php:170 -#: includes/controller/user_angeltypes_controller.php:235 -msgid "Angeltype doesn't exist." -msgstr "Esse tipo de anjo não existe." - -#: includes/controller/event_config_controller.php:4 -msgid "Event config" -msgstr "Configuração do evento" - -#: includes/controller/event_config_controller.php:48 -msgid "Please enter buildup start date." -msgstr "Por favor digite a data de início da montagem." - -#: includes/controller/event_config_controller.php:52 -msgid "Please enter event start date." -msgstr "Por favor digite a data de início do evento." - -#: includes/controller/event_config_controller.php:56 -msgid "Please enter event end date." -msgstr "Por favor digite a data de término do evento." - -#: includes/controller/event_config_controller.php:60 -msgid "Please enter teardown end date." -msgstr "Por favor digite a data de desmontagem do evento" - -#: includes/controller/event_config_controller.php:66 -msgid "The buildup start date has to be before the event start date." -msgstr "A data de montagem deve ser anterior a data de início do evento." - -#: includes/controller/event_config_controller.php:71 -msgid "The event start date has to be before the event end date." -msgstr "" -"A data de início do evento deve ser anterior a data de término do evento." - -#: includes/controller/event_config_controller.php:76 -msgid "The event end date has to be before the teardown end date." -msgstr "A data de término deve ser anterior a data de desmontagem do evento." - -#: includes/controller/event_config_controller.php:81 -msgid "The buildup start date has to be before the teardown end date." -msgstr "A data de montagem deve ser anterior a data de desmontagem do evento." - -#: includes/controller/event_config_controller.php:92 -#: includes/pages/user_settings.php:77 -msgid "Settings saved." -msgstr "Configurações salvas." - -#: includes/controller/shift_entries_controller.php:56 -msgid "" -"You are not allowed to sign up for this shift. Maybe shift is full or " -"already running." -msgstr "" -"Você não tem permissão para se inscrever nesse turno. Talvez o turno esteja " -"lotado ou já esteja em andamento." - -#: includes/controller/shift_entries_controller.php:103 -msgid "You are subscribed. Thank you!" -msgstr "Você já está inscrito. Obrigado!" - -#: includes/controller/shift_entries_controller.php:103 -#: includes/pages/user_myshifts.php:4 -msgid "My shifts" -msgstr "Meus turnos" - -#: includes/controller/shift_entries_controller.php:111 -#: includes/view/User_view.php:348 -msgid "Freeloader" -msgstr "Freeloader" - -#: includes/controller/shift_entries_controller.php:180 -msgid "Shift entry deleted." -msgstr "O turno foi deletado." - -#: includes/controller/shift_entries_controller.php:182 -msgid "Entry not found." -msgstr "Entrada não encontrada." - -#: includes/controller/shifts_controller.php:63 -msgid "Please select a room." -msgstr "Por favor selecione uma sala." - -#: includes/controller/shifts_controller.php:70 -msgid "Please select a shifttype." -msgstr "Por favor selecione um tssipo de turno." - -#: includes/controller/shifts_controller.php:77 -msgid "Please enter a valid starting time for the shifts." -msgstr "Por favor entre com um horário de início válido para os turnos." - -#: includes/controller/shifts_controller.php:84 -msgid "Please enter a valid ending time for the shifts." -msgstr "Por favor entre com um horário de término válido para os turnos." - -#: includes/controller/shifts_controller.php:89 -msgid "The ending time has to be after the starting time." -msgstr "O horário de término deve ser após o horário de início." - -#: includes/controller/shifts_controller.php:97 -#, php-format -msgid "Please check your input for needed angels of type %s." -msgstr "Por favor verifique seu input para os anjos de tipo %s necessários." - -#: includes/controller/shifts_controller.php:120 -msgid "Shift updated." -msgstr "Turno atualizado." - -#: includes/controller/shifts_controller.php:135 -msgid "This page is much more comfortable with javascript." -msgstr "Esta página é muito mais confortável com javascript" - -#: includes/controller/shifts_controller.php:137 -#: includes/pages/admin_import.php:98 includes/pages/admin_shifts.php:319 -msgid "Shifttype" -msgstr "Tipo de turno" - -#: includes/controller/shifts_controller.php:138 -#: includes/pages/admin_import.php:158 includes/pages/admin_import.php:167 -#: includes/pages/admin_import.php:176 includes/pages/admin_shifts.php:320 -#: includes/view/Shifts_view.php:62 -msgid "Title" -msgstr "Título" - -#: includes/controller/shifts_controller.php:139 -msgid "Room:" -msgstr "Sala:" - -#: includes/controller/shifts_controller.php:140 -msgid "Start:" -msgstr "Início:" - -#: includes/controller/shifts_controller.php:141 -msgid "End:" -msgstr "Fim:" - -#: includes/controller/shifts_controller.php:142 -#: includes/pages/admin_shifts.php:270 includes/pages/admin_shifts.php:334 -#: includes/view/Shifts_view.php:88 -msgid "Needed angels" -msgstr "Anjos necessários" - -#: includes/controller/shifts_controller.php:144 -#: includes/pages/admin_groups.php:54 includes/pages/admin_news.php:35 -#: includes/pages/admin_questions.php:40 includes/pages/admin_rooms.php:157 -#: includes/pages/admin_shifts.php:272 includes/pages/user_messages.php:44 -#: includes/pages/user_news.php:107 includes/pages/user_news.php:164 -#: includes/view/AngelTypes_view.php:76 includes/view/EventConfig_view.php:122 -#: includes/view/Questions_view.php:32 includes/view/ShiftEntry_view.php:32 -#: includes/view/ShiftTypes_view.php:39 -#: includes/view/UserDriverLicenses_view.php:34 includes/view/User_view.php:56 -#: includes/view/User_view.php:65 includes/view/User_view.php:70 -#: includes/view/User_view.php:75 includes/view/User_view.php:146 -#: includes/view/User_view.php:402 -msgid "Save" -msgstr "Salvar" - -#: includes/controller/shifts_controller.php:172 -msgid "Shift deleted." -msgstr "Turno deletado." - -#: includes/controller/shifts_controller.php:177 -#, php-format -msgid "Do you want to delete the shift %s from %s to %s?" -msgstr "Você quer deletar o turno %s de %s para %s?" - -#: includes/controller/shifts_controller.php:195 -msgid "Shift could not be found." -msgstr "O turno não pôde ser encontrado." - -#: includes/controller/shifttypes_controller.php:31 -#, php-format -msgid "Shifttype %s deleted." -msgstr "Tipo de turno %s deletado." - -#: includes/controller/shifttypes_controller.php:36 -#: includes/view/ShiftTypes_view.php:12 -#, php-format -msgid "Delete shifttype %s" -msgstr "Apagar tipo de turno %s" - -#: includes/controller/shifttypes_controller.php:58 -msgid "Shifttype not found." -msgstr "Tipo de turno não encontrado." - -#: includes/controller/shifttypes_controller.php:74 -#: includes/pages/admin_rooms.php:71 -msgid "Please enter a name." -msgstr "Por favor digite um nome." - -#: includes/controller/shifttypes_controller.php:94 -msgid "Updated shifttype." -msgstr "Tipo de turno atualizado." - -#: includes/controller/shifttypes_controller.php:101 -msgid "Created shifttype." -msgstr "Tipo de turno criado" - -#: includes/controller/shifttypes_controller.php:155 -msgid "Shifttypes" -msgstr "Tipos de turno" - -#: includes/controller/user_angeltypes_controller.php:19 -#, php-format -msgid "There is %d unconfirmed angeltype." -msgid_plural "There are %d unconfirmed angeltypes." -msgstr[0] "Há %d anjo não confirmado." -msgstr[1] "There are %d unconfirmed angeltypes." - -#: includes/controller/user_angeltypes_controller.php:19 -msgid "Angel types which need approvals:" -msgstr "Tipos de anjo que precisam de aprovações:" - -#: includes/controller/user_angeltypes_controller.php:40 -msgid "You are not allowed to delete all users for this angeltype." -msgstr "" -"Você não têm permissão para apagar todos os usuários desse tipo de anjo." - -#: includes/controller/user_angeltypes_controller.php:48 -#, php-format -msgid "Denied all users for angeltype %s." -msgstr "Todos os usuários com tipo de anjo %s negados." - -#: includes/controller/user_angeltypes_controller.php:53 -#: includes/view/UserAngelTypes_view.php:15 -msgid "Deny all users" -msgstr "Negar todos os usuários" - -#: includes/controller/user_angeltypes_controller.php:77 -#: includes/controller/user_angeltypes_controller.php:107 -#: includes/controller/user_angeltypes_controller.php:113 -#: includes/controller/user_angeltypes_controller.php:158 -#: includes/controller/user_angeltypes_controller.php:164 -#: includes/controller/user_angeltypes_controller.php:216 -#: includes/controller/user_angeltypes_controller.php:229 -msgid "User angeltype doesn't exist." -msgstr "O tipo de anjo deste usuário não existe." - -#: includes/controller/user_angeltypes_controller.php:82 -msgid "You are not allowed to confirm all users for this angeltype." -msgstr "" -"Você não tem permissão para confirmar todos os usuários com este tipo de " -"anjo." - -#: includes/controller/user_angeltypes_controller.php:90 -#, php-format -msgid "Confirmed all users for angeltype %s." -msgstr "Todos os usuários com tipo de anjo %s confirmados." - -#: includes/controller/user_angeltypes_controller.php:95 -#: includes/view/UserAngelTypes_view.php:26 -msgid "Confirm all users" -msgstr "Confirmar todos usuários" - -#: includes/controller/user_angeltypes_controller.php:124 -msgid "You are not allowed to confirm this users angeltype." -msgstr "Você não tem permissão para confirmar o tipo de anjo deste usuário." - -#: includes/controller/user_angeltypes_controller.php:130 -#: includes/controller/user_angeltypes_controller.php:176 -#: includes/controller/user_angeltypes_controller.php:241 -#: includes/controller/users_controller.php:312 -msgid "User doesn't exist." -msgstr "Usuário não existente." - -#: includes/controller/user_angeltypes_controller.php:141 -#, php-format -msgid "%s confirmed for angeltype %s." -msgstr "%s confirmado para o tipo de anjo %s." - -#: includes/controller/user_angeltypes_controller.php:146 -#: includes/view/UserAngelTypes_view.php:37 -msgid "Confirm angeltype for user" -msgstr "Confirme o tipo de anjo para o usuário" - -#: includes/controller/user_angeltypes_controller.php:181 -msgid "You are not allowed to delete this users angeltype." -msgstr "Você não tem permissão para deletar o tipo de anjo deste usuário." - -#: includes/controller/user_angeltypes_controller.php:191 -#, php-format -msgid "User %s removed from %s." -msgstr "Usuário %s removido de %s." - -#: includes/controller/user_angeltypes_controller.php:199 -#: includes/view/UserAngelTypes_view.php:48 -msgid "Remove angeltype" -msgstr "Remover esse tipo de anjo" - -#: includes/controller/user_angeltypes_controller.php:211 -msgid "You are not allowed to set supporter rights." -msgstr "Você não tem autorização para definir permissões de apoiadores." - -#: includes/controller/user_angeltypes_controller.php:223 -msgid "No supporter update given." -msgstr "Nenhuma atualização de apoiador informada." - -#: includes/controller/user_angeltypes_controller.php:248 -#, php-format -msgid "Added supporter rights for %s to %s." -msgstr "Permissões de apoiador incluídos para %s a %s." - -#: includes/controller/user_angeltypes_controller.php:248 -#, php-format -msgid "Removed supporter rights for %s from %s." -msgstr "Permissões de apoiador removidos para %s a %s." - -#: includes/controller/user_angeltypes_controller.php:256 -#: includes/view/AngelTypes_view.php:156 -#: includes/view/UserAngelTypes_view.php:4 -msgid "Add supporter rights" -msgstr "Adicionar permissão ao apoiador" - -#: includes/controller/user_angeltypes_controller.php:256 -#: includes/view/AngelTypes_view.php:147 -#: includes/view/UserAngelTypes_view.php:4 -msgid "Remove supporter rights" -msgstr "Remover permissões de apoiador" - -#: includes/controller/user_angeltypes_controller.php:289 -#, php-format -msgid "User %s added to %s." -msgstr "Usuário %s adicionado a %s." - -#: includes/controller/user_angeltypes_controller.php:299 -#: includes/view/UserAngelTypes_view.php:64 -msgid "Add user to angeltype" -msgstr "Adicionar usuário a tipo de anjo" - -#: includes/controller/user_angeltypes_controller.php:312 -#, php-format -msgid "You are already a %s." -msgstr "Você já é %s." - -#: includes/controller/user_angeltypes_controller.php:319 -#, php-format -msgid "You joined %s." -msgstr "Você se juntou a %s." - -#: includes/controller/user_angeltypes_controller.php:332 -#: includes/view/UserAngelTypes_view.php:78 -#, php-format -msgid "Become a %s" -msgstr "Torne-se %s" - -#: includes/controller/user_driver_licenses_controller.php:19 -#, php-format -msgid "" -"You joined an angeltype which requires a driving license. Please edit your " -"driving license information here: %s." -msgstr "" -"Você se tornou um tipo de anjo que requer carteira de motorista. Por favor " -"inclua \n" -"seus dados aqui: %s." - -#: includes/controller/user_driver_licenses_controller.php:19 -msgid "driving license information" -msgstr "dados da carteira de motorista" - -#: includes/controller/user_driver_licenses_controller.php:113 -msgid "Your driver license information has been saved." -msgstr "Dados da carteira de motorista salvos." - -#: includes/controller/user_driver_licenses_controller.php:116 -msgid "Please select at least one driving license." -msgstr "Selecione pelo menos uma carteira de motorista." - -#: includes/controller/user_driver_licenses_controller.php:121 -msgid "Your driver license information has been removed." -msgstr "Seus dados de carteira de motorista foram removidos." - -#: includes/controller/user_driver_licenses_controller.php:127 -#: includes/view/UserDriverLicenses_view.php:15 -#, php-format -msgid "Edit %s driving license information" -msgstr "Editar dados da carteira de motorista de %s" - -#: includes/controller/users_controller.php:52 -msgid "You cannot delete yourself." -msgstr "Você não pode se deletar." - -#: includes/controller/users_controller.php:61 -#: includes/pages/guest_login.php:315 -msgid "Your password is incorrect. Please try it again." -msgstr "Sua senha está incorreta. Por favor, tente novamente." - -#: includes/controller/users_controller.php:71 -msgid "User deleted." -msgstr "Usuário deletado." - -#: includes/controller/users_controller.php:79 includes/view/User_view.php:121 -#, php-format -msgid "Delete %s" -msgstr "Apagar %s" - -#: includes/controller/users_controller.php:120 -msgid "Please enter a valid number of vouchers." -msgstr "Por favor, entre com um número válido de vouchers." - -#: includes/controller/users_controller.php:131 -msgid "Saved the number of vouchers." -msgstr "Número de vouchers salvo." - -#: includes/controller/users_controller.php:139 includes/view/User_view.php:138 -#, php-format -msgid "%s's vouchers" -msgstr "Vouchers de %s" - -#: includes/controller/users_controller.php:151 -msgid "User not found." -msgstr "Usuário não encontrado." - -#: includes/controller/users_controller.php:205 includes/view/User_view.php:175 -msgid "All users" -msgstr "Todos usuários" - -#: includes/controller/users_controller.php:217 -msgid "Token is not correct." -msgstr "O token não está correto." - -#: includes/controller/users_controller.php:227 -#: includes/pages/guest_login.php:102 includes/pages/user_settings.php:97 -msgid "Your passwords don't match." -msgstr "Suas senhas não correspondem." - -#: includes/controller/users_controller.php:231 -#: includes/pages/user_settings.php:95 -msgid "Your password is to short (please use at least 6 characters)." -msgstr "Sua senha é muito curta (por favor use no mínimo 6 caracteres)." - -#: includes/controller/users_controller.php:236 -#: includes/pages/user_settings.php:99 -msgid "Password saved." -msgstr "Sua senha foi salva." - -#: includes/controller/users_controller.php:257 -#: includes/controller/users_controller.php:261 -#: includes/pages/guest_login.php:67 includes/pages/user_settings.php:21 -msgid "E-mail address is not correct." -msgstr "E-mail não está correto." - -#: includes/controller/users_controller.php:265 -#: includes/pages/guest_login.php:71 includes/pages/user_settings.php:25 -msgid "Please enter your e-mail." -msgstr "Por favor digite seu e-mail." - -#: includes/controller/users_controller.php:270 -#: includes/controller/users_controller.php:295 -msgid "Password recovery" -msgstr "Recuperação de senha" - -#: includes/controller/users_controller.php:270 -#, php-format -msgid "Please visit %s to recover your password." -msgstr "Por favor visite %s para recuperar sua senha" - -#: includes/controller/users_controller.php:271 -msgid "We sent an email containing your password recovery link." -msgstr "Nós enviamos um email com o link para recuperação da sua senha." - -#: includes/helper/email_helper.php:12 -#, php-format -msgid "Hi %s," -msgstr "Oi %s," - -#: includes/helper/email_helper.php:12 -#, php-format -msgid "here is a message for you from the %s:" -msgstr "aqui está uma mensagem do %s para você:" - -#: includes/helper/email_helper.php:12 -#, php-format -msgid "" -"This email is autogenerated and has not been signed. You got this email " -"because you are registered in the %s." -msgstr "Você recebeu esse email porque está registrado no %s." - -#: includes/mailer/shifts_mailer.php:10 -msgid "A Shift you are registered on has changed:" -msgstr "Um turno em que você estava registrado foi modificado:" - -#: includes/mailer/shifts_mailer.php:14 -#, php-format -msgid "* Shift type changed from %s to %s" -msgstr "* Tipo de turno alterado de %s para %s" - -#: includes/mailer/shifts_mailer.php:19 -#, php-format -msgid "* Shift title changed from %s to %s" -msgstr "* Título do turno alterado de %s para %s" - -#: includes/mailer/shifts_mailer.php:24 -#, php-format -msgid "* Shift Start changed from %s to %s" -msgstr "* Início do turno alterado de %s para %s" - -#: includes/mailer/shifts_mailer.php:29 -#, php-format -msgid "* Shift End changed from %s to %s" -msgstr "* Término do turno alterado de %s para %s" - -#: includes/mailer/shifts_mailer.php:34 -#, php-format -msgid "* Shift Location changed from %s to %s" -msgstr "* Local do turno alterado de %s para %s" - -#: includes/mailer/shifts_mailer.php:44 -msgid "The updated Shift:" -msgstr "Turno atualizado:" - -#: includes/mailer/shifts_mailer.php:53 -msgid "Your Shift has changed" -msgstr "O seu turno foi modificado" - -#: includes/mailer/shifts_mailer.php:62 -msgid "A Shift you are registered on was deleted:" -msgstr "Um turno em que você estava registrado foi apagado:" - -#: includes/mailer/shifts_mailer.php:71 -msgid "Your Shift was deleted" -msgstr "Seu turno foi apagado" - -#: includes/mailer/shifts_mailer.php:80 -msgid "You have been assigned to a Shift:" -msgstr "Você foi alocado a um turno:" - -#: includes/mailer/shifts_mailer.php:86 -msgid "Assigned to Shift" -msgstr "Alocado ao turno" - -#: includes/mailer/shifts_mailer.php:94 -msgid "You have been removed from a Shift:" -msgstr "Você foi removido de um turno:" - -#: includes/mailer/shifts_mailer.php:100 -msgid "Removed from Shift" -msgstr "Removido do turno" - -#: includes/mailer/users_mailer.php:7 -msgid "Your account has been deleted" -msgstr "A sua conta foi deletada." - -#: includes/mailer/users_mailer.php:7 -msgid "" -"Your angelsystem account has been deleted. If you have any questions " -"regarding your account deletion, please contact heaven." -msgstr "" -"Sua conta engelsystem foi deletada. Se você tiver questões sobre a deleção " -"da sua conta, por favor entre em contato com o paraíso." - -#: includes/pages/admin_active.php:4 -msgid "Active angels" -msgstr "Anjos ativos" - -#: includes/pages/admin_active.php:29 -#, php-format -msgid "" -"At least %s angels are forced to be active. The number has to be greater." -msgstr "No mínimo %s anjos precisam estar ativos. O número deve ser maior." - -#: includes/pages/admin_active.php:34 -msgid "Please enter a number of angels to be marked as active." -msgstr "Por favor insira o número de anjos a marcar como ativos." - -#: includes/pages/admin_active.php:59 -msgid "Marked angels." -msgstr "Anjos marcados." - -#: includes/pages/admin_active.php:61 includes/pages/admin_rooms.php:137 -#: includes/pages/admin_rooms.php:173 includes/pages/admin_shifts.php:266 -#: includes/view/UserAngelTypes_view.php:67 includes/view/User_view.php:124 -#: includes/view/User_view.php:141 -msgid "back" -msgstr "voltar" - -#: includes/pages/admin_active.php:61 -msgid "apply" -msgstr "aplicar" - -#: includes/pages/admin_active.php:71 -msgid "Angel has been marked as active." -msgstr "Anjo marcado como ativo." - -#: includes/pages/admin_active.php:73 includes/pages/admin_active.php:83 -#: includes/pages/admin_active.php:103 includes/pages/admin_arrive.php:23 -#: includes/pages/admin_arrive.php:34 -msgid "Angel not found." -msgstr "Anjo não encontrado." - -#: includes/pages/admin_active.php:81 -msgid "Angel has been marked as not active." -msgstr "Anjo marcado como não ativo." - -#: includes/pages/admin_active.php:91 -msgid "Angel has got a t-shirt." -msgstr "Anjo tem uma camiseta." - -#: includes/pages/admin_active.php:101 -msgid "Angel has got no t-shirt." -msgstr "Anjo não tem camiseta." - -#: includes/pages/admin_active.php:142 -msgid "set active" -msgstr "definir ativo" - -#: includes/pages/admin_active.php:145 -msgid "remove active" -msgstr "remover ativo" - -#: includes/pages/admin_active.php:146 -msgid "got t-shirt" -msgstr "pegou camiseta" - -#: includes/pages/admin_active.php:149 -msgid "remove t-shirt" -msgstr "remover camiseta" - -#: includes/pages/admin_active.php:168 includes/pages/admin_arrive.php:165 -#: includes/pages/admin_arrive.php:180 includes/pages/admin_arrive.php:195 -#: includes/view/AngelTypes_view.php:221 includes/view/AngelTypes_view.php:229 -#: includes/view/User_view.php:165 -msgid "Sum" -msgstr "Somatória" - -#: includes/pages/admin_active.php:175 -msgid "Search angel:" -msgstr "Buscar Anjo:" - -#: includes/pages/admin_active.php:176 -msgid "Show all shifts" -msgstr "Mostrar todos os turnos" - -#: includes/pages/admin_active.php:177 includes/pages/admin_arrive.php:141 -#: includes/pages/admin_arrive.php:142 includes/pages/admin_free.php:78 -#: includes/pages/admin_free.php:87 includes/pages/admin_log.php:23 -#: includes/pages/admin_log.php:24 -msgid "Search" -msgstr "Buscar" - -#: includes/pages/admin_active.php:180 -msgid "How much angels should be active?" -msgstr "Quantos anjos deverão estar ativos?" - -#: includes/pages/admin_active.php:181 includes/pages/admin_shifts.php:254 -#: includes/pages/admin_shifts.php:342 -msgid "Preview" -msgstr "Pré-visualizar" - -#: includes/pages/admin_active.php:185 includes/pages/admin_arrive.php:145 -msgid "Nickname" -msgstr "Apelido" - -#: includes/pages/admin_active.php:186 includes/pages/admin_active.php:196 -#: includes/view/User_view.php:191 -msgid "Size" -msgstr "Tamanho" - -#: includes/pages/admin_active.php:187 includes/pages/user_shifts.php:5 -#: includes/view/User_view.php:364 -msgid "Shifts" -msgstr "Turnos" - -#: includes/pages/admin_active.php:188 includes/pages/admin_shifts.php:329 -msgid "Length" -msgstr "Duração" - -#: includes/pages/admin_active.php:189 -msgid "Active?" -msgstr "Ativo?" - -#: includes/pages/admin_active.php:190 includes/view/User_view.php:189 -msgid "Forced" -msgstr "Forçados" - -#: includes/pages/admin_active.php:191 -msgid "T-shirt?" -msgstr "Camiseta?" - -#: includes/pages/admin_active.php:194 -msgid "Shirt statistics" -msgstr "Estatísticas de camiseta" - -#: includes/pages/admin_active.php:197 -msgid "Needed shirts" -msgstr "Camisetas necessárias" - -#: includes/pages/admin_active.php:198 -msgid "Given shirts" -msgstr "Camisetas entregues" - -#: includes/pages/admin_arrive.php:4 -msgid "Arrived angels" -msgstr "Anjos que chegaram" - -#: includes/pages/admin_arrive.php:20 -msgid "Reset done. Angel has not arrived." -msgstr "Reset realizado. Anjo não chegou." - -#: includes/pages/admin_arrive.php:31 -msgid "Angel has been marked as arrived." -msgstr "Chegada do anjo registrada." - -#: includes/pages/admin_arrive.php:71 includes/view/UserAngelTypes_view.php:9 -#: includes/view/UserAngelTypes_view.php:20 -#: includes/view/UserAngelTypes_view.php:31 -#: includes/view/UserAngelTypes_view.php:42 -#: includes/view/UserAngelTypes_view.php:53 -msgid "yes" -msgstr "sim" - -#: includes/pages/admin_arrive.php:72 -msgid "reset" -msgstr "resetar" - -#: includes/pages/admin_arrive.php:72 includes/pages/admin_arrive.php:156 -#: includes/pages/admin_arrive.php:171 includes/pages/admin_arrive.php:186 -#: includes/view/User_view.php:330 -msgid "arrived" -msgstr "chegou" - -#: includes/pages/admin_arrive.php:146 -msgid "Planned arrival" -msgstr "Chegada planejada" - -#: includes/pages/admin_arrive.php:147 -msgid "Arrived?" -msgstr "Chegou?" - -#: includes/pages/admin_arrive.php:148 -msgid "Arrival date" -msgstr "Data de chegada" - -#: includes/pages/admin_arrive.php:149 -msgid "Planned departure" -msgstr "Saída planejada" - -#: includes/pages/admin_arrive.php:154 -msgid "Planned arrival statistics" -msgstr "Estatísticas de chegadas planejadas" - -#: includes/pages/admin_arrive.php:157 includes/pages/admin_arrive.php:172 -#: includes/pages/admin_arrive.php:187 -msgid "arrived sum" -msgstr "soma dos que chegaram" - -#: includes/pages/admin_arrive.php:163 includes/pages/admin_arrive.php:178 -#: includes/pages/admin_arrive.php:193 includes/pages/admin_news.php:30 -#: includes/pages/user_messages.php:76 -msgid "Date" -msgstr "Data" - -#: includes/pages/admin_arrive.php:164 includes/pages/admin_arrive.php:179 -#: includes/pages/admin_arrive.php:194 -msgid "Count" -msgstr "Contar" - -#: includes/pages/admin_arrive.php:169 -msgid "Arrival statistics" -msgstr "Estatísticas de chegadas" - -#: includes/pages/admin_arrive.php:184 -msgid "Planned departure statistics" -msgstr "Estatísticas de saídas planejadas" - -#: includes/pages/admin_free.php:4 -msgid "Free angels" -msgstr "Anjos livres" - -#: includes/pages/admin_free.php:81 includes/view/ShiftTypes_view.php:36 -#: includes/view/UserAngelTypes_view.php:70 -msgid "Angeltype" -msgstr "Tipo de anjo" - -#: includes/pages/admin_free.php:84 -msgid "Only confirmed" -msgstr "Somente confirmados" - -#: includes/pages/admin_free.php:92 includes/pages/guest_login.php:225 -#: includes/pages/guest_login.php:354 includes/view/AngelTypes_view.php:177 -#: includes/view/AngelTypes_view.php:190 includes/view/User_view.php:40 -#: includes/view/User_view.php:97 includes/view/User_view.php:181 -msgid "Nick" -msgstr "Apelido" - -#: includes/pages/admin_free.php:94 includes/pages/guest_login.php:255 -#: includes/view/AngelTypes_view.php:178 includes/view/AngelTypes_view.php:191 -#: includes/view/User_view.php:47 includes/view/User_view.php:184 -msgid "DECT" -msgstr "DECT" - -#: includes/pages/admin_free.php:95 includes/pages/guest_login.php:264 -#: includes/view/User_view.php:52 -msgid "Jabber" -msgstr "Jabber" - -#: includes/pages/admin_free.php:96 includes/pages/guest_login.php:228 -#: includes/view/User_view.php:49 includes/view/User_view.php:386 -msgid "E-Mail" -msgstr "E-Mail" - -#: includes/pages/admin_groups.php:4 -msgid "Grouprights" -msgstr "Direitos de grupo" - -#: includes/pages/admin_groups.php:29 includes/pages/admin_import.php:145 -#: includes/pages/admin_import.php:149 includes/pages/admin_rooms.php:143 -#: includes/pages/admin_rooms.php:189 includes/view/AngelTypes_view.php:66 -#: includes/view/AngelTypes_view.php:268 includes/view/ShiftTypes_view.php:35 -#: includes/view/ShiftTypes_view.php:78 includes/view/User_view.php:183 -msgid "Name" -msgstr "Nome" - -#: includes/pages/admin_groups.php:30 -msgid "Privileges" -msgstr "Privilégios" - -#: includes/pages/admin_groups.php:55 -msgid "Edit group" -msgstr "Editar grupo" - -#: includes/pages/admin_import.php:4 includes/pages/admin_rooms.php:144 -#: includes/pages/admin_rooms.php:190 -msgid "Frab import" -msgstr "Importação Frab" - -#: includes/pages/admin_import.php:26 -msgid "Webserver has no write-permission on import directory." -msgstr "" -"O servidor web não possui permissão de escrita no diretório de importação." - -#: includes/pages/admin_import.php:54 includes/pages/admin_import.php:118 -#: includes/pages/admin_import.php:196 includes/pages/admin_shifts.php:53 -#: includes/pages/admin_shifts.php:59 -msgid "Please select a shift type." -msgstr "Por favor selecione um tipo de turno." - -#: includes/pages/admin_import.php:61 includes/pages/admin_import.php:125 -#: includes/pages/admin_import.php:203 -msgid "Please enter an amount of minutes to add to a talk's begin." -msgstr "" -"Por favor insira um número de minutos para adicionar ao início de uma " -"palestra." - -#: includes/pages/admin_import.php:68 includes/pages/admin_import.php:132 -#: includes/pages/admin_import.php:210 -msgid "Please enter an amount of minutes to add to a talk's end." -msgstr "" -"Por favor insira um número de minutos para adicionar ao término de uma " -"palestra." - -#: includes/pages/admin_import.php:76 -msgid "No valid xml/xcal file provided." -msgstr "Nenhum arquivo xml/xcal válido foi fornecido." - -#: includes/pages/admin_import.php:81 -msgid "File upload went wrong." -msgstr "Falha no upload do arquivo." - -#: includes/pages/admin_import.php:85 -msgid "Please provide some data." -msgstr "Por favor insira alguns dados." - -#: includes/pages/admin_import.php:93 includes/pages/admin_import.php:140 -#: includes/pages/admin_import.php:253 -msgid "File Upload" -msgstr "Enviar arquivo" - -#: includes/pages/admin_import.php:93 includes/pages/admin_import.php:140 -#: includes/pages/admin_import.php:253 -msgid "Validation" -msgstr "Validação" - -#: includes/pages/admin_import.php:93 includes/pages/admin_import.php:102 -#: includes/pages/admin_import.php:140 includes/pages/admin_import.php:179 -#: includes/pages/admin_import.php:253 -msgid "Import" -msgstr "Importar" - -#: includes/pages/admin_import.php:97 -msgid "" -"This import will create/update/delete rooms and shifts by given FRAB-export " -"file. The needed file format is xcal." -msgstr "" -"Esta importação irá criar/atualizar/deletar salas e turnos a partir do " -"arquivo FRAB-Export. O formato necessário é xcal." - -#: includes/pages/admin_import.php:99 -msgid "Add minutes to start" -msgstr "Adicionar minutos ao início" - -#: includes/pages/admin_import.php:100 -msgid "Add minutes to end" -msgstr "Adicionar minutos ao fim" - -#: includes/pages/admin_import.php:101 -msgid "xcal-File (.xcal)" -msgstr "Adicionar minutos ao fim" - -#: includes/pages/admin_import.php:111 includes/pages/admin_import.php:185 -msgid "Missing import file." -msgstr "Arquivo para importar não encontrado." - -#: includes/pages/admin_import.php:144 -msgid "Rooms to create" -msgstr "Salas para criar" - -#: includes/pages/admin_import.php:148 -msgid "Rooms to delete" -msgstr "Salas para apagar" - -#: includes/pages/admin_import.php:152 -msgid "Shifts to create" -msgstr "Turnos para criar" - -#: includes/pages/admin_import.php:154 includes/pages/admin_import.php:163 -#: includes/pages/admin_import.php:172 includes/view/User_view.php:366 -msgid "Day" -msgstr "Dia" - -#: includes/pages/admin_import.php:155 includes/pages/admin_import.php:164 -#: includes/pages/admin_import.php:173 includes/pages/admin_shifts.php:324 -#: includes/view/Shifts_view.php:66 -msgid "Start" -msgstr "Início" - -#: includes/pages/admin_import.php:156 includes/pages/admin_import.php:165 -#: includes/pages/admin_import.php:174 includes/pages/admin_shifts.php:325 -#: includes/view/Shifts_view.php:74 -msgid "End" -msgstr "Fim" - -#: includes/pages/admin_import.php:157 includes/pages/admin_import.php:166 -#: includes/pages/admin_import.php:175 -msgid "Shift type" -msgstr "Tipo de turno" - -#: includes/pages/admin_import.php:159 includes/pages/admin_import.php:168 -#: includes/pages/admin_import.php:177 includes/pages/admin_shifts.php:321 -msgid "Room" -msgstr "Sala" - -#: includes/pages/admin_import.php:161 -msgid "Shifts to update" -msgstr "Turnos para atualizar" - -#: includes/pages/admin_import.php:170 -msgid "Shifts to delete" -msgstr "Turnos para deletar" - -#: includes/pages/admin_import.php:254 -msgid "It's done!" -msgstr "Está feito!" - -#: includes/pages/admin_log.php:4 -msgid "Log" -msgstr "Log" - -#: includes/pages/admin_news.php:10 -msgid "Edit news entry" -msgstr "Editar notícia" - -#: includes/pages/admin_news.php:31 -msgid "Author" -msgstr "Autor" - -#: includes/pages/admin_news.php:32 includes/pages/user_news.php:161 -msgid "Subject" -msgstr "Assunto" - -#: includes/pages/admin_news.php:33 includes/pages/user_messages.php:79 -#: includes/pages/user_news.php:106 includes/pages/user_news.php:162 -msgid "Message" -msgstr "Mensagem" - -#: includes/pages/admin_news.php:34 includes/pages/user_news.php:163 -msgid "Meeting" -msgstr "Reunião" - -#: includes/pages/admin_news.php:38 includes/pages/admin_rooms.php:177 -#: includes/view/User_view.php:129 -msgid "Delete" -msgstr "Apagar" - -#: includes/pages/admin_news.php:52 -msgid "News entry updated." -msgstr "Notícia atualizada." - -#: includes/pages/admin_news.php:61 -msgid "News entry deleted." -msgstr "Notícia deletada." - -#: includes/pages/admin_questions.php:4 -msgid "Answer questions" -msgstr "Responder perguntas" - -#: includes/pages/admin_questions.php:18 -msgid "There are unanswered questions!" -msgstr "Existem perguntas não respondidas!" - -#: includes/pages/admin_questions.php:61 -msgid "Unanswered questions" -msgstr "Perguntas não respondidas" - -#: includes/pages/admin_questions.php:63 includes/pages/admin_questions.php:70 -msgid "From" -msgstr "De" - -#: includes/pages/admin_questions.php:64 includes/pages/admin_questions.php:71 -#: includes/view/Questions_view.php:19 includes/view/Questions_view.php:24 -msgid "Question" -msgstr "Questão" - -#: includes/pages/admin_questions.php:65 includes/pages/admin_questions.php:73 -#: includes/view/Questions_view.php:26 -msgid "Answer" -msgstr "Resposta" - -#: includes/pages/admin_questions.php:68 includes/view/Questions_view.php:22 -msgid "Answered questions" -msgstr "Perguntas respondidas" - -#: includes/pages/admin_questions.php:72 includes/view/Questions_view.php:25 -msgid "Answered by" -msgstr "Respondido por" - -#: includes/pages/admin_rooms.php:4 includes/pages/user_shifts.php:159 -#: includes/sys_menu.php:176 -msgid "Rooms" -msgstr "Salas" - -#: includes/pages/admin_rooms.php:67 -msgid "This name is already in use." -msgstr "Este nome já está em uso." - -#: includes/pages/admin_rooms.php:97 -#, php-format -msgid "Please enter needed angels for type %s." -msgstr "Por favor insira os anjos necessários de tipo %s." - -#: includes/pages/admin_rooms.php:124 -msgid "Room saved." -msgstr "Sala salva" - -#: includes/pages/admin_rooms.php:145 includes/pages/admin_rooms.php:191 -msgid "Public" -msgstr "Público" - -#: includes/pages/admin_rooms.php:146 -msgid "Room number" -msgstr "Número da sala" - -#: includes/pages/admin_rooms.php:151 -msgid "Needed angels:" -msgstr "Anjos necessários:" - -#: includes/pages/admin_rooms.php:167 -#, php-format -msgid "Room %s deleted." -msgstr "Sala %s deletada." - -#: includes/pages/admin_rooms.php:175 -#, php-format -msgid "Do you want to delete room %s?" -msgstr "Você quer deletar as salas %s?" - -#: includes/pages/admin_rooms.php:185 -msgid "add" -msgstr "adicionar" - -#: includes/pages/admin_shifts.php:4 -msgid "Create shifts" -msgstr "Criar turnos" - -#: includes/pages/admin_shifts.php:71 -msgid "Please select a location." -msgstr "Por favor, selecione uma localização." - -#: includes/pages/admin_shifts.php:78 -msgid "Please select a start time." -msgstr "Por favor, selecione um horário de início." - -#: includes/pages/admin_shifts.php:85 -msgid "Please select an end time." -msgstr "Por favor, selecione um horário de término." - -#: includes/pages/admin_shifts.php:90 -msgid "The shifts end has to be after its start." -msgstr "O término do turno deve ser posterior ao seu início." - -#: includes/pages/admin_shifts.php:102 -msgid "Please enter a shift duration in minutes." -msgstr "Por favor insira a duração do turno em minutos." - -#: includes/pages/admin_shifts.php:110 -msgid "Please split the shift-change hours by colons." -msgstr "Por favor divida os horários de mudança de turno por vírgulas." - -#: includes/pages/admin_shifts.php:115 -msgid "Please select a mode." -msgstr "Por favor selecione um modo." - -#: includes/pages/admin_shifts.php:128 -#, php-format -msgid "Please check the needed angels for team %s." -msgstr "Por favor confira os anjos necessários para o time %s." - -#: includes/pages/admin_shifts.php:133 -msgid "There are 0 angels needed. Please enter the amounts of needed angels." -msgstr "" -"Há 0 anjos necessários. Por favor insira o número de anjos necessários." - -#: includes/pages/admin_shifts.php:137 -msgid "Please select a mode for needed angels." -msgstr "Por favor escolha um modo para os anjos necessários." - -#: includes/pages/admin_shifts.php:141 -msgid "Please select needed angels." -msgstr "Por favor selecione os anjos necessários." - -#: includes/pages/admin_shifts.php:268 -msgid "Time and location" -msgstr "Horário e localização" - -#: includes/pages/admin_shifts.php:269 -msgid "Type and title" -msgstr "Tipo e título" - -#: includes/pages/admin_shifts.php:326 -msgid "Mode" -msgstr "Modo" - -#: includes/pages/admin_shifts.php:327 -msgid "Create one shift" -msgstr "Criar um turno" - -#: includes/pages/admin_shifts.php:328 -msgid "Create multiple shifts" -msgstr "Criar múltiplos turnos" - -#: includes/pages/admin_shifts.php:330 -msgid "Create multiple shifts with variable length" -msgstr "Criar múltiplos turnos com duração variável" - -#: includes/pages/admin_shifts.php:331 -msgid "Shift change hours" -msgstr "Mudança de horário do turno" - -#: includes/pages/admin_shifts.php:335 -msgid "Take needed angels from room settings" -msgstr "Pegar os anjos necessários a partir das configurações das salas" - -#: includes/pages/admin_shifts.php:336 -msgid "The following angels are needed" -msgstr "Os seguintes anjos são necessários" - -#: includes/pages/admin_user.php:4 -msgid "All Angels" -msgstr "Todos os anjos" - -#: includes/pages/admin_user.php:20 -msgid "This user does not exist." -msgstr "Esse usuário não existe." - -#: includes/pages/admin_user.php:46 includes/view/AngelTypes_view.php:67 -#: includes/view/AngelTypes_view.php:68 includes/view/AngelTypes_view.php:69 -msgid "Yes" -msgstr "Sim" - -#: includes/pages/admin_user.php:47 includes/view/AngelTypes_view.php:67 -#: includes/view/AngelTypes_view.php:68 includes/view/AngelTypes_view.php:69 -msgid "No" -msgstr "Não" - -#: includes/pages/admin_user.php:60 -msgid "Force active" -msgstr "Forçar ativação" - -#: includes/pages/admin_user.php:79 -msgid "" -"Please visit the angeltypes page or the users profile to manage users " -"angeltypes." -msgstr "" -"Por favor visite a página de tipos de anjo ou o perfil do usuário para " -"gerenciar\n" -"seus tipos de anjo." - -#: includes/pages/admin_user.php:204 -msgid "Edit user" -msgstr "Editar usuário" - -#: includes/pages/guest_credits.php:3 -msgid "Credits" -msgstr "Créditos" - -#: includes/pages/guest_login.php:4 includes/pages/guest_login.php:349 -#: includes/pages/guest_login.php:356 includes/view/User_view.php:95 -#: includes/view/User_view.php:99 -msgid "Login" -msgstr "Login" - -#: includes/pages/guest_login.php:8 includes/pages/guest_login.php:285 -msgid "Register" -msgstr "Registrar" - -#: includes/pages/guest_login.php:12 -msgid "Logout" -msgstr "Logout" - -#: includes/pages/guest_login.php:56 -#, php-format -msgid "Your nick "%s" already exists." -msgstr "Seu apelido "%s" já existe." - -#: includes/pages/guest_login.php:60 -#, php-format -msgid "Your nick "%s" is too short (min. 2 characters)." -msgstr "Seu apelido "%s" é muito pequeno (mínimo 2 caracteres)." - -#: includes/pages/guest_login.php:86 includes/pages/user_settings.php:36 -msgid "Please check your jabber account information." -msgstr "Por favor verifique a informação da sua conta jabber." - -#: includes/pages/guest_login.php:95 -msgid "Please select your shirt size." -msgstr "Por favor escolha o tamanho da camisa." - -#: includes/pages/guest_login.php:106 -#, php-format -msgid "Your password is too short (please use at least %s characters)." -msgstr "Sua senha é muito curta (por favor use pelo menos %s caracteres)." - -#: includes/pages/guest_login.php:115 includes/pages/user_settings.php:52 -msgid "" -"Please enter your planned date of arrival. It should be after the buildup " -"start date and before teardown end date." -msgstr "" -"Por favor insira a data planejada para sua chegada. Ela deve ser posterior à " -"data de montagem e anterior à data de desmontagem." - -#: includes/pages/guest_login.php:189 -msgid "Angel registration successful!" -msgstr "Conta criada com sucesso!" - -#: includes/pages/guest_login.php:217 -msgid "" -"By completing this form you're registering as a Chaos-Angel. This script " -"will create you an account in the angel task scheduler." -msgstr "" -"Ao completar esse formulário você estará se registrando como um voluntário. " -"Esse script criará uma conta no sistema." - -#: includes/pages/guest_login.php:229 includes/view/User_view.php:50 -#, php-format -msgid "" -"The %s is allowed to send me an email (e.g. when my shifts change)" -msgstr "" -"Permito que o %s me envie emails (por exemplo, quando meus turnos " -"mudam)" - -#: includes/pages/guest_login.php:230 includes/view/User_view.php:51 -msgid "Humans are allowed to send me an email (e.g. for ticket vouchers)" -msgstr "Permito que humanos me enviem emails (por exemplo, para um voucher)" - -#: includes/pages/guest_login.php:235 includes/view/User_view.php:43 -msgid "Planned date of arrival" -msgstr "Data planejada de chegada" - -#: includes/pages/guest_login.php:238 includes/view/User_view.php:54 -msgid "Shirt size" -msgstr "Tamanho da camiseta" - -#: includes/pages/guest_login.php:243 includes/pages/guest_login.php:355 -#: includes/view/User_view.php:98 includes/view/User_view.php:400 -msgid "Password" -msgstr "Senha" - -#: includes/pages/guest_login.php:246 includes/view/User_view.php:401 -msgid "Confirm password" -msgstr "Confirme a senha" - -#: includes/pages/guest_login.php:249 -msgid "What do you want to do?" -msgstr "O que você gostaria de fazer?" - -#: includes/pages/guest_login.php:249 -msgid "Description of job types" -msgstr "Descrição dos trabalhos" - -#: includes/pages/guest_login.php:250 -msgid "" -"Restricted angel types need will be confirmed later by a supporter. You can " -"change your selection in the options section." -msgstr "" -"Tipos de anjo restritos precisam de confirmação posterior de um apoiador. " -"Você pode \n" -"mudar sua seleção na seção 'Opções'." - -#: includes/pages/guest_login.php:258 includes/view/User_view.php:48 -msgid "Mobile" -msgstr "Celular" - -#: includes/pages/guest_login.php:261 includes/view/User_view.php:46 -msgid "Phone" -msgstr "Telefone" - -#: includes/pages/guest_login.php:267 includes/view/User_view.php:42 -msgid "First name" -msgstr "Nome" - -#: includes/pages/guest_login.php:270 includes/view/User_view.php:41 -msgid "Last name" -msgstr "Sobrenome" - -#: includes/pages/guest_login.php:275 includes/view/User_view.php:45 -msgid "Age" -msgstr "Idade" - -#: includes/pages/guest_login.php:278 includes/view/User_view.php:53 -msgid "Hometown" -msgstr "Cidade" - -#: includes/pages/guest_login.php:281 includes/view/User_view.php:39 -msgid "Entry required!" -msgstr "Campo necessário!" - -#: includes/pages/guest_login.php:319 -msgid "Please enter a password." -msgstr "Por favor digite uma senha." - -#: includes/pages/guest_login.php:323 -msgid "" -"No user was found with that Nickname. Please try again. If you are still " -"having problems, ask a Dispatcher." -msgstr "" -"Nenhum usuário com esse apelido foi encontrado. Por favor tente novamente. \n" -"Se você continuar com problemas, pergunte a um Dispatcher." - -#: includes/pages/guest_login.php:327 -msgid "Please enter a nickname." -msgstr "Por favor digite um apelido." - -#: includes/pages/guest_login.php:358 includes/view/User_view.php:101 -msgid "I forgot my password" -msgstr "Esqueci minha senha" - -#: includes/pages/guest_login.php:363 includes/view/User_view.php:103 -msgid "Please note: You have to activate cookies!" -msgstr "Nota: você precisa habilitar cookies!" - -#: includes/pages/guest_login.php:374 includes/view/User_view.php:107 -msgid "What can I do?" -msgstr "O que posso fazer?" - -#: includes/pages/guest_login.php:375 includes/view/User_view.php:108 -msgid "Please read about the jobs you can do to help us." -msgstr "Por favor leia sobre as tarefas que pode realizar para nos ajudar." - -#: includes/pages/guest_login.php:390 -msgid "Please sign up, if you want to help us!" -msgstr "Se você quer nos ajudar, por favor se registre!" - -#: includes/pages/user_messages.php:4 -msgid "Messages" -msgstr "Mensagens" - -#: includes/pages/user_messages.php:26 -msgid "Select recipient..." -msgstr "Selecionar recipiente..." - -#: includes/pages/user_messages.php:62 -msgid "mark as read" -msgstr "marcar como lido" - -#: includes/pages/user_messages.php:65 -msgid "delete message" -msgstr "apagar mensagem" - -#: includes/pages/user_messages.php:72 -#, php-format -msgid "Hello %s, here can you leave messages for other angels" -msgstr "Oi %s, aqui você pode deixar mensagens para outros anjos." - -#: includes/pages/user_messages.php:75 -msgid "New" -msgstr "Nova" - -#: includes/pages/user_messages.php:77 -msgid "Transmitted" -msgstr "Enviado" - -#: includes/pages/user_messages.php:78 -msgid "Recipient" -msgstr "Recipiente" - -#: includes/pages/user_messages.php:90 includes/pages/user_messages.php:106 -msgid "Incomplete call, missing Message ID." -msgstr "Chamada incompleta, falta o ID da Mensagem." - -#: includes/pages/user_messages.php:98 includes/pages/user_messages.php:114 -msgid "No Message found." -msgstr "Nenhuma mensagem encontrada." - -#: includes/pages/user_messages.php:122 -msgid "Transmitting was terminated with an Error." -msgstr "Transmissão encerrada com um erro." - -#: includes/pages/user_messages.php:127 -msgid "Wrong action." -msgstr "Ação errada." - -#: includes/pages/user_myshifts.php:23 -msgid "Key changed." -msgstr "Chave modificada." - -#: includes/pages/user_myshifts.php:26 includes/view/User_view.php:335 -msgid "Reset API key" -msgstr "Resetar a chave API" - -#: includes/pages/user_myshifts.php:27 -msgid "" -"If you reset the key, the url to your iCal- and JSON-export and your atom " -"feed changes! You have to update it in every application using one of these " -"exports." -msgstr "" -"Se você reconfigurar a chave, as urls para seu iCal, a exportação em formato " -"JSON \n" -"e seu feed atom será alterada! Você precisará atualizá-las em todas as " -"aplicações que estiverem \n" -"usando uma delas." - -#: includes/pages/user_myshifts.php:28 -msgid "Continue" -msgstr "Continuar" - -#: includes/pages/user_myshifts.php:60 -msgid "Please enter a freeload comment!" -msgstr "Por favor insira um comentário freeload!" - -#: includes/pages/user_myshifts.php:79 -msgid "Shift saved." -msgstr "Turno salvo." - -#: includes/pages/user_myshifts.php:107 -msgid "Shift canceled." -msgstr "Turno cancelado." - -#: includes/pages/user_myshifts.php:109 -msgid "" -"It's too late to sign yourself off the shift. If neccessary, ask the " -"dispatcher to do so." -msgstr "" -"Está muito tarde para se retirar deste turno. Se necessário, peça a \n" -"um dispatcher para removê-lo." - -#: includes/pages/user_news.php:4 -msgid "News comments" -msgstr "Novos comentários" - -#: includes/pages/user_news.php:8 -msgid "News" -msgstr "Novidades" - -#: includes/pages/user_news.php:12 -msgid "Meetings" -msgstr "Encontros" - -#: includes/pages/user_news.php:68 -msgid "Comments" -msgstr "Comentários" - -#: includes/pages/user_news.php:86 includes/pages/user_news.php:127 -msgid "Entry saved." -msgstr "Entrada salva." - -#: includes/pages/user_news.php:104 -msgid "New Comment:" -msgstr "Novo comentário:" - -#: includes/pages/user_news.php:110 -msgid "Invalid request." -msgstr "Requisição inválida." - -#: includes/pages/user_news.php:158 -msgid "Create news:" -msgstr "Criar novidades:" - -#: includes/pages/user_questions.php:4 includes/view/Questions_view.php:29 -msgid "Ask the Heaven" -msgstr "Pergunte ao paraíso" - -#: includes/pages/user_questions.php:27 -msgid "Unable to save question." -msgstr "Não foi possível salvar a sua pergunta." - -#: includes/pages/user_questions.php:29 -msgid "You question was saved." -msgstr "Sua pergunta foi salva." - -#: includes/pages/user_questions.php:33 -msgid "Please enter a question!" -msgstr "Por favor digite sua dúvida!" - -#: includes/pages/user_questions.php:41 -msgid "Incomplete call, missing Question ID." -msgstr "Chamada incompletada, falta o ID da pergunta." - -#: includes/pages/user_questions.php:50 -msgid "No question found." -msgstr "Nenhuma dúvida encontrada." - -#: includes/pages/user_settings.php:4 includes/view/User_view.php:332 -msgid "Settings" -msgstr "Configurações" - -#: includes/pages/user_settings.php:62 -msgid "" -"Please enter your planned date of departure. It should be after your planned " -"arrival date and after buildup start date and before teardown end date." -msgstr "" -"Por favor digite sua data de saída. Ela deve ser posterior à data de " -"chegada\n" -"e ao início da montagem, e anterior à data de desmontagem." - -#: includes/pages/user_settings.php:93 -msgid "-> not OK. Please try again." -msgstr "-> não OK. Por favor tente novamente." - -#: includes/pages/user_settings.php:101 -msgid "Failed setting password." -msgstr "A alteração da senha falhaou." - -#: includes/pages/user_settings.php:126 -msgid "Theme changed." -msgstr "Tema alterado." - -#: includes/pages/user_shifts.php:82 -msgid "The administration has not configured any rooms yet." -msgstr "O administrador não configurou nenhuma sala ainda." - -#: includes/pages/user_shifts.php:94 -msgid "The administration has not configured any shifts yet." -msgstr "O administrador não configurou nenhum turno ainda." - -#: includes/pages/user_shifts.php:104 -msgid "" -"The administration has not configured any angeltypes yet - or you are not " -"subscribed to any angeltype." -msgstr "" -"O administrador ainda não configurou os tipos de anjos - ou você não está\n" -"inscrito em nenhum tipo de anjo." - -#: includes/pages/user_shifts.php:142 -msgid "occupied" -msgstr "ocupado" - -#: includes/pages/user_shifts.php:146 -msgid "free" -msgstr "livre" - -#: includes/pages/user_shifts.php:165 -msgid "Occupancy" -msgstr "Ocupação" - -#: includes/pages/user_shifts.php:166 -msgid "" -"The tasks shown here are influenced by the angeltypes you joined already!" -msgstr "" -"As tarefas mostradas aqui são influenciadas pelos tipos de anjos de que você " -"já faz parte!" - -#: includes/pages/user_shifts.php:166 -msgid "Description of the jobs." -msgstr "Descrição dos trabalhos." - -#: includes/pages/user_shifts.php:168 -msgid "iCal export" -msgstr "Exportar iCal" - -#: includes/pages/user_shifts.php:168 -#, php-format -msgid "" -"Export of shown shifts. iCal format or JSON format available (please keep secret, otherwise reset the api key)." -msgstr "" -"Exportar os turnos mostrados. formato iCal ou formato JSON disponíveis (por favor mantenha secreto, ou resete a chave API)." - -#: includes/pages/user_shifts.php:169 -msgid "Filter" -msgstr "Filtro" - -#: includes/pages/user_shifts.php:191 includes/view/ShiftTypes_view.php:23 -msgid "All" -msgstr "Todos" - -#: includes/pages/user_shifts.php:192 -msgid "None" -msgstr "Nenhum" - -#: includes/sys_menu.php:139 -msgid "Admin" -msgstr "Admin" - -#: includes/sys_menu.php:163 -msgid "Manage rooms" -msgstr "Gerenciar salas" - -#: includes/sys_template.php:166 -msgid "No data found." -msgstr "Nenhum dado encontrado." - -#: includes/view/AngelTypes_view.php:27 includes/view/AngelTypes_view.php:244 -msgid "Unconfirmed" -msgstr "Não confirmado" - -#: includes/view/AngelTypes_view.php:29 includes/view/AngelTypes_view.php:33 -msgid "Supporter" -msgstr "Apoiador" - -#: includes/view/AngelTypes_view.php:31 includes/view/AngelTypes_view.php:35 -msgid "Member" -msgstr "Membro" - -#: includes/view/AngelTypes_view.php:42 -#, php-format -msgid "Do you want to delete angeltype %s?" -msgstr "Você deseja apagar o tipo de anjo %s?" - -#: includes/view/AngelTypes_view.php:44 includes/view/ShiftTypes_view.php:15 -#: includes/view/UserAngelTypes_view.php:8 -#: includes/view/UserAngelTypes_view.php:19 -#: includes/view/UserAngelTypes_view.php:30 -#: includes/view/UserAngelTypes_view.php:41 -#: includes/view/UserAngelTypes_view.php:52 -#: includes/view/UserAngelTypes_view.php:82 -msgid "cancel" -msgstr "cancelar" - -#: includes/view/AngelTypes_view.php:67 includes/view/AngelTypes_view.php:269 -msgid "Restricted" -msgstr "Restrito" - -#: includes/view/AngelTypes_view.php:68 -msgid "No Self Sign Up" -msgstr "Auto inscrição não permitida" - -#: includes/view/AngelTypes_view.php:69 -msgid "Requires driver license" -msgstr "Requer carteira de motorista" - -#: includes/view/AngelTypes_view.php:73 -msgid "" -"Restricted angel types can only be used by an angel if enabled by a " -"supporter (double opt-in)." -msgstr "" -"Tipos de anjo restritos só podem ser usados por um anjo quando autorizados " -"por \n" -"um apoiador (duplo opt-in)." - -#: includes/view/AngelTypes_view.php:74 includes/view/AngelTypes_view.php:205 -#: includes/view/ShiftTypes_view.php:37 includes/view/ShiftTypes_view.php:58 -#: includes/view/Shifts_view.php:92 -msgid "Description" -msgstr "Descrição" - -#: includes/view/AngelTypes_view.php:75 includes/view/ShiftTypes_view.php:38 -msgid "Please use markdown for the description." -msgstr "Por favor use markdown para a descrição." - -#: includes/view/AngelTypes_view.php:90 -msgid "my driving license" -msgstr "Minha carteira de motorista" - -#: includes/view/AngelTypes_view.php:97 -msgid "" -"This angeltype requires a driver license. Please enter your driver license " -"information!" -msgstr "" -"Esse tipo de anjo requer carteira de motorista. Por favor digite sua " -"carteira de motorista." - -#: includes/view/AngelTypes_view.php:101 -#, php-format -msgid "" -"You are unconfirmed for this angeltype. Please go to the introduction for %s " -"to get confirmed." -msgstr "" -"Você não está confirmado para esse tipo de anjo. Por favor vá para a " -"apresentação para %s\n" -"para ser confirmado." - -#: includes/view/AngelTypes_view.php:140 -msgid "confirm" -msgstr "confirmar" - -#: includes/view/AngelTypes_view.php:141 -msgid "deny" -msgstr "rejeitar" - -#: includes/view/AngelTypes_view.php:157 -msgid "remove" -msgstr "remover" - -#: includes/view/AngelTypes_view.php:179 -msgid "Driver" -msgstr "Motorista" - -#: includes/view/AngelTypes_view.php:180 -msgid "Has car" -msgstr "Tem carro" - -#: includes/view/AngelTypes_view.php:181 -#: includes/view/UserDriverLicenses_view.php:27 -msgid "Car" -msgstr "Carro" - -#: includes/view/AngelTypes_view.php:182 -msgid "3,5t Transporter" -msgstr "Transporte 3,5t" - -#: includes/view/AngelTypes_view.php:183 -msgid "7,5t Truck" -msgstr "Caminhão 7,5t" - -#: includes/view/AngelTypes_view.php:184 -msgid "12,5t Truck" -msgstr "Caminhão 12,5t" - -#: includes/view/AngelTypes_view.php:185 -#: includes/view/UserDriverLicenses_view.php:31 -msgid "Forklift" -msgstr "Empilhadeira" - -#: includes/view/AngelTypes_view.php:215 -msgid "Supporters" -msgstr "Apoiadores" - -#: includes/view/AngelTypes_view.php:235 -msgid "Members" -msgstr "Membros" - -#: includes/view/AngelTypes_view.php:238 -#: includes/view/UserAngelTypes_view.php:72 -msgid "Add" -msgstr "Adicionar" - -#: includes/view/AngelTypes_view.php:246 -msgid "confirm all" -msgstr "confirmar todos" - -#: includes/view/AngelTypes_view.php:247 -msgid "deny all" -msgstr "rejeitar todos" - -#: includes/view/AngelTypes_view.php:264 -msgid "New angeltype" -msgstr "Novo tipo de anjo" - -#: includes/view/AngelTypes_view.php:270 -msgid "Self Sign Up Allowed" -msgstr "Auto Inscrição autorizada" - -#: includes/view/AngelTypes_view.php:271 -msgid "Membership" -msgstr "Membro" - -#: includes/view/AngelTypes_view.php:296 -msgid "" -"This angeltype is restricted by double-opt-in by a team supporter. Please " -"show up at the according introduction meetings." -msgstr "" -"Esse tipo de anjo é restrito por um opt-in duplo por um time de apoio. Por " -"favor\n" -"compareça de acordo com os encontros de introdução." - -#: includes/view/AngelTypes_view.php:317 -msgid "FAQ" -msgstr "FAQ" - -#: includes/view/AngelTypes_view.php:319 -msgid "" -"Here is the list of teams and their tasks. If you have questions, read the " -"FAQ." -msgstr "" -"Aqui está uma lista dos times e suas tarefas. Se você tem dúvidas, leia a\n" -"FAQ." - -#: includes/view/EventConfig_view.php:10 includes/view/EventConfig_view.php:18 -#, php-format -msgid "Welcome to the %s!" -msgstr "Bem vindo a %s!" - -#: includes/view/EventConfig_view.php:24 -msgid "Buildup starts" -msgstr "Início da montagem" - -#: includes/view/EventConfig_view.php:26 includes/view/EventConfig_view.php:34 -#: includes/view/EventConfig_view.php:42 includes/view/EventConfig_view.php:50 -#: includes/view/EventConfig_view.php:67 includes/view/EventConfig_view.php:72 -#: includes/view/EventConfig_view.php:77 includes/view/Shifts_view.php:68 -#: includes/view/Shifts_view.php:76 -msgid "Y-m-d" -msgstr "d/m/Y" - -#: includes/view/EventConfig_view.php:32 -msgid "Event starts" -msgstr "O evento começa em" - -#: includes/view/EventConfig_view.php:40 -msgid "Event ends" -msgstr "O evento termina em" - -#: includes/view/EventConfig_view.php:48 -msgid "Teardown ends" -msgstr "Desmontagem termina" - -#: includes/view/EventConfig_view.php:67 -#, php-format -msgid "%s, from %s to %s" -msgstr "%s, de %s para %s" - -#: includes/view/EventConfig_view.php:72 -#, php-format -msgid "%s, starting %s" -msgstr "%s, começando %s" - -#: includes/view/EventConfig_view.php:77 -#, php-format -msgid "Event from %s to %s" -msgstr "Evento de %s para %s" - -#: includes/view/EventConfig_view.php:106 -msgid "Event Name" -msgstr "Nome do evento" - -#: includes/view/EventConfig_view.php:107 -msgid "Event Name is shown on the start page." -msgstr "Nome do evento é mostrado na página inicial." - -#: includes/view/EventConfig_view.php:108 -msgid "Event Welcome Message" -msgstr "Mensagem de boas vindas do evento" - -#: includes/view/EventConfig_view.php:109 -msgid "" -"Welcome message is shown after successful registration. You can use markdown." -msgstr "" -"A mensagem de boas vindas é mostrada após a inscrição. Você pode usar " -"markdown." - -#: includes/view/EventConfig_view.php:112 -msgid "Buildup date" -msgstr "Data da montagem" - -#: includes/view/EventConfig_view.php:113 -msgid "Event start date" -msgstr "Data de início do evento" - -#: includes/view/EventConfig_view.php:116 -msgid "Teardown end date" -msgstr "Data da desmontagem" - -#: includes/view/EventConfig_view.php:117 -msgid "Event end date" -msgstr "Data de término do evento" - -#: includes/view/Questions_view.php:17 -msgid "Open questions" -msgstr "Dúvidas abertas" - -#: includes/view/Questions_view.php:31 -msgid "Your Question:" -msgstr "Sua dúvida:" - -#: includes/view/ShiftCalendarRenderer.php:209 includes/view/User_view.php:367 -msgid "Time" -msgstr "Hora" - -#: includes/view/ShiftCalendarRenderer.php:248 -msgid "Your shift" -msgstr "Seu turno" - -#: includes/view/ShiftCalendarRenderer.php:249 -msgid "Help needed" -msgstr "Necessita ajuda" - -#: includes/view/ShiftCalendarRenderer.php:250 -msgid "Other angeltype needed / collides with my shifts" -msgstr "Outro tipo de anjo necessário / colide com seus turnos" - -#: includes/view/ShiftCalendarRenderer.php:251 -msgid "Shift is full" -msgstr "O turno está lotado" - -#: includes/view/ShiftCalendarRenderer.php:252 -msgid "Shift running/ended" -msgstr "Turno em andamento/finalizado" - -#: includes/view/ShiftCalendarShiftRenderer.php:96 -msgid "Add more angels" -msgstr "Adicionar mais anjos" - -#: includes/view/ShiftCalendarShiftRenderer.php:127 -#, php-format -msgid "%d helper needed" -msgid_plural "%d helpers needed" -msgstr[0] "%d necessita de ajuda" -msgstr[1] "%d necessitam de ajuda" - -#: includes/view/ShiftCalendarShiftRenderer.php:132 -#: includes/view/Shifts_view.php:23 -msgid "Sign up" -msgstr "Registrar" - -#: includes/view/ShiftCalendarShiftRenderer.php:137 -msgid "ended" -msgstr "encerrado" - -#: includes/view/ShiftCalendarShiftRenderer.php:146 -#: includes/view/Shifts_view.php:25 -#, php-format -msgid "Become %s" -msgstr "Tornar-se %s" - -#: includes/view/ShiftEntry_view.php:18 includes/view/User_view.php:267 -#: includes/view/User_view.php:269 -msgid "Freeloaded" -msgstr "Freeloaded" - -#: includes/view/ShiftEntry_view.php:19 -msgid "Freeload comment (Only for shift coordination):" -msgstr "Comentário freeload (Apenas para coordenação de turno):" - -#: includes/view/ShiftEntry_view.php:22 -msgid "Edit shift entry" -msgstr "Editar entrada de turno" - -#: includes/view/ShiftEntry_view.php:25 -msgid "Angel:" -msgstr "Anjo:" - -#: includes/view/ShiftEntry_view.php:26 -msgid "Date, Duration:" -msgstr "Data, Duração:" - -#: includes/view/ShiftEntry_view.php:27 -msgid "Location:" -msgstr "Local:" - -#: includes/view/ShiftEntry_view.php:28 -msgid "Title:" -msgstr "Título:" - -#: includes/view/ShiftEntry_view.php:29 -msgid "Type:" -msgstr "Tipo:" - -#: includes/view/ShiftEntry_view.php:30 -msgid "Comment (for your eyes only):" -msgstr "Comentário (apenas para ler):" - -#: includes/view/ShiftTypes_view.php:13 -#, php-format -msgid "Do you want to delete shifttype %s?" -msgstr "Você quer apagar o turno %s?" - -#: includes/view/ShiftTypes_view.php:29 -msgid "Edit shifttype" -msgstr "Editar tipo de turno" - -#: includes/view/ShiftTypes_view.php:29 -msgid "Create shifttype" -msgstr "Criar tipo de turno" - -#: includes/view/ShiftTypes_view.php:48 -#, php-format -msgid "for team %s" -msgstr "para o time %s" - -#: includes/view/ShiftTypes_view.php:75 -msgid "New shifttype" -msgstr "Novo tipo de turno" - -#: includes/view/Shifts_view.php:7 -#, php-format -msgid "created at %s by %s" -msgstr "criado em %s por %s" - -#: includes/view/Shifts_view.php:10 -#, php-format -msgid "edited at %s by %s" -msgstr "editado em %s por %s" - -#: includes/view/Shifts_view.php:52 -msgid "This shift collides with one of your shifts." -msgstr "Esse turno colide com um dos seus outros turnos." - -#: includes/view/Shifts_view.php:53 -msgid "You are signed up for this shift." -msgstr "Você foi designado para esse turno." - -#: includes/view/Shifts_view.php:82 includes/view/User_view.php:368 -msgid "Location" -msgstr "Local" - -#: includes/view/UserAngelTypes_view.php:6 -#, php-format -msgid "Do you really want to add supporter rights for %s to %s?" -msgstr "Você realmente quer dar permissão de apoiador de %s para %s?" - -#: includes/view/UserAngelTypes_view.php:6 -#, php-format -msgid "Do you really want to remove supporter rights for %s from %s?" -msgstr "Você realmente quer remover a permissão de apoiador de %s para %s?" - -#: includes/view/UserAngelTypes_view.php:17 -#, php-format -msgid "Do you really want to deny all users for %s?" -msgstr "Você realmente quer negar todos os usuários para %s?" - -#: includes/view/UserAngelTypes_view.php:28 -#, php-format -msgid "Do you really want to confirm all users for %s?" -msgstr "Você realmente quer confirmar todos os usuários para %s?" - -#: includes/view/UserAngelTypes_view.php:39 -#, php-format -msgid "Do you really want to confirm %s for %s?" -msgstr "Você realmente quer confirmar %s para %s?" - -#: includes/view/UserAngelTypes_view.php:50 -#, php-format -msgid "Do you really want to delete %s from %s?" -msgstr "Você realmente quer apagar %s de %s?" - -#: includes/view/UserAngelTypes_view.php:71 -msgid "User" -msgstr "Usuário" - -#: includes/view/UserAngelTypes_view.php:80 -#, php-format -msgid "Do you really want to add %s to %s?" -msgstr "Você realmente quer adicionar %s em %s?" - -#: includes/view/UserAngelTypes_view.php:83 -msgid "save" -msgstr "salvar" - -#: includes/view/UserDriverLicenses_view.php:17 -msgid "Back to profile" -msgstr "Voltar para o perfil" - -#: includes/view/UserDriverLicenses_view.php:21 -msgid "Privacy" -msgstr "Privacidade" - -#: includes/view/UserDriverLicenses_view.php:21 -msgid "" -"Your driving license information is only visible for supporters and admins." -msgstr "" -"Os dados da sua carteira de motorista são apenas visíveis para os apoiadores " -"e os admins." - -#: includes/view/UserDriverLicenses_view.php:22 -msgid "I am willing to drive a car for the event" -msgstr "Eu desejo dirigir carros para o evento" - -#: includes/view/UserDriverLicenses_view.php:25 -msgid "" -"I have my own car with me and am willing to use it for the event (You'll get " -"reimbursed for fuel)" -msgstr "" -"Eu tenho meu próprio carro e estou disposto a usá-lo no evento\n" -"(Você terá o combustível reembolsado)" - -#: includes/view/UserDriverLicenses_view.php:26 -msgid "Driver license" -msgstr "Carteira de motorista" - -#: includes/view/UserDriverLicenses_view.php:28 -msgid "Transporter 3,5t" -msgstr "Transportador 3,5t" - -#: includes/view/UserDriverLicenses_view.php:29 -msgid "Truck 7,5t" -msgstr "Caminhão 7,5t" - -#: includes/view/UserDriverLicenses_view.php:30 -msgid "Truck 12,5t" -msgstr "Caminhão 12,5t" - -#: includes/view/User_view.php:7 -msgid "Please select..." -msgstr "Por favor selecione..." - -#: includes/view/User_view.php:38 -msgid "Here you can change your user details." -msgstr "Aqui você pode mudar os seus detalhes de usuário." - -#: includes/view/User_view.php:44 -msgid "Planned date of departure" -msgstr "Data planejada para saída" - -#: includes/view/User_view.php:55 -msgid "Please visit the angeltypes page to manage your angeltypes." -msgstr "" -"Por favor visite a página de tipos de anjo para gerenciar os tipos de anjo" - -#: includes/view/User_view.php:61 -msgid "Here you can change your password." -msgstr "Aqui você pode mudar sua senha." - -#: includes/view/User_view.php:62 -msgid "Old password:" -msgstr "Senha antiga:" - -#: includes/view/User_view.php:63 -msgid "New password:" -msgstr "Nova senha:" - -#: includes/view/User_view.php:64 -msgid "Password confirmation:" -msgstr "Confirmação de senha:" - -#: includes/view/User_view.php:68 -msgid "Here you can choose your color settings:" -msgstr "Aqui você pode selecionar sua configuração de cor:" - -#: includes/view/User_view.php:69 -msgid "Color settings:" -msgstr "Configuração de cor:" - -#: includes/view/User_view.php:73 -msgid "Here you can choose your language:" -msgstr "Aqui você pode selecionar seu idioma:" - -#: includes/view/User_view.php:74 -msgid "Language:" -msgstr "Idioma:" - -#: includes/view/User_view.php:88 -msgid "Registration successful" -msgstr "Registrado com sucesso" - -#: includes/view/User_view.php:126 -msgid "" -"Do you really want to delete the user including all his shifts and every " -"other piece of his data?" -msgstr "" -"Você realmente quer apagar o usuário, incluindo todos seus turnos e todos\n" -"os seus dados?" - -#: includes/view/User_view.php:128 -msgid "Your password" -msgstr "Sua senha" - -#: includes/view/User_view.php:143 -#, php-format -msgid "Angel should receive at least %d vouchers." -msgstr "Um anjo deve receber no mínimo %d vouchers." - -#: includes/view/User_view.php:145 -msgid "Number of vouchers given out" -msgstr "Número de vouchers dados" - -#: includes/view/User_view.php:159 -msgid "m/d/Y h:i a" -msgstr "d/m/Y H:i" - -#: includes/view/User_view.php:178 -msgid "New user" -msgstr "Novo usuário" - -#: includes/view/User_view.php:182 -msgid "Prename" -msgstr "Nome" - -#: includes/view/User_view.php:185 includes/view/User_view.php:350 -msgid "Arrived" -msgstr "Chegou" - -#: includes/view/User_view.php:186 -msgid "Voucher" -msgstr "Voucher" - -#: includes/view/User_view.php:187 -msgid "Freeloads" -msgstr "Freeloads" - -#: includes/view/User_view.php:188 includes/view/User_view.php:352 -msgid "Active" -msgstr "Ativo" - -#: includes/view/User_view.php:190 includes/view/User_view.php:353 -msgid "T-Shirt" -msgstr "Camiseta" - -#: includes/view/User_view.php:192 -msgid "Last login" -msgstr "Último login" - -#: includes/view/User_view.php:209 -msgid "Free" -msgstr "Livre" - -#: includes/view/User_view.php:214 includes/view/User_view.php:216 -#, php-format -msgid "Next shift %c" -msgstr "Próximo turno %c" - -#: includes/view/User_view.php:221 -#, php-format -msgid "Shift starts %c" -msgstr "Turno inicia em %c" - -#: includes/view/User_view.php:223 -#, php-format -msgid "Shift ends %c" -msgstr "Turno termina em %c" - -#: includes/view/User_view.php:280 -msgid "sign off" -msgstr "sair" - -#: includes/view/User_view.php:305 -msgid "Sum:" -msgstr "Soma:" - -#: includes/view/User_view.php:329 -msgid "driving license" -msgstr "carteira de motorista" - -#: includes/view/User_view.php:331 -msgid "Edit vouchers" -msgstr "Editar vouchers" - -#: includes/view/User_view.php:333 -msgid "iCal Export" -msgstr "Exportar iCal" - -#: includes/view/User_view.php:334 -msgid "JSON Export" -msgstr "Exportar em formato JSON" - -#: includes/view/User_view.php:347 -msgid "User state" -msgstr "Status" - -#: includes/view/User_view.php:350 -#, php-format -msgid "Arrived at %s" -msgstr "Chegous às %s" - -#: includes/view/User_view.php:350 -#, php-format -msgid "Not arrived (Planned: %s)" -msgstr "Não chegou (Planejado: %s)" - -#: includes/view/User_view.php:350 -msgid "Not arrived" -msgstr "Não chegou" - -#: includes/view/User_view.php:351 -#, php-format -msgid "Got %s voucher" -msgid_plural "Got %s vouchers" -msgstr[0] "Einen Voucher bekommen" -msgstr[1] "%s Voucher bekommen" - -#: includes/view/User_view.php:351 -msgid "Got no vouchers" -msgstr "Pegou voucher %s" - -#: includes/view/User_view.php:360 -msgid "Rights" -msgstr "Permissões" - -#: includes/view/User_view.php:369 -msgid "Name & workmates" -msgstr "Nome & colegas" - -#: includes/view/User_view.php:370 -msgid "Comment" -msgstr "Comentar" - -#: includes/view/User_view.php:371 -msgid "Action" -msgstr "Ação" - -#: includes/view/User_view.php:373 -#, php-format -msgid "Your night shifts between %d and %d am count twice." -msgstr "Os seus turnos noturnos entre %dh e %dh contam como dois." - -#: includes/view/User_view.php:374 -#, php-format -msgid "" -"Go to the shifts table to sign yourself up for some " -"shifts." -msgstr "" -"Vá para a tabela de turnos para se inscrever em alguns\n" -"turnos." - -#: includes/view/User_view.php:384 -msgid "" -"We will send you an e-mail with a password recovery link. Please use the " -"email address you used for registration." -msgstr "" -"Nós enviaremos um email com um link para recuperação de senha. Por favor use " -"o \n" -"endereço de email informado no seu registro." - -#: includes/view/User_view.php:387 -msgid "Recover" -msgstr "Recuperar" - -#: includes/view/User_view.php:398 -msgid "Please enter a new password." -msgstr "Por favor digite uma nova senha." - -#: includes/view/User_view.php:447 -msgid "" -"Please enter your planned date of departure on your settings page to give us " -"a feeling for teardown capacities." -msgstr "" -"Por favor digite sua data planejada de saída na sua página de configurações " -"para\n" -"termos uma noção da nossa capacidade de desmontagem." - -#: includes/view/User_view.php:457 -#, php-format -msgid "" -"You freeloaded at least %s shifts. Shift signup is locked. Please go to " -"heavens desk to be unlocked again." -msgstr "" -"Você deixou de participar de pelo menos %s dos turnos. O registro em turnos " -"está suspenso.\n" -"Por favor vá até a mesa do paraíso para ser desbloqueado novamente." - -#: includes/view/User_view.php:468 -msgid "" -"You are not marked as arrived. Please go to heaven's desk, get your angel " -"badge and/or tell them that you arrived already." -msgstr "" -"Sua chegada não foi marcada. Por favor vá até a mesa do paraíso, pegue sua " -"credencial\n" -"de anjo e/ou informe que você já chegou." - -#: includes/view/User_view.php:478 -msgid "You need to specify a tshirt size in your settings!" -msgstr "Você precisa especificar o tamanho de camiseta nas suas configurações!" - -#: includes/view/User_view.php:488 -msgid "" -"You need to specify a DECT phone number in your settings! If you don't have " -"a DECT phone, just enter \"-\"." -msgstr "" -"Você precisa especificar um número DECT de telefone nas suas configuracões!\n" -"Se você não tem um telefone DECT, apenas digite \\-\\." - -#: public/index.php:155 -msgid "No Access" -msgstr "Sem acesso" - -#: public/index.php:156 -msgid "" -"You don't have permission to view this page. You probably have to sign in or " -"register in order to gain access!" -msgstr "" -"Você não tem permissão para ver essa página. Você provavelmente terá que " -"fazer login ou se registrar para ganhar acesso!" - -#~ msgid "Registration is disabled." -#~ msgstr "Registros estão desabilitados." - -#~ msgid "Please enter your planned date of arrival." -#~ msgstr "Por favor digite seu horario planificado de chagada " - -#~ msgid "Password could not be updated." -#~ msgstr "Nao foi possivel atualizar a senha" - -#~ msgid "We got no information about the event right now." -#~ msgstr "Nao tem info sobre o evento agora" - -#~ msgid "from %s to %s" -#~ msgstr "desde %s ate %s" - -#~ msgid "Please enter your planned date of departure." -#~ msgstr "Por favor pone seu horario planificado de ida" - -#~ msgid "Please select a user." -#~ msgstr "Seleciona um usuario" - -#~ msgid "Unable to load user." -#~ msgstr "Nao foi possivel carregar o usuario" - -#~ msgid "Entries" -#~ msgstr "Entradas" - -#~ msgid "Use new style if possible" -#~ msgstr "Usa umo estilo novo se possivel" - -#~ msgid "Coordinator" -#~ msgstr "Coordinador" - -#~ msgid "Coordinators" -#~ msgstr "Coordinadores" - -#~ msgid " vouchers." -#~ msgstr " vouchers." - -#~ msgid "" -#~ "This is a automatically calculated MINIMUM value, you can of course give " -#~ "out more if appropriate!" -#~ msgstr "" -#~ "Esso e' calucula automaticamente o valor MINIMO, voce pode claramente " -#~ "mudar isso com umo mais appropriado! " - -#~ msgid "You have been signed off from the shift." -#~ msgstr "Voce se desconnecto do seu turno" - -#~ msgid "planned departure" -#~ msgstr "saida planejada" - -#~ msgid "Tasks" -#~ msgstr "tarefas" - -#~ msgid "User didnt got vouchers." -#~ msgstr "O usuario nao tem vouchers." - -#~ msgid "Remove vouchers" -#~ msgstr "Apaga voucher" - -#~ msgid "" -#~ "This shift is running now or ended already. Please contact a dispatcher " -#~ "to join the shift." -#~ msgstr "" -#~ "Esse turno esta ativo agora o ja acabou. Por favor contata o coordinador " -#~ "para partecipar nesse turno" - -#~ msgid "" -#~ "You already subscribed to shift in the same timeslot. Please contact a " -#~ "dispatcher to join the shift." -#~ msgstr "" -#~ "Voce ja se registrou al turno no mesmo timeslot. Por favor contata o " -#~ "coordinador para partecipar a esse turno." - -#~ msgid "" -#~ "Hello %s, here you can change your personal settings i.e. password, color " -#~ "settings etc." -#~ msgstr "" -#~ "Oi %s, aqui pode mudar as tuas configuraçeos pessoal (i.e. senha, " -#~ "cor, ...)" - -#~ msgid "Name/Description:" -#~ msgstr "Nome/Descriçao:" - -#~ msgid "Timeslot" -#~ msgstr "Timeslot" - -#~ msgid "The first wants to join %s." -#~ msgstr "O primeiro que quer partecipar %s" - -#~ msgid "Groups" -#~ msgstr "Grupos" - -#~ msgid "ICQ" -#~ msgstr "ICQ" - -#~ msgid "You are not confirmed for this angel type." -#~ msgstr "Voce nao ta confirmado por esse tipo de anjo." - -#~ msgid "Exports" -#~ msgstr "Esporta" - -#~ msgid "Add new angeltype" -#~ msgstr "Adicione um novo tipo de anjo" - -#~ msgid "Language" -#~ msgstr "Idioma" - -#~ msgid "You have %s new message." -#~ msgid_plural "You have %s new messages." -#~ msgstr[0] "Voce tem %s novo message" -#~ msgstr[1] "" - -#~ msgid "" -#~ "These are your shifts.
Please try to appear 15 minutes before " -#~ "your shift begins!
You can remove yourself from a shift up to %d " -#~ "hours before it starts." -#~ msgstr "" -#~ "Esses som teu turnos.
Por favor tenta chegar 15 minudos antes " -#~ "que seu turno comença!
Voce pode se tirar desse turno ate %d horas " -#~ "antes dele començar." - -#~ msgid "Page:" -#~ msgstr "Pagina" - -#~ msgid "Message:" -#~ msgstr "Messagem:" - -#~ msgid "Wakeup" -#~ msgstr "Wakeup" - -#~ msgid "Incomplete call, missing wake-up ID." -#~ msgstr "chamada incompleta, falta o wake-up ID" - -#~ msgid "Wake-up call deleted." -#~ msgstr "wake-up chamada apagada" - -#~ msgid "No wake-up found." -#~ msgstr "Nao encontrei nenhum wake-up" - -#~ msgid "" -#~ "Hello %s, here you can register for a wake-up call. Simply say when and " -#~ "where the angel should come to wake you." -#~ msgstr "" -#~ "Oi %s, aqui voce pode se registrar para a chamada wake-up. So tem que " -#~ "dizer quando e onde os anjos tem que chegar para te acordar (wake up)" - -#~ msgid "All ordered wake-up calls, next first." -#~ msgstr "Todos os ordem wake-up, o proximo primeiro" - -#~ msgid "Place" -#~ msgstr "Lugar" - -#~ msgid "Notes" -#~ msgstr "Notas" - -#~ msgid "Schedule a new wake-up here:" -#~ msgstr "Planifica um novo wake-up aqui:" - -#~ msgid "User %s confirmed as %s." -#~ msgstr "Usuario %s confirmado como %s" - -#~ msgid "" -#~ "Resistance is futile! Your biological and physical parameters will be " -#~ "added to our collectiv! Assimilating angel:" -#~ msgstr "" -#~ "Resistir e' inútil! Seus parâmetros biológico e físico serão adicionados " -#~ "dentro do nosso coletivo! Anjo assimilado: " - -#~ msgid "Confirmed all." -#~ msgstr "Tudo confirmado." - -#~ msgid "asdf" -#~ msgstr "asdf" diff --git a/resources/views/errors/405.twig b/resources/views/errors/405.twig new file mode 100644 index 00000000..cbbb94ea --- /dev/null +++ b/resources/views/errors/405.twig @@ -0,0 +1,5 @@ +{% extends "errors/default.twig" %} + +{% block title %}{{ __("405: Method not allowed") }}{% endblock %} + +{% block content_headline_text %}{{ __("405: Method not allowed") }}{% endblock %} diff --git a/resources/views/macros/base.twig b/resources/views/macros/base.twig new file mode 100644 index 00000000..94287bd4 --- /dev/null +++ b/resources/views/macros/base.twig @@ -0,0 +1,11 @@ +{% macro angel() %} + +{% endmacro %} + +{% macro glyphicon(glyph) %} + +{% endmacro %} + +{% macro alert(message, type) %} +
{{ message }}
+{% endmacro %} diff --git a/resources/views/pages/login.twig b/resources/views/pages/login.twig new file mode 100644 index 00000000..75b98aa1 --- /dev/null +++ b/resources/views/pages/login.twig @@ -0,0 +1,104 @@ +{% extends "layouts/app.twig" %} +{% import 'macros/base.twig' as m %} + +{% block title %}{{ __('Login') }}{% endblock %} + +{% block content %} +
+
+
+

{{ __('Welcome to the %s!', [config('name') ~ m.angel() ~ (config('app_name')|upper) ])|raw }}

+
+
+ +
+ {% for name,date in { + (__('Buildup starts')): config('buildup_start'), + (__('Event starts')): config('event_start'), + (__('Event ends')): config('event_end'), + (__('Teardown ends')): config('teardown_end') + } if date %} + {% if date > date() %} + + {% endif %} + {% endfor %} +
+ +
+
+
+ +
{{ m.angel }} {{ __('Login') }}
+ +
+ {% for message in errors|default([]) %} + {{ m.alert(__(message), 'danger') }} + {% endfor %} + +
+ {{ csrf() }} +
+ +
+ +
+ +
+ +
+
+ + + {% if show_password_recovery|default(false) %} + + {{ __('I forgot my password') }} + + {% endif %} +
+
+ +
+
+ + + +
+
+
+ +
+
+

{{ __('Register') }}

+ {% if has_permission_to('register') and config('registration_enabled') %} +

{{ __('Please sign up, if you want to help us!') }}

+ + {% else %} + {{ m.alert(__('Registration is disabled.'), 'danger') }} + {% endif %} +
+ +
+

{{ __('What can I do?') }}

+

{{ __('Please read about the jobs you can do to help us.') }}

+ +
+
+ +
+{% endblock %} diff --git a/src/Controllers/AuthController.php b/src/Controllers/AuthController.php index cdaee167..e5fc40e3 100644 --- a/src/Controllers/AuthController.php +++ b/src/Controllers/AuthController.php @@ -2,8 +2,12 @@ namespace Engelsystem\Controllers; +use Carbon\Carbon; +use Engelsystem\Helpers\Authenticator; +use Engelsystem\Http\Request; use Engelsystem\Http\Response; use Engelsystem\Http\UrlGeneratorInterface; +use Engelsystem\Models\User\User; use Symfony\Component\HttpFoundation\Session\SessionInterface; class AuthController extends BaseController @@ -17,20 +21,100 @@ class AuthController extends BaseController /** @var UrlGeneratorInterface */ protected $url; - public function __construct(Response $response, SessionInterface $session, UrlGeneratorInterface $url) - { + /** @var Authenticator */ + protected $auth; + + /** @var array */ + protected $permissions = [ + 'login' => 'login', + 'postLogin' => 'login', + ]; + + /** + * @param Response $response + * @param SessionInterface $session + * @param UrlGeneratorInterface $url + * @param Authenticator $auth + */ + public function __construct( + Response $response, + SessionInterface $session, + UrlGeneratorInterface $url, + Authenticator $auth + ) { $this->response = $response; $this->session = $session; $this->url = $url; + $this->auth = $auth; + } + + /** + * @return Response + */ + public function login() + { + return $this->response->withView('pages/login'); + } + + /** + * Posted login form + * + * @param Request $request + * @return Response + */ + public function postLogin(Request $request): Response + { + $return = $this->authenticateUser($request->get('login', ''), $request->get('password', '')); + if (!$return instanceof User) { + return $this->response->withView( + 'pages/login', + ['errors' => [$return], 'show_password_recovery' => true] + ); + } + + $user = $return; + + $this->session->invalidate(); + $this->session->set('user_id', $user->id); + $this->session->set('locale', $user->settings->language); + + $user->last_login_at = new Carbon(); + $user->save(['touch' => false]); + + return $this->response->redirectTo('news'); } /** * @return Response */ - public function logout() + public function logout(): Response { $this->session->invalidate(); return $this->response->redirectTo($this->url->to('/')); } + + /** + * Verify the user and password + * + * @param $login + * @param $password + * @return User|string + */ + protected function authenticateUser(string $login, string $password) + { + if (!$login) { + return 'auth.no-nickname'; + } + + if (!$password) { + return 'auth.no-password'; + } + + if (!$user = $this->auth->authenticate($login, $password)) { + return 'auth.not-found'; + } + + return $user; + } } diff --git a/src/Helpers/Authenticator.php b/src/Helpers/Authenticator.php index 61d07980..db33339b 100644 --- a/src/Helpers/Authenticator.php +++ b/src/Helpers/Authenticator.php @@ -25,6 +25,9 @@ class Authenticator /** @var string[] */ protected $permissions; + /** @var int */ + protected $passwordAlgorithm = PASSWORD_DEFAULT; + /** * @param ServerRequestInterface $request * @param Session $session @@ -48,7 +51,7 @@ class Authenticator return $this->user; } - $userId = $this->session->get('uid'); + $userId = $this->session->get('user_id'); if (!$userId) { return null; } @@ -104,17 +107,15 @@ class Authenticator $abilities = (array)$abilities; if (empty($this->permissions)) { - $userId = $this->user ? $this->user->id : $this->session->get('uid'); + $user = $this->user(); - if ($userId) { - if ($user = $this->user()) { - $this->permissions = $this->getPermissionsByUser($user); + if ($user) { + $this->permissions = $this->getPermissionsByUser($user); - $user->last_login_at = new Carbon(); - $user->save(); - } else { - $this->session->remove('uid'); - } + $user->last_login_at = new Carbon(); + $user->save(); + } elseif ($this->session->get('user_id')) { + $this->session->remove('user_id'); } if (empty($this->permissions)) { @@ -131,6 +132,78 @@ class Authenticator return true; } + /** + * @param string $login + * @param string $password + * @return User|null + */ + public function authenticate(string $login, string $password) + { + /** @var User $user */ + $user = $this->userRepository->whereName($login)->first(); + if (!$user) { + $user = $this->userRepository->whereEmail($login)->first(); + } + + if (!$user) { + return null; + } + + if (!$this->verifyPassword($user, $password)) { + return null; + } + + return $user; + } + + /** + * @param User $user + * @param string $password + * @return bool + */ + public function verifyPassword(User $user, string $password) + { + $algorithm = $this->passwordAlgorithm; + + if (!password_verify($password, $user->password)) { + return false; + } + + if (password_needs_rehash($user->password, $algorithm)) { + $this->setPassword($user, $password); + } + + return true; + } + + /** + * @param UserRepository $user + * @param string $password + */ + public function setPassword(User $user, string $password) + { + $algorithm = $this->passwordAlgorithm; + + $user->password = password_hash($password, $algorithm); + $user->save(); + } + + /** + * @return int + */ + public function getPasswordAlgorithm() + { + return $this->passwordAlgorithm; + } + + /** + * @param int $passwordAlgorithm + */ + public function setPasswordAlgorithm(int $passwordAlgorithm) + { + $this->passwordAlgorithm = $passwordAlgorithm; + } + /** * @param User $user * @return array diff --git a/src/Helpers/AuthenticatorServiceProvider.php b/src/Helpers/AuthenticatorServiceProvider.php index 715a592f..f06e635d 100644 --- a/src/Helpers/AuthenticatorServiceProvider.php +++ b/src/Helpers/AuthenticatorServiceProvider.php @@ -2,14 +2,18 @@ namespace Engelsystem\Helpers; +use Engelsystem\Config\Config; use Engelsystem\Container\ServiceProvider; class AuthenticatorServiceProvider extends ServiceProvider { public function register() { + /** @var Config $config */ + $config = $this->app->get('config'); /** @var Authenticator $authenticator */ $authenticator = $this->app->make(Authenticator::class); + $authenticator->setPasswordAlgorithm($config->get('password_algorithm')); $this->app->instance(Authenticator::class, $authenticator); $this->app->instance('authenticator', $authenticator); diff --git a/src/Middleware/LegacyMiddleware.php b/src/Middleware/LegacyMiddleware.php index af2c6a70..7adcc88d 100644 --- a/src/Middleware/LegacyMiddleware.php +++ b/src/Middleware/LegacyMiddleware.php @@ -19,7 +19,6 @@ class LegacyMiddleware implements MiddlewareInterface 'angeltypes', 'atom', 'ical', - 'login', 'public_dashboard', 'rooms', 'shift_entries', @@ -175,10 +174,6 @@ class LegacyMiddleware implements MiddlewareInterface $title = settings_title(); $content = user_settings(); return [$title, $content]; - case 'login': - $title = login_title(); - $content = guest_login(); - return [$title, $content]; case 'register': $title = register_title(); $content = guest_register(); diff --git a/tests/Unit/Controllers/AuthControllerTest.php b/tests/Unit/Controllers/AuthControllerTest.php index c5349cda..0fad3b6d 100644 --- a/tests/Unit/Controllers/AuthControllerTest.php +++ b/tests/Unit/Controllers/AuthControllerTest.php @@ -3,40 +3,154 @@ namespace Engelsystem\Test\Unit\Controllers; use Engelsystem\Controllers\AuthController; +use Engelsystem\Helpers\Authenticator; +use Engelsystem\Http\Request; use Engelsystem\Http\Response; use Engelsystem\Http\UrlGeneratorInterface; +use Engelsystem\Models\User\Settings; +use Engelsystem\Models\User\User; +use Engelsystem\Test\Unit\HasDatabase; use PHPUnit\Framework\MockObject\MockObject; use PHPUnit\Framework\TestCase; use Symfony\Component\HttpFoundation\Session\SessionInterface; class AuthControllerTest extends TestCase { + use HasDatabase; + /** * @covers \Engelsystem\Controllers\AuthController::__construct - * @covers \Engelsystem\Controllers\AuthController::logout + * @covers \Engelsystem\Controllers\AuthController::login */ - public function testLogout() + public function testLogin() { /** @var Response|MockObject $response */ $response = $this->createMock(Response::class); /** @var SessionInterface|MockObject $session */ - $session = $this->getMockForAbstractClass(SessionInterface::class); /** @var UrlGeneratorInterface|MockObject $url */ - $url = $this->getMockForAbstractClass(UrlGeneratorInterface::class); + /** @var Authenticator|MockObject $auth */ + list(, $session, $url, $auth) = $this->getMocks(); - $session->expects($this->once()) - ->method('invalidate'); + $response->expects($this->once()) + ->method('withView') + ->with('pages/login') + ->willReturn($response); + + $controller = new AuthController($response, $session, $url, $auth); + $controller->login(); + } + + /** + * @covers \Engelsystem\Controllers\AuthController::postLogin + * @covers \Engelsystem\Controllers\AuthController::authenticateUser + */ + public function testPostLogin() + { + $this->initDatabase(); + $request = new Request(); + /** @var Response|MockObject $response */ + $response = $this->createMock(Response::class); + /** @var SessionInterface|MockObject $session */ + /** @var UrlGeneratorInterface|MockObject $url */ + /** @var Authenticator|MockObject $auth */ + list(, $session, $url, $auth) = $this->getMocks(); + + $user = new User([ + 'name' => 'foo', + 'password' => '', + 'email' => '', + 'api_key' => '', + 'last_login_at' => null, + ]); + $user->forceFill(['id' => 42,]); + $user->save(); + + $settings = new Settings(['language' => 'de_DE', 'theme' => '']); + $settings->user() + ->associate($user) + ->save(); + + $auth->expects($this->exactly(2)) + ->method('authenticate') + ->with('foo', 'bar') + ->willReturnOnConsecutiveCalls(null, $user); + + $response->expects($this->exactly(3)) + ->method('withView') + ->withConsecutive( + ['pages/login', ['errors' => ['auth.no-nickname'], 'show_password_recovery' => true]], + ['pages/login', ['errors' => ['auth.no-password'], 'show_password_recovery' => true]], + ['pages/login', ['errors' => ['auth.not-found'], 'show_password_recovery' => true]]) + ->willReturn($response); $response->expects($this->once()) ->method('redirectTo') - ->with('https://foo.bar/'); + ->with('news') + ->willReturn($response); + + $session->expects($this->once()) + ->method('invalidate'); + + $session->expects($this->exactly(2)) + ->method('set') + ->withConsecutive( + ['user_id', 42], + ['locale', 'de_DE'] + ); + + $controller = new AuthController($response, $session, $url, $auth); + $controller->postLogin($request); + + $request = new Request(['login' => 'foo']); + $controller->postLogin($request); + + $request = new Request(['login' => 'foo', 'password' => 'bar']); + // No user found + $controller->postLogin($request); + // Authenticated user + $controller->postLogin($request); + + $this->assertNotNull($user->last_login_at); + } + + /** + * @covers \Engelsystem\Controllers\AuthController::logout + */ + public function testLogout() + { + /** @var Response $response */ + /** @var SessionInterface|MockObject $session */ + /** @var UrlGeneratorInterface|MockObject $url */ + /** @var Authenticator|MockObject $auth */ + list($response, $session, $url, $auth) = $this->getMocks(); + + $session->expects($this->once()) + ->method('invalidate'); $url->expects($this->once()) ->method('to') ->with('/') ->willReturn('https://foo.bar/'); - $controller = new AuthController($response, $session, $url); - $controller->logout(); + $controller = new AuthController($response, $session, $url, $auth); + $return = $controller->logout(); + + $this->assertEquals(['https://foo.bar/'], $return->getHeader('location')); + } + + /** + * @return array + */ + protected function getMocks() + { + $response = new Response(); + /** @var SessionInterface|MockObject $session */ + $session = $this->getMockForAbstractClass(SessionInterface::class); + /** @var UrlGeneratorInterface|MockObject $url */ + $url = $this->getMockForAbstractClass(UrlGeneratorInterface::class); + /** @var Authenticator|MockObject $auth */ + $auth = $this->createMock(Authenticator::class); + + return [$response, $session, $url, $auth]; } } diff --git a/tests/Unit/Controllers/Stub/ControllerImplementation.php b/tests/Unit/Controllers/Stub/ControllerImplementation.php index 01d9f250..a8bf538c 100644 --- a/tests/Unit/Controllers/Stub/ControllerImplementation.php +++ b/tests/Unit/Controllers/Stub/ControllerImplementation.php @@ -14,12 +14,4 @@ class ControllerImplementation extends BaseController 'dolor', ], ]; - - /** - * @param array $permissions - */ - public function setPermissions(array $permissions) - { - $this->permissions = $permissions; - } } diff --git a/tests/Unit/Helpers/AuthenticatorServiceProviderTest.php b/tests/Unit/Helpers/AuthenticatorServiceProviderTest.php index b1767ebc..ab9b23ec 100644 --- a/tests/Unit/Helpers/AuthenticatorServiceProviderTest.php +++ b/tests/Unit/Helpers/AuthenticatorServiceProviderTest.php @@ -3,6 +3,7 @@ namespace Engelsystem\Test\Unit\Helpers; use Engelsystem\Application; +use Engelsystem\Config\Config; use Engelsystem\Helpers\Authenticator; use Engelsystem\Helpers\AuthenticatorServiceProvider; use Engelsystem\Http\Request; @@ -19,11 +20,19 @@ class AuthenticatorServiceProviderTest extends ServiceProviderTest $app = new Application(); $app->bind(ServerRequestInterface::class, Request::class); + $config = new Config(); + $config->set('password_algorithm', PASSWORD_DEFAULT); + $app->instance('config', $config); + $serviceProvider = new AuthenticatorServiceProvider($app); $serviceProvider->register(); $this->assertInstanceOf(Authenticator::class, $app->get(Authenticator::class)); $this->assertInstanceOf(Authenticator::class, $app->get('authenticator')); $this->assertInstanceOf(Authenticator::class, $app->get('auth')); + + /** @var Authenticator $auth */ + $auth = $app->get(Authenticator::class); + $this->assertEquals(PASSWORD_DEFAULT, $auth->getPasswordAlgorithm()); } } diff --git a/tests/Unit/Helpers/AuthenticatorTest.php b/tests/Unit/Helpers/AuthenticatorTest.php index 400278f2..83dc72ad 100644 --- a/tests/Unit/Helpers/AuthenticatorTest.php +++ b/tests/Unit/Helpers/AuthenticatorTest.php @@ -4,6 +4,7 @@ namespace Engelsystem\Test\Unit\Helpers; use Engelsystem\Helpers\Authenticator; use Engelsystem\Models\User\User; +use Engelsystem\Test\Unit\HasDatabase; use Engelsystem\Test\Unit\Helpers\Stub\UserModelImplementation; use Engelsystem\Test\Unit\ServiceProviderTest; use PHPUnit\Framework\MockObject\MockObject; @@ -12,6 +13,8 @@ use Symfony\Component\HttpFoundation\Session\Session; class AuthenticatorTest extends ServiceProviderTest { + use HasDatabase; + /** * @covers \Engelsystem\Helpers\Authenticator::__construct( * @covers \Engelsystem\Helpers\Authenticator::user @@ -29,7 +32,7 @@ class AuthenticatorTest extends ServiceProviderTest $session->expects($this->exactly(3)) ->method('get') - ->with('uid') + ->with('user_id') ->willReturnOnConsecutiveCalls( null, 42, @@ -114,16 +117,13 @@ class AuthenticatorTest extends ServiceProviderTest /** @var User|MockObject $user */ $user = $this->createMock(User::class); - $user->expects($this->once()) - ->method('save'); - - $session->expects($this->exactly(2)) + $session->expects($this->once()) ->method('get') - ->with('uid') + ->with('user_id') ->willReturn(42); $session->expects($this->once()) ->method('remove') - ->with('uid'); + ->with('user_id'); /** @var Authenticator|MockObject $auth */ $auth = $this->getMockBuilder(Authenticator::class) @@ -151,4 +151,115 @@ class AuthenticatorTest extends ServiceProviderTest // Permissions cached $this->assertTrue($auth->can('bar')); } + + /** + * @covers \Engelsystem\Helpers\Authenticator::authenticate + */ + public function testAuthenticate() + { + $this->initDatabase(); + + /** @var ServerRequestInterface|MockObject $request */ + $request = $this->getMockForAbstractClass(ServerRequestInterface::class); + /** @var Session|MockObject $session */ + $session = $this->createMock(Session::class); + $userRepository = new User(); + + (new User([ + 'name' => 'lorem', + 'password' => password_hash('testing', PASSWORD_DEFAULT), + 'email' => 'lorem@foo.bar', + 'api_key' => '', + ]))->save(); + (new User([ + 'name' => 'ipsum', + 'password' => '', + 'email' => 'ipsum@foo.bar', + 'api_key' => '', + ]))->save(); + + $auth = new Authenticator($request, $session, $userRepository); + $this->assertNull($auth->authenticate('not-existing', 'foo')); + $this->assertNull($auth->authenticate('ipsum', 'wrong-password')); + $this->assertInstanceOf(User::class, $auth->authenticate('lorem', 'testing')); + $this->assertInstanceOf(User::class, $auth->authenticate('lorem@foo.bar', 'testing')); + } + + /** + * @covers \Engelsystem\Helpers\Authenticator::verifyPassword + */ + public function testVerifyPassword() + { + $this->initDatabase(); + $password = password_hash('testing', PASSWORD_ARGON2I); + $user = new User([ + 'name' => 'lorem', + 'password' => $password, + 'email' => 'lorem@foo.bar', + 'api_key' => '', + ]); + $user->save(); + + /** @var Authenticator|MockObject $auth */ + $auth = $this->getMockBuilder(Authenticator::class) + ->disableOriginalConstructor() + ->setMethods(['setPassword']) + ->getMock(); + + $auth->expects($this->once()) + ->method('setPassword') + ->with($user, 'testing'); + $auth->setPasswordAlgorithm(PASSWORD_BCRYPT); + + $this->assertFalse($auth->verifyPassword($user, 'randomStuff')); + $this->assertTrue($auth->verifyPassword($user, 'testing')); + } + + /** + * @covers \Engelsystem\Helpers\Authenticator::setPassword + */ + public function testSetPassword() + { + $this->initDatabase(); + $user = new User([ + 'name' => 'ipsum', + 'password' => '', + 'email' => 'ipsum@foo.bar', + 'api_key' => '', + ]); + $user->save(); + + $auth = $this->getAuthenticator(); + $auth->setPasswordAlgorithm(PASSWORD_ARGON2I); + + $auth->setPassword($user, 'FooBar'); + $this->assertTrue($user->isClean()); + + $this->assertTrue(password_verify('FooBar', $user->password)); + $this->assertFalse(password_needs_rehash($user->password, PASSWORD_ARGON2I)); + } + + /** + * @covers \Engelsystem\Helpers\Authenticator::setPasswordAlgorithm + * @covers \Engelsystem\Helpers\Authenticator::getPasswordAlgorithm + */ + public function testPasswordAlgorithm() + { + $auth = $this->getAuthenticator(); + + $auth->setPasswordAlgorithm(PASSWORD_ARGON2I); + $this->assertEquals(PASSWORD_ARGON2I, $auth->getPasswordAlgorithm()); + } + + /** + * @return Authenticator + */ + protected function getAuthenticator() + { + return new class extends Authenticator + { + /** @noinspection PhpMissingParentConstructorInspection */ + public function __construct() { } + }; + } } diff --git a/tests/Unit/Http/UrlGeneratorServiceProviderTest.php b/tests/Unit/Http/UrlGeneratorServiceProviderTest.php index 61bf3e7c..6d18f160 100644 --- a/tests/Unit/Http/UrlGeneratorServiceProviderTest.php +++ b/tests/Unit/Http/UrlGeneratorServiceProviderTest.php @@ -19,7 +19,7 @@ class UrlGeneratorServiceProviderTest extends ServiceProviderTest $urlGenerator = $this->getMockBuilder(UrlGenerator::class) ->getMock(); - $app = $this->getApp(); + $app = $this->getApp(['make', 'instance', 'bind']); $this->setExpects($app, 'make', [UrlGenerator::class], $urlGenerator); $app->expects($this->exactly(2)) @@ -29,6 +29,9 @@ class UrlGeneratorServiceProviderTest extends ServiceProviderTest ['http.urlGenerator', $urlGenerator], [UrlGeneratorInterface::class, $urlGenerator] ); + $app->expects($this->once()) + ->method('bind') + ->with(UrlGeneratorInterface::class, UrlGenerator::class); $serviceProvider = new UrlGeneratorServiceProvider($app); $serviceProvider->register(); -- cgit v1.2.3