1
0
mirror of https://github.com/LaCasemate/fab-manager.git synced 2025-01-17 06:52:27 +01:00

Merge branch 'siteswapjuggler-master' into dev

also: align translations and mark missings
This commit is contained in:
Sylvain 2017-11-20 11:42:01 +01:00
commit 12c6cd2a70
24 changed files with 271 additions and 86 deletions

View File

@ -173,16 +173,24 @@ Application.Filters.filter "eventsReservationsFilter", [ ->
filteredElements = []
angular.forEach elements, (element)->
element.start_at = element.availability.start_at if angular.isUndefined(element.start_at)
element.end_at = element.availability.end_at if angular.isUndefined(element.end_at)
switch selectedScope
when "future"
if new Date(element.start_at) > new Date
if new Date(element.end_at) >= new Date
filteredElements.push(element)
when "future_asc"
if new Date(element.end_at) >= new Date
filteredElements.push(element)
when "passed"
if new Date(element.start_at) <= new Date
if new Date(element.end_at) <= new Date
filteredElements.push(element)
else
return []
filteredElements
switch selectedScope
when "future_asc"
filteredElements.reverse()
else
filteredElements
else
elements
]

View File

@ -3,6 +3,7 @@
<option value="" translate>{{ 'all_events' }}</option>
<option value="passed" translate>{{ 'passed_events' }}</option>
<option value="future" translate>{{ 'events_to_come' }}</option>
<option value="future_asc" translate>{{ 'events_to_come_asc' }}</option>
</select>
</div>
@ -11,25 +12,49 @@
<tr>
<th style="width:30%" translate>{{ 'title' }}</th>
<th style="width:30%" translate>{{ 'dates' }}</th>
<th style="width:40%"></th>
<th style="width:10%" translate>{{ 'booking' }}</th>
<th style="width:30%"></th>
</tr>
</thead>
<tbody>
<tr ng-repeat="event in events">
<td>
<tr height="80px" ng-repeat="event in events">
<td style="vertical-align:middle">
<a ui-sref="app.public.events_show({id: event.id})">{{ event.title }} </a>
</td>
<td>
<span> {{ 'from_DATE' | translate:{DATE:(event.start_date | amDateFormat:'LL')} }} <span class="text-sm font-thin" translate>{{ 'to_date' }}</span> {{event.end_date | amDateFormat:'LL'}}</span>
<br/>
<span ng-if="event.all_day == 'true'" translate>{{ 'all_day' }}</span>
<span ng-if="event.all_day == 'false'">
{{ 'from_TIME' | translate:{TIME:(event.start_date | amDateFormat:'LT')} }}
<span class="text-sm font-thin" translate>{{ 'to_time' }}</span>
{{event.end_date | amDateFormat:'LT'}}
</span>
<td style="vertical-align:middle">
<!--One day event-->
<span ng-if="(event.start_date | amDateFormat:'LL')==(event.end_date | amDateFormat:'LL')">
{{ 'on_DATE' | translate:{DATE:(event.start_date | amDateFormat:'LL')} }}
<span ng-if="event.all_day == 'false'">
{{ 'from_TIME' | translate:{TIME:(event.start_date | amDateFormat:'LT')} }}
<span class="text-sm font-thin" translate>{{ 'to_time' }}</span>
{{event.end_date | amDateFormat:'LT'}}
</span>
</span>
<!--Multiple days event-->
<span ng-if="(event.start_date | amDateFormat:'LL')!=(event.end_date | amDateFormat:'LL')">
{{'from_DATE' | translate:{DATE:(event.start_date | amDateFormat:'LL')} }}
{{'to_date' | translate}} {{event.end_date | amDateFormat:'LL'}}
<br ng-if="event.all_day == 'false'"/>
<span ng-if="event.all_day == 'false'">
{{ 'from_TIME' | translate:{TIME:(event.start_date | amDateFormat:'LT')} }}
<span class="text-sm font-thin" translate>{{ 'to_time' }}</span>
{{event.end_date | amDateFormat:'LT'}}
</span>
</span>
</td>
<td>
<td style="vertical-align:middle">
<span class="ng-binding" ng-if="event.nb_total_places > 0">{{ event.nb_total_places - event.nb_free_places }} / {{ event.nb_total_places }}</span>
<span class="badge font-sbold cancelled" ng-if="event.nb_total_places == -1" translate>{{ 'cancelled' }}</span>
<span class="badge font-sbold" ng-if="!event.nb_total_places" translate>{{ 'free_entry' }}</span>
</td>
<td style="vertical-align:middle">
<div class="buttons">
<a class="btn btn-default" ui-sref="app.admin.event_reservations({id: event.id})">
<i class="fa fa-bookmark"></i> {{ 'view_reservations' | translate }}
@ -47,4 +72,4 @@
<div class="col-lg-12 text-center">
<a class="btn btn-warning" ng-click="loadMoreEvents()" ng-if="paginateActive" translate>{{ 'load_the_next_events' }}</a>
</div>
</div>
</div>

View File

@ -78,7 +78,10 @@
</div> <!-- ./panel-body -->
<div class="panel-footer no-padder">
<input type="submit" ng-value="submitName" class="r-b btn-valid btn btn-warning btn-block p-lg btn-lg text-u-c" ng-disabled="eventForm.$invalid || event.category_id === null"/>
<input type="submit"
ng-value="submitName"
class="r-b btn-valid btn btn-warning btn-block p-lg btn-lg text-u-c"
ng-disabled="eventForm.$invalid || event.category_id === null"/>
</div>
</section>
@ -194,14 +197,14 @@
<label translate>{{ 'start_time' }}</label>
<div>
<input type="hidden" name="event[start_time]" ng-value="event.start_time">
<uib-timepicker ng-model="event.start_time" hour-step="1" minute-step="1" show-meridian="ismeridian"></uib-timepicker>
<uib-timepicker ng-model="event.start_time" mousewheel="false" hour-step="1" minute-step="1" show-meridian="ismeridian"></uib-timepicker>
</div>
</div>
<div class="col-xs-6">
<label translate>{{ 'end_time' }}</label>
<div>
<input type="hidden" name="event[end_time]" ng-value="event.end_time">
<uib-timepicker ng-model="event.end_time" hour-step="1" minute-step="1" show-meridian="ismeridian"></uib-timepicker>
<uib-timepicker ng-model="event.end_time" mousewheel="false" hour-step="1" minute-step="1" show-meridian="ismeridian"></uib-timepicker>
</div>
</div>
</div>

View File

@ -55,13 +55,22 @@
<h3 class="m-n" ng-show="onSingleDay(event)">{{event.start_date | amDateFormat:'L'}}</h3>
<h3 class="m-n" ng-hide="onSingleDay(event)">{{event.start_date | amDateFormat:'L'}} <span class="text-sm font-thin" translate> {{ 'to_date' }} </span> {{event.end_date | amDateFormat:'L'}}</h3>
<h6 class="m-n" ng-if="!event.amount" translate>{{ 'free_admission' }}</h6>
<h6 class="m-n" ng-if="event.amount">{{ 'full_price_' | translate }} {{event.amount | currency}} <span ng-repeat="price in event.prices">/ {{ price.category.name }} {{price.amount | currency}}</span></h6>
<div>
<span class="text-black-light text-xs" ng-if="event.event_themes[0]"><i class="fa fa-tags" aria-hidden="true"></i> {{event.event_themes[0].name}}</span>
<span class="text-black-light text-xs" ng-if="event.age_range"><i class="fa fa-users" aria-hidden="true"></i> {{event.age_range.name}}</span>
</div>
<div>
<span class="text-black-light text-xs" ng-if="event.nb_free_places > 0">{{event.nb_free_places}} {{ 'still_available' | translate }}</span>
<span class="text-black-light text-xs" ng-if="event.nb_total_places > 0 && event.nb_free_places <= 0" translate>{{ 'sold_out' }}</span>
<span class="text-black-light text-xs" ng-if="event.nb_total_places == -1" translate>{{ 'cancelled' }}</span>
<span class="text-black-light text-xs" ng-if="!event.nb_total_places" translate>{{ 'free_entry' }}</span>
</div>
</div>
<!-- Event Image -->
<div class="pull-right crop-155">
<img class="pull-right" ng-src="{{event.event_image_small}}" title="{{event.title}}" ng-if="event.event_image">

View File

@ -98,7 +98,8 @@
<div class="text-sm m-b" ng-if="event.nb_total_places">
<div ng-if="event.nb_free_places > 0">{{ 'tickets_still_availables' | translate }} <span class="font-sbold">{{event.nb_free_places}}</span></div>
<div ng-if="event.nb_free_places == 0"><span class="badge font-sbold" translate>{{ 'sold_out' }}</span></div>
<div ng-if="event.nb_total_places > 0 && event.nb_free_places <= 0"><span class="badge font-sbold" translate>{{ 'sold_out' }}</span></div>
<div ng-if="event.nb_total_places == -1"><span class="badge font-sbold" translate>{{ 'cancelled' }}</span></div>
</div>
<div class="text-sm m-b" ng-if="!event.nb_total_places">
<div><span class="badge font-sbold" translate>{{ 'free_entry' }}</span></div>

View File

@ -116,18 +116,26 @@
<span ng-if="event.all_day == 'false'">{{ 'from_time_to_time' | translate:{START:(event.start_date | amDateFormat:'LT'), END:(event.end_date | amDateFormat:'LT')} }}</span>
</h6>
</div>
<div class="col-sm-12 row m-b">
<i class="fa fa-bookmark red col-xs-1 padder-icon"></i>
<h6 class="m-n col-xs-10">
<span ng-if="!event.nb_total_places" translate>{{ 'free_entry' }}</span>
<span ng-if="event.nb_total_places && event.amount == 0" translate>{{ 'free_admission' }}</span>
<span ng-if="event.amount > 0">{{event.amount | currency}} {{ 'full_price' | translate }}</span>
<div ng-if="event.nb_free_places == 0"><span class="badge font-sbold bg-red" translate>{{ 'event_full' }}</span></div>
</h6>
</div>
</div>
<div class="row">
<div class="col-sm-6 row m-b-sm">
<i class="fa fa-user red col-xs-3 padder-icon"></i>
<h6 class="m-n col-xs-9 ">
<span ng-if="event.nb_free_places > 0">{{ 'still_available' | translate }} {{event.nb_free_places}}</span>
<span ng-if="!event.nb_total_places" translate>{{ 'free_entry' }}</span>
<span ng-if="event.nb_total_places > 0 && event.nb_free_places <= 0" translate>{{ 'event_full' }}</span>
</h6>
</div>
<div class="col-sm-6 row m-b-sm">
<i class="fa fa-bookmark red col-xs-3 padder-icon"></i>
<h6 class="m-n col-xs-9">
<span ng-if="event.amount == 0" translate>{{ 'free_admission' }}</span>
<span ng-if="event.amount > 0">{{ 'full_price' | translate }} {{event.amount | currency}}</span>
</h6>
</div>
</div>
<div class="text-center clearfix ">
<div class="btn btn-lg btn-warning bg-white b-2x rounded m-t-sm m-b-sm upper text-sm width-70" ui-sref="app.public.events_show({id: event.id})" ><span translate>{{ 'consult' }}</span></div>
</div>

View File

@ -32,8 +32,10 @@ class API::EventsController < API::ApiController
def upcoming
limit = params[:limit]
@events = Event.includes(:event_image, :event_files, :availability, :category)
.where('events.nb_total_places != -1 OR events.nb_total_places IS NULL')
.where('availabilities.start_at >= ?', Time.now)
.order('availabilities.start_at ASC').references(:availabilities).limit(limit)
.order('availabilities.start_at ASC').references(:availabilities)
.limit(limit)
end
def show

View File

@ -3,7 +3,18 @@ class OpenAPI::V1::EventsController < OpenAPI::V1::BaseController
expose_doc
def index
@events = Event.order(created_at: :desc)
if upcoming
@events = Event.includes(:event_image, :event_files, :availability, :category)
.where('availabilities.end_at >= ?', Time.now)
.order('availabilities.start_at ASC').references(:availabilities)
else
@events = Event.includes(:event_image, :event_files, :availability, :category).order(created_at: :desc)
end
if params[:id].present?
@events = @events.where(id: params[:id])
end
if params[:page].present?
@events = @events.page(params[:page]).per(per_page)
@ -15,4 +26,7 @@ class OpenAPI::V1::EventsController < OpenAPI::V1::BaseController
def per_page
params[:per_page] || 20
end
def upcoming
params[:upcoming] || false
end
end

View File

@ -11,6 +11,8 @@ class OpenAPI::V1::EventsDoc < OpenAPI::V1::BaseDoc
doc_for :index do
api :GET, "/#{API_VERSION}/events", "Events index"
param_group :pagination
param :id, [Integer, Array], optional: true, desc: "Scope the request to one or various events."
param :upcoming, [FalseClass, TrueClass], optional: true, desc: "Scope for the upcoming events."
description "Events index. Order by *created_at* desc."
example <<-EOS
# /open_api/v1/events?page=1&per_page=2

View File

@ -1,6 +1,13 @@
json.events @events do |event|
json.partial! 'open_api/v1/events/event', event: event
json.extract! event, :nb_total_places, :nb_free_places
json.start_at event.availability.start_at
json.end_at event.availability.end_at
json.event_image do
json.large_url root_url.chomp('/') + event.event_image.attachment.large.url
json.medium_url root_url.chomp('/') + event.event_image.attachment.medium.url
json.small_url root_url.chomp('/') + event.event_image.attachment.small.url
end
json.prices do
json.normal do
json.name I18n.t('app.public.home.full_price')

View File

@ -111,8 +111,15 @@ en:
all_events: "All events"
passed_events: "Passed events"
events_to_come: "Events to come"
from_DATE: "From {{DATE}}" # angular interpolation
from_TIME: "From {{TIME}}" # angular interpolation
events_to_come_asc: "Events to come | chronological order"
on_DATE: "on {{DATE}}" # angular interpolation
from_DATE: "from {{DATE}}" # angular interpolation
from_TIME: "from {{TIME}}" # angular interpolation
booking: "Booking"
sold_out: "Sold out"
cancelled: "Cancelled"
free_entry: "Free entry"
free_admission: "Free admission"
view_reservations: "View reservations"
categories: "Categories"
add_a_category: "Add a category"

View File

@ -59,6 +59,8 @@ es:
unlocking_failed: "Ocurrió un error. El desbloqueo de la ranura ha fallado"
reservations_locked: "La reserva está bloqueada"
unlockable_because_reservations: "No se puede bloquear la reserva en esta ranura porque existen algunas reservas no canceladas."
delete_slot: "Delete this slot" # translation_missing
do_you_really_want_to_delete_this_slot: "Do you really want to delete this slot?"
project_elements:
# management of the projects' components
@ -71,6 +73,9 @@ es:
trainings:
# track and monitor the trainings
training: "Formación"
add_a_new_training: "Add a new training" # translation_missing
associated_machines: "Associated machines" # translation_missing
number_of_tickets: "Number of tickets" # translation_missing
year_NUMBER: "Año {{NUMBER}}" # angular interpolation
month_of_NAME: "Mes of {{NAME}}" # angular interpolation
NUMBER_reservation: "{NUMBER} {NUMBER, plural, one{reservation} other{reservations}}" # messageFormat interpolation
@ -87,11 +92,16 @@ es:
training_successfully_deleted: "Entrenamiento eliminado correctamente."
unable_to_delete_the_training_because_some_users_alredy_booked_it: "No se puede eliminar el entrenamiento porque algunos usuarios ya lo han reservado."
do_you_really_want_to_delete_this_training: "¿De verdad quieres eliminar este entrenamiento?"
status_enabled: "Enabled" # translation_missing
status_disabled: "Disabled" # translation_missing
status_all: "All" # translation_missing
trainings_new:
# create a new training
beware_when_creating_a_training_its_reservation_prices_are_initialized_to_zero: "Tenga cuidado, al crear una formación, sus precios de reserva se inicializan en cero."
dont_forget_to_change_them_before_creating_slots_for_this_training: "No olvides cambiarlos antes de crear espacios para esta formación."
trainings_new:
add_a_new_training: "Add a new training" # translation_missing
beware_when_creating_a_training_its_reservation_prices_are_initialized_to_zero: "Tenga cuidado, al crear una formación, sus precios de reserva se inicializan en cero."
dont_forget_to_change_them_before_creating_slots_for_this_training: "No olvides cambiarlos antes de crear espacios para esta formación."
events:
# events tracking and management
@ -101,8 +111,15 @@ es:
all_events: "Todos los eventos"
passed_events: "Eventos pasados"
events_to_come: "Eventos por venir"
from_DATE: "Desde {{DATE}}" # angular interpolation
from_TIME: "Desde {{TIME}}" # angular interpolation
events_to_come_asc: "Events to come | chronological order"
on_DATE: "on {{DATE}}" # angular interpolation # translation_missing
from_DATE: "Desde {{DATE}}" # angular interpolation # translation_missing
from_TIME: "Desde {{TIME}}" # angular interpolation # translation_missing
booking: "Booking" # translation_missing
sold_out: "Sold out" # translation_missing
cancelled: "Cancelled" # translation_missing
free_entry: "Free entry" # translation_missing
free_admission: "Free admission" # translation_missing
view_reservations: "Ver reservas"
categories: "Categorías"
add_a_category: "Añadir una categoría"
@ -194,6 +211,7 @@ es:
error_a_credit_linking_this_machine_with_that_subscription_already_exists: "Error: un crédito que vincula esta máquina con esa suscripción ya existe."
changes_have_been_successfully_saved: "Los cambios se han guardado correctamented."
credit_was_successfully_saved: "El crédito se ha guardado correctamente."
error_creating_credit: "Unable to create credit, an error occurred" # translation_missing
do_you_really_want_to_delete_this_subscription_plan: "¿Realmente desea eliminar este plan de suscripción?"
subscription_plan_was_successfully_deleted: "Plan de suscripción eliminado correctamente."
unable_to_delete_the_specified_subscription_an_error_occurred: "No se pudo eliminar la suscripción especificada, se produjo un error.."
@ -228,6 +246,9 @@ es:
add_a_space_credit: "Añadir un crédito de espacio"
space: "Espacio"
error_a_credit_linking_this_space_with_that_subscription_already_exists: "Error: un crédito que vincula este espacio con esa suscripción ya existe."
status_enabled: "Enabled" # translation_missing
status_disabled: "Disabled" # translation_missing
status_all: "All" # translation_missing
coupons_new:
# ajouter un code promotionnel
@ -359,7 +380,7 @@ es:
an_error_occurred_while_activating_the_invoicing_code: "Se ha producido un error al activar el código de facturación."
order_number_successfully_saved: "Número de pedido guardado correctamente."
an_error_occurred_while_saving_the_order_number: "Se ha producido un error al guardar el número de orden."
VAT_rate_successfully_saved: "VAT rate successfully saved."
VAT_rate_successfully_saved: "VAT rate successfully saved." # translation_missing
an_error_occurred_while_saving_the_VAT_rate: "La tasa de IVA se ha guardado correctamente."
VAT_successfully_activated: "IVA activado correctamente."
VAT_successfully_disabled: "IVA desactivado correctamente."
@ -391,14 +412,8 @@ es:
this_may_take_a_while_please_wait: "Advertencia: esto puede tomar un tiempo, por favor, tenga paciencia."
administrator_successfully_deleted: "Administrador eliminado correctamente."
unable_to_delete_the_administrator: "No se puede eliminar el administrador."
add_a_group: "Añadir un grupo"
group_name: "Nombre del grupo"
changes_successfully_saved: "Cambios guardados correctamente."
an_error_occurred_while_saving_changes: "Se ha producido un error al guardar los cambios."
new_group_successfully_saved: "Nuevo grupo guardado correctamente."
an_error_occurred_when_saving_the_new_group: "Se ha producido un error al guardar el nuevo grupo."
group_successfully_deleted: "Grupo eliminado correctamente."
unable_to_delete_group_because_some_users_and_or_groups_are_still_linked_to_it: "No se puede eliminar el grupo porque algunos usuarios y / o grupos todavía están vinculados a él."
add_a_tag: "Añadir una etiqueta"
tag_name: "Nombre de la etiqueta"
new_tag_successfully_saved: "Nueva etiqueta guardada correctamente."
@ -418,6 +433,23 @@ es:
an_error_occurred_unable_to_delete_the_specified_provider: "Se ha producido un error: no se puede eliminar el proveedor especificado."
local_database: "Base de datos local"
o_auth2: "OAuth 2.0"
group_form:
add_a_group: "Añadir un grupo"
group_name: "Nombre del grupo"
disable: "Disable" # translation_missing
enable: "Enable" # translation_missing
changes_successfully_saved: "Changes successfully saved." # translation_missing
an_error_occurred_while_saving_changes: "An error occurred when saving changes." # translation_missing
new_group_successfully_saved: "Nuevo grupo guardado correctamente."
an_error_occurred_when_saving_the_new_group: "Se ha producido un error al guardar el nuevo grupo."
group_successfully_deleted: "Grupo eliminado correctamente."
unable_to_delete_group_because_some_users_and_or_groups_are_still_linked_to_it: "No se puede eliminar el grupo porque algunos usuarios y / o grupos todavía están vinculados a él."
group_successfully_enabled_disabled: "Group successfully {STATUS, select, true{disabled} other{enabled}}." # messageFormat interpolation # translation_missing
unable_to_enable_disable_group: "Unable to {STATUS, select, true{disable} other{enable}} group." # messageFormat interpolation # translation_missing
unable_to_disable_group_with_users: "Unable to disable group because it still contains {USERS} active {USERS, plural, =1{user} other{users}}." # messageFormat interpolation # translation_missing
status_enabled: "Enabled" # translation_missing
status_disabled: "Disabled" # translation_missing
status_all: "All" # translation_missing
members_new:
# add a member
@ -440,8 +472,8 @@ es:
events: "Eventos"
next_events: "Próximos eventos"
no_upcoming_events: "No hay próximos eventos"
NUMBER_full_price_tickets_reserved: "{NUMBER, plural, =0{} one{1 full price ticket reserved} other{{NUMBER} full price tickets reserved}}" # messageFormat interpolation
NUMBER_NAME_tickets_reserved: "{NUMBER, plural, =0{} one{1 {NAME} ticket reserved} other{{NUMBER} {NAME} tickets reserved}}" # messageFormat interpolation
NUMBER_full_price_tickets_reserved: "{NUMBER, plural, =0{} one{1 full price ticket reserved} other{{NUMBER} full price tickets reserved}}" # messageFormat interpolation # translation_missing
NUMBER_NAME_tickets_reserved: "{NUMBER, plural, =0{} one{1 {NAME} ticket reserved} other{{NUMBER} {NAME} tickets reserved}}" # messageFormat interpolation # translation_missing
passed_events: "Eventos pasados"
invoices: "Facturas"
invoice_#: "Factura #"
@ -449,7 +481,7 @@ es:
expiration_date: "Fecha de caducidad"
you_intentionally_decide_to_extend_the_user_s_subscription_by_offering_him_free_days: "Usted intencionalmente decide extender la suscripción del usuario ofreciéndole días libres."
you_intentionally_decide_to_extend_the_user_s_subscription_by_charging_him_again_for_his_current_subscription: "Usted intencionalmente decide extender la suscripción del usuario al cobrarle de nuevo por su suscripción actual."
until_(expiration_date): "Until (expiration date):"
until_(expiration_date): "Until (expiration date):" # translation_missing
you_successfully_changed_the_expiration_date_of_the_user_s_subscription: "Ha cambiado correctamente la fecha de caducidad de la suscripción del usuario"
a_problem_occurred_while_saving_the_date: "Se ha producido un problema al guardar la fecha."
new_subscription: "Nueva suscripción"
@ -546,8 +578,8 @@ es:
customize_information_messages: "Personalizar mensajes de información"
message_of_the_machine_booking_page: "Mensaje de la página de reserva de la máquina:"
type_the_message_content: "Escriba el contenido del mensaje"
warning_message_of_the_training_booking_page: "Warning message of the training booking page:"
information_message_of_the_training_reservation_page: "Information message of the training reservation page:"
warning_message_of_the_training_booking_page: "Warning message of the training booking page:" # translation_missing
information_message_of_the_training_reservation_page: "Information message of the training reservation page:" # translation_missing
message_of_the_subscriptions_page: "Mensaje de advertencia de la página de reserva de formación:"
message_of_the_events_page: "Mensaje de la página de eventos:"
message_of_the_spaces_page: "Mensaje de la página de espacios:"
@ -574,7 +606,7 @@ es:
news_of_the_home_page: "Noticias de la página principal:"
type_your_news_here: "Escriba sus noticias aquí"
leave_it_empty_to_not_bring_up_any_news_on_the_home_page: "Déjelo vacío para no abrir ninguna noticia en la página principal"
twitter_stream: "Twitter Stream:"
twitter_stream: "Twitter Stream:" # translation_missing
name_of_the_twitter_account: "Nombre de la cuenta de Twitter"
title_of_the_about_page: "Título de la página Acerca de"
shift_enter_to_force_carriage_return: "MAYÚS + ENTRAR para forzar el retorno de carro"
@ -610,7 +642,7 @@ es:
main_color: "Color principal"
secondary_color: "color secundario"
home_blogpost: "Resumen de la página de inicio"
twitter_name: "Twitter feed name"
twitter_name: "Twitter feed name" # translation_missing
about_title: "Título de la página \"Acerca de\""
about_body: "Contenido de la página \"Acerca de\""
about_contacts: "Página contactos\"Acerca de\""
@ -645,12 +677,12 @@ es:
# create a new space
space_new:
add_a_new_space: "Añadir un espacio nuevo"
watch_out_when_creating_a_new_space_its_prices_are_initialized_at_0_for_all_subscriptions: ¡Cuidado! Al crear un nuevo espacio, sus precios se inicializan en 0 para todas las suscripciones."
watch_out_when_creating_a_new_space_its_prices_are_initialized_at_0_for_all_subscriptions: "¡Cuidado! Al crear un nuevo espacio, sus precios se inicializan en 0 para todas las suscripciones."
consider_changing_its_prices_before_creating_any_reservation_slot: "Considere cambiar sus precios antes de crear cualquier espacio de reserva."
add_this_space: "Añadir este espacio"
space_edit:
# modify an exiting space
space_edit:
edit_the_space_NAME: "Edit the space: {{NAME}}" # angular interpolation
edit_the_space_NAME: "Edit the space: {{NAME}}" # angular interpolation # translation_missing
validate_the_changes: "Validar los cambios"

View File

@ -111,8 +111,15 @@ fr:
all_events: "Tous les évènements"
passed_events: "Les évènements déjà passés"
events_to_come: "Les évènements à venir"
from_DATE: "Du {{DATE}}" # angular interpolation
from_TIME: "De {{TIME}}" # angular interpolation
events_to_come_asc: "Les évènements à venir | ordre chronologique"
on_DATE: "le {{DATE}}" # angular interpolation
from_DATE: "du {{DATE}}" # angular interpolation
from_TIME: "de {{TIME}}" # angular interpolation
booking: "Réservations"
sold_out: "Complet"
cancelled: "Annulé"
free_entry: "Entrée libre"
free_admission: "Entrée gratuite"
view_reservations: "Consulter les réservations"
categories: "Catégories"
add_a_category: "Ajouter une catégorie"

View File

@ -111,8 +111,15 @@ pt:
all_events: "Todos eventos"
passed_events: "Eventos anteriores"
events_to_come: "Eventos futuros"
events_to_come_asc: "Events to come | chronological order" #translation_missing
on_DATE: "on {{DATE}}" # angular interpolation #translation_missing
from_DATE: "Em {{DATE}}" # angular interpolation
from_TIME: "Ás {{TIME}}" # angular interpolation
booking: "Booking" #translation_missing
sold_out: "Sold out" #translation_missing
cancelled: "Cancelled" #translation_missing
free_entry: "Free entry" #translation_missing
free_admission: "Free admission" #translation_missing
view_reservations: "Ver reservas"
categories: "Categorias"
add_a_category: "Adicionar categoria"

View File

@ -134,6 +134,7 @@ en:
free_admission: "Free admission"
full_price: "Full price"
event_full: "Event full"
still_available: "Available place(s)"
projects_list:
# projects gallery
@ -233,6 +234,11 @@ en:
the_fablab_s_events: "The Fablab's events"
all_categories: "All categories"
for_all: "For all"
sold_out: "Sold Out"
cancelled: "Cancelled"
free_admission: "Free admission"
still_available: "available place(s)"
free_entry: "Free entry"
events_show:
# details and booking of an event
@ -245,6 +251,7 @@ en:
tickets_still_availables: "Tickets still available:"
sold_out: "Sold out."
free_entry: "Free entry"
cancelled: "Cancelled"
ticket: "{NUMBER, plural, one{ticket} other{tickets}}" # messageFormat interpolation
make_a_gift_of_this_reservation: "Make a gift of this reservation"
you_can_find_your_reservation_s_details_on_your_: "You can find your reservation's details on your"
@ -288,4 +295,4 @@ en:
the_space_cant_be_deleted_because_it_is_already_reserved_by_some_users: "Unable to delete this space, because it is already reserved by some users."
characteristics: "Characteristics"
files_to_download: "Files to download"
projects_using_the_space: "Projects using the space"
projects_using_the_space: "Projects using the space"

View File

@ -134,6 +134,7 @@ es:
free_admission: "Admisión gratuita"
full_price: "Precio final"
event_full: "Evento lleno"
still_available: "Available place(s)" #translation_missing
projects_list:
# projects gallery
@ -175,9 +176,14 @@ es:
machines_list:
# list of machines
the_fablab_s_machines: "Las máquinas del FabLab"
add_a_machine: "Añadir una máquina"
_or_the_: " o el "
machines_list:
the_fablab_s_machines: "Las máquinas del FabLab"
add_a_machine: "Añadir una máquina"
book: "Book" #translation_missing
_or_the_: " o el "
status_enabled: "Enabled" #translation_missing
status_disabled: "Disabled" #translation_missing
status_all: "All" #translation_missing
machines_show:
# details of a machine
@ -228,6 +234,11 @@ es:
the_fablab_s_events: "Los eventos del FabLab"
all_categories: "Todas las categorías"
for_all: "Para todo"
sold_out: "Sold Out" #translation_missing
cancelled: "Cancelled" #translation_missing
free_admission: "Free admission" #translation_missing
still_available: "available place(s)" #translation_missing
free_entry: "Free entry" #translation_missing
events_show:
# details and booking of an event
@ -240,6 +251,7 @@ es:
tickets_still_availables: "Entradas disponibles:"
sold_out: "Entradas vendidas."
free_entry: "Entrada gratuita"
cancelled: "Cancelled" #translation_missing
ticket: "{NUMBER, plural, one{ticket} other{tickets}}" # messageFormat interpolation
make_a_gift_of_this_reservation: "Regalar esta reserva"
you_can_find_your_reservation_s_details_on_your_: "Puede encontrar los detalles de su reserva en"
@ -247,6 +259,10 @@ es:
book: "Reservar"
change_the_reservation: "Cambiar la reserva"
you_can_shift_this_reservation_on_the_following_slots: "Puede cambiar la reserva en los siguientes campos:"
confirmation_required: "Confirmation required" #translation_missing
do_you_really_want_to_delete_this_event: "Do you really want to delete this event?" #translation_missing
event_successfully_deleted: "Event successfully deleted" #translation_missing
unable_to_delete_the_event_because_some_users_alredy_booked_it: "Unable to delete this event, it may have been already reserved by some users." #translation_missing
calendar:
# public calendar
@ -261,8 +277,13 @@ es:
spaces_list:
# list of spaces
the_spaces: "Espacios"
add_a_space: "Añadir espacios"
spaces_list:
the_spaces: "Espacios"
add_a_space: "Añadir espacios"
status_enabled: "Enabled" #translation_missing
status_disabled: "Disabled" #translation_missing
status_all: "All" #translation_missing
book: "Book" #translation_missing
space_show:
# display the details of a space

View File

@ -127,13 +127,14 @@ fr:
# résumé des prochains évènements sur la page d'acceuil
fablab_s_next_events: "Les prochains évènements du Fab Lab"
every_events: "Tous les évènements"
from_date_to_date: "Du {{START}} au {{END}}" # angular interpolation
on_the_date: "Le {{DATE}}" # angular interpolation
from_time_to_time: "De {{START}} à {{END}}" # angular interpolation
free_entry: "Entrée libre"
from_date_to_date: "du {{START}} au {{END}}" # angular interpolation
on_the_date: "le {{DATE}}" # angular interpolation
from_time_to_time: "de {{START}} à {{END}}" # angular interpolation
free_entry: "Accès libre"
free_admission: "Entrée gratuite"
full_price: "Plein tarif"
full_price: "Plein tarif : "
event_full: "Événement complet"
still_available: "Place(s) disponible(s) :"
projects_list:
# galerie des projets
@ -235,6 +236,11 @@ fr:
the_fablab_s_events: "Les évènements du Fab Lab"
all_categories: "Toutes les catégories"
for_all: "Tout public"
sold_out: "Complet"
cancelled: "Annulé"
free_admission: "Gratuit"
still_available: "place(s) disponible(s)"
free_entry: "Accès libre"
events_show:
# détails d'un événement et réservation
@ -245,8 +251,9 @@ fr:
ending: "Fin :"
opening_hours: "Horaires :"
tickets_still_availables: "Places encore disponibles :"
sold_out: "Événement complet."
free_entry: "Entrée libre"
sold_out: "Événement complet"
free_entry: "Accès libre"
cancelled: "Annulé"
ticket: "{NUMBER, plural, =0{place} one{place} other{places}}" # messageFormat interpolation
make_a_gift_of_this_reservation: "Offrir cette réservation"
you_can_find_your_reservation_s_details_on_your_: "Vous pouvez retrouver le détail de votre réservation sur votre"

View File

@ -127,13 +127,14 @@ pt:
# next events summary on the home page
fablab_s_next_events: "Próximos eventos do FabLab"
every_events: "Todos Eventos"
from_date_to_date: "De {{START}} até {{END}}" # angular interpolation
on_the_date: "Em {{DATE}}" # angular interpolation
from_date_to_date: "De {{START}} até {{END}}" # angular interpolation
on_the_date: "Em {{DATE}}" # angular interpolation
from_time_to_time: "Das {{START}} até {{END}}" # angular interpolation
free_entry: "Entrada franca"
free_admission: "Admissão grátis"
full_price: "Valor inteira"
event_full: "Evento lotado"
still_available: "Available place(s)" # traduction_missing
projects_list:
# projects gallery
@ -233,6 +234,11 @@ pt:
the_fablab_s_events: "Eventos do Fablab"
all_categories: "Todas categorias"
for_all: "Para todos"
sold_out: "Esgotado."
cancelled: "Cancelled" #translation_missing
free_admission: "Admissão grátis"
still_available: "available place(s)" #translation_missing
free_entry: "Entrada franca"
events_show:
# details and booking of an event
@ -245,6 +251,7 @@ pt:
tickets_still_availables: "Tickets ainda disponíveis:"
sold_out: "Esgotado."
free_entry: "Entrada franca"
cancelled: "Cancelled" #translation_missing
ticket: "{NUMBER, plural, one{ticket} other{tickets}}" # messageFormat interpolation
make_a_gift_of_this_reservation: "Doe esta reserva"
you_can_find_your_reservation_s_details_on_your_: "Você pode encontrar detalhes da sua reserva em seu"
@ -288,4 +295,4 @@ pt:
the_space_cant_be_deleted_because_it_is_already_reserved_by_some_users: "Impossível remover este espaço, pois ele já foi reservado por alguns usuários."
characteristics: "Características"
files_to_download: "Arquivo para download"
projects_using_the_space: "Projetos usando espaço"
projects_using_the_space: "Projetos usando espaço"

View File

@ -458,4 +458,4 @@ en:
cancellation_failed: "Cancellation failed."
confirm_payment_of_html: "{ROLE, select, admin{Payment on site} other{Pay}}: {AMOUNT}" # messageFormat interpolation (context: confirm my payment of $20.00)
a_problem_occured_during_the_payment_process_please_try_again_later: "A problem occurred during the payment process. Please try again later."
none: "None"
none: "None"

View File

@ -230,14 +230,24 @@ es:
as_part_of_a_partner_subscription_some_notifications_may_be_sent_to_this_user: "Como parte de la suscripción, algunas notificaciones podrían ser enviadas a este usuario."
new_partner: "Nuevo compañero"
email_address_is_required: "Se requiere un mail."
disabled: "Disable subscription" #translation_missing
disable_plan_will_not_unsubscribe_users: "Beware: disabling this plan won't unsubscribe users having active subscriptions with it." #translation_missing
trainings:
# training edition form
add_a_new_training: "Añadir curso"
validate_your_training: "Validar curso"
associated_machines: "Máquinas asociadas"
number_of_tickets: "Número de entradas"
public_page: "Hacer curso público"
trainings_form:
name: "Name" #translation_missing
name_is_required: "Name is required." #translation_missing
illustration: "Illustration" #translation_missing
add_an_illustration: "Add an illustration" #translation_missing
description: "Description" #translation_missing
description_is_required: "Description is required." #translation_missing
add_a_new_training: "Añadir curso"
validate_your_training: "Validar curso"
associated_machines: "Máquinas asociadas"
number_of_tickets: "Número de entradas"
public_page: "Hacer curso público"
disable_training: "Disable the training" #translation_missing
user_admin:
# partial form to edit/create an user (admin view)
@ -377,8 +387,8 @@ es:
coupon_input:
# coupon (input zone for users)
i_have_a_coupon: "I have a coupon!"
code_: "Code:"
i_have_a_coupon: "I have a coupon!" #translation_missing
code_: "Code:" #translation_missing
the_coupon_has_been_applied_you_get_PERCENT_discount: "Se ha aplicado el cupón {{PERCENT}}% de descuento." # angular interpolation
the_coupon_has_been_applied_you_get_AMOUNT_CURRENCY: "Se ha aplicado el cupón. Recibirá un descuento de {{AMOUNT}} {{CURRENCY}}." # angular interpolation
unable_to_apply_the_coupon_because_disabled: "No se ha podido canjear el cupón: código inhabilitado."
@ -405,6 +415,7 @@ es:
add_an_attachment: "Añadir adjunto"
default_places: "Máximo de entradas predeterminado"
default_places_is_required: "Se requiere un máximo de entradas predeterminado."
disable_space: "Disable space" #translation_missing
cart:
# module de panier d'achat de réservations

View File

@ -55,7 +55,7 @@ fr:
add_an_event: "Ajouter un évènement"
load_the_next_events: "Charger les évènements suivants ..."
no_passed_events: "Aucun évènement passé"
dates: "Dates :"
dates: "Dates"
thank_you_your_payment_has_been_successfully_registered: "Merci. Votre paiement a bien été pris en compte !"
surname: "Nom"
first_name: "Prénom"

View File

@ -360,4 +360,4 @@ en:
group:
# name of the user's group for administrators
admins: 'Administrators'
admins: 'Administrators'

View File

@ -248,7 +248,7 @@ es:
enabled: "A partir de ahora, todos los pagos realizados por este usuario en la recepción llevarán a la emisión de facturación. "
notify_user_wallet_is_credited:
subject: ""
subject: "" #translation_missing
body:
wallet_credit_html: "Se han ingresado %{AMOUNT} por el administrador."

View File

@ -360,4 +360,4 @@ pt:
group:
# name of the user's group for administrators
admins: 'Administradores'
admins: 'Administradores'