mirror of
https://github.com/LaCasemate/fab-manager.git
synced 2025-01-22 11:52:21 +01:00
Merge branch 'dev' into staging
This commit is contained in:
commit
7b9c6b0ae7
17
CHANGELOG.md
17
CHANGELOG.md
@ -1,5 +1,22 @@
|
||||
# Changelog Fab-manager
|
||||
|
||||
## Next release
|
||||
|
||||
- Fix a bug: if there is a reservation with a deleted user, it is not possible to delete the event
|
||||
- Support for SAML in Single-Sign-On authentication providers
|
||||
|
||||
## v6.3.10 2024 January 19
|
||||
|
||||
- Fix a bug: unable to update event recurrence
|
||||
- updates translations
|
||||
|
||||
## v6.3.9 2024 January 8
|
||||
|
||||
- translation files added for Swedish
|
||||
- Fix a bug: unable to show extended prices of space
|
||||
- Fix a bug: event number places error in statistic
|
||||
- [TODO DEPLOY] `rails fablab:maintenance:regenerate_statistics[2014,1]`
|
||||
|
||||
## v6.3.8 2023 December 29
|
||||
|
||||
- Fix a bug: unable to build docker image
|
||||
|
3
Gemfile
3
Gemfile
@ -72,6 +72,7 @@ gem 'devise', '>= 4.9'
|
||||
gem 'omniauth', '~> 2.1'
|
||||
gem 'omniauth-oauth2'
|
||||
gem 'omniauth_openid_connect'
|
||||
gem 'omniauth-saml'
|
||||
gem 'omniauth-rails_csrf_protection', '~> 1.0'
|
||||
|
||||
gem 'rolify'
|
||||
@ -153,4 +154,4 @@ gem 'sentry-ruby'
|
||||
gem "reverse_markdown"
|
||||
|
||||
gem "ancestry"
|
||||
gem 'silencer', require: false
|
||||
gem 'silencer', require: false
|
||||
|
@ -292,6 +292,9 @@ GEM
|
||||
omniauth-rails_csrf_protection (1.0.1)
|
||||
actionpack (>= 4.2)
|
||||
omniauth (~> 2.0)
|
||||
omniauth-saml (2.1.0)
|
||||
omniauth (~> 2.0)
|
||||
ruby-saml (~> 1.12)
|
||||
omniauth_openid_connect (0.6.1)
|
||||
omniauth (>= 1.9, < 3)
|
||||
openid_connect (~> 1.1)
|
||||
@ -422,6 +425,9 @@ GEM
|
||||
rubocop (>= 1.7.0, < 2.0)
|
||||
ruby-progressbar (1.10.1)
|
||||
ruby-rc4 (0.1.5)
|
||||
ruby-saml (1.16.0)
|
||||
nokogiri (>= 1.13.10)
|
||||
rexml
|
||||
ruby-vips (2.1.4)
|
||||
ffi (~> 1.12)
|
||||
rubyXL (3.4.25)
|
||||
@ -579,6 +585,7 @@ DEPENDENCIES
|
||||
omniauth (~> 2.1)
|
||||
omniauth-oauth2
|
||||
omniauth-rails_csrf_protection (~> 1.0)
|
||||
omniauth-saml
|
||||
omniauth_openid_connect
|
||||
openlab_ruby
|
||||
overcommit
|
||||
|
@ -105,6 +105,13 @@ class API::AuthProvidersController < API::APIController
|
||||
auth_provider_mappings_attributes: [:id, :local_model, :local_field, :api_field, :api_endpoint, :api_data_type,
|
||||
:_destroy, { transformation: [:type, :format, :true_value, :false_value,
|
||||
{ mapping: %i[from to] }] }])
|
||||
elsif params['auth_provider']['providable_type'] == SamlProvider.name
|
||||
params.require(:auth_provider)
|
||||
.permit(:id, :name, :providable_type,
|
||||
providable_attributes: [:id, :sp_entity_id, :idp_sso_service_url, :profile_url, :idp_cert_fingerprint, :idp_cert],
|
||||
auth_provider_mappings_attributes: [:id, :local_model, :local_field, :api_field, :api_endpoint, :api_data_type,
|
||||
:_destroy, { transformation: [:type, :format, :true_value, :false_value,
|
||||
{ mapping: %i[from to] }] }])
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -2,6 +2,7 @@
|
||||
|
||||
# Handle authentication actions via OmniAuth (used by SSO providers)
|
||||
class Users::OmniauthCallbacksController < Devise::OmniauthCallbacksController
|
||||
skip_before_action :verify_authenticity_token
|
||||
require 'sso_logger'
|
||||
logger = SsoLogger.new
|
||||
|
||||
|
@ -12,6 +12,7 @@ import { TypeMappingModal } from './type-mapping-modal';
|
||||
import { useImmer } from 'use-immer';
|
||||
import { Oauth2DataMappingForm } from './oauth2-data-mapping-form';
|
||||
import { OpenidConnectDataMappingForm } from './openid-connect-data-mapping-form';
|
||||
import { SamlDataMappingForm } from './saml-data-mapping-form';
|
||||
|
||||
export interface DataMappingFormProps<TFieldValues, TContext extends object> {
|
||||
register: UseFormRegister<TFieldValues>,
|
||||
@ -164,6 +165,11 @@ export const DataMappingForm = <TFieldValues extends FieldValues, TContext exten
|
||||
setValue={setValue}
|
||||
formState={formState}
|
||||
currentFormValues={currentFormValues} />}
|
||||
{providerType === 'SamlProvider' && <SamlDataMappingForm register={register}
|
||||
index={index}
|
||||
setValue={setValue}
|
||||
formState={formState}
|
||||
currentFormValues={currentFormValues} />}
|
||||
</div>
|
||||
</div>
|
||||
<div className="actions">
|
||||
|
@ -20,6 +20,7 @@ import { FabButton } from '../base/fab-button';
|
||||
import AuthProviderAPI from '../../api/auth-provider';
|
||||
import { OpenidConnectForm } from './openid-connect-form';
|
||||
import { DatabaseForm } from './database-form';
|
||||
import { SamlForm } from './saml-form';
|
||||
|
||||
declare const Application: IApplication;
|
||||
|
||||
@ -27,7 +28,8 @@ declare const Application: IApplication;
|
||||
const METHODS = {
|
||||
DatabaseProvider: 'local_database',
|
||||
OAuth2Provider: 'oauth2',
|
||||
OpenIdConnectProvider: 'openid_connect'
|
||||
OpenIdConnectProvider: 'openid_connect',
|
||||
SamlProvider: 'saml'
|
||||
};
|
||||
|
||||
interface ProviderFormProps {
|
||||
@ -116,6 +118,7 @@ export const ProviderForm: React.FC<ProviderFormProps> = ({ action, provider, on
|
||||
currentFormValues={output.providable_attributes as OpenIdConnectProvider}
|
||||
formState={formState}
|
||||
setValue={setValue} />}
|
||||
{providableType === 'SamlProvider' && <SamlForm register={register} strategyName={strategyName} formState={formState} />}
|
||||
{providableType && providableType !== 'DatabaseProvider' && <DataMappingForm register={register}
|
||||
control={control}
|
||||
formState={formState}
|
||||
|
@ -0,0 +1,87 @@
|
||||
import { Path, UseFormRegister } from 'react-hook-form';
|
||||
import { FieldValues } from 'react-hook-form/dist/types/fields';
|
||||
import { FormInput } from '../form/form-input';
|
||||
import { HtmlTranslate } from '../base/html-translate';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import { UnpackNestedValue, UseFormSetValue, FormState } from 'react-hook-form/dist/types/form';
|
||||
import { FabButton } from '../base/fab-button';
|
||||
import { FieldPathValue } from 'react-hook-form/dist/types/path';
|
||||
import { AuthenticationProviderMapping } from '../../models/authentication-provider';
|
||||
|
||||
interface SamlDataMappingFormProps<TFieldValues> {
|
||||
register: UseFormRegister<TFieldValues>,
|
||||
setValue: UseFormSetValue<TFieldValues>,
|
||||
currentFormValues: Array<AuthenticationProviderMapping>,
|
||||
index: number,
|
||||
formState: FormState<TFieldValues>
|
||||
}
|
||||
|
||||
/**
|
||||
* Partial form to set the data mapping for an SAML provider.
|
||||
* The data mapping is the way to bind data from the SAML to the Fab-manager's database
|
||||
*/
|
||||
export const SamlDataMappingForm = <TFieldValues extends FieldValues>({ register, setValue, currentFormValues, index, formState }: SamlDataMappingFormProps<TFieldValues>) => {
|
||||
const { t } = useTranslation('admin');
|
||||
|
||||
const standardConfiguration = {
|
||||
'user.uid': { api_field: 'email' },
|
||||
'user.email': { api_field: 'email' },
|
||||
'user.username': { api_field: 'login' },
|
||||
'profile.first_name': { api_field: 'firstName' },
|
||||
'profile.last_name': { api_field: 'lastName' },
|
||||
'profile.phone': { api_field: 'primaryPhone' },
|
||||
'profile.address': { api_field: 'postalAddress' }
|
||||
};
|
||||
|
||||
/**
|
||||
* Set the data mapping according to the standard OpenID Connect specification
|
||||
*/
|
||||
const openIdStandardConfiguration = (): void => {
|
||||
const model = currentFormValues[index]?.local_model;
|
||||
const field = currentFormValues[index]?.local_field;
|
||||
const configuration = standardConfiguration[`${model}.${field}`];
|
||||
if (configuration) {
|
||||
setValue(
|
||||
`auth_provider_mappings_attributes.${index}.api_field` as Path<TFieldValues>,
|
||||
configuration.api_field as UnpackNestedValue<FieldPathValue<TFieldValues, Path<TFieldValues>>>
|
||||
);
|
||||
if (configuration.transformation) {
|
||||
Object.keys(configuration.transformation).forEach((key) => {
|
||||
setValue(
|
||||
`auth_provider_mappings_attributes.${index}.transformation.${key}` as Path<TFieldValues>,
|
||||
configuration.transformation[key] as UnpackNestedValue<FieldPathValue<TFieldValues, Path<TFieldValues>>>
|
||||
);
|
||||
});
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
return (
|
||||
<div className="saml-data-mapping-form">
|
||||
<FormInput id={`auth_provider_mappings_attributes.${index}.api_endpoint`}
|
||||
type="hidden"
|
||||
register={register}
|
||||
rules={{ required: true }}
|
||||
formState={formState}
|
||||
defaultValue="user_info" />
|
||||
<FormInput id={`auth_provider_mappings_attributes.${index}.api_data_type`}
|
||||
type="hidden"
|
||||
register={register}
|
||||
rules={{ required: true }}
|
||||
formState={formState}
|
||||
defaultValue="json" />
|
||||
<FormInput id={`auth_provider_mappings_attributes.${index}.api_field`}
|
||||
register={register}
|
||||
rules={{ required: true }}
|
||||
formState={formState}
|
||||
placeholder="claim..."
|
||||
tooltip={<HtmlTranslate trKey="app.admin.authentication.saml_data_mapping_form.api_field_help_html" />}
|
||||
label={t('app.admin.authentication.saml_data_mapping_form.api_field')} />
|
||||
<FabButton
|
||||
icon={<i className="fa fa-magic" />}
|
||||
className="auto-configure-button"
|
||||
onClick={openIdStandardConfiguration}
|
||||
tooltip={t('app.admin.authentication.saml_data_mapping_form.openid_standard_configuration')} />
|
||||
</div>
|
||||
);
|
||||
};
|
@ -0,0 +1,63 @@
|
||||
import { FormInput } from '../form/form-input';
|
||||
import { UseFormRegister, FormState } from 'react-hook-form';
|
||||
import { FieldValues } from 'react-hook-form/dist/types/fields';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import { FabOutputCopy } from '../base/fab-output-copy';
|
||||
import ValidationLib from '../../lib/validation';
|
||||
|
||||
interface SamlFormProps<TFieldValues> {
|
||||
register: UseFormRegister<TFieldValues>,
|
||||
formState: FormState<TFieldValues>,
|
||||
strategyName?: string,
|
||||
}
|
||||
|
||||
/**
|
||||
* Partial form to fill the OAuth2 settings for a new/existing authentication provider.
|
||||
*/
|
||||
export const SamlForm = <TFieldValues extends FieldValues>({ register, strategyName, formState }: SamlFormProps<TFieldValues>) => {
|
||||
const { t } = useTranslation('admin');
|
||||
|
||||
/**
|
||||
* Build the callback URL, based on the strategy name.
|
||||
*/
|
||||
const buildCallbackUrl = (): string => {
|
||||
return `${window.location.origin}/users/auth/${strategyName}/callback`;
|
||||
};
|
||||
|
||||
return (
|
||||
<div className="saml-form">
|
||||
<hr/>
|
||||
<FabOutputCopy text={buildCallbackUrl()} label={t('app.admin.authentication.saml_form.authorization_callback_url')} />
|
||||
<FormInput id="providable_attributes.sp_entity_id"
|
||||
register={register}
|
||||
label={t('app.admin.authentication.saml_form.sp_entity_id')}
|
||||
tooltip={t('app.admin.authentication.saml_form.sp_entity_id_help')}
|
||||
rules={{ required: true }}
|
||||
formState={formState} />
|
||||
<FormInput id="providable_attributes.idp_sso_service_url"
|
||||
register={register}
|
||||
placeholder="https://sso.example.net..."
|
||||
label={t('app.admin.authentication.saml_form.idp_sso_service_url')}
|
||||
tooltip={t('app.admin.authentication.saml_form.idp_sso_service_url_help')}
|
||||
rules={{ required: true, pattern: ValidationLib.urlRegex }}
|
||||
formState={formState} />
|
||||
<FormInput id="providable_attributes.idp_cert_fingerprint"
|
||||
register={register}
|
||||
placeholder="E7:91:B2:E1:..."
|
||||
label={t('app.admin.authentication.saml_form.idp_cert_fingerprint')}
|
||||
formState={formState} />
|
||||
<FormInput id="providable_attributes.idp_cert"
|
||||
register={register}
|
||||
placeholder="-----BEGIN CERTIFICATE-----...-----END CERTIFICATE-----"
|
||||
label={t('app.admin.authentication.saml_form.idp_cert')}
|
||||
formState={formState} />
|
||||
<FormInput id="providable_attributes.profile_url"
|
||||
register={register}
|
||||
placeholder="https://exemple.net/user..."
|
||||
label={t('app.admin.authentication.saml_form.profile_edition_url')}
|
||||
tooltip={t('app.admin.authentication.saml_form.profile_edition_url_help')}
|
||||
rules={{ required: true, pattern: ValidationLib.urlRegex }}
|
||||
formState={formState} />
|
||||
</div>
|
||||
);
|
||||
};
|
@ -76,7 +76,7 @@ export const AbstractItem: React.FC<AbstractItemProps> = ({ item, errors, cart,
|
||||
<span>{t('app.public.abstract_item.total')}</span>
|
||||
<p>{FormatLib.price(OrderLib.itemAmount(item))}</p>
|
||||
</div>
|
||||
<FabButton className="main-action-btn" onClick={handleRemoveItem(item)}>
|
||||
<FabButton className="is-alert" onClick={handleRemoveItem(item)}>
|
||||
<i className="fa fa-trash" />
|
||||
</FabButton>
|
||||
</div>
|
||||
|
@ -132,8 +132,7 @@ export const EventForm: React.FC<EventFormProps> = ({ action, event, onError, on
|
||||
* Check if any dates have changed
|
||||
*/
|
||||
const datesHaveChanged = (): boolean => {
|
||||
return ((event?.start_date !== (updatingEvent?.start_date as Date)?.toISOString()?.substring(0, 10)) ||
|
||||
(event?.end_date !== (updatingEvent?.end_date as Date)?.toISOString()?.substring(0, 10)));
|
||||
return (event?.start_date !== updatingEvent?.start_date) || (event?.end_date !== updatingEvent?.end_date);
|
||||
};
|
||||
|
||||
/**
|
||||
@ -361,7 +360,7 @@ export const EventForm: React.FC<EventFormProps> = ({ action, event, onError, on
|
||||
formState={formState}
|
||||
label={t('app.admin.event_form.price')}
|
||||
addOn={FormatLib.currencySymbol()} />
|
||||
<FabButton className="remove-price is-main" onClick={() => handlePriceRemove(price, index)} icon={<Trash size={20} />} />
|
||||
<FabButton className="remove-price is-alert" onClick={() => handlePriceRemove(price, index)} icon={<Trash size={20} />} />
|
||||
</div>
|
||||
))}
|
||||
<FabButton className="add-price is-secondary" onClick={() => append({})}>
|
||||
|
@ -103,7 +103,7 @@ export const FormFileUpload = <TFieldValues extends FieldValues>({ id, label, re
|
||||
onChange={onFileSelected}
|
||||
placeholder={placeholder()}/>
|
||||
{showRemoveButton && hasFile() &&
|
||||
<FabButton onClick={onRemoveFile} icon={<Trash size={20} weight="fill" />} className="is-main" />
|
||||
<FabButton onClick={onRemoveFile} icon={<Trash size={20} weight="fill" />} className="is-alert" />
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
|
@ -127,7 +127,7 @@ export const FormImageUpload = <TFieldValues extends FieldValues, TContext exten
|
||||
onChange={onFileSelected}
|
||||
placeholder={placeholder()}
|
||||
tooltip={tooltip} />
|
||||
{hasImage() && <FabButton onClick={onRemoveFile} icon={<Trash size={20} weight="fill" />} className="is-main" />}
|
||||
{hasImage() && <FabButton onClick={onRemoveFile} icon={<Trash size={20} weight="fill" />} className="is-alert" />}
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { ReactNode, useState } from 'react';
|
||||
import { ReactNode, useState, useEffect } from 'react';
|
||||
import * as React from 'react';
|
||||
import { Price } from '../../../models/price';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
@ -28,6 +28,10 @@ export const ConfigureExtendedPricesButton: React.FC<ConfigureExtendedPricesButt
|
||||
const [extendedPrices, setExtendedPrices] = useState<Array<Price>>(prices);
|
||||
const [showList, setShowList] = useState<boolean>(false);
|
||||
|
||||
useEffect(() => {
|
||||
setExtendedPrices(prices);
|
||||
}, [prices]);
|
||||
|
||||
/**
|
||||
* Return the number of hours, user-friendly formatted
|
||||
*/
|
||||
|
@ -73,7 +73,6 @@ export const ProductItem: React.FC<ProductItemProps> = ({ product, onEdit, onDel
|
||||
</div>
|
||||
<div className='actions'>
|
||||
<EditDestroyButtons onDeleteSuccess={onDelete}
|
||||
className="manage"
|
||||
onError={onError}
|
||||
onEdit={editProduct(product)}
|
||||
itemId={product.id}
|
||||
|
@ -19,7 +19,8 @@
|
||||
const METHODS = {
|
||||
DatabaseProvider: 'local_database',
|
||||
OAuth2Provider: 'o_auth2',
|
||||
OpenIdConnectProvider: 'openid_connect'
|
||||
OpenIdConnectProvider: 'openid_connect',
|
||||
SamlProvider: 'saml'
|
||||
};
|
||||
|
||||
/**
|
||||
|
@ -1,4 +1,4 @@
|
||||
export type ProvidableType = 'DatabaseProvider' | 'OAuth2Provider' | 'OpenIdConnectProvider';
|
||||
export type ProvidableType = 'DatabaseProvider' | 'OAuth2Provider' | 'OpenIdConnectProvider' | 'SamlProvider';
|
||||
|
||||
export interface AuthenticationProvider {
|
||||
id?: number,
|
||||
@ -7,7 +7,7 @@ export interface AuthenticationProvider {
|
||||
providable_type: ProvidableType,
|
||||
strategy_name: string
|
||||
auth_provider_mappings_attributes: Array<AuthenticationProviderMapping>,
|
||||
providable_attributes?: OAuth2Provider | OpenIdConnectProvider
|
||||
providable_attributes?: OAuth2Provider | OpenIdConnectProvider | SamlProvider
|
||||
}
|
||||
|
||||
export type mappingType = 'string' | 'text' | 'date' | 'integer' | 'boolean';
|
||||
@ -65,6 +65,15 @@ export interface OpenIdConnectProvider {
|
||||
extra_authorize_parameters?: string,
|
||||
}
|
||||
|
||||
export interface SamlProvider {
|
||||
id?: string,
|
||||
sp_entity_id: string,
|
||||
idp_sso_service_url: string
|
||||
idp_cert_fingerprint: string,
|
||||
idp_cert: string,
|
||||
profile_url: string,
|
||||
}
|
||||
|
||||
export interface MappingFields {
|
||||
user: Array<[string, mappingType]>,
|
||||
profile: Array<[string, mappingType]>
|
||||
|
@ -22,6 +22,7 @@
|
||||
@import "modules/authentication-provider/array-mapping-form";
|
||||
@import "modules/authentication-provider/data-mapping-form";
|
||||
@import "modules/authentication-provider/openid-connect-data-mapping-form";
|
||||
@import "modules/authentication-provider/saml-data-mapping-form";
|
||||
@import "modules/authentication-provider/provider-form";
|
||||
@import "modules/authentication-provider/type-mapping-modal";
|
||||
@import "modules/base/edit-destroy-buttons";
|
||||
|
@ -0,0 +1,7 @@
|
||||
.saml-data-mapping-form {
|
||||
.auto-configure-button {
|
||||
align-self: center;
|
||||
margin-top: 0.8rem;
|
||||
margin-left: 20px;
|
||||
}
|
||||
}
|
@ -9,7 +9,7 @@
|
||||
border-radius: 0;
|
||||
color: var(--gray-soft-lightest);
|
||||
&.edit-btn {background: var(--gray-hard-darkest) }
|
||||
&.delete-btn {background: var(--main) }
|
||||
&.delete-btn {background: var(--alert) }
|
||||
&:hover,
|
||||
&:focus {
|
||||
opacity: 0.75;
|
||||
|
@ -207,11 +207,11 @@
|
||||
padding: 1.6rem 0.8rem;
|
||||
background-color: var(--main);
|
||||
border: none;
|
||||
color: var(--gray-soft-lightest);
|
||||
color: var(--main-text-color);
|
||||
justify-content: center;
|
||||
text-transform: uppercase;
|
||||
&:hover {
|
||||
color: var(--gray-soft-lightest);
|
||||
color: var(--main-text-color);
|
||||
opacity: 0.75;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
@ -17,11 +17,11 @@
|
||||
|
||||
.main-action-btn {
|
||||
background-color: var(--main);
|
||||
color: var(--gray-soft-lightest);
|
||||
color: var(--main-text-color);
|
||||
border: none;
|
||||
&:hover {
|
||||
background-color: var(--main);
|
||||
color: var(--gray-soft-lightest);
|
||||
color: var(--main-text-color);
|
||||
opacity: 0.75;
|
||||
}
|
||||
}
|
||||
|
@ -73,7 +73,7 @@
|
||||
&:hover { opacity: 0.75; }
|
||||
}
|
||||
.edit-btn { background: var(--gray-hard-darkest); }
|
||||
.delete-btn { background: var(--main); }
|
||||
.delete-btn { background: var(--alert); }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -72,19 +72,6 @@
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
align-items: center;
|
||||
.manage {
|
||||
overflow: hidden;
|
||||
display: flex;
|
||||
border-radius: var(--border-radius-sm);
|
||||
button {
|
||||
@include btn;
|
||||
border-radius: 0;
|
||||
color: var(--gray-soft-lightest);
|
||||
&:hover { opacity: 0.75; }
|
||||
}
|
||||
.edit-btn {background: var(--gray-hard-darkest) }
|
||||
.delete-btn {background: var(--main) }
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: 1024px) {
|
||||
|
@ -17,7 +17,7 @@ class AuthProvider < ApplicationRecord
|
||||
end
|
||||
end
|
||||
|
||||
PROVIDABLE_TYPES = %w[DatabaseProvider OAuth2Provider OpenIdConnectProvider].freeze
|
||||
PROVIDABLE_TYPES = %w[DatabaseProvider OAuth2Provider OpenIdConnectProvider SamlProvider].freeze
|
||||
|
||||
belongs_to :providable, polymorphic: true, dependent: :destroy
|
||||
accepts_nested_attributes_for :providable
|
||||
@ -27,7 +27,7 @@ class AuthProvider < ApplicationRecord
|
||||
|
||||
validates :providable_type, inclusion: { in: PROVIDABLE_TYPES }
|
||||
validates :name, presence: true, uniqueness: true
|
||||
validates_with UserUidMappedValidator, if: -> { %w[OAuth2Provider OpenIdConnectProvider].include?(providable_type) }
|
||||
validates_with UserUidMappedValidator, if: -> { %w[OAuth2Provider OpenIdConnectProvider SamlProvider].include?(providable_type) }
|
||||
|
||||
before_create :set_initial_state
|
||||
after_update :write_reload_config
|
||||
|
11
app/models/saml_provider.rb
Normal file
11
app/models/saml_provider.rb
Normal file
@ -0,0 +1,11 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
# SAML Provider is a special type of AuthProvider which provides authentication through an external SSO server using
|
||||
# the SAML protocol.
|
||||
|
||||
class SamlProvider < ApplicationRecord
|
||||
has_one :auth_provider, as: :providable, dependent: :destroy
|
||||
|
||||
validates :sp_entity_id, presence: true
|
||||
validates :idp_sso_service_url, presence: true
|
||||
end
|
@ -78,7 +78,7 @@ class Slots::PlacesCacheService
|
||||
# @param reservable_id [Number]
|
||||
# @param user_ids [Array<Number>]
|
||||
def remove_users(slot, reservable_type, reservable_id, user_ids)
|
||||
return if slot.nil?
|
||||
return if slot.nil? || user_ids.compact.empty?
|
||||
|
||||
ActiveRecord::Base.connection.execute <<-SQL.squish
|
||||
with users as (
|
||||
|
@ -22,7 +22,7 @@ class Statistics::Builders::ReservationsBuilderService
|
||||
coupon: r[:coupon],
|
||||
groupName: r[:groupName],
|
||||
}.merge(user_info_stat(r)))
|
||||
stat[:stat] = (type == 'booking' ? 1 : r[:nb_hours])
|
||||
stat[:stat] = (type == 'booking' ? (category == 'event' ? r[:nb_places] : 1) : r[:nb_hours])
|
||||
stat["#{category}Id".to_sym] = r["#{category}_id".to_sym]
|
||||
|
||||
stat = add_custom_attributes(category, stat, r)
|
||||
|
@ -19,3 +19,9 @@ if @provider.providable_type == OpenIdConnectProvider.name
|
||||
json.extra_authorize_params @provider.providable[:extra_authorize_params].to_json
|
||||
end
|
||||
end
|
||||
|
||||
if @provider.providable_type == SamlProvider.name
|
||||
json.providable_attributes do
|
||||
json.extract! @provider.providable, :id, :sp_entity_id, :idp_sso_service_url, :profile_url, :idp_cert_fingerprint, :idp_cert
|
||||
end
|
||||
end
|
||||
|
@ -20,3 +20,9 @@ if provider.providable_type == 'OpenIdConnectProvider'
|
||||
:extra_authorize_params
|
||||
end
|
||||
end
|
||||
|
||||
if provider.providable_type == 'SamlProvider'
|
||||
json.providable_attributes do
|
||||
json.extract! provider.providable, :id, :sp_entity_id, :idp_sso_service_url, :profile_url, :idp_cert_fingerprint, :idp_cert
|
||||
end
|
||||
end
|
||||
|
@ -244,6 +244,15 @@ Devise.setup do |config|
|
||||
active_provider.oidc_config.merge(
|
||||
strategy_class: OmniAuth::Strategies::SsoOpenidConnectProvider
|
||||
)
|
||||
|
||||
when 'SamlProvider'
|
||||
require_relative '../../lib/omni_auth/saml'
|
||||
config.omniauth active_provider.strategy_name.to_sym,
|
||||
sp_entity_id: active_provider.providable.sp_entity_id,
|
||||
idp_sso_service_url: active_provider.providable.idp_sso_service_url,
|
||||
idp_cert: active_provider.providable.idp_cert,
|
||||
idp_cert_fingerprint: active_provider.providable.idp_cert_fingerprint,
|
||||
strategy_class: OmniAuth::Strategies::SsoSamlProvider
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -1230,6 +1230,7 @@ de:
|
||||
local_database: "Lokale Datenbank"
|
||||
o_auth2: "OAuth 2.0"
|
||||
openid_connect: "OpenID Connect"
|
||||
saml: "SAML"
|
||||
group_form:
|
||||
add_a_group: "Gruppe hinzufügen"
|
||||
group_name: "Gruppenname"
|
||||
@ -1496,6 +1497,10 @@ de:
|
||||
api_field: "Userinfo claim"
|
||||
api_field_help_html: 'Set the field providing the corresponding data through <a href="https://openid.net/specs/openid-connect-core-1_0.html#Claims" target="_blank">the userinfo endpoint</a>.<br> <a href="https://jsonpath.com/" target="_blank">JsonPath</a> syntax is supported. If many fields are selected, the first one will be used.<br> <b>Example</b>: $.data[*].name'
|
||||
openid_standard_configuration: "Use the OpenID standard configuration"
|
||||
saml_data_mapping_form:
|
||||
api_field: "Userinfo field"
|
||||
api_field_help_html: "Set the field providing the corresponding data through the SAML assertion.<br> If many fields are selected, the first one will be used.<br> <b>Example</b>: $.data[*].name"
|
||||
openid_standard_configuration: "Use the SAML standard configuration"
|
||||
type_mapping_modal:
|
||||
data_mapping: "Datenzuordnung"
|
||||
TYPE_expected: "{TYPE} erwartet"
|
||||
@ -1552,6 +1557,16 @@ de:
|
||||
client__end_session_endpoint_help: "The url to call to log the user out at the authorization server."
|
||||
extra_authorize_params: "Extra authorize parameters"
|
||||
extra_authorize_params_help: "A hash of extra fixed parameters that will be merged to the authorization request"
|
||||
saml_form:
|
||||
authorization_callback_url: "Authorization callback URL"
|
||||
sp_entity_id: "Service provider entity ID"
|
||||
sp_entity_id_help: "The name of your application. Some identity providers might need this to establish the identity of the service provider requesting the login."
|
||||
idp_sso_service_url: "Identity provider SSO service URL"
|
||||
idp_sso_service_url_help: "The URL to which the authentication request should be sent. This would be on the identity provider."
|
||||
idp_cert_fingerprint: "Identity provider certificate fingerprint"
|
||||
idp_cert: "Identity provider certificate"
|
||||
profile_edition_url: "Profil edition URL"
|
||||
profile_edition_url_help: "The URL of the page where the user can edit his profile."
|
||||
provider_form:
|
||||
name: "Name"
|
||||
authentication_type: "Authentifizierungsart"
|
||||
@ -1562,6 +1577,7 @@ de:
|
||||
local_database: "Lokale Datenbank"
|
||||
oauth2: "OAuth 2.0"
|
||||
openid_connect: "OpenID Connect"
|
||||
saml: "SAML"
|
||||
#create a new authentication provider (SSO)
|
||||
authentication_new:
|
||||
add_a_new_authentication_provider: "Neuen Authentifizierungsanbieter hinzufügen"
|
||||
|
@ -1230,6 +1230,7 @@ en:
|
||||
local_database: "Local database"
|
||||
o_auth2: "OAuth 2.0"
|
||||
openid_connect: "OpenID Connect"
|
||||
saml: "SAML"
|
||||
group_form:
|
||||
add_a_group: "Add a group"
|
||||
group_name: "Group name"
|
||||
@ -1496,6 +1497,10 @@ en:
|
||||
api_field: "Userinfo claim"
|
||||
api_field_help_html: 'Set the field providing the corresponding data through <a href="https://openid.net/specs/openid-connect-core-1_0.html#Claims" target="_blank">the userinfo endpoint</a>.<br> <a href="https://jsonpath.com/" target="_blank">JsonPath</a> syntax is supported. If many fields are selected, the first one will be used.<br> <b>Example</b>: $.data[*].name'
|
||||
openid_standard_configuration: "Use the OpenID standard configuration"
|
||||
saml_data_mapping_form:
|
||||
api_field: "Userinfo field"
|
||||
api_field_help_html: "Set the field providing the corresponding data through the SAML assertion.<br> If many fields are selected, the first one will be used.<br> <b>Example</b>: $.data[*].name"
|
||||
openid_standard_configuration: "Use the SAML standard configuration"
|
||||
type_mapping_modal:
|
||||
data_mapping: "Data mapping"
|
||||
TYPE_expected: "{TYPE} expected"
|
||||
@ -1552,6 +1557,16 @@ en:
|
||||
client__end_session_endpoint_help: "The url to call to log the user out at the authorization server."
|
||||
extra_authorize_params: "Extra authorize parameters"
|
||||
extra_authorize_params_help: "A hash of extra fixed parameters that will be merged to the authorization request"
|
||||
saml_form:
|
||||
authorization_callback_url: "Authorization callback URL"
|
||||
sp_entity_id: "Service provider entity ID"
|
||||
sp_entity_id_help: "The name of your application. Some identity providers might need this to establish the identity of the service provider requesting the login."
|
||||
idp_sso_service_url: "Identity provider SSO service URL"
|
||||
idp_sso_service_url_help: "The URL to which the authentication request should be sent. This would be on the identity provider."
|
||||
idp_cert_fingerprint: "Identity provider certificate fingerprint"
|
||||
idp_cert: "Identity provider certificate"
|
||||
profile_edition_url: "Profil edition URL"
|
||||
profile_edition_url_help: "The URL of the page where the user can edit his profile."
|
||||
provider_form:
|
||||
name: "Name"
|
||||
authentication_type: "Authentication type"
|
||||
@ -1562,6 +1577,7 @@ en:
|
||||
local_database: "Local database"
|
||||
oauth2: "OAuth 2.0"
|
||||
openid_connect: "OpenID Connect"
|
||||
saml: "SAML"
|
||||
#create a new authentication provider (SSO)
|
||||
authentication_new:
|
||||
add_a_new_authentication_provider: "Add a new authentication provider"
|
||||
|
@ -1230,6 +1230,7 @@ es-MX:
|
||||
local_database: "Base de datos local"
|
||||
o_auth2: "OAuth 2.0"
|
||||
openid_connect: "OpenID Connect"
|
||||
saml: "SAML"
|
||||
group_form:
|
||||
add_a_group: "Añadir un grupo"
|
||||
group_name: "Nombre del grupo"
|
||||
@ -1496,6 +1497,10 @@ es-MX:
|
||||
api_field: "Reclamo de Userinfo"
|
||||
api_field_help_html: 'Establece el campo que proporciona los datos correspondientes a través del <a href="https://openid.net/specs/openid-connect-core-1_0.html#Claims" target="_blank">userinfo endpoint</a>.<br> Se admite la sintaxis <a href="https://jsonpath.com/" target="_blank">JsonPath</a>. Si se seleccionan muchos campos, se utilizará el primero.<br> <b>Ejemplo</b>: $.data[*].name'
|
||||
openid_standard_configuration: "Usar la configuración estándar de OpenID"
|
||||
saml_data_mapping_form:
|
||||
api_field: "Userinfo field"
|
||||
api_field_help_html: "Set the field providing the corresponding data through the SAML assertion.<br> If many fields are selected, the first one will be used.<br> <b>Example</b>: $.data[*].name"
|
||||
openid_standard_configuration: "Use the SAML standard configuration"
|
||||
type_mapping_modal:
|
||||
data_mapping: "Mapeo de datos"
|
||||
TYPE_expected: "{TYPE} esperado"
|
||||
@ -1552,6 +1557,16 @@ es-MX:
|
||||
client__end_session_endpoint_help: "La URL a llamar para cerrar la sesión del usuario en el servidor de autorización."
|
||||
extra_authorize_params: "Parámetros de autorización extra"
|
||||
extra_authorize_params_help: "Un hash de parámetros extra que se fusionarán con la \"authorization request\""
|
||||
saml_form:
|
||||
authorization_callback_url: "Authorization callback URL"
|
||||
sp_entity_id: "Service provider entity ID"
|
||||
sp_entity_id_help: "The name of your application. Some identity providers might need this to establish the identity of the service provider requesting the login."
|
||||
idp_sso_service_url: "Identity provider SSO service URL"
|
||||
idp_sso_service_url_help: "The URL to which the authentication request should be sent. This would be on the identity provider."
|
||||
idp_cert_fingerprint: "Identity provider certificate fingerprint"
|
||||
idp_cert: "Identity provider certificate"
|
||||
profile_edition_url: "Profil edition URL"
|
||||
profile_edition_url_help: "The URL of the page where the user can edit his profile."
|
||||
provider_form:
|
||||
name: "Nombre"
|
||||
authentication_type: "Tipo de autenticación"
|
||||
@ -1562,6 +1577,7 @@ es-MX:
|
||||
local_database: "Base de datos local"
|
||||
oauth2: "OAuth 2.0"
|
||||
openid_connect: "OpenID Connect"
|
||||
saml: "SAML"
|
||||
#create a new authentication provider (SSO)
|
||||
authentication_new:
|
||||
add_a_new_authentication_provider: "Agregar un nuevo proveedor de autenticación"
|
||||
|
@ -1230,6 +1230,7 @@ es:
|
||||
local_database: "Base de datos local"
|
||||
o_auth2: "OAuth 2.0"
|
||||
openid_connect: "OpenID Connect"
|
||||
saml: "SAML"
|
||||
group_form:
|
||||
add_a_group: "Añadir un grupo"
|
||||
group_name: "Nombre del grupo"
|
||||
@ -1496,6 +1497,10 @@ es:
|
||||
api_field: "Reclamo de Userinfo"
|
||||
api_field_help_html: 'Establece el campo que proporciona los datos correspondientes a través del <a href="https://openid.net/specs/openid-connect-core-1_0.html#Claims" target="_blank">userinfo endpoint</a>.<br> Se admite la sintaxis <a href="https://jsonpath.com/" target="_blank">JsonPath</a>. Si se seleccionan muchos campos, se utilizará el primero.<br> <b>Ejemplo</b>: $.data[*].name'
|
||||
openid_standard_configuration: "Usar la configuración estándar de OpenID"
|
||||
saml_data_mapping_form:
|
||||
api_field: "Userinfo field"
|
||||
api_field_help_html: "Set the field providing the corresponding data through the SAML assertion.<br> If many fields are selected, the first one will be used.<br> <b>Example</b>: $.data[*].name"
|
||||
openid_standard_configuration: "Use the SAML standard configuration"
|
||||
type_mapping_modal:
|
||||
data_mapping: "Mapeo de datos"
|
||||
TYPE_expected: "{TYPE} esperado"
|
||||
@ -1552,6 +1557,16 @@ es:
|
||||
client__end_session_endpoint_help: "La URL a llamar para cerrar la sesión del usuario en el servidor de autorización."
|
||||
extra_authorize_params: "Parámetros de autorización extra"
|
||||
extra_authorize_params_help: "Un hash de parámetros extra que se fusionarán con la \"authorization request\""
|
||||
saml_form:
|
||||
authorization_callback_url: "Authorization callback URL"
|
||||
sp_entity_id: "Service provider entity ID"
|
||||
sp_entity_id_help: "The name of your application. Some identity providers might need this to establish the identity of the service provider requesting the login."
|
||||
idp_sso_service_url: "Identity provider SSO service URL"
|
||||
idp_sso_service_url_help: "The URL to which the authentication request should be sent. This would be on the identity provider."
|
||||
idp_cert_fingerprint: "Identity provider certificate fingerprint"
|
||||
idp_cert: "Identity provider certificate"
|
||||
profile_edition_url: "Profil edition URL"
|
||||
profile_edition_url_help: "The URL of the page where the user can edit his profile."
|
||||
provider_form:
|
||||
name: "Nombre"
|
||||
authentication_type: "Tipo de autenticación"
|
||||
@ -1562,6 +1577,7 @@ es:
|
||||
local_database: "Base de datos local"
|
||||
oauth2: "OAuth 2.0"
|
||||
openid_connect: "OpenID Connect"
|
||||
saml: "SAML"
|
||||
#create a new authentication provider (SSO)
|
||||
authentication_new:
|
||||
add_a_new_authentication_provider: "Agregar un nuevo proveedor de autenticación"
|
||||
|
@ -1230,6 +1230,7 @@ fr:
|
||||
local_database: "Base de données locale"
|
||||
o_auth2: "OAuth 2.0"
|
||||
openid_connect: "OpenID Connect"
|
||||
saml: "SAML"
|
||||
group_form:
|
||||
add_a_group: "Ajouter un groupe"
|
||||
group_name: "Nom du groupe"
|
||||
@ -1496,6 +1497,10 @@ fr:
|
||||
api_field: "Demandes d'information utilisateur"
|
||||
api_field_help_html: 'Définit le champ fournissant les données correspondantes via <a href="https://openid.net/specs/openid-connect-core-1_0.html#Claims" target="_blank">le point d''accès aux informations utilisateur</a>.<br> <a href="https://jsonpath.com/" target="_blank">La syntaxe JsonPath</a> est prise en charge. Si plusieurs champs sont sélectionnés, le premier sera utilisé.<br> <b>Exemple</b>: $.data[*].name'
|
||||
openid_standard_configuration: "Utiliser la configuration standard OpenID"
|
||||
saml_data_mapping_form:
|
||||
api_field: "Champ Userinfo"
|
||||
api_field_help_html: "Définissez le champ qui fournit les données correspondantes via l'assertion SAML.<br> Si plusieurs champs sont sélectionnés, seul le premier sera utilisé.<br> <b>Exemple</b>: $.data[*].name"
|
||||
openid_standard_configuration: "Utiliser la configuration standard SAML"
|
||||
type_mapping_modal:
|
||||
data_mapping: "Correspondance des données"
|
||||
TYPE_expected: "{TYPE} attendu"
|
||||
@ -1552,6 +1557,16 @@ fr:
|
||||
client__end_session_endpoint_help: "L'url à appeler pour déconnecter l'utilisateur sur le serveur d'autorisation."
|
||||
extra_authorize_params: "Paramètres d'autorisation supplémentaires"
|
||||
extra_authorize_params_help: "Un hachage de paramètres supplémentaires fixes qui seront fusionnés à la demande d'autorisation"
|
||||
saml_form:
|
||||
authorization_callback_url: "URL de retour d'autorisation"
|
||||
sp_entity_id: "ID de l'entité du fournisseur de service"
|
||||
sp_entity_id_help: "Le nom de votre application. Certains fournisseurs d'identité pourraient avoir besoin de cela pour établir l'identité du fournisseur de services demandant la connexion."
|
||||
idp_sso_service_url: "URL du service SSO du fournisseur d'identité"
|
||||
idp_sso_service_url_help: "L'URL à laquelle la requête d'authentification doit être envoyée. Cela serait sur le fournisseur d'identité."
|
||||
idp_cert_fingerprint: "Empreinte du certificat du fournisseur d'identité"
|
||||
idp_cert: "Certificat de fournisseur d'identité"
|
||||
profile_edition_url: "URL d'édition du profil"
|
||||
profile_edition_url_help: "L'URL de la page où l'utilisateur peut modifier son profil."
|
||||
provider_form:
|
||||
name: "Nom"
|
||||
authentication_type: "Type d'authentification"
|
||||
@ -1562,6 +1577,7 @@ fr:
|
||||
local_database: "Base de données locale"
|
||||
oauth2: "OAuth 2.0"
|
||||
openid_connect: "OpenID Connect"
|
||||
saml: "SAML"
|
||||
#create a new authentication provider (SSO)
|
||||
authentication_new:
|
||||
add_a_new_authentication_provider: "Ajouter un fournisseur d'authentification"
|
||||
|
@ -1230,6 +1230,7 @@ it:
|
||||
local_database: "Database locale"
|
||||
o_auth2: "OAuth 2.0"
|
||||
openid_connect: "OpenId Connect"
|
||||
saml: "SAML"
|
||||
group_form:
|
||||
add_a_group: "Aggiungi un gruppo"
|
||||
group_name: "Nome del gruppo"
|
||||
@ -1496,6 +1497,10 @@ it:
|
||||
api_field: "Reclamo userinfo"
|
||||
api_field_help_html: 'Imposta il campo che fornisce i dati corrispondenti attraverso <a href="https://openid.net/specs/openid-connect-core-1_0.html#Claims" target="_blank">l''endpoint userinfo</a>.<br> <a href="https://jsonpath.com/" target="_blank">La sintassi JsonPath</a> è supportata. Se sono selezionati molti campi, verrà utilizzato il primo.<br> <b>Esempio</b>: $.data[*].name'
|
||||
openid_standard_configuration: "Usa la configurazione standard OpenID"
|
||||
saml_data_mapping_form:
|
||||
api_field: "Userinfo field"
|
||||
api_field_help_html: "Set the field providing the corresponding data through the SAML assertion.<br> If many fields are selected, the first one will be used.<br> <b>Example</b>: $.data[*].name"
|
||||
openid_standard_configuration: "Use the SAML standard configuration"
|
||||
type_mapping_modal:
|
||||
data_mapping: "Mappatura dati"
|
||||
TYPE_expected: "{TYPE} atteso"
|
||||
@ -1552,6 +1557,16 @@ it:
|
||||
client__end_session_endpoint_help: "L'url da chiamare per effettuare il log out dell'utente al server di autorizzazione."
|
||||
extra_authorize_params: "Extra authorize parameters"
|
||||
extra_authorize_params_help: "A hash of extra fixed parameters that will be merged to the authorization request"
|
||||
saml_form:
|
||||
authorization_callback_url: "Authorization callback URL"
|
||||
sp_entity_id: "Service provider entity ID"
|
||||
sp_entity_id_help: "The name of your application. Some identity providers might need this to establish the identity of the service provider requesting the login."
|
||||
idp_sso_service_url: "Identity provider SSO service URL"
|
||||
idp_sso_service_url_help: "The URL to which the authentication request should be sent. This would be on the identity provider."
|
||||
idp_cert_fingerprint: "Identity provider certificate fingerprint"
|
||||
idp_cert: "Identity provider certificate"
|
||||
profile_edition_url: "Profil edition URL"
|
||||
profile_edition_url_help: "The URL of the page where the user can edit his profile."
|
||||
provider_form:
|
||||
name: "Nome"
|
||||
authentication_type: "Tipo di autenticazione"
|
||||
@ -1562,6 +1577,7 @@ it:
|
||||
local_database: "Database locale"
|
||||
oauth2: "OAuth 2.0"
|
||||
openid_connect: "OpenId Connect"
|
||||
saml: "SAML"
|
||||
#create a new authentication provider (SSO)
|
||||
authentication_new:
|
||||
add_a_new_authentication_provider: "Aggiungi un nuovo provider di autenticazione"
|
||||
|
@ -1230,6 +1230,7 @@
|
||||
local_database: "Lokal database"
|
||||
o_auth2: "OAuth 2.0"
|
||||
openid_connect: "OpenID Connect"
|
||||
saml: "SAML"
|
||||
group_form:
|
||||
add_a_group: "Legg til en gruppe"
|
||||
group_name: "Gruppenavn"
|
||||
@ -1496,6 +1497,10 @@
|
||||
api_field: "Userinfo claim"
|
||||
api_field_help_html: 'Set the field providing the corresponding data through <a href="https://openid.net/specs/openid-connect-core-1_0.html#Claims" target="_blank">the userinfo endpoint</a>.<br> <a href="https://jsonpath.com/" target="_blank">JsonPath</a> syntax is supported. If many fields are selected, the first one will be used.<br> <b>Example</b>: $.data[*].name'
|
||||
openid_standard_configuration: "Use the OpenID standard configuration"
|
||||
saml_data_mapping_form:
|
||||
api_field: "Userinfo field"
|
||||
api_field_help_html: "Set the field providing the corresponding data through the SAML assertion.<br> If many fields are selected, the first one will be used.<br> <b>Example</b>: $.data[*].name"
|
||||
openid_standard_configuration: "Use the SAML standard configuration"
|
||||
type_mapping_modal:
|
||||
data_mapping: "Data mapping"
|
||||
TYPE_expected: "{TYPE} expected"
|
||||
@ -1552,6 +1557,16 @@
|
||||
client__end_session_endpoint_help: "The url to call to log the user out at the authorization server."
|
||||
extra_authorize_params: "Extra authorize parameters"
|
||||
extra_authorize_params_help: "A hash of extra fixed parameters that will be merged to the authorization request"
|
||||
saml_form:
|
||||
authorization_callback_url: "Authorization callback URL"
|
||||
sp_entity_id: "Service provider entity ID"
|
||||
sp_entity_id_help: "The name of your application. Some identity providers might need this to establish the identity of the service provider requesting the login."
|
||||
idp_sso_service_url: "Identity provider SSO service URL"
|
||||
idp_sso_service_url_help: "The URL to which the authentication request should be sent. This would be on the identity provider."
|
||||
idp_cert_fingerprint: "Identity provider certificate fingerprint"
|
||||
idp_cert: "Identity provider certificate"
|
||||
profile_edition_url: "Profil edition URL"
|
||||
profile_edition_url_help: "The URL of the page where the user can edit his profile."
|
||||
provider_form:
|
||||
name: "Name"
|
||||
authentication_type: "Authentication type"
|
||||
@ -1562,6 +1577,7 @@
|
||||
local_database: "Local database"
|
||||
oauth2: "OAuth 2.0"
|
||||
openid_connect: "OpenID Connect"
|
||||
saml: "SAML"
|
||||
#create a new authentication provider (SSO)
|
||||
authentication_new:
|
||||
add_a_new_authentication_provider: "Legg til en ny autentiseringsleverandør"
|
||||
|
@ -1230,6 +1230,7 @@ pt:
|
||||
local_database: "Database local"
|
||||
o_auth2: "OAuth 2.0"
|
||||
openid_connect: "OpenID Connect"
|
||||
saml: "SAML"
|
||||
group_form:
|
||||
add_a_group: "Adicionar grupo"
|
||||
group_name: "Nome do grupo"
|
||||
@ -1496,6 +1497,10 @@ pt:
|
||||
api_field: "Userinfo"
|
||||
api_field_help_html: 'Defina o campo fornecendo os dados correspondentes através de <a href="https://openid.net/specs/openid-connect-core-1_0.html#Claims" target="_blank">o ponto de extremidade de userinfo</a>.<br> <a href="https://jsonpath.com/" target="_blank">JsonPath</a> sintaxe é suportada. Se muitos campos forem selecionados, o primeiro será usado.<br> <b>Exemplo</b>: $.data[*].name'
|
||||
openid_standard_configuration: "Usar a configuração padrão OpenID"
|
||||
saml_data_mapping_form:
|
||||
api_field: "Userinfo field"
|
||||
api_field_help_html: "Set the field providing the corresponding data through the SAML assertion.<br> If many fields are selected, the first one will be used.<br> <b>Example</b>: $.data[*].name"
|
||||
openid_standard_configuration: "Use the SAML standard configuration"
|
||||
type_mapping_modal:
|
||||
data_mapping: "Mapeamento de dados"
|
||||
TYPE_expected: "{TYPE} esperado"
|
||||
@ -1552,6 +1557,16 @@ pt:
|
||||
client__end_session_endpoint_help: "O Url para efetuar uma chamada para desconectar o usuário no servidor de autorização."
|
||||
extra_authorize_params: "Extra authorize parameters"
|
||||
extra_authorize_params_help: "A hash of extra fixed parameters that will be merged to the authorization request"
|
||||
saml_form:
|
||||
authorization_callback_url: "Authorization callback URL"
|
||||
sp_entity_id: "Service provider entity ID"
|
||||
sp_entity_id_help: "The name of your application. Some identity providers might need this to establish the identity of the service provider requesting the login."
|
||||
idp_sso_service_url: "Identity provider SSO service URL"
|
||||
idp_sso_service_url_help: "The URL to which the authentication request should be sent. This would be on the identity provider."
|
||||
idp_cert_fingerprint: "Identity provider certificate fingerprint"
|
||||
idp_cert: "Identity provider certificate"
|
||||
profile_edition_url: "Profil edition URL"
|
||||
profile_edition_url_help: "The URL of the page where the user can edit his profile."
|
||||
provider_form:
|
||||
name: "Nome"
|
||||
authentication_type: "Tipo de autenticação"
|
||||
@ -1562,6 +1577,7 @@ pt:
|
||||
local_database: "Database local"
|
||||
oauth2: "OAuth 2.0"
|
||||
openid_connect: "OpenID Connect"
|
||||
saml: "SAML"
|
||||
#create a new authentication provider (SSO)
|
||||
authentication_new:
|
||||
add_a_new_authentication_provider: "Adicionar novo provedor de autenticação"
|
||||
|
2574
config/locales/app.admin.sv.yml
Normal file
2574
config/locales/app.admin.sv.yml
Normal file
@ -0,0 +1,2574 @@
|
||||
sv:
|
||||
app:
|
||||
admin:
|
||||
edit_destroy_buttons:
|
||||
deleted: "Raderad."
|
||||
unable_to_delete: "Kunde inte ta bort: "
|
||||
delete_item: "Ta bort {TYPE}"
|
||||
confirm_delete: "Ta bort"
|
||||
delete_confirmation: "Är du säker på att du vill ta bort denna {TYPE}?"
|
||||
machines:
|
||||
the_fablab_s_machines: "FabLabs utrustning"
|
||||
all_machines: "All utrustning"
|
||||
add_a_machine: "Lägg till utrustning"
|
||||
manage_machines_categories: "Hantera utrustningskategorier"
|
||||
machines_settings: "Inställningar"
|
||||
machines_settings:
|
||||
title: "Inställningar"
|
||||
generic_text_block: "Textblock"
|
||||
generic_text_block_info: "Visar ett textblock ovanför listan över utrustning som är synlig för medlemmar."
|
||||
generic_text_block_switch: "Visa textblock"
|
||||
cta_switch: "Visa en knapp"
|
||||
cta_label: "Knappetikett"
|
||||
cta_url: "url"
|
||||
save: "Spara"
|
||||
successfully_saved: "Din banderoll har sparats."
|
||||
machine_categories_list:
|
||||
machine_categories: "Utrustningskategorier"
|
||||
add_a_machine_category: "Lägg till en utrustningskategori"
|
||||
name: "Namn"
|
||||
machines_number: "Antal av utrustning"
|
||||
machine_category: "Utrustningskategorier"
|
||||
machine_category_modal:
|
||||
new_machine_category: "Ny kategori"
|
||||
edit_machine_category: "Redigera kategori"
|
||||
successfully_created: "Den nya utrustningskategorin har skapats."
|
||||
unable_to_create: "Det går inte att radera utrustningskategorin: "
|
||||
successfully_updated: "Utrustningskategorin har uppdaterats."
|
||||
unable_to_update: "Det går inte att ändra utrustningskategorin: "
|
||||
machine_category_form:
|
||||
name: "Kategorinamn"
|
||||
assigning_machines: "Koppla utrustning till denna kategori"
|
||||
save: "Spara"
|
||||
machine_form:
|
||||
ACTION_title: "{ACTION, select, create{Ny} other{uppdatera}} utrustningen"
|
||||
watch_out_when_creating_a_new_machine_its_prices_are_initialized_at_0_for_all_subscriptions: "Observera! När du skapar ny utrustning sätts dess pris till 0 i samtliga prenumerationer."
|
||||
consider_changing_them_before_creating_any_reservation_slot: "Överväg att ändra dem innan en plats skapas."
|
||||
description: "Beskrivning"
|
||||
name: "Namn"
|
||||
illustration: "Visuell"
|
||||
illustration_recommendation: "Maximal storlek: 932 * 700 px (obegränsat förhållande). Bilden kan beskäras i listvyn. Endast beskrivningssidan visar hela bilden."
|
||||
technical_specifications: "Tekniska specifikationer"
|
||||
category: "Kategori"
|
||||
attachments: "Bilagor"
|
||||
attached_files_pdf: "Bifogade filer (pdf)"
|
||||
add_an_attachment: "Lägg till bilaga"
|
||||
settings: "Inställningar"
|
||||
disable_machine: "Inaktivera utrustning"
|
||||
disabled_help: "När den är inaktiverad kommer utrustningen inte att vara bokningsbar och kommer inte att visas som standard i utrustningslistan."
|
||||
reservable: "Kan denna utrustning reserveras?"
|
||||
reservable_help: "När den är inaktiverad, kommer utrustningen att visas i standardlistan över utrustning, men utan bokningsknappen. Om du redan har skapat vissa lediga platser för denna utrustning, kanske du vill ta bort dem: gör det från admingränssnittet."
|
||||
save: "Spara"
|
||||
create_success: "Utrustningen skapades framgångsrikt"
|
||||
update_success: "Utrustningen uppdaterades framgångsrikt"
|
||||
training_form:
|
||||
ACTION_title: "{ACTION, select, create{Ny} other{uppdatera}} utbildningen"
|
||||
beware_when_creating_a_training_its_reservation_prices_are_initialized_to_zero: "Beware, when creating a training, its reservation prices are initialized at zero."
|
||||
dont_forget_to_change_them_before_creating_slots_for_this_training: "Don't forget to change them before creating slots for this training."
|
||||
description: "Description"
|
||||
name: "Name"
|
||||
illustration: "Visual"
|
||||
illustration_recommendation: "Maximum display size: 932 * 700 px (unconstrained ratio). The image may be cropped in list view. Only the description page displays the full image."
|
||||
add_a_new_training: "Add a new training"
|
||||
validate_your_training: "Validate your training"
|
||||
settings: "Settings"
|
||||
associated_machines: "Associated machines"
|
||||
associated_machines_help: "If you associate a machine to this training, the members will need to successfully pass this training before being able to reserve the machine."
|
||||
default_seats: "Default number of seats"
|
||||
public_page: "Show in training lists"
|
||||
public_help: "When unchecked, this option will prevent the training from appearing in the trainings list."
|
||||
disable_training: "Disable the training"
|
||||
disabled_help: "When disabled, the training won't be reservable and won't appear by default in the trainings list."
|
||||
automatic_cancellation: "Automatic cancellation"
|
||||
automatic_cancellation_info: "If you edit specific conditions here, the general cancellation conditions will no longer be taken into account. You will be notified if a session is cancelled. Credit notes and refunds will be automatic if the wallet is enabled. Otherwise you will have to do it manually."
|
||||
automatic_cancellation_switch: "Activate automatic cancellation for this training"
|
||||
automatic_cancellation_threshold: "Minimum number of registrations to maintain a session"
|
||||
automatic_cancellation_deadline: "Deadline, in hours, before automatic cancellation"
|
||||
authorization_validity: "Authorisations validity period"
|
||||
authorization_validity_info: "You can define a specific validity period in months for this training. The general conditions will no longer be taken into account."
|
||||
authorization_validity_switch: "Activate an authorization validity period"
|
||||
authorization_validity_period: "Validity period in months"
|
||||
validation_rule: "Authorisations cancellation rule"
|
||||
validation_rule_info: "Define a rule that cancel an authorisation if the machines associated with the training are not reserved for a specific period of time. This rule prevails over the authorisations validity period."
|
||||
validation_rule_switch: "Activate the validation rule"
|
||||
validation_rule_period: "Time limit in months"
|
||||
save: "Save"
|
||||
create_success: "The training was created successfully"
|
||||
update_success: "The training was updated successfully"
|
||||
space_form:
|
||||
ACTION_title: "{ACTION, select, create{New} other{Update the}} space"
|
||||
watch_out_when_creating_a_new_space_its_prices_are_initialized_at_0_for_all_subscriptions: "Watch out! When creating a new space, its prices are initialized at 0 for all subscriptions."
|
||||
consider_changing_its_prices_before_creating_any_reservation_slot: "Consider changing its prices before creating any reservation slot."
|
||||
name: "Name"
|
||||
illustration: "Visual"
|
||||
illustration_recommendation: "Maximum display size: 932 * 700 px (unconstrained ratio). The image may be cropped in list view. Only the description page displays the full image."
|
||||
description: "Description"
|
||||
characteristics: "Characteristics"
|
||||
attachments: "Attachments"
|
||||
attached_files_pdf: "Attached files (pdf)"
|
||||
add_an_attachment: "Add an attachment"
|
||||
settings: "Settings"
|
||||
default_seats: "Default number of seats"
|
||||
disable_space: "Disable the space"
|
||||
disabled_help: "När den är inaktiverad kommer lokalen inte att vara bokningsbar och kommer inte att visas som standard i listan med lokaler."
|
||||
save: "Spara"
|
||||
create_success: "Lokalen skapades framgångsrikt"
|
||||
update_success: "Lokalen uppdaterades"
|
||||
associated_machines: "Inkluderad utrustning"
|
||||
children_spaces: "Inkluderade lokaler"
|
||||
associated_objects: "Kopplade objekt"
|
||||
associated_objects_warning: "Använd endast dessa fält om du vill ha blockerande bokningar mellan lokaler, biytor och utrustning. Om du vill att bokningar av utrustning och lokaler ska vara oberoende av varandra, lämna följande fält tomt."
|
||||
event_form:
|
||||
ACTION_title: "{ACTION, select, create{Nytt} other{Uppdatera}} evenemanget"
|
||||
title: "Rubrik"
|
||||
illustration: "Visuell"
|
||||
illustration_recommendation: "Maximal storlek: 932 * 700 px (obegränsat förhållande). Bilden kan beskäras i listvyn. Endast beskrivningssidan visar hela bilden."
|
||||
description: "Beskrivning"
|
||||
attachments: "Bilagor"
|
||||
attached_files_pdf: "Bifogade filer (pdf)"
|
||||
add_a_new_file: "Lägg till ny fil"
|
||||
event_category: "Kategori för evenemang"
|
||||
dates_and_opening_hours: "Datum och öppettider"
|
||||
all_day: "Hela dagen"
|
||||
all_day_help: "Kommer evenemanget att pågå hela dagen eller vill du ställa in tider?"
|
||||
start_date: "Startdatum"
|
||||
end_date: "Slutdatum"
|
||||
start_time: "Starttid"
|
||||
end_time: "Sluttid"
|
||||
recurrence: "Återkommande"
|
||||
_and_ends_on: "och slutar på"
|
||||
prices_and_availabilities: "Priser och tillgängligheter"
|
||||
standard_rate: "Standardavgift"
|
||||
0_equal_free: "0 = kostnadsfritt"
|
||||
fare_class: "Biljettklass"
|
||||
price: "Pris"
|
||||
seats_available: "Tillgängliga platser"
|
||||
seats_help: "Om du lämnar detta fält tomt, kommer detta evenemang att vara tillgängligt utan bokning."
|
||||
event_themes: "Evenemangsteman"
|
||||
age_range: "Åldersspann"
|
||||
add_price: "Lägg till ett pris"
|
||||
save: "Spara"
|
||||
create_success: "Evenemanget skapades"
|
||||
events_updated: "{COUNT, plural, one {}=1{Ett evenemang} other{{COUNT} Evenemang}} uppdaterades"
|
||||
events_not_updated: "{TOTAL, plural, =1{The event was} other{On {TOTAL} events {COUNT, plural, =1{one was} other{{COUNT} were}}}} not updated."
|
||||
error_deleting_reserved_price: "Det går inte att ta bort det begärda priset eftersom det är associerat med vissa befintliga bokningar"
|
||||
other_error: "Ett oväntat fel inträffade när evenemanget uppdaterades"
|
||||
recurring:
|
||||
none: "Inget"
|
||||
every_days: "Varje dag"
|
||||
every_week: "Varje vecka"
|
||||
every_month: "Varje månad"
|
||||
every_year: "Varje år"
|
||||
event_type: "Typ av evenemang"
|
||||
event_types:
|
||||
standard: "Evenemangsstandard"
|
||||
nominative: "Evenemangbeskrivning"
|
||||
family: "Event reserved for members"
|
||||
pre_registration: "Pre-registration"
|
||||
pre_registration_help: "If this option is checked, administrators and managers must validate registrations before they become final."
|
||||
pre_registration_end_date: "Deadline for pre-registration"
|
||||
plan_form:
|
||||
ACTION_title: "{ACTION, select, create{New} other{Update the}} plan"
|
||||
tab_settings: "Settings"
|
||||
tab_usage_limits: "Usage limits"
|
||||
description: "Description"
|
||||
general_settings: "General settings"
|
||||
general_settings_info: "Determine to which group this subscription is dedicated. Also set its price and duration in periods."
|
||||
activation_and_payment: "Subscription activation and payment"
|
||||
name: "Name"
|
||||
name_max_length: "Name length must be less than 24 characters."
|
||||
group: "Group"
|
||||
transversal: "Transversal plan"
|
||||
transversal_help: "If this option is checked, a copy of this plan will be created for each currently enabled groups."
|
||||
display: "Display"
|
||||
category: "Category"
|
||||
category_help: "Categories allow you to group the subscription plans, on the public view of the subscriptions."
|
||||
number_of_periods: "Number of periods"
|
||||
period: "Period"
|
||||
year: "Year"
|
||||
month: "Month"
|
||||
week: "Week"
|
||||
subscription_price: "Subscription price"
|
||||
edit_amount_info: "Please note that if you change the price of this plan, the new price will only apply to new subscribers. Current subscriptions will stay unchanged, even those with a running payment schedule."
|
||||
visual_prominence: "Visual prominence of the subscription"
|
||||
visual_prominence_help: "On the subscriptions page, the most prominent subscriptions will be placed at the top of the list. An elevated number means a higher prominence."
|
||||
rolling_subscription: "Rolling subscription?"
|
||||
rolling_subscription_help: "A rolling subscription will begin the day of the first trainings. Otherwise, it will begin as soon as it is bought."
|
||||
monthly_payment: "Monthly payment?"
|
||||
monthly_payment_help: "If monthly payment is enabled, the members will be able to choose between a one-time payment or a payment schedule staged each months."
|
||||
information_sheet: "Information sheet"
|
||||
notified_partner: "Notified partner"
|
||||
new_user: "New user"
|
||||
alert_partner_notification: "As part of a partner subscription, some notifications may be sent to this user."
|
||||
disabled: "Disable subscription"
|
||||
disabled_help: "Beware: disabling this plan won't unsubscribe users having active subscriptions with it."
|
||||
duration: "Duration"
|
||||
partnership: "Partnership"
|
||||
partner_plan: "Partner plan"
|
||||
partner_plan_help: "You can sell subscriptions in partnership with another organization. By doing so, the other organization will be notified when a member subscribes to this subscription plan."
|
||||
partner_created: "The partner was successfully created"
|
||||
slots_visibility: "Slots visibility"
|
||||
slots_visibility_help: "You can determine how far in advance subscribers can view and reserve machine slots. When this setting is set, it takes precedence over the general settings."
|
||||
machines_visibility: "Visibility time limit, in hours (machines)"
|
||||
visibility_minimum: "Visibility cannot be less than 7 hours"
|
||||
save: "Save"
|
||||
create_success: "Plan(s) successfully created. Don't forget to redefine prices."
|
||||
update_success: "Planen har uppdaterats"
|
||||
plan_limit_form:
|
||||
usage_limitation: "Begränsningar och tillåten användning"
|
||||
usage_limitation_info: "Define a maximum number of reservation hours per day and per machine category. Machine categories that have no parameters configured will not be subject to any limitation."
|
||||
usage_limitation_switch: "Restrict machine reservations to a number of hours per day."
|
||||
new_usage_limitation: "Add a limitation of use"
|
||||
all_limitations: "All limitations"
|
||||
by_category: "By machines category"
|
||||
by_machine: "By machine"
|
||||
category: "Machines category"
|
||||
machine: "Machine name"
|
||||
max_hours_per_day: "Max. hours/day"
|
||||
ongoing_limitations: "Ongoing limitations"
|
||||
saved_limitations: "Saved limitations"
|
||||
cancel: "Cancel this limitation"
|
||||
cancel_deletion: "Cancel"
|
||||
ongoing_deletion: "Ongoing deletion"
|
||||
plan_limit_modal:
|
||||
title: "Manage limitation of use"
|
||||
limit_reservations: "Limit reservations"
|
||||
by_category: "By machines category"
|
||||
by_machine: "By machine"
|
||||
category: "Machines category"
|
||||
machine: "Machine name"
|
||||
categories_info: "If you select all machine categories, the limits will apply across the board."
|
||||
machine_info: "Please note that if you have already created a limitation for the machines category including the selected machine, it will be permanently overwritten."
|
||||
max_hours_per_day: "Maximum number of reservation hours per day"
|
||||
confirm: "Confirm"
|
||||
partner_modal:
|
||||
title: "Create a new partner"
|
||||
create_partner: "Create the partner"
|
||||
first_name: "First name"
|
||||
surname: "Last name"
|
||||
email: "Email address"
|
||||
field_is_required: "This field is required"
|
||||
plan_pricing_form:
|
||||
prices: "Prices"
|
||||
about_prices: "The prices defined here will apply to members subscribing to this plan, for machines and spaces. All prices are per hour."
|
||||
copy_prices_from: "Copy prices from"
|
||||
copy_prices_from_help: "This will replace all the prices of this plan with the prices of the selected plan"
|
||||
machines: "Machines"
|
||||
spaces: "Spaces"
|
||||
update_recurrent_modal:
|
||||
title: "Periodic event update"
|
||||
edit_recurring_event: "You're about to update a periodic event. What do you want to update?"
|
||||
edit_this_event: "Only this event"
|
||||
edit_this_and_next: "This event and the followings"
|
||||
edit_all: "All events"
|
||||
date_wont_change: "Warning: you have changed the event date. This modification won't be propagated to other occurrences of the periodic event."
|
||||
confirm: "Update the {MODE, select, single{event} other{events}}"
|
||||
advanced_accounting_form:
|
||||
title: "Advanced accounting parameters"
|
||||
code: "Accounting code"
|
||||
analytical_section: "Analytical section"
|
||||
accounting_codes_settings:
|
||||
code: "Accounting code"
|
||||
label: "Account label"
|
||||
journal_code: "Journal code"
|
||||
sales_journal: "Sales journal"
|
||||
financial: "Financial"
|
||||
card: "Card payments"
|
||||
wallet_debit: "Virtual wallet payments"
|
||||
other: "Other payment means"
|
||||
wallet_credit: "Virtual wallet credit"
|
||||
VAT: "VAT"
|
||||
sales: "Sales"
|
||||
subscriptions: "Subscriptions"
|
||||
machine: "Machine reservation"
|
||||
training: "Training reservation"
|
||||
event: "Event reservation"
|
||||
space: "Space reservation"
|
||||
prepaid_pack: "Pack of prepaid-hours"
|
||||
product: "Product of the store"
|
||||
error: "Erroneous invoices"
|
||||
error_help: "As part of a maintenance operation, it may exceptionally happen that invoices, that have been generated by mistake due to a bug in the software, are discovered. As these invoices cannot be deleted, they will be exported to the account defined here. Please manually cancel these invoices."
|
||||
advanced_accounting: "Advanced accounting"
|
||||
enable_advanced: "Enable the advanced accounting"
|
||||
enable_advanced_help: "This will enable the ability to have custom accounting codes per resources (machines, spaces, training ...). These codes can be modified on each resource edition form."
|
||||
save: "Save"
|
||||
update_success: "The accounting settings were successfully updated"
|
||||
#add a new machine
|
||||
machines_new:
|
||||
declare_a_new_machine: "Declare a new machine"
|
||||
#machine edition
|
||||
machines_edit:
|
||||
machine_edit: "Edit a machine"
|
||||
#manage the trainings & machines slots
|
||||
calendar:
|
||||
calendar_management: "Calendar management"
|
||||
trainings: "Trainings"
|
||||
machines: "Machines"
|
||||
spaces: "Spaces"
|
||||
events: "Events"
|
||||
availabilities: "Availabilities"
|
||||
availabilities_notice: "Export to an Excel workbook every slots available for reservation, and their occupancy rate."
|
||||
select_a_slot: "Please select a slot"
|
||||
info: "Info"
|
||||
tags: "Tags"
|
||||
slot_duration: "Slot duration: {DURATION} minutes"
|
||||
ongoing_reservations: "Ongoing reservations"
|
||||
without_reservation: "Without reservation"
|
||||
confirmation_required: "Confirmation required"
|
||||
do_you_really_want_to_cancel_the_USER_s_reservation_the_DATE_at_TIME_concerning_RESERVATION: "Do you really want to cancel {USER}'s reservation, the {DATE} at {TIME}, concerning {RESERVATION}?"
|
||||
reservation_was_successfully_cancelled: "Reservation was successfully cancelled."
|
||||
reservation_cancellation_failed: "Reservation cancellation failed."
|
||||
unable_to_remove_the_last_machine_of_the_slot_delete_the_slot_rather: "Unable to remove the last machine of the slot. Delete the slot rather."
|
||||
do_you_really_want_to_remove_MACHINE_from_this_slot: "Do you really want to remove \"{MACHINE}\" from this slot?"
|
||||
this_will_prevent_any_new_reservation_on_this_slot_but_wont_cancel_those_existing: "This will prevent any new reservation on this slot but won't cancel those existing."
|
||||
beware_this_cannot_be_reverted: "Beware: this cannot be reverted."
|
||||
the_machine_was_successfully_removed_from_the_slot: "The machine was successfully removed from the slot."
|
||||
deletion_failed: "Deletion failed."
|
||||
do_you_really_want_to_remove_PLAN_from_this_slot: "Do you really want to remove \"{PLAN}\" from this slot?"
|
||||
the_plan_was_successfully_removed_from_the_slot: "The plan was successfully removed from the slot."
|
||||
DATE_slot: "{DATE} slot:"
|
||||
what_kind_of_slot_do_you_want_to_create: "What kind of slot do you want to create?"
|
||||
training: "Training"
|
||||
machine: "Machine"
|
||||
space: "Space"
|
||||
next: "Next >"
|
||||
previous: "< Previous"
|
||||
select_some_machines: "Select some machines"
|
||||
select_all: "All"
|
||||
select_none: "None"
|
||||
manage_machines: "Click here to add or remove machines."
|
||||
manage_spaces: "Click here to add or remove spaces."
|
||||
manage_trainings: "Click here to add or remove trainings."
|
||||
number_of_tickets: "Number of tickets: "
|
||||
adjust_the_opening_hours: "Adjust the opening hours"
|
||||
to_time: "to" #e.g. from 18:00 to 21:00
|
||||
restrict_options: "Restriction options"
|
||||
restrict_with_labels: "Restrict this slot with labels"
|
||||
restrict_for_subscriptions: "Restrict this slot for subscription users"
|
||||
select_some_plans: "Select some plans"
|
||||
plans: "Plan(s):"
|
||||
recurrence: "Recurrence"
|
||||
enabled: "Enabled"
|
||||
period: "Period"
|
||||
week: "Week"
|
||||
month: "Month"
|
||||
number_of_periods: "Number of periods"
|
||||
end_date: "End date"
|
||||
summary: "Summary"
|
||||
select_period: "Please select a period for the recurrence"
|
||||
select_nb_period: "Please select a number of periods for the recurrence"
|
||||
select_end_date: "Please select the date of the last occurrence"
|
||||
about_to_create: "You are about to create the following {TYPE, select, machines{machine} training{training} space{space} other{other}} {NUMBER, plural, one{slot} other{slots}}:"
|
||||
divided_in_slots: "{COUNT, plural, =1{This slot} other{These slots}} will be open for booking in {DURATION}-minutes increments."
|
||||
reservable: "Reservable(s):"
|
||||
labels: "Label(s):"
|
||||
none: "None"
|
||||
slot_successfully_deleted: "The slot {START} - {END} has been successfully deleted"
|
||||
slots_deleted: "The slot of {START}, and {COUNT, plural, =1{one other} other{{COUNT} others}}, have been deleted"
|
||||
unable_to_delete_the_slot: "Unable to delete the slot {START} - {END}, probably because it's already reserved by a member"
|
||||
slots_not_deleted: "On {TOTAL} slots, {COUNT, plural, =1{one was not deleted} other{{COUNT} were not deleted}}. Some reservations may exist on {COUNT, plural, =1{it} other{them}}."
|
||||
you_should_select_at_least_a_machine: "You should select at least one machine on this slot."
|
||||
inconsistent_times: "Error: the end of the availability is before its beginning."
|
||||
min_one_slot: "The availability must be split in one slot at least."
|
||||
min_slot_duration: "You must specify a valid duration for the slots."
|
||||
export_is_running_you_ll_be_notified_when_its_ready: "Export is running. You'll be notified when it's ready."
|
||||
actions: "Actions"
|
||||
block_reservations: "Block reservations"
|
||||
do_you_really_want_to_block_this_slot: "Do you really want to block new reservations on this slot? It will become invisible to users."
|
||||
locking_success: "Slot successfully locked, it won't appear any longer in the user calendar"
|
||||
locking_failed: "An error occurred. Slot locking has failed"
|
||||
allow_reservations: "Allow reservations"
|
||||
do_you_really_want_to_allow_reservations: "Do you really want to allow booking again on this slot? It will become visible for the users."
|
||||
unlocking_success: "Slot successfully unlocked, it will appear again in the user calendar"
|
||||
unlocking_failed: "An error occurred. Slot unlocking has failed"
|
||||
reservations_locked: "Booking is blocked"
|
||||
unlockable_because_reservations: "Unable to block booking on this slot because some uncancelled reservations exist on it."
|
||||
delete_slot: "Delete this slot"
|
||||
do_you_really_want_to_delete_this_slot: "Do you really want to delete this slot?"
|
||||
delete_recurring_slot: "You're about to delete a recurring slot. What do you want to do?"
|
||||
delete_this_slot: "Only this slot"
|
||||
delete_this_and_next: "This slot and the following"
|
||||
delete_all: "All slots"
|
||||
event_in_the_past: "Create a slot in the past"
|
||||
confirm_create_event_in_the_past: "You are about to create a slot in the past. Are you sure you want to do this? Members will not be able to book this slot."
|
||||
edit_event: "Edit the event"
|
||||
view_reservations: "View reservations"
|
||||
legend: "Legend"
|
||||
and: "and"
|
||||
external_sync: "Calendar synchronization"
|
||||
divide_this_availability: "Divide this availability in"
|
||||
slots: "slots"
|
||||
slots_of: "of"
|
||||
minutes: "minutes"
|
||||
deleted_user: "Deleted user"
|
||||
select_type: "Please select a type to continue"
|
||||
no_modules_available: "No reservable module available. Please enable at least one module (machines, spaces or trainings) in the Customization section."
|
||||
#import external iCal calendar
|
||||
icalendar:
|
||||
icalendar_import: "iCalendar import"
|
||||
intro: "Fab-manager allows to automatically import calendar events, at RFC 5545 iCalendar format, from external URL. These URL are synchronized every hours and the events are shown in the public calendar. You can trigger a synchronisation too, by clicking on the corresponding button, in front of each import."
|
||||
new_import: "New ICS import"
|
||||
color: "Colour"
|
||||
text_color: "Text colour"
|
||||
url: "URL"
|
||||
name: "Name"
|
||||
example: "Example"
|
||||
display: "Display"
|
||||
hide_text: "Hide the text"
|
||||
hidden: "Hidden"
|
||||
shown: "Shown"
|
||||
create_error: "Unable to create iCalendar import. Please try again later"
|
||||
delete_failed: "Unable to delete the iCalendar import. Please try again later"
|
||||
refresh: "Updating..."
|
||||
sync_failed: "Unable to synchronize the URL. Please try again later"
|
||||
confirmation_required: "Confirmation required"
|
||||
confirm_delete_import: "Do you really want to delete this iCalendar import?"
|
||||
delete_success: "iCalendar import successfully deleted"
|
||||
#management of the projects' components & settings
|
||||
projects:
|
||||
name: "Name"
|
||||
projects_settings: "Projects settings"
|
||||
materials: "Materials"
|
||||
add_a_material: "Add a material"
|
||||
themes: "Themes"
|
||||
add_a_new_theme: "Add a new theme"
|
||||
project_categories: "Categories"
|
||||
add_a_new_project_category: "Add a new category"
|
||||
licences: "Licences"
|
||||
statuses: "Statuses"
|
||||
description: "Description"
|
||||
add_a_new_licence: "Add a new licence"
|
||||
manage_abuses: "Manage the reports"
|
||||
settings:
|
||||
title: "Settings"
|
||||
comments: "Comments"
|
||||
disqus: "Disqus"
|
||||
disqus_info: "If you want to enable your members and visitors to comment on projects, you can enable the Disqus forums by setting the following parameter. Visit <a href='https://help.disqus.com/customer/portal/articles/466208-what-s-a-shortname-' target='_blank'>the Disqus website</a> for more information."
|
||||
shortname: "Shortname"
|
||||
cad_files: "CAD files"
|
||||
validation: "Validation"
|
||||
validation_info: "Users can upload CAD (Computer Aided Design) files with the documentation of their projects. You can specify which files types are allowed. Use the test input below to determine the MIME type of a file."
|
||||
extensions: "Allowed extensions"
|
||||
new_extension: "New extension"
|
||||
new_ext_info_html: "<p>Specify a new file extension to allow these files to be uploaded.</p><p>Please consider that allowing file archives (eg. ZIP) or binary executable (eg. EXE) may result in a <strong>dangerous security issue</strong> and must be avoided in any cases.</p>"
|
||||
mime_types: "Allowed MIME types"
|
||||
new_mime_type: "New MIME type"
|
||||
new_type_info_html: "<p>Specify a new MIME type to allow these files to be uploaded.</p><p>Please use the test input to determine the MIME type of a file. Please consider that allowing file archives (eg. application/zip) or binary executable (eg. application/exe) may result in a <strong>dangerous security issue</strong> and must be avoided in any cases.</p>"
|
||||
test_file: "Test a file"
|
||||
set_a_file: "Select a file"
|
||||
file_is_TYPE: "MIME type of this file is {TYPE}"
|
||||
projects_sharing: "Projects sharing"
|
||||
open_lab_projects: "OpenLab Projects"
|
||||
open_lab_info_html: "Enable OpenLab to share your projects with other Fab Labs and display a gallery of shared projects. Please send an email to <a href='mailto:contact@fab-manager.com'>contact@fab-manager.com</a> to get your access credentials for free."
|
||||
open_lab_app_id: "ID"
|
||||
open_lab_app_secret: "Secret"
|
||||
openlab_default_info_html: "In the projects gallery, visitors can switch between two views: all shared projects from the whole OpenLab network, or only the projects documented in your Fab Lab.<br/>Here, you can choose which view is shown by default."
|
||||
default_to_openlab: "Display OpenLab by default"
|
||||
filters: Projects list filters
|
||||
project_categories: Categories
|
||||
project_categories:
|
||||
name: "Name"
|
||||
delete_dialog_title: "Confirmation required"
|
||||
delete_dialog_info: "The associations between this category and the projects will me deleted."
|
||||
projects_setting:
|
||||
add: "Add"
|
||||
actions_controls: "Actions"
|
||||
name: "Name"
|
||||
projects_setting_option:
|
||||
edit: "Edit"
|
||||
delete_option: "Delete Option"
|
||||
projects_setting_option_form:
|
||||
name: "Name"
|
||||
description: "Description"
|
||||
name_cannot_be_blank: "Name cannot be blank."
|
||||
save: "Save"
|
||||
cancel: "Cancel"
|
||||
status_settings:
|
||||
option_create_success: "Status was successfully created."
|
||||
option_delete_success: "Status was successfully deleted."
|
||||
option_update_success: "Status was successfully updated."
|
||||
#track and monitor the trainings
|
||||
trainings:
|
||||
trainings_monitoring: "Trainings monitoring"
|
||||
all_trainings: "All trainings"
|
||||
add_a_new_training: "Add a new training"
|
||||
name: "Training name"
|
||||
associated_machines: "Associated machines"
|
||||
cancellation: "Cancellation (attendees | deadline)"
|
||||
cancellation_minimum: "{ATTENDEES} minimum"
|
||||
cancellation_deadline: "{DEADLINE} h"
|
||||
capacity: "Capacity (max. attendees)"
|
||||
authorisation: "Time-limited authorisation"
|
||||
period_MONTH: "{MONTH} {MONTH, plural, one{month} other{months}}"
|
||||
active_true: "Yes"
|
||||
active_false: "No"
|
||||
validation_rule: "Lapsed without reservation"
|
||||
select_a_training: "Select a training"
|
||||
training: "Training"
|
||||
date: "Date"
|
||||
year_NUMBER: "Year {NUMBER}"
|
||||
month_of_NAME: "Month of {NAME}"
|
||||
NUMBER_reservation: "{NUMBER} {NUMBER, plural, one{reservation} other{reservations}}"
|
||||
none: "None"
|
||||
training_validation: "Training validation"
|
||||
training_of_the_DATE_TIME_html: "Training of the <strong>{DATE} - {TIME}</strong>"
|
||||
you_can_validate_the_training_of_the_following_members: "You can validate the training of the following members:"
|
||||
deleted_user: "Deleted user"
|
||||
no_reservation: "No reservation"
|
||||
validate_the_trainings: "Validate the trainings"
|
||||
edition_of_the_description_tooltip: "Edition of the description tooltip"
|
||||
describe_the_training_in_a_few_words: "Describe the training in a few words."
|
||||
description_is_limited_to_255_characters: "Description is limited to 255 characters."
|
||||
description_was_successfully_saved: "Description was successfully saved."
|
||||
training_successfully_deleted: "Training successfully deleted."
|
||||
unable_to_delete_the_training_because_some_users_already_booked_it: "Unable to delete the training because some users already booked it."
|
||||
confirmation_required: "Confirmation required"
|
||||
do_you_really_want_to_delete_this_training: "Do you really want to delete this training?"
|
||||
filter_status: "Filter:"
|
||||
status_enabled: "Enabled"
|
||||
status_disabled: "Disabled"
|
||||
status_all: "All"
|
||||
trainings_settings: "Settings"
|
||||
#create a new training
|
||||
trainings_new:
|
||||
add_a_new_training: "Add a new training"
|
||||
trainings_settings:
|
||||
title: "Settings"
|
||||
automatic_cancellation: "Trainings automatic cancellation"
|
||||
automatic_cancellation_info: "Minimum number of participants required to maintain a session. You will be notified if a session is cancelled. Credit notes and refunds will be automatic if the wallet is enabled. Otherwise you will have to do it manually."
|
||||
automatic_cancellation_switch: "Activate automatic cancellation for all the trainings"
|
||||
automatic_cancellation_threshold: "Minimum number of registrations to maintain a session"
|
||||
must_be_positive: "You must specify a number above or equal to 0"
|
||||
automatic_cancellation_deadline: "Deadline, in hours, before automatic cancellation"
|
||||
must_be_above_zero: "You must specify a number above or equal to 1"
|
||||
authorization_validity: "Authorisations validity period"
|
||||
authorization_validity_info: "Define a validity period for all training authorisations. After this period, the authorisation will lapse"
|
||||
authorization_validity_switch: "Activate an authorization validity period"
|
||||
authorization_validity_period: "Validity period in months"
|
||||
validation_rule: "Authorisations cancellation rule"
|
||||
validation_rule_info: "Define a rule that cancel an authorisation if the machines associated with the training are not reserved for a specific period of time. This rule prevails over the authorisations validity period."
|
||||
validation_rule_switch: "Activate the validation rule"
|
||||
validation_rule_period: "Time limit in months"
|
||||
generic_text_block: "Editorial text block"
|
||||
generic_text_block_info: "Displays an editorial block above the list of trainings visible to members."
|
||||
generic_text_block_switch: "Display editorial block"
|
||||
cta_switch: "Display a button"
|
||||
cta_label: "Button label"
|
||||
cta_url: "url"
|
||||
save: "Save"
|
||||
update_success: "The trainings settings were successfully updated"
|
||||
#events tracking and management
|
||||
events:
|
||||
settings: "Settings"
|
||||
events_monitoring: "Events monitoring"
|
||||
manage_filters: "Manage filters"
|
||||
fablab_events: "Fablab events"
|
||||
add_an_event: "Add an event"
|
||||
all_events: "All events"
|
||||
passed_events: "Passed events"
|
||||
events_to_come: "Events to come"
|
||||
events_to_come_asc: "Events to come | chronological order"
|
||||
on_DATE: "on {DATE}"
|
||||
from_DATE: "from {DATE}"
|
||||
from_TIME: "from {TIME}"
|
||||
to_date: "to" #e.g.: from 01/01 to 01/05
|
||||
to_time: "to" #e.g. from 18:00 to 21:00
|
||||
title: "Title"
|
||||
dates: "Dates"
|
||||
booking: "Booking"
|
||||
sold_out: "Sold out"
|
||||
cancelled: "Cancelled"
|
||||
without_reservation: "Without reservation"
|
||||
free_admission: "Free admission"
|
||||
view_reservations: "View reservations"
|
||||
load_the_next_events: "Load the next events..."
|
||||
categories: "Categories"
|
||||
add_a_category: "Add a category"
|
||||
name: "Name"
|
||||
themes: "Theme"
|
||||
add_a_theme: "Add a theme"
|
||||
age_ranges: "Age ranges"
|
||||
add_a_range: "Add a range"
|
||||
do_you_really_want_to_delete_this_ELEMENT: "Do you really want to delete this {ELEMENT, select, category{category} theme{theme} age_range{age range} other{element}}?"
|
||||
unable_to_delete_ELEMENT_already_in_use_NUMBER_times: "Unable to delete this {ELEMENT, select, category{category} theme{theme} age_range{age range} other{element}} because it is already associated with {NUMBER, plural, =0{no events} one{one event} other{{NUMBER} events}}."
|
||||
at_least_one_category_is_required: "At least one category is required."
|
||||
unable_to_delete_the_last_one: "Unable to delete the last one."
|
||||
unable_to_delete_an_error_occured: "Unable to delete: an error occurred."
|
||||
manage_prices_categories: "Manage prices' categories"
|
||||
prices_categories: "Prices' categories"
|
||||
add_a_price_category: "Add a price's category"
|
||||
usages_count: "Usages count"
|
||||
price_category: "Price category"
|
||||
category_name: "Category's name"
|
||||
category_name_is_required: "Category's name is required."
|
||||
enter_here_the_conditions_under_which_this_price_is_applicable: "Enter here the conditions under which this price is applicable"
|
||||
conditions_are_required: "Conditions are required."
|
||||
price_category_successfully_created: "Price category successfully created."
|
||||
unable_to_add_the_price_category_check_name_already_used: "Unable to add the price category, check that the name is not already used."
|
||||
unexpected_error_occurred_please_refresh: "An unexpected error occurred, please refresh the page."
|
||||
price_category_successfully_updated: "Price category successfully updated."
|
||||
unable_to_update_the_price_category: "Unable to update the price category."
|
||||
unable_to_delete_this_price_category_because_it_is_already_used: "Unable to delete this price category because it is already used."
|
||||
do_you_really_want_to_delete_this_price_category: "Do you really want to delete this price category?"
|
||||
price_category_successfully_deleted: "Price category successfully deleted."
|
||||
price_category_deletion_failed: "Price category deletion failed."
|
||||
types: "Types"
|
||||
event_type:
|
||||
standard: "Standard"
|
||||
family: "Reserved for members"
|
||||
nominative: "Nominative"
|
||||
pre_registration: "Pre-registration"
|
||||
NUMBER_pre_registered: " {NUMBER} pre-registered"
|
||||
#add a new event
|
||||
events_new:
|
||||
add_an_event: "Add an event"
|
||||
none: "None"
|
||||
every_days: "Every days"
|
||||
every_week: "Every week"
|
||||
every_month: "Every month"
|
||||
every_year: "Every year"
|
||||
#edit an existing event
|
||||
events_edit:
|
||||
edit_the_event: "Edit the event"
|
||||
confirmation_required: "Confirmation required"
|
||||
edit_recurring_event: "You're about to update a periodic event. What do you want to update?"
|
||||
edit_this_event: "Only this event"
|
||||
edit_this_and_next: "This event and the following"
|
||||
edit_all: "All events"
|
||||
date_wont_change: "Warning: you have changed the event date. This modification won't be propagated to other occurrences of the periodic event."
|
||||
event_successfully_updated: "Event successfully updated."
|
||||
events_updated: "The event, and {COUNT, plural, =1{one other} other{{COUNT} others}}, have been updated"
|
||||
unable_to_update_the_event: "Unable to update the event"
|
||||
events_not_updated: "On {TOTAL} events, {COUNT, plural, =1{one was not updated} other{{COUNT} were not deleted}}."
|
||||
error_deleting_reserved_price: "Unable to delete the requested price because it is associated with some reservations"
|
||||
other_error: "An unexpected error occurred while updating the event"
|
||||
#event reservations list
|
||||
event_reservations:
|
||||
the_reservations: "Reservations:"
|
||||
user: "User"
|
||||
payment_date: "Payment date"
|
||||
full_price_: "Full price:"
|
||||
reserved_tickets: "Reserved tickets"
|
||||
show_the_event: "Show the event"
|
||||
no_reservations_for_now: "No reservation for now."
|
||||
back_to_monitoring: "Back to monitoring"
|
||||
canceled: "Canceled"
|
||||
date: "Date"
|
||||
booked_by: "Booked by"
|
||||
reservations: "Reservations"
|
||||
status: "Status"
|
||||
gestion: "Gestion"
|
||||
validation: "Validation"
|
||||
event_status:
|
||||
pre_registered: "Pre-registered"
|
||||
to_pay: "To pay"
|
||||
paid: "Paid"
|
||||
canceled: "Canceled"
|
||||
present: "Present"
|
||||
registered: "Registered"
|
||||
not_validated: "Not validated"
|
||||
affirmative: "yes"
|
||||
negative: "no"
|
||||
validate: "Validate"
|
||||
pay: "Pay"
|
||||
validate_the_reservation: "Validate the reservation"
|
||||
do_you_really_want_to_validate_this_reservation_this_apply_to_all_booked_tickets: "Do you really want to validate this reservation? This apply to ALL booked tickets."
|
||||
reservation_was_successfully_validated: "Reservation was successfully validated."
|
||||
validation_failed: "Validation failed."
|
||||
reservation_was_successfully_invalidated: "Reservation was successfully invalidated."
|
||||
invalidation_failed: "Invalidation failed."
|
||||
confirm_payment: "Confirm payment"
|
||||
confirm_payment_of_html: "{ROLE, select, admin{Cash} other{Pay}}: {AMOUNT}" #(contexte : validate a payment of $20,00)
|
||||
offer_this_reservation: "I offer this reservation"
|
||||
i_have_received_the_payment: "I have received the payment"
|
||||
reservation_was_successfully_paid: "Reservation was successfully paid."
|
||||
present: "Present"
|
||||
confirm_present: "Confirm presence"
|
||||
confirm_present_info: "Confirm the presence of the user for this event"
|
||||
reservation_was_successfully_present: "The presence of the user was successfully confirmed."
|
||||
age: "{NUMBER} years old"
|
||||
events_settings:
|
||||
title: "Settings"
|
||||
generic_text_block: "Editorial text block"
|
||||
generic_text_block_info: "Displays an editorial block above the list of events visible to members."
|
||||
generic_text_block_switch: "Display editorial block"
|
||||
cta_switch: "Display a button"
|
||||
cta_label: "Button label"
|
||||
cta_url: "url"
|
||||
save: "Save"
|
||||
update_success: "The events settings were successfully updated"
|
||||
#subscriptions, prices, credits and coupons management
|
||||
pricing:
|
||||
pricing_management: "Pricing management"
|
||||
subscriptions: "Subscriptions"
|
||||
trainings: "Trainings"
|
||||
list_of_the_subscription_plans: "List of the subscription plans"
|
||||
disabled_plans_info_html: "<p><strong>Warning:</strong> the subscriptions are disabled on this application.</p><p>You can still create some, but they won't be available until the activation of the plans module, from the « Customization » section.</p>"
|
||||
add_a_new_subscription_plan: "Add a new subscription plan"
|
||||
name: "Name"
|
||||
duration: "Duration"
|
||||
group: "Group"
|
||||
category: "Category"
|
||||
prominence: "Prominence"
|
||||
price: "Price"
|
||||
machine_hours: "Machine slots"
|
||||
prices_calculated_on_hourly_rate_html: "All the prices will be automatically calculated based on the hourly rate defined here.<br/><em>For example</em>, if you define an hourly rate at {RATE}: a slot of {DURATION} minutes, will be charged <strong>{PRICE}</strong>."
|
||||
you_can_override: "You can override this duration for each availability you create in the agenda. The price will then be adjusted accordingly."
|
||||
machines: "Machines"
|
||||
credits: "Credits"
|
||||
subscription: "Subscription"
|
||||
related_trainings: "Related trainings"
|
||||
add_a_machine_credit: "Add a machine credit"
|
||||
machine: "Machine"
|
||||
hours: "Slots (default {DURATION} minutes)"
|
||||
related_subscriptions: "Related subscriptions"
|
||||
please_specify_a_number: "Please specify a number."
|
||||
none: "None" #grammar concordance with training.
|
||||
an_error_occurred_while_saving_the_number_of_credits: "An error occurred while saving the number of credits."
|
||||
an_error_occurred_while_deleting_credit_with_the_TRAINING: "An error occurred while deleting credit with the {TRAINING}."
|
||||
an_error_occurred_unable_to_find_the_credit_to_revoke: "An error occurred: unable to find the credit to revoke."
|
||||
an_error_occurred_while_creating_credit_with_the_TRAINING: "An error occurred while creating credit with the {TRAINING}."
|
||||
not_set: "Not set"
|
||||
error_a_credit_linking_this_machine_with_that_subscription_already_exists: "Error: a credit linking this machine with that subscription already exists."
|
||||
changes_have_been_successfully_saved: "Changes have been successfully saved."
|
||||
credit_was_successfully_saved: "Credit was successfully saved."
|
||||
error_creating_credit: "Unable to create credit, an error occurred"
|
||||
do_you_really_want_to_delete_this_subscription_plan: "Do you really want to delete this subscription plan?"
|
||||
subscription_plan_was_successfully_deleted: "Subscription plan was successfully deleted."
|
||||
unable_to_delete_the_specified_subscription_an_error_occurred: "Unable to delete the specified subscription, an error occurred."
|
||||
coupons: "Coupons"
|
||||
list_of_the_coupons: "List of the coupons"
|
||||
discount: "Discount"
|
||||
nb_of_usages: "Number of usages"
|
||||
status: "Status"
|
||||
add_a_new_coupon: "Add a new coupon"
|
||||
display_more_coupons: "Display the next coupons"
|
||||
disabled: "Disabled"
|
||||
expired: "Expired"
|
||||
sold_out: "Sold out"
|
||||
active: "Active"
|
||||
all: "Display all"
|
||||
confirmation_required: "Confirmation required"
|
||||
do_you_really_want_to_delete_this_coupon: "Do you really want to delete this coupon?"
|
||||
coupon_was_successfully_deleted: "Coupon was successfully deleted."
|
||||
unable_to_delete_the_specified_coupon_already_in_use: "Unable to delete the specified coupon: it is already used with some invoices and/or some payment schedules."
|
||||
unable_to_delete_the_specified_coupon_an_unexpected_error_occurred: "Unable to delete the specified coupon: an unexpected error occurred."
|
||||
send_a_coupon: "Send a coupon"
|
||||
coupon: "Coupon"
|
||||
usages: "Usages"
|
||||
unlimited: "Unlimited"
|
||||
coupon_successfully_sent_to_USER: "Coupon successfully sent to {USER}"
|
||||
an_error_occurred_unable_to_send_the_coupon: "An unexpected error prevent from sending the coupon."
|
||||
code: "Code"
|
||||
enabled: "Enabled"
|
||||
validity_per_user: "Validity per user"
|
||||
once: "Just once"
|
||||
forever: "Each use"
|
||||
valid_until: "Valid until (included)"
|
||||
spaces: "Spaces"
|
||||
these_prices_match_space_hours_rates_html: "The prices below match one hour of space usage, <strong>without subscription</strong>."
|
||||
add_a_space_credit: "Add a Space credit"
|
||||
space: "Space"
|
||||
error_a_credit_linking_this_space_with_that_subscription_already_exists: "Error: a credit linking this space with that subscription already exists."
|
||||
status_enabled: "Enabled"
|
||||
status_disabled: "Disabled"
|
||||
status_all: "All"
|
||||
spaces_pricing:
|
||||
prices_match_space_hours_rates_html: "The prices below match one hour of space reservation, <strong>without subscription</strong>."
|
||||
prices_calculated_on_hourly_rate_html: "All the prices will be automatically calculated based on the hourly rate defined here.<br/><em>For example</em>, if you define an hourly rate at {RATE}: a slot of {DURATION} minutes, will be charged <strong>{PRICE}</strong>."
|
||||
you_can_override: "You can override this duration for each availability you create in the agenda. The price will then be adjusted accordingly."
|
||||
extended_prices: "Moreover, you can define extended prices which will apply in priority over the hourly rate below. Extended prices allow you, for example, to set a favorable price for a booking of several hours."
|
||||
spaces: "Spaces"
|
||||
price_updated: "Price successfully updated"
|
||||
machines_pricing:
|
||||
prices_match_machine_hours_rates_html: "The prices below match one hour of machine usage, <strong>without subscription</strong>."
|
||||
prices_calculated_on_hourly_rate_html: "All the prices will be automatically calculated based on the hourly rate defined here.<br/><em>For example</em>, if you define an hourly rate at {RATE}: a slot of {DURATION} minutes, will be charged <strong>{PRICE}</strong>."
|
||||
you_can_override: "You can override this duration for each availability you create in the agenda. The price will then be adjusted accordingly."
|
||||
machines: "Machines"
|
||||
price_updated: "Price successfully updated"
|
||||
configure_packs_button:
|
||||
pack: "prepaid pack"
|
||||
packs: "Prepaid packs"
|
||||
no_packs: "No packs for now"
|
||||
pack_DURATION: "{DURATION} hours"
|
||||
delete_confirmation: "Are you sure you want to delete this prepaid pack? This won't be possible if the pack was already bought by users."
|
||||
edit_pack: "Edit the pack"
|
||||
confirm_changes: "Confirm changes"
|
||||
pack_successfully_updated: "The prepaid pack was successfully updated."
|
||||
configure_extended_prices_button:
|
||||
extended_prices: "Extended prices"
|
||||
no_extended_prices: "No extended price for now"
|
||||
extended_price_DURATION: "{DURATION} hours"
|
||||
extended_price_form:
|
||||
duration: "Duration (hours)"
|
||||
amount: "Price"
|
||||
pack_form:
|
||||
hours: "Hours"
|
||||
amount: "Price"
|
||||
disabled: "Disabled"
|
||||
validity_count: "Maximum validity"
|
||||
select_interval: "Interval..."
|
||||
intervals:
|
||||
day: "{COUNT, plural, one{Day} other{Days}}"
|
||||
week: "{COUNT, plural, one{Week} other{Weeks}}"
|
||||
month: "{COUNT, plural, one{Month} other{Months}}"
|
||||
year: "{COUNT, plural, one{Year} other{Years}}"
|
||||
create_pack:
|
||||
new_pack: "New prepaid pack"
|
||||
new_pack_info: "A prepaid pack allows users to buy {TYPE, select, Machine{machine} Space{space} other{}} hours before booking any slots. These packs can provide discounts on volumes purchases."
|
||||
create_pack: "Create this pack"
|
||||
pack_successfully_created: "The new prepaid pack was successfully created."
|
||||
create_extended_price:
|
||||
new_extended_price: "New extended price"
|
||||
new_extended_price_info: "Extended prices allows you to define prices based on custom durations, instead of the default hourly rates."
|
||||
create_extended_price: "Create extended price"
|
||||
extended_price_successfully_created: "The new extended price was successfully created."
|
||||
delete_extended_price:
|
||||
extended_price_deleted: "The extended price was successfully deleted."
|
||||
unable_to_delete: "Unable to delete the extended price: "
|
||||
delete_extended_price: "Delete the extended price"
|
||||
confirm_delete: "Delete"
|
||||
delete_confirmation: "Are you sure you want to delete this extended price?"
|
||||
edit_extended_price:
|
||||
edit_extended_price: "Edit the extended price"
|
||||
confirm_changes: "Confirm changes"
|
||||
extended_price_successfully_updated: "The extended price was successfully updated."
|
||||
plans_categories:
|
||||
manage_plans_categories: "Manage plans' categories"
|
||||
plan_categories_list:
|
||||
categories_list: "List of the plan's categories"
|
||||
no_categories: "No categories"
|
||||
name: "Name"
|
||||
description: "Description"
|
||||
significance: "Significance"
|
||||
manage_plan_category:
|
||||
create: "New category"
|
||||
update: "Edit the category"
|
||||
plan_category_form:
|
||||
name: "Name"
|
||||
description: "Description"
|
||||
significance: "Significance"
|
||||
info: "Categories will be shown ordered by signifiance. The higher you set the significance, the first the category will be shown."
|
||||
create:
|
||||
title: "New category"
|
||||
cta: "Create the category"
|
||||
success: "The new category was successfully created"
|
||||
error: "Unable to create the category: "
|
||||
update:
|
||||
title: "Edit the category"
|
||||
cta: "Validate"
|
||||
success: "The category was successfully updated"
|
||||
error: "Unable to update the category: "
|
||||
delete_plan_category:
|
||||
title: "Delete a category"
|
||||
confirm: "Are you sure you want to delete this category? If you do, the plans associated with this category won't be sorted anymore."
|
||||
cta: "Delete"
|
||||
success: "The category was successfully deleted"
|
||||
error: "Unable to delete the category: "
|
||||
#ajouter un code promotionnel
|
||||
coupons_new:
|
||||
add_a_coupon: "Add a coupon"
|
||||
unable_to_create_the_coupon_check_code_already_used: "Unable to create the coupon. Please check that the code is not already used."
|
||||
#mettre à jour un code promotionnel
|
||||
coupons_edit:
|
||||
coupon: "Coupon:"
|
||||
unable_to_update_the_coupon_an_error_occurred: "Unable to update the coupon: an error occurred."
|
||||
plans:
|
||||
#add a subscription plan on the platform
|
||||
new:
|
||||
add_a_subscription_plan: "Add a subscription plan"
|
||||
#edit a subscription plan / machine slots prices
|
||||
edit:
|
||||
subscription_plan: "Subscription plan:"
|
||||
#list of all invoices & invoicing parameters
|
||||
invoices:
|
||||
invoices: "Invoices"
|
||||
accounting_periods: "Accounting periods"
|
||||
invoices_list: "Invoices list"
|
||||
filter_invoices: "Filter invoices"
|
||||
operator_: "Operator:"
|
||||
invoice_num_: "Invoice #:"
|
||||
customer_: "Customer:"
|
||||
date_: "Date:"
|
||||
invoice_num: "Invoice #"
|
||||
date: "Date"
|
||||
price: "Price"
|
||||
customer: "Customer"
|
||||
download_the_invoice: "Download the invoice"
|
||||
download_the_credit_note: "Download the credit note"
|
||||
credit_note: "Credit note"
|
||||
display_more_invoices: "Display more invoices..."
|
||||
no_invoices_for_now: "No invoices for now."
|
||||
payment_schedules: "Payment schedules"
|
||||
invoicing_settings: "Invoicing settings"
|
||||
edit_setting_info_html: "<strong>Information</strong><p>Hover over the invoice elements below, all items that light up in yellow are editable.</p>"
|
||||
warning_invoices_disabled: "Warning: invoices are not enabled. No invoices will be generated by Fab-manager. Nevertheless, you must correctly fill the information below, especially VAT."
|
||||
change_logo: "Change logo"
|
||||
john_smith: "John Smith"
|
||||
john_smith_at_example_com: "jean.smith@example.com"
|
||||
invoice_reference_: "Invoice reference:"
|
||||
code_: "Code:"
|
||||
code_disabled: "Code disabled"
|
||||
order_num: "Order #:"
|
||||
invoice_issued_on_DATE_at_TIME: "Invoice issued on {DATE} at {TIME}"
|
||||
object_reservation_of_john_smith_on_DATE_at_TIME: "Object: Reservation of John Smith on {DATE} at {TIME}"
|
||||
order_summary: "Order summary:"
|
||||
details: "Details"
|
||||
amount: "Amount"
|
||||
machine_booking-3D_printer: "Machine booking - 3D printer"
|
||||
training_booking-3D_print: "Training booking - initiation to 3d printing"
|
||||
total_amount: "Total amount"
|
||||
total_including_all_taxes: "Total incl. all taxes"
|
||||
VAT_disabled: "VAT disabled"
|
||||
VAT_enabled: "VAT enabled"
|
||||
including_VAT: "Including {NAME} {RATE}% of {AMOUNT}"
|
||||
including_total_excluding_taxes: "Including Total excl. taxes"
|
||||
including_amount_payed_on_ordering: "Including amount payed on ordering"
|
||||
settlement_by_debit_card_on_DATE_at_TIME_for_an_amount_of_AMOUNT: "Settlement by debit card on {DATE} at {TIME}, for an amount of {AMOUNT}"
|
||||
important_notes: "Important notes"
|
||||
address_and_legal_information: "Address and legal information"
|
||||
invoice_reference: "Invoice reference"
|
||||
invoice_reference_is_required: "Invoice reference is required."
|
||||
text: "text"
|
||||
year: "Year"
|
||||
month: "Month"
|
||||
day: "Day"
|
||||
num_of_invoice: "Num. of invoice"
|
||||
online_sales: "Online sales"
|
||||
wallet: "Wallet"
|
||||
refund: "Refund"
|
||||
payment_schedule: "Payment schedule"
|
||||
model: "Model"
|
||||
documentation: "Documentation"
|
||||
2_digits_year: "2 digits year (eg. 70)"
|
||||
4_digits_year: "4 digits year (eg. 1970)"
|
||||
month_number: "Month number (eg. 1)"
|
||||
2_digits_month_number: "2 digits month number (eg. 01)"
|
||||
3_characters_month_name: "3 characters month name (eg. JAN)"
|
||||
day_in_the_month: "Day in the month (eg. 1)"
|
||||
2_digits_day_in_the_month: "2 digits in the month (eg. 01)"
|
||||
n_digits_daily_count_of_invoices: "(n) digits, daily count of invoices (eg. ddd => 002 : 2nd invoice of the day)"
|
||||
n_digits_monthly_count_of_invoices: "(n) digits, monthly count of invoices (eg. mmmm => 0012 : 12th invoice of the month)"
|
||||
n_digits_annual_amount_of_invoices: "(n) digits, annual count of invoices (ex. yyyyyy => 000008 : 8th invoice of this year)"
|
||||
beware_if_the_number_exceed_the_specified_length_it_will_be_truncated_by_the_left: "Beware: if the number exceed the specified length, it will be truncated by the left."
|
||||
n_digits_count_of_orders: "(n) digits, count of invoices (eg. nnnn => 0327 : 327th order)"
|
||||
n_digits_daily_count_of_orders: "(n) digits, daily count of orders (eg. ddd => 002 : 2nd order of the day)"
|
||||
n_digits_monthly_count_of_orders: "(n) digits, monthly count of orders (eg. mmmm => 0012 : 12th order of the month)"
|
||||
n_digits_annual_amount_of_orders: "(n) digits, annual count of orders (ex. yyyyyy => 000008 : 8th order of this year)"
|
||||
add_a_notice_regarding_the_online_sales_only_if_the_invoice_is_concerned: "Add a notice regarding the online sales, only if the invoice is concerned."
|
||||
this_will_never_be_added_when_a_refund_notice_is_present: "This will never be added when a refund notice is present."
|
||||
eg_XVL_will_add_VL_to_the_invoices_settled_by_card: '(eg. X[/VL] will add "/VL" to the invoices settled by online card)'
|
||||
add_a_notice_regarding_refunds_only_if_the_invoice_is_concerned: "Add a notice regarding refunds, only if the invoice is concerned."
|
||||
this_will_never_be_added_when_an_online_sales_notice_is_present: "This will never be added when an online sales notice is present."
|
||||
eg_RA_will_add_A_to_the_refund_invoices: '(eg. R[/A] will add "/A" to the refund invoices)'
|
||||
add_a_notice_regarding_payment_schedule: "Add a notice regarding the payment schedules, only for concerned documents."
|
||||
this_will_never_be_added_with_other_notices: "This will never be added when any other notice is present."
|
||||
eg_SE_to_schedules: '(eg. S[/E] will add "/E" to the payment schedules)'
|
||||
code: "Code"
|
||||
enable_the_code: "Enable the code"
|
||||
enabled: "Enabled"
|
||||
disabled: "Disabled"
|
||||
order_number: "Order number"
|
||||
elements: "Elements"
|
||||
VAT: "VAT"
|
||||
enable_VAT: "Enable VAT"
|
||||
VAT_rate: "VAT rate"
|
||||
VAT_history: "VAT rates history"
|
||||
VAT_notice: "This parameter configures the general case of the VAT rate and applies to everything sold by the Fablab. It is possible to override this parameter by setting a specific VAT rate for each object."
|
||||
edit_multi_VAT_button: "More options"
|
||||
multiVAT: "Advanced VAT"
|
||||
multi_VAT_notice: "<strong>Please note</strong>: The current general rate is {RATE}%. Here you can define different VAT rates for each category.<br><br>For example, you can override this value, only for machine reservations, by filling in the corresponding field below. If no value is filled in, the general rate will apply."
|
||||
VAT_rate_machine: "Machine reservation"
|
||||
VAT_rate_space: "Space reservation"
|
||||
VAT_rate_training: "Training reservation"
|
||||
VAT_rate_event: "Event reservation"
|
||||
VAT_rate_subscription: "Subscription"
|
||||
VAT_rate_product: "Products (store)"
|
||||
changed_at: "Changed at"
|
||||
changed_by: "By"
|
||||
deleted_user: "Deleted user"
|
||||
refund_invoice_successfully_created: "Refund invoice successfully created."
|
||||
create_a_refund_on_this_invoice: "Create a refund on this invoice"
|
||||
refund_mode: "Refund mode:"
|
||||
do_you_want_to_disable_the_user_s_subscription: "Do you want to disabled the user's subscription:"
|
||||
elements_to_refund: "Elements to refund"
|
||||
description: "Description"
|
||||
description_optional: "Description (optional):"
|
||||
will_appear_on_the_refund_invoice: "Will appear on the refund invoice."
|
||||
none: "None" #grammar concordance with payment mean
|
||||
by_cash: "By cash"
|
||||
by_cheque: "By cheque"
|
||||
by_transfer: "By transfer"
|
||||
by_wallet: "By wallet"
|
||||
you_must_select_at_least_one_element_to_create_a_refund: "You must select at least one element, to create a refund."
|
||||
unable_to_create_the_refund: "Unable to create the refund"
|
||||
invoice_reference_successfully_saved: "Invoice reference successfully saved."
|
||||
an_error_occurred_while_saving_invoice_reference: "An error occurred while saving invoice reference."
|
||||
invoicing_code_succesfully_saved: "Invoicing code successfully saved."
|
||||
an_error_occurred_while_saving_the_invoicing_code: "An error occurred while saving the invoicing code."
|
||||
code_successfully_activated: "Code successfully activated."
|
||||
code_successfully_disabled: "Code successfully disabled."
|
||||
an_error_occurred_while_activating_the_invoicing_code: "An error occurred while activating the invoicing code."
|
||||
order_number_successfully_saved: "Order number successfully saved."
|
||||
an_error_occurred_while_saving_the_order_number: "An error occurred while saving the order number."
|
||||
VAT_rate_successfully_saved: "VAT rate successfully saved."
|
||||
an_error_occurred_while_saving_the_VAT_rate: "An error occurred while saving the VAT rate."
|
||||
VAT_successfully_activated: "VAT successfully activated."
|
||||
VAT_successfully_disabled: "VAT successfully disabled."
|
||||
an_error_occurred_while_activating_the_VAT: "An error occurred while activating the VAT."
|
||||
text_successfully_saved: "Text successfully saved."
|
||||
an_error_occurred_while_saving_the_text: "An error occurred while saving the text."
|
||||
address_and_legal_information_successfully_saved: "Address and legal information successfully saved."
|
||||
an_error_occurred_while_saving_the_address_and_the_legal_information: "An error occurred while saving the address and the legal information."
|
||||
logo_successfully_saved: "Logo successfully saved."
|
||||
an_error_occurred_while_saving_the_logo: "An error occurred while saving the logo."
|
||||
filename: "File name"
|
||||
schedule_filename: "Schedule file name"
|
||||
prefix_info: "The invoices will be generated as PDF files, named with the following prefix."
|
||||
schedule_prefix_info: "The payment schedules will be generated as PDF files, named with the following prefix."
|
||||
prefix: "Prefix"
|
||||
prefix_successfully_saved: "File prefix successfully saved"
|
||||
an_error_occurred_while_saving_the_prefix: "An error occurred while saving the file prefix"
|
||||
online_payment: "Online payment"
|
||||
close_accounting_period: "Close an accounting period"
|
||||
close_from_date: "Close from"
|
||||
start_date_is_required: "Start date is required"
|
||||
close_until_date: "Close until"
|
||||
end_date_is_required: "End date is required"
|
||||
previous_closings: "Previous closings"
|
||||
start_date: "From"
|
||||
end_date: "To"
|
||||
closed_at: "Closed at"
|
||||
closed_by: "By"
|
||||
period_total: "Period total"
|
||||
perpetual_total: "Perpetual total"
|
||||
integrity: "Integrity check"
|
||||
confirmation_required: "Confirmation required"
|
||||
confirm_close_START_END: "Do you really want to close the accounting period between {START} and {END}? Any subsequent changes will be impossible."
|
||||
period_must_match_fiscal_year: "A closing must occur at the end of a minimum annual period, or per financial year when it is not calendar-based."
|
||||
this_may_take_a_while: "This operation will take some time to complete."
|
||||
period_START_END_closed_success: "The accounting period from {START} to {END} has been successfully closed. Archive generation is running, you'll be notified when it's done."
|
||||
failed_to_close_period: "An error occurred, unable to close the accounting period"
|
||||
no_periods: "No closings for now"
|
||||
accounting_codes: "Accounting codes"
|
||||
export_accounting_data: "Export accounting data"
|
||||
export_what: "What do you want to export?"
|
||||
export_VAT: "Export the collected VAT"
|
||||
export_to_ACD: "Export all data to the accounting software ACD"
|
||||
export_is_running: "Export is running. You'll be notified when it's ready."
|
||||
export_form_date: "Export from"
|
||||
export_to_date: "Export until"
|
||||
format: "File format"
|
||||
encoding: "Encoding"
|
||||
separator: "Separator"
|
||||
dateFormat: "Date format"
|
||||
labelMaxLength: "Label (max)"
|
||||
decimalSeparator: "Decimal separator"
|
||||
exportInvoicesAtZero: "Export invoices equal to 0"
|
||||
columns: "Columns"
|
||||
exportColumns:
|
||||
journal_code: "Journal code"
|
||||
date: "Entry date"
|
||||
account_code: "Account code"
|
||||
account_label: "Account label"
|
||||
piece: "Document"
|
||||
line_label: "Entry label"
|
||||
debit_origin: "Origin debit"
|
||||
credit_origin: "Origin credit"
|
||||
debit_euro: "Euro debit"
|
||||
credit_euro: "Euro credit"
|
||||
lettering: "Lettering"
|
||||
start_date: "Start date"
|
||||
end_date: "End date"
|
||||
vat_rate: "VAT rate"
|
||||
amount: "Total amount"
|
||||
payzen_keys_form:
|
||||
payzen_keys_info_html: "<p>To be able to collect online payments, you must configure the <a href='https://payzen.eu' target='_blank'>PayZen</a> identifiers and keys.</p><p>Retrieve them from <a href='https://secure.payzen.eu/vads-merchant/' target='_blank'>your merchant back office</a>.</p>"
|
||||
client_keys: "Client key"
|
||||
payzen_public_key: "Client public key"
|
||||
api_keys: "API keys"
|
||||
payzen_username: "Username"
|
||||
payzen_password: "Password"
|
||||
payzen_endpoint: "REST API server name"
|
||||
payzen_hmac: "HMAC-SHA-256 key"
|
||||
stripe_keys_form:
|
||||
stripe_keys_info_html: "<p>To be able to collect online payments, you must configure the <a href='https://stripe.com' target='_blank'>Stripe</a> API keys.</p><p>Retrieve them from <a href='https://dashboard.stripe.com/account/apikeys' target='_blank'>your dashboard</a>.</p><p>Updating these keys will trigger a synchronization of all users on Stripe, this may take some time. You'll receive a notification when it's done.</p>"
|
||||
public_key: "Public key"
|
||||
secret_key: "Secret key"
|
||||
payment:
|
||||
payment_settings: "Payment settings"
|
||||
online_payment: "Online payment"
|
||||
online_payment_info_html: "You can enable your members to book directly online, paying by card. Alternatively, you can restrict the booking and payment processes for administrators and managers."
|
||||
enable_online_payment: "Enable online payment"
|
||||
stripe_keys: "Stripe keys"
|
||||
public_key: "Public key"
|
||||
secret_key: "Secret key"
|
||||
error_check_keys: "Error: please check your Stripe keys."
|
||||
stripe_keys_saved: "Stripe keys successfully saved."
|
||||
error_saving_stripe_keys: "Unable to save the Stripe keys. Please try again later."
|
||||
api_keys: "API keys"
|
||||
edit_keys: "Edit keys"
|
||||
currency: "Currency"
|
||||
currency_info_html: "Please specify below the currency used for online payment. You should provide a three-letter ISO code, from the list of <a href='https://stripe.com/docs/currencies' target='_blank'>Stripe supported currencies</a>."
|
||||
currency_alert_html: "<strong>Warning</strong>: the currency cannot be changed after the first online payment was made. Please define this setting carefully before opening Fab-manager to your members."
|
||||
stripe_currency: "Stripe currency"
|
||||
gateway_configuration_error: "An error occurred while configuring the payment gateway: "
|
||||
payzen_settings:
|
||||
payzen_keys: "PayZen keys"
|
||||
edit_keys: "Edit keys"
|
||||
payzen_public_key: "Client public key"
|
||||
payzen_username: "Username"
|
||||
payzen_password: "Password"
|
||||
payzen_endpoint: "REST API server name"
|
||||
payzen_hmac: "HMAC-SHA-256 key"
|
||||
currency: "Currency"
|
||||
payzen_currency: "PayZen currency"
|
||||
currency_info_html: "Please specify below the currency used for online payment. You should provide a three-letter ISO code, from the list of <a href='https://payzen.io/en-EN/payment-file/ips/list-of-supported-currencies.html' target='_blank'> PayZen supported currencies</a>."
|
||||
save: "Save"
|
||||
currency_error: "The inputted value is not a valid currency"
|
||||
error_while_saving: "An error occurred while saving the currency: "
|
||||
currency_updated: "The PayZen currency was successfully updated to {CURRENCY}."
|
||||
#select a payment gateway
|
||||
select_gateway_modal:
|
||||
select_gateway_title: "Select a payment gateway"
|
||||
gateway_info: "To securely collect and process payments online, Fab-manager needs to use an third-party service authorized by the financial institutions, called a payment gateway."
|
||||
select_gateway: "Please select an available gateway"
|
||||
stripe: "Stripe"
|
||||
payzen: "PayZen"
|
||||
confirm_button: "Validate the gateway"
|
||||
payment_schedules_list:
|
||||
filter_schedules: "Filter schedules"
|
||||
no_payment_schedules: "No payment schedules to display"
|
||||
load_more: "Load more"
|
||||
card_updated_success: "The user's card was successfully updated"
|
||||
document_filters:
|
||||
reference: "Reference"
|
||||
customer: "Customer"
|
||||
date: "Date"
|
||||
update_payment_mean_modal:
|
||||
title: "Update the payment mean"
|
||||
update_info: "Please specify below the new payment mean for this payment schedule to continue."
|
||||
select_payment_mean: "Select a new payment mean"
|
||||
method_Transfer: "By bank transfer"
|
||||
method_Check: "By check"
|
||||
confirm_button: "Update"
|
||||
#management of users, labels, groups, and so on
|
||||
members:
|
||||
users_management: "Users management"
|
||||
import: "Import members from a CSV file"
|
||||
users: "Users"
|
||||
members: "Members"
|
||||
subscriptions: "Subscriptions"
|
||||
search_for_an_user: "Search for an user"
|
||||
add_a_new_member: "Add a new member"
|
||||
reservations: "Reservations"
|
||||
username: "Username"
|
||||
surname: "Last name"
|
||||
first_name: "First name"
|
||||
email: "Email"
|
||||
phone: "Phone"
|
||||
user_type: "User type"
|
||||
subscription: "Subscription"
|
||||
display_more_users: "Display more users..."
|
||||
administrators: "Administrators"
|
||||
search_for_an_administrator: "Search for an administrator"
|
||||
add_a_new_administrator: "Add a new administrator"
|
||||
managers: "Managers"
|
||||
managers_info: "A manager is a restricted administrator that cannot modify the settings of the application. However, he will be able to take reservations for any members and for all managers, including himself, and to process payments and refunds."
|
||||
search_for_a_manager: "Search for a manager"
|
||||
add_a_new_manager: "Add a new manager"
|
||||
delete_this_manager: "Do you really want to delete this manager? This cannot be undone."
|
||||
manager_successfully_deleted: "Manager successfully deleted."
|
||||
unable_to_delete_the_manager: "Unable to delete the manager."
|
||||
partners: "Partners"
|
||||
partners_info: "A partner is a special user that can be associated with the «Partner» plans. These users won't be able to connect and will just receive notifications about subscriptions to their associated plan."
|
||||
search_for_a_partner: "Search for a partner"
|
||||
add_a_new_partner: "Add a new partner"
|
||||
delete_this_partner: "Do you really want to delete this partner? This cannot be undone."
|
||||
partner_successfully_deleted: "Partner successfully deleted."
|
||||
unable_to_delete_the_partner: "Unable to delete the partner."
|
||||
associated_plan: "Associated plan"
|
||||
groups: "Groups"
|
||||
tags: "Tags"
|
||||
authentication: "Authentication"
|
||||
confirmation_required: "Confirmation required"
|
||||
confirm_delete_member: "Do you really want to delete this member? This cannot be undone."
|
||||
member_successfully_deleted: "Member successfully deleted."
|
||||
unable_to_delete_the_member: "Unable to delete the member."
|
||||
do_you_really_want_to_delete_this_administrator_this_cannot_be_undone: "Do you really want to delete this administrator? This cannot be undone."
|
||||
this_may_take_a_while_please_wait: "Warning: this may take a while, please be patient."
|
||||
administrator_successfully_deleted: "Administrator successfully deleted."
|
||||
unable_to_delete_the_administrator: "Unable to delete the administrator."
|
||||
changes_successfully_saved: "Changes successfully saved."
|
||||
an_error_occurred_while_saving_changes: "An error occurred when saving changes."
|
||||
export_is_running_you_ll_be_notified_when_its_ready: "Export is running. You'll be notified when it's ready."
|
||||
tag_form:
|
||||
tags: "Tags"
|
||||
add_a_tag: "Add a tag"
|
||||
tag_name: "Tag name"
|
||||
new_tag_successfully_saved: "New tag successfully saved."
|
||||
an_error_occurred_while_saving_the_new_tag: "An error occurred while saving the new tag."
|
||||
confirmation_required: "Delete this tag?"
|
||||
confirm_delete_tag_html: "Do you really want to delete this tag?<br>Users and slots currently associated with this tag will be dissociated.<br><strong>Warning: This cannot be undone!</strong>"
|
||||
tag_successfully_deleted: "Tag successfully deleted."
|
||||
an_error_occurred_and_the_tag_deletion_failed: "An error occurred and the tag deletion failed."
|
||||
authentication_form:
|
||||
search_for_an_authentication_provider: "Search for an authentication provider"
|
||||
add_a_new_authentication_provider: "Add a new authentication provider"
|
||||
name: "Name"
|
||||
strategy_name: "Strategy's name"
|
||||
type: "Type"
|
||||
state: "State"
|
||||
unknown: "Unknown: "
|
||||
active: "Active"
|
||||
pending: "Pending"
|
||||
previous_provider: "Previous provider"
|
||||
confirmation_required: "Delete the provider?"
|
||||
do_you_really_want_to_delete_the_TYPE_authentication_provider_NAME: "Do you really want to delete the {TYPE} authentication provider: {NAME}?"
|
||||
authentication_provider_successfully_deleted: "Authentication provider successfully deleted."
|
||||
an_error_occurred_unable_to_delete_the_specified_provider: "An error occurred: unable to delete the specified provider."
|
||||
local_database: "Local database"
|
||||
o_auth2: "OAuth 2.0"
|
||||
openid_connect: "OpenID Connect"
|
||||
saml: "SAML"
|
||||
group_form:
|
||||
add_a_group: "Add a group"
|
||||
group_name: "Group name"
|
||||
disable: "Disable"
|
||||
enable: "Enable"
|
||||
changes_successfully_saved: "Changes successfully saved."
|
||||
an_error_occurred_while_saving_changes: "An error occurred when saving changes."
|
||||
new_group_successfully_saved: "New group successfully saved."
|
||||
an_error_occurred_when_saving_the_new_group: "An error occurred when saving the new group."
|
||||
group_successfully_deleted: "Group successfully deleted."
|
||||
unable_to_delete_group_because_some_users_and_or_groups_are_still_linked_to_it: "Unable to delete group because some users and/or groups are still linked to it."
|
||||
group_successfully_enabled_disabled: "Group successfully {STATUS, select, true{disabled} other{enabled}}."
|
||||
unable_to_enable_disable_group: "Unable to {STATUS, select, true{disable} other{enable}} group."
|
||||
unable_to_disable_group_with_users: "Unable to disable group because it still contains {USERS} active {USERS, plural, =1{user} other{users}}."
|
||||
status_enabled: "Enabled"
|
||||
status_disabled: "Disabled"
|
||||
status_all: "All"
|
||||
member_filter_all: "All"
|
||||
member_filter_not_confirmed: "Unconfirmed"
|
||||
member_filter_inactive_for_3_years: "Inactive for 3 years"
|
||||
member_filter_not_validated: "Not validated"
|
||||
members_list_item:
|
||||
item_type: "member"
|
||||
surname: "Surname"
|
||||
first_name: "First name"
|
||||
phone: "Phone"
|
||||
email: "Email"
|
||||
group: "Group"
|
||||
subscription: "Subscription"
|
||||
#add a member
|
||||
members_new:
|
||||
add_a_member: "Add a member"
|
||||
user_is_an_organization: "User is an organization"
|
||||
create_success: "Member successfully created"
|
||||
#members bulk import
|
||||
members_import:
|
||||
import_members: "Import members"
|
||||
info: "You can upload a CSV file to create new members or update existing ones. Your file must user the identifiers below to specify the group, the trainings and the tags of the members."
|
||||
required_fields: "Your file must contain, at least, the following information for each user to create: email, name, first name and group. If the password is empty, it will be generated. On updates, the empty fields will be kept as is."
|
||||
about_example_html: "Please refer to the provided example file to generate a correct CSV file.<br>This example will:<ol><li>create a new member (Jean Dupont) with a generated password</li><li>update the password of an existing membre (ID 43) using the new given password</li></ol><br>Be careful to use <strong>Unicode UTF-8</strong> encoding."
|
||||
groups: "Groups"
|
||||
group_name: "Group name"
|
||||
group_identifier: "Identifier to use"
|
||||
trainings: "Trainings"
|
||||
training_name: "Training name"
|
||||
training_identifier: "Identifier to use"
|
||||
plans: "Plans"
|
||||
plan_name: "Plan name"
|
||||
plan_identifier: "Identifier to use"
|
||||
tags: "Tags"
|
||||
tag_name: "Tag name"
|
||||
tag_identifier: "Identifier to use"
|
||||
download_example: "Example file"
|
||||
select_file: "Choose a file"
|
||||
import: "Import"
|
||||
update_field: "Reference field for users to update"
|
||||
update_on_id: "ID"
|
||||
update_on_username: "Username"
|
||||
update_on_email: "Email address"
|
||||
#import results
|
||||
members_import_result:
|
||||
import_results: "Import results"
|
||||
import_details: "Import # {ID}, of {DATE}, initiated by {USER}"
|
||||
results: "Results"
|
||||
pending: "Pending..."
|
||||
status_create: "Creating a new user"
|
||||
status_update: "Updating user {ID}"
|
||||
success: "Success"
|
||||
failed: "Failed"
|
||||
error_details: "Error's details:"
|
||||
user_validation:
|
||||
validate_member_success: "Member successfully validated"
|
||||
invalidate_member_success: "Member successfully invalidated"
|
||||
validate_member_error: "An unexpected error occurred: unable to validate this member."
|
||||
invalidate_member_error: "An unexpected error occurred: unable to invalidate this member."
|
||||
validate_account: "Validate the account"
|
||||
child_validation:
|
||||
validate_child_success: "Child successfully validated"
|
||||
invalidate_child_success: "Child successfully invalidated"
|
||||
validate_child_error: "An unexpected error occurred: unable to validate this child."
|
||||
invalidate_child_error: "An unexpected error occurred: unable to invalidate this child."
|
||||
validate_child: "Validate the child"
|
||||
supporting_documents_refusal_form:
|
||||
refusal_comment: "Comment"
|
||||
comment_placeholder: "Please type a comment here"
|
||||
supporting_documents_refusal_modal:
|
||||
title: "Refuse some supporting documents"
|
||||
refusal_successfully_sent: "The refusal has been successfully sent."
|
||||
unable_to_send: "Unable to refuse the supporting documents: "
|
||||
confirm: "Confirm"
|
||||
supporting_documents_validation:
|
||||
title: "Supporting documents"
|
||||
find_below_documents_files: "You will find below the supporting documents submitted by the member."
|
||||
to_complete: "To complete"
|
||||
refuse_documents: "Refusing the documents"
|
||||
refuse_documents_info: "After verification, you may notify the member that the evidence submitted is not acceptable. You can specify the reasons for your refusal and indicate the actions to be taken. The member will be notified by e-mail."
|
||||
change_role_modal:
|
||||
change_role: "Change role"
|
||||
warning_role_change: "<p><strong>Warning:</strong> changing the role of a user is not a harmless operation.</p><ul><li><strong>Members</strong> can only book reservations for themselves, paying by card or wallet.</li><li><strong>Managers</strong> can book reservations for themselves, paying by card or wallet, and for other members and managers, by collecting payments at the checkout.</li><li><strong>Administrators</strong> as managers, they can book reservations for themselves and for others. Moreover, they can change every settings of the application.</li></ul>"
|
||||
new_role: "New role"
|
||||
admin: "Administrator"
|
||||
manager: "Manager"
|
||||
member: "Member"
|
||||
new_group: "New group"
|
||||
new_group_help: "Users with a running subscription cannot be changed from their current group."
|
||||
confirm: "Change role"
|
||||
role_changed: "Role successfully changed from {OLD} to {NEW}."
|
||||
error_while_changing_role: "An error occurred while changing the role. Please try again later."
|
||||
#edit a member
|
||||
members_edit:
|
||||
subscription: "Subscription"
|
||||
reservations: "Reservations"
|
||||
duration: "Duration:"
|
||||
expires_at: "Expires at:"
|
||||
price_: "Price:"
|
||||
offer_free_days: "Offer free days"
|
||||
renew_subscription: "Renew the subscription"
|
||||
cancel_subscription: "Cancel the subscription"
|
||||
user_has_no_current_subscription: "User has no current subscription."
|
||||
subscribe_to_a_plan: "Subscribe to a plan"
|
||||
trainings: "Trainings"
|
||||
no_trainings: "No trainings"
|
||||
next_trainings: "Next trainings"
|
||||
passed_trainings: "Passed trainings"
|
||||
validated_trainings: "Validated trainings"
|
||||
events: "Events"
|
||||
next_events: "Next events"
|
||||
no_upcoming_events: "No upcoming events"
|
||||
NUMBER_full_price_tickets_reserved: "{NUMBER, plural, =0{} one{1 full price ticket reserved} other{{NUMBER} full price tickets reserved}}"
|
||||
NUMBER_NAME_tickets_reserved: "{NUMBER, plural, =0{} one{1 {NAME} ticket reserved} other{{NUMBER} {NAME} tickets reserved}}"
|
||||
passed_events: "Passed events"
|
||||
no_passed_events: "No passed events"
|
||||
invoices: "Invoices"
|
||||
invoice_num: "Invoice #"
|
||||
date: "Date"
|
||||
price: "Price"
|
||||
download_the_invoice: "Download the invoice"
|
||||
download_the_refund_invoice: "Download the refund invoice"
|
||||
no_invoices_for_now: "No invoices for now."
|
||||
you_successfully_changed_the_expiration_date_of_the_user_s_subscription: "You successfully changed the expiration date of the user's subscription"
|
||||
a_problem_occurred_while_saving_the_date: "A problem occurred while saving the date."
|
||||
new_subscription: "New subscription"
|
||||
you_are_about_to_purchase_a_subscription_to_NAME: "You are about to purchase a subscription to {NAME}."
|
||||
with_schedule: "Subscribe with a monthly payment schedule"
|
||||
subscription_successfully_purchased: "Subscription successfully purchased."
|
||||
a_problem_occurred_while_taking_the_subscription: "A problem occurred while taking the subscription"
|
||||
wallet: "Wallet"
|
||||
to_credit: 'Credit'
|
||||
cannot_credit_own_wallet: "You cannot credit your own wallet. Please ask another manager or an administrator to credit your wallet."
|
||||
cannot_extend_own_subscription: "You cannot extend your own subscription. Please ask another manager or an administrator to extend your subscription."
|
||||
update_success: "Member's profile successfully updated"
|
||||
my_documents: "My documents"
|
||||
save: "Save"
|
||||
confirm: "Confirm"
|
||||
cancel: "Cancel"
|
||||
validate_account: "Validate the account"
|
||||
validate_member_success: "The member is validated"
|
||||
invalidate_member_success: "The member is invalidated"
|
||||
validate_member_error: "An error occurred: impossible to validate from this member."
|
||||
invalidate_member_error: "An error occurred: impossible to invalidate from this member."
|
||||
supporting_documents: "Supporting documents"
|
||||
change_role: "Change role"
|
||||
#extend a subscription for free
|
||||
free_extend_modal:
|
||||
extend_subscription: "Extend the subscription"
|
||||
offer_free_days_infos: "You are about to extend the user's subscription by offering him free additional days."
|
||||
credits_will_remain_unchanged: "The balance of free credits (training / machines / spaces) of the user will remain unchanged."
|
||||
current_expiration: "Current subscription will expire at:"
|
||||
DATE_TIME: "{DATE} {TIME}"
|
||||
new_expiration_date: "New expiration date:"
|
||||
number_of_free_days: "Number of free days:"
|
||||
extend: "Extend"
|
||||
extend_success: "The subscription was successfully extended for free"
|
||||
#renew a subscription
|
||||
renew_modal:
|
||||
renew_subscription: "Renew the subscription"
|
||||
renew_subscription_info: "You are about to renew the user's subscription by charging him again for his current subscription."
|
||||
credits_will_be_reset: "The balance of free credits (training / machines / spaces) of the user will be reset, unused credits will be lost."
|
||||
current_expiration: "Current subscription will expire at:"
|
||||
new_start: "The new subscription will start at:"
|
||||
new_expiration_date: "The new subscription will expire at:"
|
||||
pay_in_one_go: "Pay in one go"
|
||||
renew: "Renew"
|
||||
renew_success: "The subscription was successfully renewed"
|
||||
DATE_TIME: "{DATE} {TIME}"
|
||||
#take a new subscription
|
||||
subscribe_modal:
|
||||
subscribe_USER: "Subscribe {USER}"
|
||||
subscribe: "Subscribe"
|
||||
select_plan: "Please select a plan"
|
||||
pay_in_one_go: "Pay in one go"
|
||||
subscription_success: "Subscription successfully subscribed"
|
||||
#cancel the current subscription
|
||||
cancel_subscription_modal:
|
||||
title: "Confirmation required"
|
||||
confirmation_html: "You are about to cancel the subscription <em>{NAME}</em> of this user. From now, he won't be able to benefit from the advantages of this subscription, and all his unused credits will be lost. <strong>Are your sure?</strong>"
|
||||
confirm: "Cancel this subscription"
|
||||
subscription_canceled: "The subscription was successfully canceled."
|
||||
#add a new administrator to the platform
|
||||
admins_new:
|
||||
add_an_administrator: "Add an administrator"
|
||||
administrator_successfully_created_he_will_receive_his_connection_directives_by_email: "Successful creation. Connection directives were sent to the new administrator by e-mail."
|
||||
failed_to_create_admin: "Unable to create the administrator:"
|
||||
man: "Man"
|
||||
woman: "Woman"
|
||||
pseudonym: "Pseudonym"
|
||||
pseudonym_is_required: "Pseudonym is required."
|
||||
first_name: "First name"
|
||||
first_name_is_required: "First name is required."
|
||||
surname: "Last name"
|
||||
surname_is_required: "Last name is required."
|
||||
email_address: "Email address"
|
||||
email_is_required: "Email address is required."
|
||||
birth_date: "Date of birth"
|
||||
address: "Address"
|
||||
phone_number: "Phone number"
|
||||
#add a new manager to the platform
|
||||
manager_new:
|
||||
add_a_manager: "Add a manager"
|
||||
manager_successfully_created: "Successful creation. Connection directives were sent to the new manager by e-mail."
|
||||
failed_to_create_manager: "Unable to create the manager:"
|
||||
man: "Man"
|
||||
woman: "Woman"
|
||||
pseudonym: "Pseudonym"
|
||||
pseudonym_is_required: "Pseudonym is required."
|
||||
first_name: "First name"
|
||||
first_name_is_required: "First name is required."
|
||||
surname: "Last name"
|
||||
surname_is_required: "Last name is required."
|
||||
email_address: "Email address"
|
||||
email_is_required: "Email address is required."
|
||||
birth_date: "Date of birth"
|
||||
address: "Address"
|
||||
phone_number: "Phone number"
|
||||
#authentication providers (SSO) components
|
||||
authentication:
|
||||
boolean_mapping_form:
|
||||
mappings: "Mappings"
|
||||
true_value: "True value"
|
||||
false_value: "False value"
|
||||
date_mapping_form:
|
||||
input_format: "Input format"
|
||||
date_format: "Date format"
|
||||
integer_mapping_form:
|
||||
mappings: "Mappings"
|
||||
mapping_from: "From"
|
||||
mapping_to: "To"
|
||||
string_mapping_form:
|
||||
mappings: "Mappings"
|
||||
mapping_from: "From"
|
||||
mapping_to: "To"
|
||||
data_mapping_form:
|
||||
define_the_fields_mapping: "Define the fields mapping"
|
||||
add_a_match: "Add a match"
|
||||
model: "Model"
|
||||
field: "Field"
|
||||
data_mapping: "Data mapping"
|
||||
oauth2_data_mapping_form:
|
||||
api_endpoint_url: "API endpoint or URL"
|
||||
api_type: "API type"
|
||||
api_field: "API field"
|
||||
api_field_help_html: '<a href="https://jsonpath.com/" target="_blank">JsonPath</a> syntax is supported.<br> If many fields are selected, the first one will be used.<br> Example: $.data[*].name'
|
||||
openid_connect_data_mapping_form:
|
||||
api_field: "Userinfo claim"
|
||||
api_field_help_html: 'Set the field providing the corresponding data through <a href="https://openid.net/specs/openid-connect-core-1_0.html#Claims" target="_blank">the userinfo endpoint</a>.<br> <a href="https://jsonpath.com/" target="_blank">JsonPath</a> syntax is supported. If many fields are selected, the first one will be used.<br> <b>Example</b>: $.data[*].name'
|
||||
openid_standard_configuration: "Use the OpenID standard configuration"
|
||||
saml_data_mapping_form:
|
||||
api_field: "Userinfo field"
|
||||
api_field_help_html: "Set the field providing the corresponding data through the SAML assertion.<br> If many fields are selected, the first one will be used.<br> <b>Example</b>: $.data[*].name"
|
||||
openid_standard_configuration: "Use the SAML standard configuration"
|
||||
type_mapping_modal:
|
||||
data_mapping: "Data mapping"
|
||||
TYPE_expected: "{TYPE} expected"
|
||||
types:
|
||||
integer: "integer"
|
||||
string: "string"
|
||||
text: "text"
|
||||
date: "date"
|
||||
boolean: "boolean"
|
||||
oauth2_form:
|
||||
authorization_callback_url: "Authorization callback URL"
|
||||
common_url: "Server root URL"
|
||||
authorization_endpoint: "Authorization endpoint"
|
||||
token_acquisition_endpoint: "Token acquisition endpoint"
|
||||
profile_edition_url: "Profil edition URL"
|
||||
profile_edition_url_help: "The URL of the page where the user can edit his profile."
|
||||
client_identifier: "Client identifier"
|
||||
client_secret: "Client secret"
|
||||
scopes: "Scopes"
|
||||
openid_connect_form:
|
||||
issuer: "Issuer"
|
||||
issuer_help: "Root url for the authorization server."
|
||||
discovery: "Discovery"
|
||||
discovery_help: "Should OpenID discovery be used. This is recommended if the IDP provides a discovery endpoint."
|
||||
discovery_unavailable: "Discovery is unavailable for the configured issuer."
|
||||
discovery_enabled: "Enable discovery"
|
||||
discovery_disabled: "Disable discovery"
|
||||
client_auth_method: "Client authentication method"
|
||||
client_auth_method_help: "Which authentication method to use to authenticate Fab-manager with the authorization server."
|
||||
client_auth_method_basic: "Basic"
|
||||
client_auth_method_jwks: "JWKS"
|
||||
scope: "Scope"
|
||||
scope_help_html: "Which OpenID scopes to include (openid is always required). <br> If <b>Discovery</b> is enabled, the available scopes will be automatically proposed."
|
||||
prompt: "Prompt"
|
||||
prompt_help_html: "Which OpenID pages the user will be shown. <br> <b>None</b> - no authentication or consent user interface pages are shown. <br> <b>Login</b> - the authorization server prompt the user for reauthentication. <br> <b>Consent</b> - the authorization server prompt the user for consent before returning information to Fab-manager. <br> <b>Select account</b> - the authorization server prompt the user to select a user account."
|
||||
prompt_none: "None"
|
||||
prompt_login: "Login"
|
||||
prompt_consent: "Consent"
|
||||
prompt_select_account: "Select account"
|
||||
send_scope_to_token_endpoint: "Send scope to token endpoint?"
|
||||
send_scope_to_token_endpoint_help: "Should the scope parameter be sent to the authorization token endpoint?"
|
||||
send_scope_to_token_endpoint_false: "No"
|
||||
send_scope_to_token_endpoint_true: "Yes"
|
||||
profile_edition_url: "Profil edition URL"
|
||||
profile_edition_url_help: "The URL of the page where the user can edit his profile."
|
||||
client_options: "Client options"
|
||||
client__identifier: "Identifier"
|
||||
client__secret: "Secret"
|
||||
client__authorization_endpoint: "Authorization endpoint"
|
||||
client__token_endpoint: "Token endpoint"
|
||||
client__userinfo_endpoint: "Userinfo endpoint"
|
||||
client__jwks_uri: "JWKS URI"
|
||||
client__end_session_endpoint: "End session endpoint"
|
||||
client__end_session_endpoint_help: "The url to call to log the user out at the authorization server."
|
||||
extra_authorize_params: "Extra authorize parameters"
|
||||
extra_authorize_params_help: "A hash of extra fixed parameters that will be merged to the authorization request"
|
||||
saml_form:
|
||||
authorization_callback_url: "Authorization callback URL"
|
||||
sp_entity_id: "Service provider entity ID"
|
||||
sp_entity_id_help: "The name of your application. Some identity providers might need this to establish the identity of the service provider requesting the login."
|
||||
idp_sso_service_url: "Identity provider SSO service URL"
|
||||
idp_sso_service_url_help: "The URL to which the authentication request should be sent. This would be on the identity provider."
|
||||
idp_cert_fingerprint: "Identity provider certificate fingerprint"
|
||||
idp_cert: "Identity provider certificate"
|
||||
profile_edition_url: "Profil edition URL"
|
||||
profile_edition_url_help: "The URL of the page where the user can edit his profile."
|
||||
provider_form:
|
||||
name: "Name"
|
||||
authentication_type: "Authentication type"
|
||||
save: "Save"
|
||||
create_success: "Authentication provider created"
|
||||
update_success: "Authentication provider updated"
|
||||
methods:
|
||||
local_database: "Local database"
|
||||
oauth2: "OAuth 2.0"
|
||||
openid_connect: "OpenID Connect"
|
||||
saml: "SAML"
|
||||
#create a new authentication provider (SSO)
|
||||
authentication_new:
|
||||
add_a_new_authentication_provider: "Add a new authentication provider"
|
||||
#edit an authentication provider (SSO)
|
||||
authentication_edit:
|
||||
provider: "Provider:"
|
||||
#statistics tables
|
||||
statistics:
|
||||
statistics: "Statistics"
|
||||
evolution: "Evolution"
|
||||
age_filter: "Age filter"
|
||||
from_age: "From" #e.g. from 8 to 40 years old
|
||||
to_age: "to" #e.g. from 8 to 40 years old
|
||||
start: "Start:"
|
||||
end: "End:"
|
||||
custom_filter: "Custom filter"
|
||||
NO_: "NO"
|
||||
criterion: "Criterion:"
|
||||
value: "Value:"
|
||||
exclude: "Exclude"
|
||||
from_date: "From" #eg: from 01/01 to 01/05
|
||||
to_date: "to" #eg: from 01/01 to 01/05
|
||||
entries: "Entries:"
|
||||
revenue_: "Revenue:"
|
||||
average_age: "Average age:"
|
||||
years_old: "years old"
|
||||
total: "Total"
|
||||
available_hours: "Hours available for booking:"
|
||||
available_tickets: "Tickets available for booking:"
|
||||
date: "Date"
|
||||
reservation_date: "Reservation date"
|
||||
user: "User"
|
||||
gender: "Gender"
|
||||
age: "Age"
|
||||
type: "Type"
|
||||
revenue: "Revenue"
|
||||
unknown: "Unknown"
|
||||
user_id: "User ID"
|
||||
display_more_results: "Display more results"
|
||||
export_statistics_to_excel: "Export statistics to Excel"
|
||||
export_all_statistics: "Export all statistics"
|
||||
export_the_current_search_results: "Export the current search results"
|
||||
export: "Export"
|
||||
deleted_user: "Deleted user"
|
||||
man: "Man"
|
||||
woman: "Woman"
|
||||
export_is_running_you_ll_be_notified_when_its_ready: "Export is running. You'll be notified when it's ready."
|
||||
create_plans_to_start: "Start by creating new subscription plans."
|
||||
click_here: "Click here to create your first one."
|
||||
average_cart: "Average cart:"
|
||||
reservation_context: Reservation context
|
||||
project_author: Author
|
||||
#statistics graphs
|
||||
stats_graphs:
|
||||
statistics: "Statistics"
|
||||
data: "Data"
|
||||
day: "Day"
|
||||
week: "Week"
|
||||
from_date: "From" #eg: from 01/01 to 01/05
|
||||
to_date: "to" #eg: from 01/01 to 01/05
|
||||
month: "Month"
|
||||
start: "Start:"
|
||||
end: "End:"
|
||||
type: "Type"
|
||||
revenue: "Revenue"
|
||||
top_list_of: "Top list of"
|
||||
number: "Number"
|
||||
week_short: "Week"
|
||||
week_of_START_to_END: "Week of {START} to {END}"
|
||||
no_data_for_this_period: "No data for this period"
|
||||
date: "Date"
|
||||
boolean_setting:
|
||||
customization_of_SETTING_successfully_saved: "Customization of the {SETTING} successfully saved."
|
||||
error_SETTING_locked: "Unable to update the setting: {SETTING} is locked. Please contact your system administrator."
|
||||
an_error_occurred_saving_the_setting: "An error occurred while saving the setting. Please try again later."
|
||||
save: "save"
|
||||
#global application parameters and customization
|
||||
settings:
|
||||
customize_the_application: "Customize the application"
|
||||
fablab_name: "FabLab name"
|
||||
about: "About"
|
||||
customize_information_messages: "Customize information messages"
|
||||
message_of_the_machine_booking_page: "Message of the machine booking page:"
|
||||
type_the_message_content: "Type the message content"
|
||||
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:"
|
||||
message_of_the_subscriptions_page: "Message of the subscriptions page:"
|
||||
message_of_the_events_page: "Message of the events page:"
|
||||
message_of_the_spaces_page: "Message of the spaces page:"
|
||||
legal_documents: "Legal documents"
|
||||
if_these_documents_are_not_filled_no_consent_about_them_will_be_asked_to_the_user: "If these documents are not filled, no consent about them will be asked."
|
||||
general_terms_and_conditions: "General terms and conditions (T&C)"
|
||||
terms_of_service: "Terms of service (TOS)"
|
||||
customize_the_graphics: "Customize the graphics"
|
||||
for_an_optimal_rendering_the_logo_image_must_be_at_the_PNG_format_with_a_transparent_background_and_with_an_aspect_ratio_3.5_times_wider_than_the_height: "For an optimal rendering, the logo image must be at the PNG format with a transparent background and an aspect ratio 3.5 wider than the height."
|
||||
concerning_the_favicon_it_must_be_at_ICO_format_with_a_size_of_16x16_pixels: "Concerning the favicon, it must be at ICO format with a size of 16x16 pixels."
|
||||
remember_to_refresh_the_page_for_the_changes_to_take_effect: "Remember to refresh the page for the changes to take effect."
|
||||
logo_white_background: "Logo (white background)"
|
||||
change_the_logo: "Change the logo"
|
||||
logo_black_background: "Logo (black background)"
|
||||
favicon: "Favicon"
|
||||
change_the_favicon: "Change the favicon"
|
||||
main_colour: "Main colour:"
|
||||
primary: "Primary"
|
||||
secondary_colour: "Secondary colour:"
|
||||
secondary: "Secondary"
|
||||
background_picture_of_the_profile_banner: "Background picture of the profile banner"
|
||||
background_picture_recommendation: "Only .png file. Recommended size: 4/1 ratio, 1600*400 px."
|
||||
change_the_profile_banner: "Change the profile banner"
|
||||
home_page: "Home page"
|
||||
news_of_the_home_page: "News of the home page:"
|
||||
type_your_news_here: "Type your news here"
|
||||
leave_it_empty_to_not_bring_up_any_news_on_the_home_page: "Leave it empty to not bring up any news on the home page"
|
||||
twitter_stream: "Twitter Stream:"
|
||||
name_of_the_twitter_account: "Name of the Twitter account"
|
||||
link: "Link"
|
||||
link_to_about: 'Link title to the "About" page'
|
||||
content: "Content"
|
||||
title_of_the_about_page: "Title of the About page"
|
||||
shift_enter_to_force_carriage_return: "SHIFT + ENTER to force carriage return"
|
||||
input_the_main_content: "Input the main content"
|
||||
drag_and_drop_to_insert_images: "Drag and drop to insert images"
|
||||
input_the_fablab_contacts: "Input the FabLab contacts"
|
||||
reservations: "Reservations"
|
||||
reservations_parameters: "Reservations parameters"
|
||||
confine_the_booking_agenda: "Confine the booking agenda"
|
||||
opening_time: "Opening time"
|
||||
closing_time: "Closing time"
|
||||
max_visibility: "Maximum visibility (in months)"
|
||||
visibility_for_yearly_members: "For currently running subscriptions, at least 1 year long"
|
||||
visibility_for_other_members: "For all other members"
|
||||
reservation_deadline: "Prevent last minute booking"
|
||||
reservation_deadline_help: "If you increase the prior period, members won't be able to book a slot X minutes before its start."
|
||||
machine_deadline_minutes: "Machine prior period (minutes)"
|
||||
training_deadline_minutes: "Training prior period (minutes)"
|
||||
event_deadline_minutes: "Event prior period (minutes)"
|
||||
space_deadline_minutes: "Space prior period (minutes)"
|
||||
ability_for_the_users_to_move_their_reservations: "Ability for the users to move their reservations"
|
||||
reservations_shifting: "Reservations shifting"
|
||||
prior_period_hours: "Prior period (hours)"
|
||||
enabled: "Enabled"
|
||||
disabled: "Disabled"
|
||||
ability_for_the_users_to_cancel_their_reservations: "Ability for the users to cancel their reservations"
|
||||
reservations_cancelling: "Reservations cancelling"
|
||||
reservations_reminders: "Reservations reminders"
|
||||
notification_sending_before_the_reservation_occurs: "Notification sending before the reservation occurs"
|
||||
customization_of_SETTING_successfully_saved: "Customization of the {SETTING} successfully saved."
|
||||
file_successfully_updated: "File successfully updated."
|
||||
name_genre: "title concordance"
|
||||
machine_explications_alert: "explanation message on the machine reservation page"
|
||||
training_explications_alert: "explanation message on the training reservation page"
|
||||
training_information_message: "information message on the machine reservation page"
|
||||
subscription_explications_alert: "explanation message on the subscription page"
|
||||
event_explications_alert: "explanation message on the event reservation page"
|
||||
space_explications_alert: "explanation message on the space reservation page"
|
||||
main_color: "main colour"
|
||||
secondary_color: "secondary colour"
|
||||
customize_home_page: "Customize home page"
|
||||
reset_home_page: "Reset the home page to its initial state"
|
||||
confirmation_required: "Confirmation required"
|
||||
confirm_reset_home_page: "Do you really want to reset the home page to its factory value?"
|
||||
home_items: "Home page items"
|
||||
item_news: "News"
|
||||
item_projects: "Last projects"
|
||||
item_twitter: "Last tweet"
|
||||
item_members: "Last members"
|
||||
item_events: "Next events"
|
||||
home_content: "the home page"
|
||||
home_content_reset: "Home page was successfully reset to its initial configuration."
|
||||
home_css: "the stylesheet of the home page"
|
||||
home_blogpost: "homepage's brief"
|
||||
twitter_name: "Twitter feed name"
|
||||
link_name: "link title to the \"About\" page"
|
||||
about_title: "\"About\" page title"
|
||||
about_body: "\"About\" page content"
|
||||
about_contacts: "\"About\" page contacts"
|
||||
about_follow_us: "Follow us"
|
||||
about_networks: "Social networks"
|
||||
privacy_draft: "privacy policy draft"
|
||||
privacy_body: "privacy policy"
|
||||
privacy_dpo: "data protection officer address"
|
||||
booking_window_start: "opening time"
|
||||
booking_window_end: "closing time"
|
||||
booking_move_enable: "reservation moving enabling"
|
||||
booking_move_delay: "preventive delay of moving"
|
||||
booking_cancel_enable: "reservation canceling enabling"
|
||||
booking_cancel_delay: "preventive delay of canceling"
|
||||
reminder_enable: "reservation reminding enabling"
|
||||
reminder_delay: "delay before sending the reminder"
|
||||
default_value_is_24_hours: "If the field is leaved empty: 24 hours."
|
||||
visibility_yearly: "maximum visibility for annual subscribers"
|
||||
visibility_others: "maximum visibility for other members"
|
||||
display: "Display"
|
||||
display_name_info_html: "When enabled, connected members browsing the calendar or booking a resource will see the name of the members who has already booked some slots. When disabled, only administrators and managers will view the names.<br/><strong>Warning:</strong> if you enable this feature, please write it down in your privacy policy."
|
||||
display_reservation_user_name: "Display the full name of the user(s) who booked a slots"
|
||||
display_name: "Display the name"
|
||||
display_name_enable: "name display"
|
||||
events_in_the_calendar: "Display the events in the calendar"
|
||||
events_in_calendar_info: "When enabled, the admin calendar will display the scheduled events, as read-only items."
|
||||
show_event: "Show the events"
|
||||
events_in_calendar: "events display in the calendar"
|
||||
machines_sort_by: "machines display order"
|
||||
fab_analytics: "Fab Analytics"
|
||||
phone_required: "phone required"
|
||||
address_required: "address required"
|
||||
tracking_id: "tracking ID"
|
||||
facebook_app_id: "Facebook App ID"
|
||||
twitter_analytics: "Twitter analytics account"
|
||||
book_overlapping_slots: "book overlapping slots"
|
||||
slot_duration: "slots duration"
|
||||
advanced: "Advanced settings"
|
||||
customize_home_page_css: "Customise the stylesheet of the home page"
|
||||
home_css_notice_html: "You can customize the stylesheet which will apply to the home page, using the <a href=\"https://sass-lang.com/documentation\" target=\"_blank\">SCSS</a> syntax. These styles will be automatically subordinated to the <code>.home-page</code> selector to prevent any risk of breaking the application. Meanwhile please be careful, any changes in the home page editor at the top of the page may broke your styles, always refer to the HTML code."
|
||||
error_SETTING_locked: "Unable to update the setting: {SETTING} is locked. Please contact your system administrator."
|
||||
an_error_occurred_saving_the_setting: "An error occurred while saving the setting. Please try again later."
|
||||
book_overlapping_slots_info: "Allow / prevent the reservation of overlapping slots"
|
||||
allow_booking: "Allow booking"
|
||||
overlapping_categories: "Overlapping categories"
|
||||
overlapping_categories_info: "Preventing booking on overlapping slots will be done by comparing the date and time of the following categories of reservations."
|
||||
default_slot_duration: "Default duration for slots"
|
||||
duration_minutes: "Duration (in minutes)"
|
||||
default_slot_duration_info: "Machine and space availabilities are divided in multiple slots of this duration. This value can be overridden per availability."
|
||||
modules: "Modules"
|
||||
machines: "Machines"
|
||||
machines_info_html: "The module Reserve a machine module can be disabled."
|
||||
enable_machines: "Enable the machines"
|
||||
machines_module: "machines module"
|
||||
spaces: "Spaces"
|
||||
spaces_info_html: "<p>A space can be, for example, a woodshop or a meeting room. Their particularity is that they can be booked by several people at the same time.</p><p><strong>Warning:</strong> It is not recommended to disable spaces if at least one space reservation was made on the system.</p>"
|
||||
enable_spaces: "Enable the spaces"
|
||||
spaces_module: "spaces module"
|
||||
plans: "Plans"
|
||||
plans_info_html: "<p>Subscriptions provide a way to segment your prices and provide benefits to regular users.</p><p><strong>Warning:</strong> It is not recommended to disable plans if at least one subscription is active on the system.</p>"
|
||||
enable_plans: "Enable the plans"
|
||||
plans_module: "plans module"
|
||||
trainings: "Trainings"
|
||||
trainings_info_html: "<p>Trainings are fully integrated Fab-manager's agenda. If enabled, your members will be able to book and pay trainings.</p><p>Trainings provides a way to prevent members to book some machines, if they do have not taken the prerequisite course.</p>"
|
||||
enable_trainings: "Enable the trainings"
|
||||
trainings_module: "trainings module"
|
||||
store: "Store"
|
||||
store_info_html: "You can enable the store module that provides an easy way to <strong>sell various products and consumables</strong> to your members. This module also allows you to <strong>manage stocks</strong> and track orders."
|
||||
enable_store: "Enable the store"
|
||||
store_module: "store module"
|
||||
invoicing: "Invoicing"
|
||||
invoicing_info_html: "<p>You can fully disable the invoicing module.</p><p>This is useful if you have your own invoicing system, and you don't want Fab-manager generates and sends invoices to the members.</p><p><strong>Warning:</strong> even if you disable the invoicing module, you must to configure the VAT to prevent errors in accounting and prices. Do it from the « Invoices > Invoicing settings » section.</p>"
|
||||
enable_invoicing: "Enable invoicing"
|
||||
invoicing_module: "invoicing module"
|
||||
account_creation: "Account creation"
|
||||
accounts_management: "Accounts management"
|
||||
members_list: "Members list"
|
||||
members_list_info: "You can customize the fields to display in the member management list"
|
||||
phone: "Phone"
|
||||
phone_is_required: "Phone required"
|
||||
phone_required_info: "You can define if the phone number should be required to register a new user on Fab-manager."
|
||||
address: "Address"
|
||||
address_required_info_html: "You can define if the address should be required to register a new user on Fab-manager.<br/><strong>Please note</strong> that, depending on your country, the regulations may requires addresses for the invoices to be valid."
|
||||
address_is_required: "Address is required"
|
||||
external_id: "External identifier"
|
||||
external_id_info_html: "You can set up an external identifier for your users, which cannot be modified by the user himself."
|
||||
enable_external_id: "Enable the external ID"
|
||||
captcha: "Captcha"
|
||||
captcha_info_html: "You can setup a protection against robots, to prevent them creating members accounts. This protection is using Google reCAPTCHA. Sign up for <a href='http://www.google.com/recaptcha/admin' target='_blank'>an API key pair</a> to start using the captcha."
|
||||
site_key: "Site key"
|
||||
secret_key: "Secret key"
|
||||
recaptcha_site_key: "reCAPTCHA Site Key"
|
||||
recaptcha_secret_key: "reCAPTCHA Secret Key"
|
||||
feature_tour_display: "feature tour display"
|
||||
email_from: "expeditor's address"
|
||||
disqus_shortname: "Disqus shortname"
|
||||
COUNT_items_removed: "{COUNT, plural, =1{One item} other{{COUNT} items}} removed"
|
||||
item_added: "One item added"
|
||||
openlab_app_id: "OpenLab ID"
|
||||
openlab_app_secret: "OpenLab secret"
|
||||
openlab_default: "default gallery view"
|
||||
online_payment_module: "online payment module"
|
||||
stripe_currency: "Stripe currency"
|
||||
account_confirmation: "Account confirmation"
|
||||
confirmation_required_info: "Optionally, you can force the users to confirm their email address before being able to access Fab-manager."
|
||||
confirmation_is_required: "Confirmation required"
|
||||
change_group: "Group change"
|
||||
change_group_info: "After an user has created his account, you can restrict him from changing his group. In that case, only managers and administrators will be able to change the user's group."
|
||||
allow_group_change: "Allow group change"
|
||||
user_change_group: "users can change their group"
|
||||
wallet_module: "wallet module"
|
||||
public_agenda_module: "public agenda module"
|
||||
statistics_module: "statistics module"
|
||||
upcoming_events_shown: "display limit for upcoming events"
|
||||
display_invite_to_renew_pack: "Display the invite to renew prepaid-packs"
|
||||
packs_threshold_info_html: "You can define under how many hours the user will be invited to buy a new prepaid-pack, if his stock of prepaid hours is under this threshold.<br/>You can set a <strong>number of hours</strong> (<em>eg. 5</em>) or a <strong>percentage</strong> of his current pack pack (<em>eg. 0.05 means 5%</em>)."
|
||||
renew_pack_threshold: "threshold for packs renewal"
|
||||
pack_only_for_subscription_info_html: "If this option is activated, the purchase and use of a prepaid pack is only possible for the user with a valid subscription."
|
||||
pack_only_for_subscription: "Subscription valid for purchase and use of a prepaid pack"
|
||||
pack_only_for_subscription_info: "Make subscription mandatory for prepaid packs"
|
||||
extended_prices: "Extended prices"
|
||||
extended_prices_info_html: "Spaces can have different prices depending on the cumulated duration of the booking. You can choose if this apply to all bookings or only to those starting within the same day."
|
||||
extended_prices_in_same_day: "Extended prices in the same day"
|
||||
public_registrations: "Public registrations"
|
||||
projects_list_member_filter_presence: "Presence of member filter on projects list"
|
||||
projects_list_date_filters_presence: "Presence of date filters on projects list"
|
||||
project_categories_filter_placeholder: "Placeholder for categories filter in project gallery"
|
||||
project_categories_wording: "Wording used to replace \"Categories\" on public pages"
|
||||
reservation_context_feature_title: Reservation context
|
||||
reservation_context_feature_info: "If you enable this feature, members will have to enter the context of their reservation when reserving."
|
||||
reservation_context_feature: "Enable the feature \"Reservation context\""
|
||||
reservation_context_options: Reservation context options
|
||||
add_a_reservation_context: Add a new context
|
||||
do_you_really_want_to_delete_this_reservation_context: "Do you really want to delete this context?"
|
||||
unable_to_delete_reservation_context_already_related_to_reservations: "Unable to delete this context because it is already associated to a reservation"
|
||||
unable_to_delete_reservation_context_an_error_occured: "Unable to delete: an error occurred"
|
||||
family_account: "family account"
|
||||
family_account_info_html: "The Family account allows your members to add their children under 18 years old to their own account and directly register them for Family events. You can also request supporting documents for each child and validate their account."
|
||||
enable_family_account: "Enable the Family Account option"
|
||||
child_validation_required: "the account validation option for children"
|
||||
child_validation_required_label: "Activate the account validation option for children"
|
||||
overlapping_options:
|
||||
training_reservations: "Trainings"
|
||||
machine_reservations: "Machines"
|
||||
space_reservations: "Spaces"
|
||||
events_reservations: "Events"
|
||||
general:
|
||||
general: "General"
|
||||
title: "Title"
|
||||
fablab_title: "FabLab title"
|
||||
title_concordance: "Title concordance"
|
||||
male: "Male."
|
||||
female: "Female."
|
||||
neutral: "Neutral."
|
||||
eg: "eg:"
|
||||
the_team: "The team of"
|
||||
male_preposition: "the"
|
||||
female_preposition: "the"
|
||||
neutral_preposition: ""
|
||||
elements_ordering: "Elements ordering"
|
||||
machines_order: "Machines order"
|
||||
display_machines_sorted_by: "Display machines sorted by"
|
||||
sort_by:
|
||||
default: "Default"
|
||||
name: "Name"
|
||||
created_at: "Creation date"
|
||||
updated_at: "Last update date"
|
||||
public_registrations: "Public registrations"
|
||||
public_registrations_info: "Allow everyone to register a new account on the platform. If disabled, only administrators and managers can create new accounts."
|
||||
public_registrations_allowed: "Public registrations allowed"
|
||||
help: "Help"
|
||||
feature_tour: "Feature tour"
|
||||
feature_tour_info_html: "<p>When an administrator or a manager in logged-in, a feature tour will be triggered the first time he visits each section of the application. You can change this behavior to one of the following values:</p><ul><li>« Once » to keep the default behavior.</li><li>« By session » to display the tours each time you reopen the application.</li><li>« Manual trigger » to prevent displaying the tours automatically. It'll still be possible to trigger them by pressing the F1 key or by clicking on « Help » in the user's menu.</li></ul>"
|
||||
feature_tour_display_mode: "Feature tour display mode"
|
||||
display_mode:
|
||||
once: "Once"
|
||||
session: "By session"
|
||||
manual: "Manual trigger"
|
||||
notifications: "Notifications"
|
||||
email: "Email"
|
||||
email_info: "The email address from which notifications will be sent. You can use a non-existing address (like noreply@...) or an existing address if you want to allow your members to reply to the notifications they receive."
|
||||
email_from: "Expeditor's address"
|
||||
wallet: "Wallet"
|
||||
wallet_info_html: "<p>The virtual wallet allows you to allocate a sum of money to users. Then, can spend this money as they wish, in Fab-manager.</p><p>Members cannot credit their wallet themselves, it's a privilege of managers and administrators.</p>"
|
||||
enable_wallet: "Enable wallet"
|
||||
public_agenda: "Public agenda"
|
||||
public_agenda_info_html: "<p>The public agenda offers to members and visitors a general overview of the Fablab's planning.</p><p>Please note that, even logged, users won't be able to book a reservation or modify anything from this agenda: this is a read-only page.</p>"
|
||||
enable_public_agenda: "Enable public agenda"
|
||||
statistics: "Statistics"
|
||||
statistics_info_html: "<p>Enable or disable the statistics module.</p><p>If enabled, every nights, the data of the day just passed will be consolidated in the database of a powerful analysis engine. Then, every administrators will be able to browse statistical charts and tables in the corresponding section.</p>"
|
||||
enable_statistics: "Enable statistics"
|
||||
account:
|
||||
account: "Account"
|
||||
customize_account_settings: "Customize account settings"
|
||||
user_validation_required: "validation of accounts"
|
||||
user_validation_required_title: "Validation of accounts"
|
||||
user_validation_required_info: "By activating this option, only members whose account is validated by an administrator or a manager will be able to make reservations."
|
||||
user_validation_setting:
|
||||
customization_of_SETTING_successfully_saved: "Customization of the {SETTING} successfully saved."
|
||||
error_SETTING_locked: "Unable to update the setting: {SETTING} is locked. Please contact your system administrator."
|
||||
an_error_occurred_saving_the_setting: "An error occurred while saving the setting. Please try again later."
|
||||
user_validation_required_option_label: "Activate the account validation option"
|
||||
user_validation_required_list_title: "Member account validation information message"
|
||||
user_validation_required_list_info: "Your administrator must validate your account. Then, you will be able to access all the booking features."
|
||||
user_validation_required_list_other_info: "The resources selected below will be subject to member account validation."
|
||||
save: "Save"
|
||||
user_validation_required_list:
|
||||
subscription: "Subscriptions"
|
||||
machine: "Machines"
|
||||
event: "Events"
|
||||
space: "Spaces"
|
||||
training: "Trainings"
|
||||
pack: "Prepaid pack"
|
||||
confirm: "Confirm"
|
||||
confirmation_required: "Confirmation required"
|
||||
organization: "Organization"
|
||||
organization_profile_custom_fields_info: "You can display additional fields for users who declare themselves to be an organization. You can also choose to make them mandatory at account creation."
|
||||
organization_profile_custom_fields_alert: "Warning: the activated fields will be automatically displayed on the issued invoices. Once configured, please do not modify them."
|
||||
supporting_documents_type_modal:
|
||||
successfully_created: "The new supporting documents request has been created."
|
||||
unable_to_create: "Unable to delete the supporting documents request: "
|
||||
successfully_updated: "The supporting documents request has been updated."
|
||||
unable_to_update: "Unable to modify the supporting documents request: "
|
||||
new_type: "Create a supporting documents request"
|
||||
edit_type: "Edit the supporting documents request"
|
||||
create: "Create"
|
||||
edit: "Edit"
|
||||
supporting_documents_type_form:
|
||||
type_form_info: "Please define the supporting documents request settings below"
|
||||
select_group: "Choose one or many group(s)"
|
||||
name: "Name"
|
||||
supporting_documents_types_list:
|
||||
add_supporting_documents_types: "Add supporting documents"
|
||||
all_groups: 'All groups'
|
||||
supporting_documents_type_info: "You can ask for supporting documents, according to the user's groups. This will ask your members to deposit those kind of documents in their personnal space. Each members will be informed that supporting documents are required to be provided in their personal space (My supporting documents tab). On your side, you'll be able to check the provided supporting documents and validate the member's account (if the Account Validation option is enabled)."
|
||||
no_groups_info: "Supporting documents are necessarily applied to groups.<br>If you do not have any group yet, you can create one from the \"Users/Groups\" page (button on the right)."
|
||||
create_groups: "Create groups"
|
||||
supporting_documents_type_title: "Supporting documents requests"
|
||||
add_type: "Add new document"
|
||||
group_name: "Group"
|
||||
name: "Supporting documents"
|
||||
no_types: "You do not have any supporting documents requests.<br>Make sure you have created at least one group in order to add a request."
|
||||
delete_supporting_documents_type_modal:
|
||||
confirmation_required: "Confirmation required"
|
||||
confirm: "Confirm"
|
||||
deleted: "The supporting documents request has been deleted."
|
||||
unable_to_delete: "Unable to delete the supporting documents request: "
|
||||
confirm_delete_supporting_documents_type: "Do you really want to remove this requested type of supporting documents?"
|
||||
profile_custom_fields_list:
|
||||
field_successfully_updated: "The organization field has been updated."
|
||||
unable_to_update: "Impossible to modify the field : "
|
||||
required: "Confirmation required"
|
||||
actived: "Activate the field"
|
||||
home:
|
||||
show_upcoming_events: "Show upcoming events"
|
||||
upcoming_events:
|
||||
until_start: "Until they start"
|
||||
2h_before_end: "Until 2 hours before they end"
|
||||
until_end: "Until they end"
|
||||
privacy:
|
||||
title: "Privacy"
|
||||
privacy_policy: "Privacy policy"
|
||||
input_the_dpo: "Data Protection Officer"
|
||||
current_policy: "Current policy"
|
||||
draft_from_USER_DATE: "Draft, saved by {USER}, on {DATE}"
|
||||
save_or_publish: "Save or publish?"
|
||||
save_or_publish_body: "Do you want to publish a new version of the privacy policy or save it as a draft?"
|
||||
publish_will_notify: "Publish a new version will send a notification to every users."
|
||||
publish: "Publish"
|
||||
users_notified: "Platform users will be notified of the update."
|
||||
about_analytics: "I agree to share anonymous data with the development team to help improve Fab-manager."
|
||||
read_more: "Which data do we collect?"
|
||||
statistics: "Statistics"
|
||||
google_analytics: "Google Analytics"
|
||||
facebook: "Facebook"
|
||||
facebook_info_html: "To enable the statistical tracking of the shares on the Facebook social network, set your App ID here. Refer to <a href='https://developers.facebook.com/docs/apps#register' target='_blank'>this guide</a> to get one."
|
||||
app_id: "App ID"
|
||||
twitter: "Twitter"
|
||||
twitter_info_html: "To enable the statistical tracking of the shares on the Twitter social network, <a href='https://analytics.twitter.com/' target='_blank'>Twitter analytics</a>, set the name of your Twitter account here."
|
||||
twitter_analytics: "Twitter account"
|
||||
analytics:
|
||||
title: "Application improvement"
|
||||
intro_analytics_html: "You'll find below a detailed view of all the data, Fab-manager will collect <strong>if permission is granted.</strong>"
|
||||
version: "Application version"
|
||||
members: "Number of members"
|
||||
admins: "Number of administrators"
|
||||
managers: "Number of managers"
|
||||
availabilities: "Number of availabilities of the last 7 days"
|
||||
reservations: "Number of reservations during the last 7 days"
|
||||
orders: "Number of store orders during the last 7 days"
|
||||
plans: "Is the subscription module active?"
|
||||
spaces: "Is the space management module active?"
|
||||
online_payment: "Is the online payment module active?"
|
||||
gateway: "The payment gateway used to collect online payments"
|
||||
wallet: "Is the wallet module active?"
|
||||
statistics: "Is the statistics module active?"
|
||||
trainings: "Is the trainings module active?"
|
||||
public_agenda: "Is the public agenda module active?"
|
||||
machines: "Is the machines module active?"
|
||||
store: "Is the store module active?"
|
||||
invoices: "Is the invoicing module active?"
|
||||
openlab: "Is the project sharing module (OpenLab) active?"
|
||||
tracking_id_info_html: "To enable the statistical tracking of the visits using Google Analytics V4, set your tracking ID here. It is in the form G-XXXXXX. Visit <a href='https://analytics.google.com/analytics/web/' target='_blank'>the Google Analytics website</a> to get one.<br/><strong>Warning:</strong> if you enable this feature, a cookie will be created. Remember to write it down in your privacy policy, above."
|
||||
tracking_id: "Tracking ID"
|
||||
open_api_clients:
|
||||
add_new_client: "Create new API client"
|
||||
api_documentation: "API documentation"
|
||||
open_api_clients: "OpenAPI clients"
|
||||
name: "Name"
|
||||
calls_count: "Calls count"
|
||||
token: "Token"
|
||||
created_at: "Creation date"
|
||||
reset_token: "Revoke access"
|
||||
client_name: "Client's name"
|
||||
confirmation_required: "Confirmation required"
|
||||
do_you_really_want_to_delete_this_open_api_client: "Do you really want to delete this OpenAPI client?"
|
||||
do_you_really_want_to_revoke_this_open_api_access: "Do you really want to revoke this access? It will erase and replace the current token."
|
||||
client_successfully_created: "Client successfully created."
|
||||
client_successfully_updated: "Client successfully updated."
|
||||
client_successfully_deleted: "Client successfully deleted."
|
||||
access_successfully_revoked: "Access successfully revoked."
|
||||
#create a new space
|
||||
space_new:
|
||||
add_a_new_space: "Add a new space"
|
||||
#modify an exiting space
|
||||
space_edit:
|
||||
edit_the_space_NAME: "Edit the space: {NAME}"
|
||||
validate_the_changes: "Validate the changes"
|
||||
#process and delete abuses reports
|
||||
manage_abuses:
|
||||
abuses_list: "Reports list"
|
||||
no_reports: "No reports for now"
|
||||
published_by: "published by"
|
||||
at_date: "on"
|
||||
has_reported: "made the following report:"
|
||||
confirmation_required: "Confirm the processing of the report"
|
||||
report_will_be_destroyed: "Once the report has been processed, it will be deleted. This can't be undone, continue?"
|
||||
report_removed: "The report has been deleted"
|
||||
failed_to_remove: "An error occurred, unable to delete the report"
|
||||
local_payment_form:
|
||||
about_to_cash: "You're about to confirm the cashing by an external payment mean. Please do not click on the button below until you have fully cashed the requested payment."
|
||||
about_to_confirm: "You're about to confirm your {ITEM, select, subscription{subscription} reservation{reservation} other{order}}."
|
||||
payment_method: "Payment method"
|
||||
method_card: "Online by card"
|
||||
method_check: "By check"
|
||||
method_transfer: "By bank transfer"
|
||||
card_collection_info: "By validating, you'll be prompted for the member's card number. This card will be automatically charged at the deadlines."
|
||||
check_collection_info: "By validating, you confirm that you have {DEADLINES} checks, allowing you to collect all the monthly payments."
|
||||
transfer_collection_info: "<p>By validating, you confirm that you set up {DEADLINES} bank direct debits, allowing you to collect all the monthly payments.</p><p><strong>Please note:</strong> the bank transfers are not automatically handled by Fab-manager.</p>"
|
||||
online_payment_disabled: "Online payment is not available. You cannot collect this payment schedule by online card."
|
||||
local_payment_modal:
|
||||
validate_cart: "Validate my cart"
|
||||
offline_payment: "Payment on site"
|
||||
check_list_setting:
|
||||
save: 'Save'
|
||||
customization_of_SETTING_successfully_saved: "Customization of the {SETTING} successfully saved."
|
||||
#feature tour
|
||||
tour:
|
||||
conclusion:
|
||||
title: "Thank you for your attention"
|
||||
content: "<p>If you want to restart this contextual help, press <strong>F1</strong> at any time or click on [? Help] from the user's menu.</p><p>If you need additional help, you can <a href='http://guide-fr.fab.mn' target='_blank'>check the user guide</a> (only in French for now).</p><p>The Fab-manager's team also provides personalized support (help with getting started, help with installation, customization, etc.), <a href='mailto:contact@fab-manager.com'>contact-us</a> for more info.</p>"
|
||||
trainings:
|
||||
welcome:
|
||||
title: "Trainings"
|
||||
content: "Here you can create, modify and delete trainings. It is also the place where you can validate the training courses followed by your members."
|
||||
welcome_manager:
|
||||
title: "Trainings"
|
||||
content: "This is the place where you can view the trainings and their associations with the machines. It is also the place where you can validate the training courses followed by your members."
|
||||
trainings:
|
||||
title: "Manage trainings"
|
||||
content: "<p>With each training, a default number of places is associated. However, the number of actual places may be modified for each session.</p><p>The training sessions are scheduled from the administrator tab « Calendar ».</p><p>Furthermore, a training may be associated with one or more machines. This makes it a prerequisite for the reservation of these machines.</p>"
|
||||
filter:
|
||||
title: "Filter"
|
||||
content: "By default, only active courses are displayed here. Display the others by choosing another filter here."
|
||||
tracking:
|
||||
title: "Trainings monitoring"
|
||||
content: "Once a training session is finished, you can validate the training for the members present from this screen. This validation is essential to allow them to use the associated machines, if applicable."
|
||||
calendar:
|
||||
welcome:
|
||||
title: "Calendar"
|
||||
content: "From this screen, you can plan the slots during which training, machines and spaces will be bookable by members."
|
||||
agenda:
|
||||
title: "The calendar"
|
||||
content: "Click in the calendar to start creating a new availability range. You can directly select the entire time range desired by maintaining your click."
|
||||
export:
|
||||
title: "Export"
|
||||
content: "Start generating an Excel file, listing all the availability slots created in the calendar."
|
||||
import:
|
||||
title: "Import external calendars"
|
||||
content: "Allows you to import calendars from an external source in iCal format."
|
||||
members:
|
||||
welcome:
|
||||
title: "Users"
|
||||
content: "Here you can create, modify and delete members and administrators. You can also manage groups, labels, import / export with spreadsheet files and connect SSO software."
|
||||
list:
|
||||
title: "Members list"
|
||||
content: "By default, this table lists all the members of your Fab-manager. You can sort the list in a different order by clicking on the header of each column."
|
||||
search:
|
||||
title: "Find a user"
|
||||
content: "This input field allows you to search for any text on all of the columns in the table below."
|
||||
filter:
|
||||
title: "Filter the list"
|
||||
content: "<p>Filter the list below to display only users who have not confirmed their email address or inactive accounts for more than 3 years.</p><p>Please notice that the GDPR requires that you delete any accounts inactive for more than 3 years.</p>"
|
||||
actions:
|
||||
title: "Members actions"
|
||||
content: "<p>The buttons in this column allow you to display and modify all of the member's parameters, or to delete them irreversibly.</p><p>In the event of a deletion, the billing information will be kept for 10 years and statistical data will also be kept anonymously.</p>"
|
||||
exports:
|
||||
title: "Export"
|
||||
content: "Each of these buttons starts the generation of an Excel file listing all the members, subscriptions or reservations, current and past."
|
||||
import:
|
||||
title: "Import members"
|
||||
content: "Allows you to import a list of members to create in Fab-manager, from a CSV file."
|
||||
admins:
|
||||
title: "Manage administrators"
|
||||
content: "In the same way as the members, manage the administrators of your Fab-manager here.<br>The administrators can take reservations for any member as well as modify all the parameters of the software."
|
||||
groups:
|
||||
title: "Manage groups"
|
||||
content: "<p>Groups allow you to better segment your price list.</p><p>When you set up Fab-manager for the first time, it is recommended to start by defining the groups.</p>"
|
||||
labels:
|
||||
title: "Manage tags"
|
||||
content: "The labels allow you to reserve certain slots for users associated with these same labels."
|
||||
sso:
|
||||
title: "Single Sign-On"
|
||||
content: "Here you can set up and manage a single authentication system (SSO)."
|
||||
invoices:
|
||||
welcome:
|
||||
title: "Invoices"
|
||||
content: "<p>Here you will be able to download invoices and credit notes issued, as well as manage everything related to accounting and invoicing.</p><p>If you use third-party software to manage your invoices, it is possible to deactivate the billing module. For this, contact your system administrator.</p>"
|
||||
welcome_manager:
|
||||
title: "Invoices"
|
||||
content: "Here you will be able to download invoices and create credit notes."
|
||||
list:
|
||||
title: "Invoices list"
|
||||
content: "By default, this table lists all the invoices and credit notes issued by Fab-manager. You can sort the list in a different order by clicking on the header of each column."
|
||||
chained:
|
||||
title: "Chaining indicator"
|
||||
content: "<p>This icon ensures the inalterability of the accounting data of the invoice on this line, in accordance with the French finance law of 2018 against VAT fraud.</p><p>If a red icon appears instead of this one , please contact technical support immediately.</p>"
|
||||
download:
|
||||
title: "Download"
|
||||
content: "Click here to download the invoice in PDF format."
|
||||
refund:
|
||||
title: "Credit note"
|
||||
content: "Allows you to generate a credit note for the invoice on this line or some of its sub-elements. <strong>Warning:</strong> This will only generate the accounting document, the actual refund of the user will always be your responsibility."
|
||||
payment-schedules:
|
||||
title: "Payment schedules"
|
||||
content: "<p>Some subscription plans may be configured to allow the members to pay them with a monthly payment schedule.</p><p>Here you can view all existing payment schedules and manage their deadlines.</p><p>Click on [+] at the beginning of a row to display all deadlines associated with a payment schedule, and run some actions on them.</p>"
|
||||
settings:
|
||||
title: "Settings"
|
||||
content: "<p>Here you can modify the parameters for invoices generation. Click on the item you are interested in to start editing.</p><p>In particular, this is where you can set if you are subject to VAT and the applicable rate.</p>"
|
||||
codes:
|
||||
title: "Accounting codes"
|
||||
content: "Set the accounting codes here for all kinds of entries generated by the software. This setting is only required if you use the accounting export functionality."
|
||||
export:
|
||||
title: "Accounting export"
|
||||
content: "Once the codes have been configured, click here to access the interface allowing you to export the entries to a third-party accounting software."
|
||||
payment:
|
||||
title: "Payment settings"
|
||||
content: "If you want to allow your members to book directly online by paying by credit card, you can activate and configure this feature from this page."
|
||||
periods:
|
||||
title: "Close accounting periods"
|
||||
content: "<p>The regulations of your country may require you to close your accounts regularly. The interface accessible from this button allows you to do this.</p> <p><strong>In France,</strong> if you are subject to VAT anti-fraud law <a href='https://bofip.impots.gouv.fr/bofip/10691-PGP.html' target='_blank'>BOI-TVA-DECLA-30-10-30-20160803</a>, this closing is mandatory at least once a year.</p><p>As a reminder, if you have to use a certified software (<a href='https://www.impots.gouv.fr/portail/suis-je-oblige-davoir-un-logiciel-de-caisse-securise' target='_blank'>take the test here</a>), you are under the legal obligation to provide a certificate of compliance of the software. <a href='mailto:contact@fab-manager.com'>Contact-us<a/> to get it.</p>"
|
||||
pricing:
|
||||
welcome:
|
||||
title: "Subscriptions & Prices"
|
||||
content: "Manage subscription plans and prices for the various services you offer to your members."
|
||||
new_plan:
|
||||
title: "New subscription plan"
|
||||
content: "Create subscription plans to offer preferential prices on machines and spaces to regular users."
|
||||
trainings:
|
||||
title: "Trainings"
|
||||
content: "Define training prices here, by user group."
|
||||
machines:
|
||||
title: "Machines"
|
||||
content: "Define here the prices of the machine slots, by user group. These prices will be applied to users who do not have subscriptions."
|
||||
spaces:
|
||||
title: "Spaces"
|
||||
content: "In the same way, define here the prices of the spaces slots, for the users without subscriptions."
|
||||
credits:
|
||||
title: "Credits"
|
||||
content: "<p>Credits allow you to give certain services for free to users who subscribe to a plan.</p><p>You can, for example, offer 2 hours of 3D printer for all annual subscriptions; or training of your choice for student subscribers, etc.</p>"
|
||||
coupons:
|
||||
title: "Coupons"
|
||||
content: "Create and manage promotional coupons allowing to offer punctual discounts to their holders."
|
||||
events:
|
||||
welcome:
|
||||
title: "Events"
|
||||
content: "Create events, track their reservations and organize them from this page."
|
||||
list:
|
||||
title: "The events"
|
||||
content: "This list displays all past or future events, as well as the number of reservations for each of them."
|
||||
filter:
|
||||
title: "Filter events"
|
||||
content: "Only display upcoming events in the list below; or on the contrary, only those already passed."
|
||||
categories:
|
||||
title: "Categories"
|
||||
content: "Categories help your users know what type of event it is. A category is required for each of the newly created events."
|
||||
themes:
|
||||
title: "Themes"
|
||||
content: "<p>Themes are an additional (and optional) categorization of your events. They can group together different events of very different forms.</p><p>For example, a two-day course about marquetry and an evening workshop about the handling of the wood planer, can be found in the theme « carpentry ».</p>"
|
||||
ages:
|
||||
title: "Age groups"
|
||||
content: "This other optional filter will help your users find events suited to their profile."
|
||||
prices:
|
||||
title: "Pricing categories"
|
||||
content: "The price of events does not depend on groups or subscriptions, but on the categories you define on this page."
|
||||
projects:
|
||||
welcome:
|
||||
title: "Projects"
|
||||
content: "Here you can define all the elements that will be available for members to document the projects they carry out. You can also define various parameters related to the projects."
|
||||
abuses:
|
||||
title: "Manage reports"
|
||||
content: "<p>Access here the management of reports.</p><p>Visitors can signal projects, for example for copyright infringement or for hate speech.</p><p>GDPR requires you to delete this reporting data once the required actions have been taken.</p>"
|
||||
settings:
|
||||
title: "Settings"
|
||||
content: "<p>Comments, CAD files ... Manage project parameters here</p><p>You can also activate OpenLab projects, in order to display the projects shared by other Fab Labs in your gallery.</p>"
|
||||
statistics:
|
||||
welcome:
|
||||
title: "Statistics"
|
||||
content: "<p>From here, you will be able to access many statistics on your members and their uses within your Fab Lab.</p><p>In accordance with GDPR, users who have deleted their account continue to be reported in the statistics, but anonymously.</p>"
|
||||
export:
|
||||
title: "Export data"
|
||||
content: "You can choose to export all or part of the statistical data to an Excel file."
|
||||
trending:
|
||||
title: "Evolution"
|
||||
content: "Visualize the evolution over time of the main uses of your Fab Lab, thanks to graphs and curves."
|
||||
settings:
|
||||
welcome:
|
||||
title: "Application customization"
|
||||
content: "From here, you can configure the general settings of Fab-manager, enable or disable the optional modules and customize various elements of the interface."
|
||||
general:
|
||||
title: "General settings"
|
||||
content: "A lot a settings can be customized from here. Take time to look all over this page, it will let you customize messages, documents, optional modules, registrations, visual aspect of Fab-manager, and much more."
|
||||
home:
|
||||
title: "Customize home page"
|
||||
content: "<p>This WYSIWYG editor allows you to customize the appearance of the home page while using different components (last tweet, brief, etc.).</p><p><strong>Warning:</strong> Keep in mind that any uncontrolled changes can break the appearance of the home page.</p>"
|
||||
components:
|
||||
title: "Insert a component"
|
||||
content: "Click here to insert a pre-existing component into the home page."
|
||||
codeview:
|
||||
title: "Display HTML code"
|
||||
content: "This button allows you to directly view and modify the code of the home page. This is the recommended way to proceed, but it requires prior knowledge of HTML."
|
||||
reset:
|
||||
title: "Go back"
|
||||
content: "At any time, you can restore the original home page by clicking here."
|
||||
css:
|
||||
title: "Customize the style sheet"
|
||||
content: "For advanced users, it is possible to define a custom style sheet (CSS) for the home page."
|
||||
about:
|
||||
title: "About"
|
||||
content: "Fully personalize this page to present your activity."
|
||||
privacy:
|
||||
title: "Privacy policy"
|
||||
content: "<p>Explain here how you use the data you collect about your members.</p><p>GDPR requires that a confidentiality policy is defined, as well as a data protection officer.</p>"
|
||||
draft:
|
||||
title: "Draft"
|
||||
content: "Click here to view a privacy policy draft with holes, which you just need to read and complete."
|
||||
reservations:
|
||||
title: "Reservations"
|
||||
content: "Opening hours, chance to cancel reservations... Each Fablab has its own reservation rules, which you can define on this page."
|
||||
open_api:
|
||||
welcome:
|
||||
title: "OpenAPI"
|
||||
content: "Fab-manager offers an open API allowing third-party software to deal simply with its data. This screen allows you to grant accesses to this API."
|
||||
doc:
|
||||
title: "Documentation"
|
||||
content: "Click here to access the API online documentation."
|
||||
store:
|
||||
manage_the_store: "Manage the Store"
|
||||
settings: "Settings"
|
||||
all_products: "All products"
|
||||
categories_of_store: "Store categories"
|
||||
the_orders: "Orders"
|
||||
back_to_list: "Back to list"
|
||||
product_categories:
|
||||
title: "All categories"
|
||||
info: "Arrange categories with a drag and drop on a maximum of two levels. The order of the categories will be identical between the list below and the public view. Please note that you can delete a category or a sub-category even if they are associated with products. Those products will be left without categories. If you delete a category that contains sub-categories, the latter will also be deleted."
|
||||
manage_product_category:
|
||||
create: "Create a product category"
|
||||
update: "Modify the product category"
|
||||
delete: "Delete the product category"
|
||||
product_category_modal:
|
||||
new_product_category: "Create a category"
|
||||
edit_product_category: "Modify a category"
|
||||
product_category_form:
|
||||
name: "Name of category"
|
||||
slug: "URL"
|
||||
select_parent_product_category: "Choose a parent category (N1)"
|
||||
no_parent: "No parent"
|
||||
create:
|
||||
error: "Unable to create the category: "
|
||||
success: "The new category has been created."
|
||||
update:
|
||||
error: "Unable to modify the category: "
|
||||
success: "The category has been modified."
|
||||
delete:
|
||||
confirm: "Do you really want to delete <strong>{CATEGORY}</strong>?<br>If it has sub-categories, they will also be deleted."
|
||||
save: "Delete"
|
||||
error: "Unable to delete the category: "
|
||||
success: "The category has been successfully deleted"
|
||||
save: "Save"
|
||||
required: "This field is required"
|
||||
slug_pattern: "Only lowercase alphanumeric groups of characters separated by an hyphen"
|
||||
categories_filter:
|
||||
filter_categories: "By categories"
|
||||
filter_apply: "Apply"
|
||||
machines_filter:
|
||||
filter_machines: "By machines"
|
||||
filter_apply: "Apply"
|
||||
keyword_filter:
|
||||
filter_keywords_reference: "By keywords or reference"
|
||||
filter_apply: "Apply"
|
||||
stock_filter:
|
||||
stock_internal: "Private stock"
|
||||
stock_external: "Public stock"
|
||||
filter_stock: "By stock status"
|
||||
filter_stock_from: "From"
|
||||
filter_stock_to: "to"
|
||||
filter_apply: "Apply"
|
||||
products:
|
||||
unexpected_error_occurred: "An unexpected error occurred. Please try again later."
|
||||
all_products: "All products"
|
||||
create_a_product: "Create a product"
|
||||
filter: "Filter"
|
||||
filter_clear: "Clear all"
|
||||
filter_apply: "Apply"
|
||||
filter_categories: "By categories"
|
||||
filter_machines: "By machines"
|
||||
filter_keywords_reference: "By keywords or reference"
|
||||
filter_stock: "By stock status"
|
||||
stock_internal: "Private stock"
|
||||
stock_external: "Public stock"
|
||||
filter_stock_from: "From"
|
||||
filter_stock_to: "to"
|
||||
sort:
|
||||
name_az: "A-Z"
|
||||
name_za: "Z-A"
|
||||
price_low: "Price: low to high"
|
||||
price_high: "Price: high to low"
|
||||
store_list_header:
|
||||
result_count: "Result count:"
|
||||
sort: "Sort:"
|
||||
visible_only: "Visible products only"
|
||||
product_item:
|
||||
product: "product"
|
||||
visible: "visible"
|
||||
hidden: "hidden"
|
||||
stock:
|
||||
internal: "Private stock"
|
||||
external: "Public stock"
|
||||
unit: "unit"
|
||||
new_product:
|
||||
add_a_new_product: "Add a new product"
|
||||
successfully_created: "The new product has been created."
|
||||
edit_product:
|
||||
successfully_updated: "The product has been updated."
|
||||
successfully_cloned: "The product has been duplicated."
|
||||
product_form:
|
||||
product_parameters: "Product parameters"
|
||||
stock_management: "Stock management"
|
||||
description: "Description"
|
||||
description_info: "The text will be presented in the product sheet. You have a few editorial styles at your disposal."
|
||||
name: "Name of product"
|
||||
sku: "Product reference (SKU)"
|
||||
slug: "URL"
|
||||
is_show_in_store: "Available in the store"
|
||||
is_active_price: "Activate the price"
|
||||
active_price_info: "Is this product visible by the members on the store?"
|
||||
price_and_rule_of_selling_product: "Price and rule for selling the product"
|
||||
price: "Price of product"
|
||||
quantity_min: "Minimum number of items for the shopping cart"
|
||||
linking_product_to_category: "Linking this product to an existing category"
|
||||
assigning_category: "Assigning a category"
|
||||
assigning_category_info: "You can only declare one category per product. If you assign this product to a sub-category, it will automatically be assigned to its parent category as well."
|
||||
assigning_machines: "Assigning machines"
|
||||
assigning_machines_info: "You can link one or more machines from your workshop to your product. This product will then be subject to the filters on the catalogue view. The selected machines will be linked to the product."
|
||||
product_files: "Document"
|
||||
product_files_info: "Add documents related to this product. They will be presented in the product sheet, in a separate block. You can only upload PDF documents."
|
||||
add_product_file: "Add a document"
|
||||
product_images: "Visuals of the product"
|
||||
product_images_info: "We advise you to use a square format, JPG or PNG. For JPG, please use white for the background colour. The main visual will be the first presented in the product sheet."
|
||||
add_product_image: "Add a visual"
|
||||
save: "Save"
|
||||
clone: "Duplicate"
|
||||
product_stock_form:
|
||||
stock_up_to_date: "Stock up to date"
|
||||
date_time: "{DATE} - {TIME}"
|
||||
ongoing_operations: "Ongoing stock operations"
|
||||
save_reminder: "Don't forget to save your operations"
|
||||
low_stock_threshold: "Define a low stock threshold"
|
||||
stock_threshold_toggle: "Activate stock threshold"
|
||||
stock_threshold_info: "Define a low stock threshold and receive a notification when it's reached. When the threshold is reached, the product quantity is labeled as low."
|
||||
low_stock: "Low stock"
|
||||
threshold_level: "Minimum threshold level"
|
||||
threshold_alert: "Notify me when the threshold is reached"
|
||||
events_history: "Events history"
|
||||
event_type: "Events:"
|
||||
reason: "Reason"
|
||||
stocks: "Stock:"
|
||||
internal: "Private stock"
|
||||
external: "Public stock"
|
||||
edit: "Edit"
|
||||
all: "All types"
|
||||
remaining_stock: "Remaining stock"
|
||||
type_in: "Add"
|
||||
type_out: "Remove"
|
||||
cancel: "Cancel this operation"
|
||||
product_stock_modal:
|
||||
modal_title: "Manage stock"
|
||||
internal: "Private stock"
|
||||
external: "Public stock"
|
||||
new_event: "New stock event"
|
||||
addition: "Addition"
|
||||
withdrawal: "Withdrawal"
|
||||
update_stock: "Update stock"
|
||||
reason_type: "Reason"
|
||||
stocks: "Stock:"
|
||||
quantity: "Quantity"
|
||||
stock_movement_reason:
|
||||
inward_stock: "Inward stock"
|
||||
returned: "Returned by client"
|
||||
cancelled: "Canceled by client"
|
||||
inventory_fix: "Inventory fix"
|
||||
sold: "Sold"
|
||||
missing: "Missing in stock"
|
||||
damaged: "Damaged product"
|
||||
other_in: "Other (in)"
|
||||
other_out: "Other (out)"
|
||||
clone_product_modal:
|
||||
clone_product: "Duplicate the product"
|
||||
clone: "Duplicate"
|
||||
name: "Name"
|
||||
sku: "Product reference (SKU)"
|
||||
is_show_in_store: "Available in the store"
|
||||
active_price_info: "Is this product visible by the members on the store?"
|
||||
orders:
|
||||
heading: "Orders"
|
||||
create_order: "Create an order"
|
||||
filter: "Filter"
|
||||
filter_clear: "Clear all"
|
||||
filter_apply: "Apply"
|
||||
filter_ref: "By reference"
|
||||
filter_status: "By status"
|
||||
filter_client: "By client"
|
||||
filter_period: "By period"
|
||||
filter_period_from: "From"
|
||||
filter_period_to: "to"
|
||||
state:
|
||||
cart: 'Cart'
|
||||
in_progress: 'Under preparation'
|
||||
paid: "Paid"
|
||||
payment_failed: "Payment error"
|
||||
canceled: "Canceled"
|
||||
ready: "Ready"
|
||||
refunded: "Refunded"
|
||||
delivered: "Delivered"
|
||||
sort:
|
||||
newest: "Newest first"
|
||||
oldest: "Oldest first"
|
||||
store_settings:
|
||||
title: "Settings"
|
||||
withdrawal_instructions: 'Product withdrawal instructions'
|
||||
withdrawal_info: "This text is displayed on the checkout page to inform the client about the products withdrawal method"
|
||||
store_hidden_title: "Store publicly available"
|
||||
store_hidden_info: "You can hide the store to the eyes of the members and the visitors."
|
||||
store_hidden: "Hide the store"
|
||||
save: "Save"
|
||||
update_success: "The settings were successfully updated"
|
||||
invoices_settings_panel:
|
||||
disable_invoices_zero: "Disable the invoices at 0"
|
||||
disable_invoices_zero_label: "Do not generate invoices at {AMOUNT}"
|
||||
filename: "Edit the file name"
|
||||
filename_info: "<strong>Information</strong><p>The invoices are generated as PDF files, named with the following prefix.</p>"
|
||||
schedule_filename: "Edit the payment schedule file name"
|
||||
schedule_filename_info: "<strong>Information</strong><p>The payment shedules are generated as PDF files, named with the following prefix.</p>"
|
||||
prefix: "Prefix"
|
||||
example: "Example"
|
||||
save: "Save"
|
||||
update_success: "The settings were successfully updated"
|
||||
vat_settings_modal:
|
||||
title: "VAT settings"
|
||||
update_success: "The VAT settings were successfully updated"
|
||||
enable_VAT: "Enable VAT"
|
||||
VAT_name: "VAT name"
|
||||
VAT_name_help: "Some countries or regions may require that the VAT is named according to their specific local regulation"
|
||||
VAT_rate: "VAT rate"
|
||||
VAT_rate_help: "This parameter configures the general case of the VAT rate and applies to everything sold by the Fablab. It is possible to override this parameter by setting a specific VAT rate for each object."
|
||||
advanced: "More rates"
|
||||
hide_advanced: "Less rates"
|
||||
show_history: "Show the changes history"
|
||||
VAT_rate_machine: "Machine reservation"
|
||||
VAT_rate_space: "Space reservation"
|
||||
VAT_rate_training: "Training reservation"
|
||||
VAT_rate_event: "Event reservation"
|
||||
VAT_rate_subscription: "Subscription"
|
||||
VAT_rate_product: "Products (store)"
|
||||
multi_VAT_notice: "<strong>Please note</strong>: The current general rate is {RATE}%. You can define different VAT rates for each category.<br><br>For example, you can override this value, only for machine reservations, by filling in the corresponding field beside. If you don't fill any value, the general rate will apply."
|
||||
save: "Save"
|
||||
setting_history_modal:
|
||||
title: "Changes history"
|
||||
no_history: "No changes for now."
|
||||
setting: "Setting"
|
||||
value: "Value"
|
||||
date: "Changed at"
|
||||
operator: "By"
|
||||
editorial_block_form:
|
||||
content: "Content"
|
||||
content_is_required: "You must provide a content. If you wish to disable the banner, toggle the switch above this field."
|
||||
label_is_required: "You must provide a label. If you wish to disable the button, toggle the switch above this field."
|
||||
url_is_required: "You must provide a link for your button."
|
||||
url_must_be_safe: "The button link should start with http://... or https://..."
|
||||
title: "Banner"
|
||||
switch: "Display the banner"
|
||||
cta_switch: "Display a button"
|
||||
cta_label: "Button label"
|
||||
cta_url: "Button link"
|
||||
reservation_contexts:
|
||||
name: "Name"
|
||||
applicable_on: "Applicable on"
|
||||
machine: Machine
|
||||
training: Training
|
||||
space: Space
|
@ -1230,6 +1230,7 @@ zu:
|
||||
local_database: "crwdns25688:0crwdne25688:0"
|
||||
o_auth2: "crwdns25690:0crwdne25690:0"
|
||||
openid_connect: "crwdns25692:0crwdne25692:0"
|
||||
saml: "crwdns38138:0crwdne38138:0"
|
||||
group_form:
|
||||
add_a_group: "crwdns25694:0crwdne25694:0"
|
||||
group_name: "crwdns25696:0crwdne25696:0"
|
||||
@ -1496,6 +1497,10 @@ zu:
|
||||
api_field: "crwdns26098:0crwdne26098:0"
|
||||
api_field_help_html: 'crwdns26100:0crwdne26100:0'
|
||||
openid_standard_configuration: "crwdns26102:0crwdne26102:0"
|
||||
saml_data_mapping_form:
|
||||
api_field: "crwdns38140:0crwdne38140:0"
|
||||
api_field_help_html: "crwdns38142:0crwdne38142:0"
|
||||
openid_standard_configuration: "crwdns38144:0crwdne38144:0"
|
||||
type_mapping_modal:
|
||||
data_mapping: "crwdns26104:0crwdne26104:0"
|
||||
TYPE_expected: "crwdns26106:0{TYPE}crwdne26106:0"
|
||||
@ -1552,6 +1557,16 @@ zu:
|
||||
client__end_session_endpoint_help: "crwdns26202:0crwdne26202:0"
|
||||
extra_authorize_params: "crwdns37725:0crwdne37725:0"
|
||||
extra_authorize_params_help: "crwdns37727:0crwdne37727:0"
|
||||
saml_form:
|
||||
authorization_callback_url: "crwdns38146:0crwdne38146:0"
|
||||
sp_entity_id: "crwdns38148:0crwdne38148:0"
|
||||
sp_entity_id_help: "crwdns38150:0crwdne38150:0"
|
||||
idp_sso_service_url: "crwdns38152:0crwdne38152:0"
|
||||
idp_sso_service_url_help: "crwdns38154:0crwdne38154:0"
|
||||
idp_cert_fingerprint: "crwdns38156:0crwdne38156:0"
|
||||
idp_cert: "crwdns38158:0crwdne38158:0"
|
||||
profile_edition_url: "crwdns38160:0crwdne38160:0"
|
||||
profile_edition_url_help: "crwdns38162:0crwdne38162:0"
|
||||
provider_form:
|
||||
name: "crwdns26204:0crwdne26204:0"
|
||||
authentication_type: "crwdns26206:0crwdne26206:0"
|
||||
@ -1562,6 +1577,7 @@ zu:
|
||||
local_database: "crwdns26214:0crwdne26214:0"
|
||||
oauth2: "crwdns26216:0crwdne26216:0"
|
||||
openid_connect: "crwdns26218:0crwdne26218:0"
|
||||
saml: "crwdns38164:0crwdne38164:0"
|
||||
#create a new authentication provider (SSO)
|
||||
authentication_new:
|
||||
add_a_new_authentication_provider: "crwdns26220:0crwdne26220:0"
|
||||
|
355
config/locales/app.logged.sv.yml
Normal file
355
config/locales/app.logged.sv.yml
Normal file
@ -0,0 +1,355 @@
|
||||
sv:
|
||||
app:
|
||||
logged:
|
||||
#user's profile completion page when logging from an SSO provider
|
||||
profile_completion:
|
||||
confirm_your_new_account: "Bekräfta ditt nya konto"
|
||||
or: "eller"
|
||||
do_you_already_have_an_account: "Har du redan ett konto?"
|
||||
do_not_fill_the_form_beside_but_specify_here_the_code_you_ve_received_by_email_to_recover_your_access: "Fyll inte i formuläret bredvid men ange här koden du har fått via e-post, för att återställa din åtkomst."
|
||||
just_specify_code_here_to_recover_access: "Fyll i koden du har fått via e-post, för att återställa din åtkomst."
|
||||
i_did_not_receive_the_code: "Jag tog inte emot koden"
|
||||
authentification_code: "Auktoriseringskod"
|
||||
confirm_my_code: "Bekräfta kod"
|
||||
an_unexpected_error_occurred_check_your_authentication_code: "Ett oväntat fel uppstod, kontrollera din autentiseringskod."
|
||||
send_code_again: "Skicka koden igen"
|
||||
email_address_associated_with_your_account: "E-postadress kopplad till kontot"
|
||||
email_is_required: "E-postadress krävs"
|
||||
email_format_is_incorrect: "E-postformatet är felaktigt"
|
||||
code_successfully_sent_again: "Koden har skickats igen"
|
||||
used_for_statistics: "Dessa uppgifter kommer att användas för statistiska ändamål"
|
||||
your_user_s_profile: "Din användares profil"
|
||||
user_s_profile_is_required: "Användarprofil måste fyllas i."
|
||||
i_ve_read_and_i_accept_: "Jag har läst och accepterat"
|
||||
_the_fablab_policy: "fabLab policy"
|
||||
your_profile_has_been_successfully_updated: "Din profil har uppdaterats."
|
||||
completion_header_info:
|
||||
rules_changed: "Fyll i följande formulär för att uppdatera din profil och fortsätt att använda plattformen."
|
||||
sso_intro: "Du har precis skapat ett nytt konto på {GENDER, select, neutral{} other{}} {NAME}genom att logga från"
|
||||
duplicate_email_info: "Det verkar som om din e-postadress redan används av en annan användare. Kontrollera din e-postadress och ange nedan den kod du har fått."
|
||||
details_needed_info: "För att slutföra ditt konto behöver vi lite mer information."
|
||||
profile_form_option:
|
||||
title: "Är du ny här?"
|
||||
please_fill: "Fyll i följande formulär för att skapa ditt konto."
|
||||
disabled_data_from_sso: "Vissa data kan redan ha tillhandahållits av {NAME} och kan inte ändras."
|
||||
confirm_instructions_html: "När du är klar, klicka på <strong>Spara</strong> för att bekräfta ditt konto och börja använda programmet."
|
||||
duplicate_email_html: "Det verkar som om din e-postadress <strong>({EMAIL})</strong> redan är associerad med ett annat konto. Om detta konto inte är ditt, klicka på följande knapp för att ändra e-postmeddelandet som är kopplat till ditt {PROVIDER} -konto."
|
||||
edit_profile: "Ändra mina uppgifter"
|
||||
after_edition_info_html: "När dina data är uppdaterade, <strong>klicka på synkroniseringsknappen under</strong>, eller <strong>koppla bort sedan återanslut</strong> för att dina ändringar ska träda i kraft."
|
||||
sync_profile: "Synkronisera min profil"
|
||||
event_reservation_item:
|
||||
event: "Evenemang"
|
||||
family: "Reserverat för Medlemmar"
|
||||
nominative: "Nominativ"
|
||||
pre_registration: "Föranmälan"
|
||||
NUMBER_normal_places_reserved: "{NUMBER} {NUMBER, plural, one {}=0{} =1{normal plats reserverad} other{normala platser reserverade}}"
|
||||
NUMBER_of_NAME_places_reserved: "{NUMBER} {NUMBER, plural, one {}=0{} =1{av {NAME} plats reserverad} other{av {NAME} platser reserverade}}"
|
||||
tracking_your_reservation: "Spåra din bokning"
|
||||
in_the_process_of_validation: "I processen för validering"
|
||||
settle_your_payment: "Betala på plats"
|
||||
paid: "Betald"
|
||||
canceled: "Avbruten"
|
||||
registered: "Registrerad"
|
||||
not_validated: "Ej validerad"
|
||||
present: "Närvarande"
|
||||
dashboard:
|
||||
#dashboard: public profile
|
||||
profile:
|
||||
empty: ''
|
||||
#dashboard: edit my profile
|
||||
settings:
|
||||
last_activity_on_: "Senaste aktivitet på {DATE}"
|
||||
i_want_to_change_group: "Jag vill byta grupp!"
|
||||
your_subscription_expires_on_: "Din prenumeration löper ut den"
|
||||
no_subscriptions: "Inga prenumerationer"
|
||||
i_want_to_subscribe: "Jag vill prenumerera!"
|
||||
to_come: "kommande"
|
||||
approved: "godkänt"
|
||||
projects: "Projekt"
|
||||
no_projects: "Inga projekt"
|
||||
labels: "Etiketter"
|
||||
no_labels: "Inga etiketter"
|
||||
cookies: "Cookies"
|
||||
cookies_accepted: "Du har accepterat cookies"
|
||||
cookies_declined: "Du har avböjt cookies"
|
||||
cookies_unset: "Du har inte valt ännu"
|
||||
reset_cookies: "Ändra mitt val"
|
||||
delete_my_account: "Ta bort mitt konto"
|
||||
edit_my_profile: "Redigera min profil"
|
||||
your_group_has_been_successfully_changed: "Din grupp har ändrats."
|
||||
an_unexpected_error_prevented_your_group_from_being_changed: "Ett oväntat fel förhindrade att din grupp ändrades."
|
||||
confirmation_required: "Verifiering krävs"
|
||||
confirm_delete_your_account: "Vill du verkligen radera ditt konto?"
|
||||
all_data_will_be_lost: "Alla dina data raderas och kan inte återställas."
|
||||
invoicing_data_kept: "Enligt lag kommer uppgifter om dina fakturor att sparas upp till 10 år."
|
||||
statistic_data_anonymized: "Vissa uppgifter (kön, födelsedatum, grupp) kommer att anonymiseras och sparas för statistiska ändamål."
|
||||
no_further_access_to_projects: "Dina publicerade projekt anonymiseras och du får ingen ytterligare möjlighet att redigera dem."
|
||||
your_user_account_has_been_successfully_deleted_goodbye: "Ditt användarkonto har tagits bort."
|
||||
an_error_occured_preventing_your_account_from_being_deleted: "Ett fel uppstod, vilket förhindrar att ditt konto tas bort."
|
||||
used_for_statistics: "Dessa uppgifter kommer att användas för statistiska ändamål"
|
||||
used_for_invoicing: "Dessa uppgifter kommer att användas för faktureringsändamål"
|
||||
used_for_reservation: "Dessa uppgifter kommer att användas i händelse av ändring av dina bokningar"
|
||||
used_for_profile: "Dessa uppgifter kommer endast att visas på din profil"
|
||||
used_for_pricing_stats: "Dessa uppgifter kommer att användas för att bestämma vilka priser du har rätt till, och för statistiska ändamål"
|
||||
public_profile: "Du kommer att ha en publik profil och andra användare kommer att kunna knyta dig till sina projekt"
|
||||
trainings: "Utbildningar"
|
||||
no_trainings: "Inga utbildningar"
|
||||
subscription: "Prenumeration"
|
||||
group: "Grupp"
|
||||
or: "eller"
|
||||
confirm_changes: "Bekräfta ändringar"
|
||||
change_my_data: "Ändra mina uppgifter"
|
||||
sync_my_profile: "Synkronisera min profil"
|
||||
once_your_data_are_up_to_date_: "När dina uppgifter är uppdaterade,"
|
||||
_click_on_the_synchronization_button_opposite_: "klicka på synkroniseringsknappen mittemot"
|
||||
_disconnect_then_reconnect_: "koppla bort sedan återanslut"
|
||||
_for_your_changes_to_take_effect: "för att dina ändringar ska träda i kraft."
|
||||
your_profile_has_been_successfully_updated: "Din profil har uppdaterats."
|
||||
#dashboard: my projects
|
||||
projects:
|
||||
you_dont_have_any_projects: "Du har inte några projekt."
|
||||
add_a_project: "Lägg till projekt"
|
||||
author: "Upphovsman"
|
||||
collaborator: "Samarbetspartner"
|
||||
rough_draft: "Utkast"
|
||||
description: "Beskrivning"
|
||||
machines_and_materials: "Utrustning och material"
|
||||
machines: "Utrustning"
|
||||
materials: "Material"
|
||||
collaborators: "Medverkande"
|
||||
#dashboard: my trainings
|
||||
trainings:
|
||||
your_next_trainings: "Dina kommande utbildningar"
|
||||
your_previous_trainings: "Dina tidigare utbildningar"
|
||||
your_approved_trainings: "Dina godkända utbildningar"
|
||||
no_trainings: "Inga utbildningar"
|
||||
your_training_credits: "Dina utbildningskrediter"
|
||||
subscribe_for_credits: "Prenumerera för att dra nytta av gratis utbildningar"
|
||||
register_for_free: "Registrera dig gratis till följande utbildningar:"
|
||||
book_here: "Boka här"
|
||||
canceled: "Avbruten"
|
||||
#dashboard: my events
|
||||
events:
|
||||
your_next_events: "Dina kommande händelser"
|
||||
no_events_to_come: "Inga kommande evenemang"
|
||||
your_previous_events: "Dina tidigare händelser"
|
||||
no_passed_events: "Inga tidigare evenemang"
|
||||
NUMBER_normal_places_reserved: "{NUMBER} {NUMBER, plural, one {}=0{} =1{normal plats reserverad} other{normala platser reserverade}}"
|
||||
NUMBER_of_NAME_places_reserved: "{NUMBER} {NUMBER, plural, one {}=0{} =1{av {NAME} plats reserverad} other{av {NAME} platser reserverade}}"
|
||||
#dashboard: my invoices
|
||||
invoices:
|
||||
reference_number: "Referensnummer"
|
||||
date: "Datum"
|
||||
price: "Pris"
|
||||
download_the_invoice: "Hämta faktura"
|
||||
download_the_credit_note: "Hämta kreditnota"
|
||||
no_invoices_for_now: "Inga fakturor för tillfället."
|
||||
payment_schedules_dashboard:
|
||||
no_payment_schedules: "Inga betalningsscheman att visa"
|
||||
load_more: "Ladda mer"
|
||||
card_updated_success: "Ditt kort har sparats"
|
||||
supporting_documents_files:
|
||||
file_successfully_uploaded: "Underlagen har skickats."
|
||||
unable_to_upload: "Det går inte att skicka underlagen: "
|
||||
supporting_documents_files: "Underlag"
|
||||
my_documents_info: "På grund av din grupptillhörighet krävs vissa underlag. När de har skickats in kommer dessa dokument att verifieras av administratören."
|
||||
upload_limits_alert_html: "Varning!<br>Du kan skicka dina dokument som PDF eller bilder (JPEG, PNG). Maximal tillåten storlek: {SIZE} Mb"
|
||||
file_size_error: "Filstorleken överskrider gränsen ({SIZE} MB)"
|
||||
save: "Spara"
|
||||
browse: "Bläddra"
|
||||
edit: "Redigera"
|
||||
reservations_dashboard:
|
||||
machine_section_title: "Utrustningsbokning"
|
||||
space_section_title: "Lokalbokning"
|
||||
reservations_panel:
|
||||
title: "Mina bokningar"
|
||||
upcoming: "Kommande"
|
||||
date: "Datum"
|
||||
history: "Historik"
|
||||
no_reservation: "Ingen bokning"
|
||||
show_more: "Visa mer"
|
||||
cancelled_slot: "Inställt"
|
||||
reservations_panel_as_admin:
|
||||
title: "Bokningar"
|
||||
credits_panel:
|
||||
title: "Mina krediter"
|
||||
info: "Din prenumeration levereras med gratis krediter du kan använda när du bokar"
|
||||
remaining_credits_html: "Du kan boka {REMAINING} {REMAINING, plural, one{plats} other{platser}} gratis."
|
||||
used_credits_html: "Du har redan använt <strong> {USED} {USED, plural, =0{kredit} one{kredit} other{krediter}}</strong>."
|
||||
no_credits: "Du har inga krediter ännu. Vissa prenumerationer kan tillåta dig att boka några platser gratis."
|
||||
credits_panel_as_admin:
|
||||
title: "Krediter"
|
||||
remaining_credits_html: "{REMAINING} {REMAINING, plural, one{plats} other{platser}} kan bokas gratis."
|
||||
used_credits_html: "<strong> {USED} {USED, plural, =0{krediter} one{kredit} other{krediter}}</strong> används redan."
|
||||
no_credits: "Inga krediter ännu."
|
||||
prepaid_packs_panel:
|
||||
title: "Mina förbetalda paket"
|
||||
name: "Förbetalt paket"
|
||||
end: "Förfallodatum"
|
||||
countdown: "Nedräkning"
|
||||
history: "Historik"
|
||||
consumed_hours: "{COUNT, plural, one {}=1{1timme förbrukad} other{{COUNT}timmar förbrukade}}"
|
||||
cta_info: "Du kan köpa förbetalda paket för att boka utrustning och dra nytta av rabatter. Välj utrustning för att köpa motsvarande paket."
|
||||
select_machine: "Välj utrustning"
|
||||
cta_button: "Köp ett paket"
|
||||
no_packs: "Inga förbetalda paket tillgängliga för försäljning"
|
||||
reserved_for_subscribers_html: 'Köpet av förbetalda paket är reserverat för prenumeranter. <a href="{LINK}">Prenumerera nu</a> för att dra nytta av det.'
|
||||
prepaid_packs_panel_as_admin:
|
||||
title: "Förbetalda paket"
|
||||
#public profil of a member
|
||||
members_show:
|
||||
members_list: "Medlemslista"
|
||||
#list of members accepting to be contacted
|
||||
members:
|
||||
the_fablab_members: "Fab Lab medlemmar"
|
||||
display_more_members: "Visa fler medlemmar..."
|
||||
no_members_for_now: "Inga medlemmar just nu"
|
||||
avatar: "Profilbild"
|
||||
user: "Användare"
|
||||
pseudonym: "Pseudonym"
|
||||
email_address: "E-postadress"
|
||||
#add a new project
|
||||
projects_new:
|
||||
add_a_new_project: "Lägg till ett nytt projekt"
|
||||
#modify an existing project
|
||||
projects_edit:
|
||||
edit_the_project: "Redigera projektet"
|
||||
rough_draft: "Utkast"
|
||||
publish: "Publicera"
|
||||
#book a machine
|
||||
machines_reserve:
|
||||
machine_planning: "Utrustningsplanering"
|
||||
i_ve_reserved: "Jag har bokat"
|
||||
not_available: "Inte tillgänglig"
|
||||
i_reserve: "Jag reserverar"
|
||||
i_shift: "Jag byter"
|
||||
i_change: "Jag ändrar"
|
||||
do_you_really_want_to_cancel_this_reservation: "Vill du avboka den här bokningen?"
|
||||
reservation_was_cancelled_successfully: "Bokningen avbröts."
|
||||
cancellation_failed: "Avbokning misslyckades."
|
||||
a_problem_occured_during_the_payment_process_please_try_again_later: "Ett problem uppstod under betalningsprocessen. Försök igen senare."
|
||||
#modal telling users that they must wait for their training validation before booking a machine
|
||||
pending_training_modal:
|
||||
machine_reservation: "Utrustningsbokning"
|
||||
wait_for_validated: "Du måste vänta på din utbildning valideras av teamet för att boka denna maskin."
|
||||
training_will_occur_DATE_html: "Din utbildning kommer att ske den <strong>{DATE}</strong>"
|
||||
DATE_TIME: "{DATE} {TIME}"
|
||||
#modal telling users that they need to pass a training before booking a machine
|
||||
required_training_modal:
|
||||
to_book_MACHINE_requires_TRAINING_html: "För att boka \"{MACHINE}\" måste du ha slutfört utbildningen <strong>{TRAINING}</strong>."
|
||||
training_or_training_html: "</strong> eller utbildningen <strong>"
|
||||
enroll_now: "Anmäl dig till utbildningen"
|
||||
no_enroll_for_now: "Jag vill inte anmäla mig nu"
|
||||
close: "Avsluta"
|
||||
propose_packs_modal:
|
||||
available_packs: "Förbetalda paket tillgängliga"
|
||||
packs_proposed: "Du kan köpa ett förbetalt paket timmar för denna utrustning. Med dessa paket kan du dra nytta av volymrabatter."
|
||||
no_thanks: "Nej, tack"
|
||||
pack_DURATION: "{DURATION} timmar"
|
||||
buy_this_pack: "Köp detta paket"
|
||||
pack_bought_success: "Du har köpt detta paket med förbetalda timmar. Din faktura kommer att vara tillgänglig inom kort från kontrollpanelen."
|
||||
validity: "Giltig för {COUNT} {PERIODS}"
|
||||
period:
|
||||
day: "{COUNT, plural, one{dag} other{dagar}}"
|
||||
week: "{COUNT, plural, one{vecka} other{veckor}}"
|
||||
month: "{COUNT, plural, one{månad} other{månader}}"
|
||||
year: "{COUNT, plural, one{år} other{år}}"
|
||||
packs_summary:
|
||||
prepaid_hours: "Förbetalda timmar"
|
||||
remaining_HOURS: "Du har {HOURS} förbetalda timmar kvar för detta {ITEM, select, Machine{utrustning} Space{lokal} other{}}."
|
||||
no_hours: "Du har inga förbetalda timmar för denna {ITEM, select, Machine{utrustning} Space{lokal} other{}}."
|
||||
buy_a_new_pack: "Köp ett nytt paket"
|
||||
unable_to_use_pack_for_subsription_is_expired: "Du måste ha en giltig prenumeration för att använda dina återstående timmar."
|
||||
#book a training
|
||||
trainings_reserve:
|
||||
trainings_planning: "Utbildningsplanering"
|
||||
planning_of: "Planering av " #eg. Planning of 3d printer training
|
||||
all_trainings: "Alla utbildningar"
|
||||
cancel_my_selection: "Avmarkera alla"
|
||||
i_change: "Jag ändrar"
|
||||
i_shift: "Jag byter"
|
||||
i_ve_reserved: "Jag har bokat"
|
||||
#book a space
|
||||
space_reserve:
|
||||
planning_of_space_NAME: "Planering av lokalen {NAME}"
|
||||
i_ve_reserved: "Jag har bokat"
|
||||
i_shift: "Jag byter"
|
||||
i_change: "Jag ändrar"
|
||||
notifications:
|
||||
notifications_center: "Notifieringscenter"
|
||||
notifications_list:
|
||||
notifications: "Alla notifikationer"
|
||||
mark_all_as_read: "Markera alla som lästa"
|
||||
date: "Datum"
|
||||
notif_title: "Rubrik"
|
||||
no_new_notifications: "Inga nya notifikationer."
|
||||
archives: "Arkiv"
|
||||
no_archived_notifications: "Inga arkiverade meddelanden."
|
||||
load_the_next_notifications: "Ladda nästa avisering..."
|
||||
notification_inline:
|
||||
mark_as_read: "Markera som läst"
|
||||
notifications_center:
|
||||
notifications_list: "Alla notifikationer"
|
||||
notifications_settings: "Meddelandeinställningar"
|
||||
notifications_category:
|
||||
enable_all: "Aktivera alla"
|
||||
disable_all: "Inaktivera alla"
|
||||
notify_me_when: "Jag vill bli underrättad när"
|
||||
users_accounts: "Angående användaraviseringar"
|
||||
supporting_documents: "Angående meddelanden om underlag"
|
||||
agenda: "Angående meddelanden om dagordningen"
|
||||
subscriptions: "Angående meddelanden om prenumerationer"
|
||||
payments: "Angående meddelanden om betalningsscheman"
|
||||
wallet: "Angående plånboksmeddelanden"
|
||||
shop: "Angående butiksmeddelanden"
|
||||
projects: "Angående projektnotifieringar"
|
||||
accountings: "Angående bokföringsmeddelanden"
|
||||
trainings: "Angående utbildningsmeddelanden"
|
||||
app_management: "Angående aviseringar för apphantering"
|
||||
notification_form:
|
||||
notify_admin_when_user_is_created: "Användarkonto har skapats"
|
||||
notify_admin_child_created: "Ett barn har lagts till"
|
||||
notify_admin_when_user_is_imported: "Ett användarkonto har importerats"
|
||||
notify_admin_profile_complete: "Ett importerat konto har slutfört sin profil"
|
||||
notify_admin_user_merged: "Ett importerat konto har slagits samman med ett befintligt konto"
|
||||
notify_admins_role_update: "Rollen för en användare har ändrats"
|
||||
notify_admin_import_complete: "En import är klar"
|
||||
notify_admin_user_group_changed: "En användare har ändrat sin grupp"
|
||||
notify_admin_user_supporting_document_refusal: "Ett underlag har avvisats"
|
||||
notify_admin_user_child_supporting_document_refusal: "Ett underlag för ett barn har avvisats"
|
||||
notify_admin_user_supporting_document_files_created: "En användare har laddat upp ett underlag"
|
||||
notify_admin_user_supporting_document_files_updated: "En användare har uppdaterat ett underlag"
|
||||
notify_admin_user_child_supporting_document_files_created: "Ett barn har laddat upp ett underlag"
|
||||
notify_admin_user_child_supporting_document_files_updated: "Ett barn har uppdaterat ett underlag"
|
||||
notify_admin_member_create_reservation: "En medlem gör en bokning"
|
||||
notify_admin_slot_is_modified: "En plats har ändrats"
|
||||
notify_admin_slot_is_canceled: "En bokning har avbokats"
|
||||
notify_admin_reservation_validated: "En bokning har validerats"
|
||||
notify_admin_reservation_invalidated: "En bokning har ogiltigförklarats"
|
||||
notify_admin_member_pre_booked_reservation: "En förbokning har gjorts"
|
||||
notify_admin_subscribed_plan: "En prenumeration har köpts"
|
||||
notify_admin_subscription_will_expire_in_7_days: "Ett medlemsabonnemang löper ut om 7 dagar"
|
||||
notify_admin_subscription_is_expired: "Din medlemskap har löpt ut"
|
||||
notify_admin_subscription_extended: "En prenumeration har förlängts"
|
||||
notify_admin_subscription_canceled: "En medlemsprenumeration har avbrutits"
|
||||
notify_admin_payment_schedule_failed: "Debitering av kortet misslyckades"
|
||||
notify_admin_payment_schedule_check_deadline: "En check måste lösas in"
|
||||
notify_admin_payment_schedule_transfer_deadline: "En bankbetalning måste bekräftas"
|
||||
notify_admin_payment_schedule_error: "Ett oväntat fel inträffade under kortdebiteringen"
|
||||
notify_admin_refund_created: "En återbetalning har skapats"
|
||||
notify_admin_user_wallet_is_credited: "En användares plånbok har krediterats"
|
||||
notify_user_order_is_ready: "Din beställning är redo"
|
||||
notify_user_order_is_canceled: "Din beställning är avbruten"
|
||||
notify_user_order_is_refunded: "Din beställning har återbetalats"
|
||||
notify_admin_low_stock_threshold: "Lagersaldot är lågt"
|
||||
notify_admin_when_project_published: "Ett projekt har publicerats"
|
||||
notify_admin_abuse_reported: "Ett kränkande innehåll har rapporterats"
|
||||
notify_admin_close_period_reminder: "Räkenskapsåret närmar sig sitt slut"
|
||||
notify_admin_archive_complete: "Ett bokföringsarkiv är klart"
|
||||
notify_admin_training_auto_cancelled: "En utbildning avbröts automatiskt"
|
||||
notify_admin_export_complete: "En export är tillgänglig"
|
||||
notify_user_when_invoice_ready: "En faktura är tillgänglig"
|
||||
notify_admin_payment_schedule_gateway_canceled: "Ett betalningsschema har avbrutits av betalningsleverantören"
|
||||
notify_project_collaborator_to_valid: "Du är inbjuden att delta i projektet"
|
||||
notify_project_author_when_collaborator_valid: "En samarbetspartner har accepterat din inbjudan att gå med i ditt projekt"
|
||||
notify_admin_order_is_paid: "En ny beställning har lagts"
|
615
config/locales/app.public.sv.yml
Normal file
615
config/locales/app.public.sv.yml
Normal file
@ -0,0 +1,615 @@
|
||||
sv:
|
||||
app:
|
||||
public:
|
||||
#header and "about" page
|
||||
common:
|
||||
about_the_fablab: "Om {GENDER, select, male{den} female{den} neutral{} other{den}} {NAME}"
|
||||
return: "Tillbaka"
|
||||
#cookies
|
||||
cookies:
|
||||
about_cookies: "Denna webbplats använder cookies för målgruppsmätning."
|
||||
learn_more: "Läs mer"
|
||||
accept: "Acceptera cookies"
|
||||
decline: "Neka"
|
||||
#dashboard sections
|
||||
dashboard: "Översikt"
|
||||
my_profile: "Min profil"
|
||||
my_children: "Mina barn"
|
||||
my_settings: "Mina inställningar"
|
||||
my_supporting_documents_files: "Mina hjälpdokument"
|
||||
my_projects: "Mina projekt"
|
||||
my_trainings: "Mina utbildningar"
|
||||
my_reservations: "Mina bokningar"
|
||||
my_events: "Mina evenemang"
|
||||
my_invoices: "Mina fakturor"
|
||||
my_payment_schedules: "Mina återkommande betalningar"
|
||||
my_orders: "Mina beställningar"
|
||||
my_wallet: "Min plånbok"
|
||||
#contextual help
|
||||
help: "Hjälp"
|
||||
#login/logout
|
||||
sign_out: "Logga ut"
|
||||
sign_up: "Skapa konto"
|
||||
sign_in: "Logga in"
|
||||
#left menu
|
||||
notifications: "Aviseringar"
|
||||
admin: "Admin"
|
||||
manager: "Ansvarig"
|
||||
reduce_panel: "Minska panelen"
|
||||
#left menu (public)
|
||||
home: "Startsida"
|
||||
reserve_a_machine: "Boka en maskin"
|
||||
trainings_registrations: "Registrera utbildning"
|
||||
events_registrations: "Registrera evenemang"
|
||||
reserve_a_space: "Boka lokal"
|
||||
projects_gallery: "Projektgalleri"
|
||||
subscriptions: "Prenumerationer"
|
||||
public_calendar: "Kalender"
|
||||
fablab_store: "Butik"
|
||||
#left menu (admin)
|
||||
trainings_monitoring: "Utbildningar"
|
||||
manage_the_calendar: "Kalender"
|
||||
manage_the_users: "Användare"
|
||||
manage_the_invoices: "Fakturor"
|
||||
subscriptions_and_prices: "Prenumerationer och priser"
|
||||
manage_the_events: "Evenemang"
|
||||
manage_the_machines: "Utrustning"
|
||||
manage_the_store: "Butik"
|
||||
manage_the_spaces: "Lokaler"
|
||||
projects: "Projekt"
|
||||
statistics: "Statistik"
|
||||
customization: "Anpassning"
|
||||
open_api_clients: "OpenAPI-klienter"
|
||||
#account creation modal
|
||||
create_your_account: "Skapa konto"
|
||||
man: "Man"
|
||||
woman: "Kvinna"
|
||||
gender_is_required: "Kön krävs."
|
||||
your_first_name: "Ditt förnamn"
|
||||
first_name_is_required: "Förnamn måste fyllas i."
|
||||
your_surname: "Ditt efternamn"
|
||||
surname_is_required: "Efternamn måste fyllas i."
|
||||
your_pseudonym: "Din pseudonym"
|
||||
pseudonym_is_required: "Pseudonym krävs."
|
||||
your_email_address: "Din e-postadress"
|
||||
email_is_required: "E-postadress måste anges."
|
||||
your_password: "Lösenord"
|
||||
password_is_required: "Lösenord krävs."
|
||||
password_is_too_short: "Lösenordet är för kort (minst 12 tecken)"
|
||||
password_is_too_weak: "Lösenordet är för svagt:"
|
||||
password_is_too_weak_explanations: "minst 12 tecken, minst en stor bokstav, en liten bokstav, ett nummer och ett specialtecken"
|
||||
type_your_password_again: "Ange ditt lösenord igen"
|
||||
password_confirmation_is_required: "Ange lösenord igen."
|
||||
password_does_not_match_with_confirmation: "Lösenorden stämmer inte överens."
|
||||
i_am_an_organization: "Jag företräder en organisation"
|
||||
name_of_your_organization: "Namnet på din organisation"
|
||||
organization_name_is_required: "Organisationsnamn måste fyllas i."
|
||||
address_of_your_organization: "Adress till din organisation"
|
||||
organization_address_is_required: "Organisationsadress måste fyllas i."
|
||||
your_user_s_profile: "Din användares profil"
|
||||
user_s_profile_is_required: "Användarprofil måste fyllas i."
|
||||
birth_date: "Födelsedatum"
|
||||
birth_date_is_required: "Födelsedatum måste fyllas i."
|
||||
phone_number: "Telefonnummer"
|
||||
phone_number_is_required: "Telefonnummer måste fyllas i."
|
||||
address: "Adress"
|
||||
address_is_required: "Adress måste fyllas i"
|
||||
i_authorize_Fablab_users_registered_on_the_site_to_contact_me: "Jag samtycker till att dela min e-postadress med registrerade medlemmar på denna sida"
|
||||
i_accept_to_receive_information_from_the_fablab: "Jag accepterar att få information från FabLab"
|
||||
i_ve_read_and_i_accept_: "Jag har läst och accepterat"
|
||||
_the_fablab_policy: "användarvillkoren"
|
||||
field_required: "Obligatoriskt fält"
|
||||
profile_custom_field_is_required: "{FEILD} krävs"
|
||||
user_supporting_documents_required: "Varning!<br>Du har förklarat att du är \"{GROUP}\", underlag kan komma att begäras in."
|
||||
unexpected_error_occurred: "Ett oväntat fel inträffade. Var god försök senare."
|
||||
used_for_statistics: "Dessa uppgifter kommer att användas för statistiska ändamål"
|
||||
used_for_invoicing: "Dessa uppgifter kommer att användas för faktureringsändamål"
|
||||
used_for_reservation: "Dessa uppgifter kommer att användas i händelse av ändring av dina bokningar"
|
||||
used_for_profile: "Denna data kommer endast att visas på din profil"
|
||||
public_profile: "Du kommer att ha en publik profil och andra användare kommer att kunna knyta dig till sina projekt"
|
||||
you_will_receive_confirmation_instructions_by_email_detailed: "Om din e-postadress finns i vår databas får du inom ett par minuter ett e-postmeddelande med instruktioner för hur du bekräftar ditt konto."
|
||||
#password modification modal
|
||||
change_your_password: "Byt lösenord"
|
||||
your_new_password: "Ditt nya lösenord"
|
||||
your_password_was_successfully_changed: "Ditt lösenord har nu ändrats."
|
||||
#connection modal
|
||||
connection: "Kontakter"
|
||||
password_forgotten: "Glömt lösenordet?"
|
||||
confirm_my_account: "Bekräfta e-postadress"
|
||||
not_registered_to_the_fablab: "Ännu inte registrerad?"
|
||||
create_an_account: "Skapa ett konto"
|
||||
wrong_email_or_password: "Fel användarnamn eller lösenord."
|
||||
caps_lock_is_on: "Caps lock är på."
|
||||
#confirmation modal
|
||||
you_will_receive_confirmation_instructions_by_email: "Du kommer att få bekräftelse med instruktioner via e-post."
|
||||
#forgotten password modal
|
||||
you_will_receive_in_a_moment_an_email_with_instructions_to_reset_your_password: "Om din e-postadress är giltig kommer du strax att få ett e-postmeddelande med instruktioner för att återställa ditt lösenord."
|
||||
#Fab-manager's version
|
||||
version: "Version:"
|
||||
upgrade_fabmanager: "Uppgradera Fab-manager"
|
||||
current_version: "Du använder för närvarande version {VERSION} av Fab-manager."
|
||||
upgrade_to: "En ny utgåva är tillgänglig. Du kan uppgradera till version {VERSION}."
|
||||
read_more: "Visa detaljerna i denna utgåva"
|
||||
security_version_html: "<strong>Din nuvarande version är sårbar!</strong><br> En senare version finns tillgänglig som inkluderar säkerhetsuppdateringar. Uppgradera så snart som möjligt!"
|
||||
how_to: "Hur man uppgraderar?"
|
||||
#Notifications
|
||||
and_NUMBER_other_notifications: "och {NUMBER, plural, one {}=0{inga andra notifieringar} =1{ytterligare en notifiering} other{{NUMBER} andra notifieringar}}..."
|
||||
#about page
|
||||
about:
|
||||
read_the_fablab_policy: "Användarvillkor"
|
||||
read_the_fablab_s_general_terms_and_conditions: "Läs de allmänna villkoren"
|
||||
your_fablab_s_contacts: "Kontakta oss"
|
||||
privacy_policy: "Integritetspolicy"
|
||||
#'privacy policy' page
|
||||
privacy:
|
||||
title: "Integritetspolicy"
|
||||
dpo: "Dataskyddsombud"
|
||||
last_update: "Senast uppdaterad"
|
||||
#home page
|
||||
home:
|
||||
latest_documented_projects: "De senaste dokumenterade projekten"
|
||||
follow_us: "Följ oss"
|
||||
latest_tweets: "De senaste tweetarna"
|
||||
latest_registered_members: "Senast registrerade medlemmar"
|
||||
create_an_account: "Skapa ett konto"
|
||||
discover_members: "Upptäck medlemmar"
|
||||
#next events summary on the home page
|
||||
fablab_s_next_events: "Nästa evenemang"
|
||||
every_events: "Alla evenemang"
|
||||
event_card:
|
||||
on_the_date: "Den {DATE}"
|
||||
from_date_to_date: "Från {START} till {END}"
|
||||
from_time_to_time: "Från {START} till {END}"
|
||||
all_day: "Hela dagen"
|
||||
still_available: "Tillgängliga lokaler: "
|
||||
event_full: "Evenemanget fullbokat"
|
||||
without_reservation: "Utan bokning"
|
||||
free_admission: "Fri entré"
|
||||
full_price: "Ordinarie pris: "
|
||||
#projects gallery
|
||||
projects_list:
|
||||
filter: Filtrera
|
||||
the_fablab_projects: "Projekten"
|
||||
add_a_project: "Lägg till projekt"
|
||||
network_search: "Fab-manager nätverk"
|
||||
tooltip_openlab_projects_switch: "Med en sökning i hela nätverket kan du söka över projekt i varje Fab-manager med denna funktion!"
|
||||
openlab_search_not_available_at_the_moment: "Sökningar över hela nätverket är inte tillgängligt just nu. Du kan fortfarande söka över projekten i denna plattform."
|
||||
project_search_result_is_empty: "Tyvärr hittade vi inga resultat som matchar dina sökkriterier."
|
||||
reset_all_filters: "Radera Allt"
|
||||
keywords: "Sökord"
|
||||
all_projects: "Alla projekt"
|
||||
my_projects: "Mina projekt"
|
||||
projects_to_whom_i_take_part_in: "Projekt som jag deltar i"
|
||||
all_machines: "All utrustning"
|
||||
all_themes: "Alla teman"
|
||||
all_materials: "Allt material"
|
||||
load_next_projects: "Ladda nästa projekt"
|
||||
rough_draft: "Grovt utkast"
|
||||
filter_by_member: "Filtrera efter medlem"
|
||||
created_from: Skapad fr. o. m
|
||||
created_to: Skapad t. o. m
|
||||
download_archive: Ladda ner
|
||||
status_filter:
|
||||
all_statuses: "Alla statusar"
|
||||
select_status: "Välj status"
|
||||
#details of a projet
|
||||
projects_show:
|
||||
rough_draft: "Utkast"
|
||||
project_description: "Projektbeskrivning"
|
||||
by_name: "Av {NAME}"
|
||||
step_N: "Steg {INDEX}"
|
||||
share_on_facebook: "Dela på Facebook"
|
||||
share_on_twitter: "Dela på Twitter"
|
||||
deleted_user: "Ta bort användare"
|
||||
posted_on_: "Postat den"
|
||||
CAD_file_to_download: "{COUNT, plural, one {}=0{Inga CAD-filer} =1{CAD-fil att ladda ner} other{CAD-filer att ladda ner}}"
|
||||
machines_and_materials: "Utrustning och material"
|
||||
collaborators: "Medverkande"
|
||||
licence: "Licens"
|
||||
confirmation_required: "Verifiering krävs"
|
||||
report_an_abuse: "Anmäl missbruk"
|
||||
unauthorized_operation: "Obehörig åtgärd"
|
||||
your_report_was_successful_thanks: "Er anmälan lyckades, tack."
|
||||
an_error_occured_while_sending_your_report: "Ett fel inträffade när din anmälan skulle skickas."
|
||||
your_first_name: "Ditt förnamn"
|
||||
your_first_name_is_required: "Förnamn måste fyllas i."
|
||||
your_surname: "Ditt efternamn"
|
||||
your_surname_is_required: "Efternamn måste fyllas i."
|
||||
your_email_address: "Din e-postadress"
|
||||
your_email_address_is_required: "E-postadress måste anges."
|
||||
tell_us_why_this_looks_abusive: "Berätta varför detta ser kränkande ut"
|
||||
message_is_required: "Ett meddelande krävs."
|
||||
report: "Anmäl"
|
||||
do_you_really_want_to_delete_this_project: "Vill du verkligen ta bort detta projekt?"
|
||||
status: "Status"
|
||||
markdown_file: "Markdown-fil"
|
||||
#list of machines
|
||||
machines_list:
|
||||
the_fablab_s_machines: "Utrustningen"
|
||||
add_a_machine: "Lägg till utrustning"
|
||||
new_availability: "Öppna bokningar"
|
||||
book: "Boka"
|
||||
_or_the_: " eller "
|
||||
store_ad:
|
||||
title: "Upptäck vår butik"
|
||||
buy: "Se produkter från medlemmarnas verksamheter samt förbrukningsmateriel relaterade till utrustning och verktyg i våra lokaler."
|
||||
sell: "Om du också vill sälja dina produkter, vänligen meddela oss."
|
||||
link: "Till butiken"
|
||||
machines_filters:
|
||||
show_machines: "Visa utrustning:"
|
||||
status_enabled: "Aktiverad"
|
||||
status_disabled: "Inaktiverad"
|
||||
status_all: "Allt"
|
||||
filter_by_machine_category: "Filtrera efter kategori:"
|
||||
all_machines: "All utrustning"
|
||||
machine_card:
|
||||
book: "Boka"
|
||||
consult: "Fråga"
|
||||
#details of a machine
|
||||
machines_show:
|
||||
book_this_machine: "Boka utrustning"
|
||||
technical_specifications: "Tekniska specifikationer"
|
||||
files_to_download: "Filer att ladda ner"
|
||||
projects_using_the_machine: "Projekt som använder utrustningen"
|
||||
_or_the_: " eller "
|
||||
confirmation_required: "Verifiering krävs"
|
||||
do_you_really_want_to_delete_this_machine: "Vill du verkligen ta bort den här utrustningen?"
|
||||
unauthorized_operation: "Obehörig åtgärd"
|
||||
the_machine_cant_be_deleted_because_it_is_already_reserved_by_some_users: "Utrustningen kan inte tas bort eftersom den redan är reserverad av andra användare."
|
||||
#list of trainings
|
||||
trainings_list:
|
||||
book: "Boka"
|
||||
the_trainings: "Utbildningarna"
|
||||
#details of a training
|
||||
training_show:
|
||||
book_this_training: "Boka utbildningen"
|
||||
do_you_really_want_to_delete_this_training: "Vill du verkligen ta bort den här utbildningen?"
|
||||
unauthorized_operation: "Obehörig åtgärd"
|
||||
confirmation_required: "Verifiering krävs"
|
||||
the_training_cant_be_deleted_because_it_is_already_reserved_by_some_users: "Utbildningen kan inte tas bort eftersom den redan är reserverad av andra användare."
|
||||
plan_card:
|
||||
AMOUNT_per_month: "{AMOUNT} / månad"
|
||||
i_subscribe_online: "Jag prenumererar online"
|
||||
more_information: "Mer information"
|
||||
i_choose_that_plan: "Jag väljer betalningsplanen"
|
||||
i_already_subscribed: "Redan prenumerant"
|
||||
#summary of the subscriptions
|
||||
plans:
|
||||
subscriptions: "Prenumerationer"
|
||||
your_subscription_expires_on_the_DATE: "Ditt abonnemang löper ut den {DATE}"
|
||||
no_plans: "Inga betalningsplaner finns tillgängliga för din grupp"
|
||||
my_group: "Min grupp"
|
||||
his_group: "Användargrupp"
|
||||
he_wants_to_change_group: "Ändra grupp"
|
||||
change_my_group: "Validera gruppändring"
|
||||
summary: "Sammanfattning"
|
||||
your_subscription_has_expired_on_the_DATE: "Ditt abonnemang löper ut den {DATE}"
|
||||
subscription_price: "Prenumerationspris"
|
||||
you_ve_just_payed_the_subscription_html: "Du har betalat <strong>prenumerationen</strong>:"
|
||||
thank_you_your_subscription_is_successful: "Tack. Din prenumeration är genomförd!"
|
||||
your_invoice_will_be_available_soon_from_your_dashboard: "Din faktura kommer att finnas tillgänglig från din översiktsvy inom kort"
|
||||
your_group_was_successfully_changed: "Din grupp har ändrats."
|
||||
the_user_s_group_was_successfully_changed: "Användarens grupp har ändrats."
|
||||
an_error_prevented_your_group_from_being_changed: "Ett fel förhindrade att din grupp ändrades."
|
||||
an_error_prevented_to_change_the_user_s_group: "Ett fel förhindrade att ändra användarens grupp."
|
||||
plans_filter:
|
||||
i_am: "Jag är"
|
||||
select_group: "välj en grupp"
|
||||
i_want_duration: "Jag vill prenumerera på"
|
||||
all_durations: "Alla perioder"
|
||||
select_duration: "välj period"
|
||||
#Fablab's events list
|
||||
events_list:
|
||||
the_fablab_s_events: "Evenemangen"
|
||||
all_categories: "Alla kategorier"
|
||||
for_all: "För alla"
|
||||
sold_out: "Slutsåld"
|
||||
cancelled: "Inställt"
|
||||
free_admission: "Fri entré"
|
||||
still_available: "tillgängliga lokaler"
|
||||
without_reservation: "Utan bokning"
|
||||
add_an_event: "Lägg till ett evenemang"
|
||||
load_the_next_events: "Ladda nästa evenemang..."
|
||||
full_price_: "Ordinarie pris:"
|
||||
to_date: "till" #e.g. from 01/01 to 01/05
|
||||
all_themes: "Alla teman"
|
||||
#details and booking of an event
|
||||
events_show:
|
||||
event_description: "Evenmangsbeskrivning"
|
||||
downloadable_documents: "Nedladdningsbara dokument"
|
||||
information_and_booking: "Information och bokning"
|
||||
event_type:
|
||||
family: "Evenemang reserverat för medlemmar"
|
||||
nominative: "Personligt evenemang"
|
||||
dates: "Datum"
|
||||
beginning: "Början:"
|
||||
ending: "Slutar:"
|
||||
opening_hours: "Öppettider:"
|
||||
all_day: "Heldag"
|
||||
from_time: "Från" #e.g. from 18:00 to 21:00
|
||||
to_time: "till" #e.g. from 18:00 to 21:00
|
||||
full_price_: "Ordinarie pris:"
|
||||
tickets_still_availables: "Biljetter finns kvar:"
|
||||
sold_out: "Slutsåld."
|
||||
without_reservation: "Utan bokning"
|
||||
cancelled: "Inställt"
|
||||
ticket: "{NUMBER, plural, one{biljett} other{biljetter}}"
|
||||
make_a_gift_of_this_reservation: "Ge bort denna bokning som gåva"
|
||||
thank_you_your_payment_has_been_successfully_registered: "Tack. Din betalning har registrerats!"
|
||||
thank_you_your_pre_registration_has_been_successfully_saved: "Tack. Din föranmälan har sparats!"
|
||||
you_can_find_your_reservation_s_details_on_your_: "Du kan hitta dina bokningsuppgifter på din"
|
||||
informed_by_email_your_pre_registration: "Du kommer att hållas informerad via e-post om de händelser som gäller din föranmälan."
|
||||
dashboard: "översikt"
|
||||
you_booked_DATE: "Du bokade ({DATE}):"
|
||||
you_pre_booked_DATE: "Din föranmälan ({DATE}):"
|
||||
canceled_reservation_SEATS: "Bokning avbokad ({SEATS} platser)"
|
||||
book: "Boka"
|
||||
confirm_and_pay: "Bekräfta och betala"
|
||||
confirm_payment_of_html: "{ROLE, select, admin{Kontant} other{Betala}}: {AMOUNT}" #(contexte : validate a payment of $20,00)
|
||||
online_payment_disabled: "Betalning med kreditkort är inte tillgänglig. Vänligen kontakta oss direkt."
|
||||
please_select_a_member_first: "Välj en medlem först"
|
||||
change_the_reservation: "Avbryt bokningen"
|
||||
you_can_shift_this_reservation_on_the_following_slots: "Du kan flytta denna bokning till följande tillfällen:"
|
||||
confirmation_required: "Verifiering krävs"
|
||||
do_you_really_want_to_delete_this_event: "Vill du radera detta evenemang?"
|
||||
all_reservations_for_this_event_will_be_canceled: Alla bokningar av detta evenemang kommer att raderas.
|
||||
delete_recurring_event: "Du håller på att ta bort en återkommande händelse. Vad vill du göra?"
|
||||
delete_this_event: "Bara detta evenemang"
|
||||
delete_this_and_next: "Detta evenemang samt framtida"
|
||||
delete_all: "Alla evenemang"
|
||||
event_successfully_deleted: "Evenemanget är raderat."
|
||||
events_deleted: "Evenemanget och {COUNT, plural, one {}=1{ett annat} other{{COUNT} alla andra}}har tagits bort"
|
||||
unable_to_delete_the_event: "Det går inte att ta bort händelsen, den kan ha bokats av en medlem"
|
||||
events_not_deleted: "Av {TOTAL} evenemang {COUNT, plural, one {}=1{togs ett inte bort} other{togs {COUNT} inte bort}}. Vissa reservationer kan finnas på {COUNT, plural, one {}=1{det} other{dem}}."
|
||||
cancel_the_reservation: "Avbryt bokningen"
|
||||
do_you_really_want_to_cancel_this_reservation_this_apply_to_all_booked_tickets: "Vill du verkligen avboka denna bokning? Detta gäller för ALLA bokade biljetter."
|
||||
reservation_was_successfully_cancelled: "Reservationen har avbrutits."
|
||||
cancellation_failed: "Avbokning misslyckades."
|
||||
event_is_over: "Evenemanget är över."
|
||||
thanks_for_coming: "Tack för ditt besök!"
|
||||
view_event_list: "Visa kommande evenemang"
|
||||
share_on_facebook: "Dela på Facebook"
|
||||
share_on_twitter: "Dela på Twitter"
|
||||
last_name_and_first_name: "För- och efternamn"
|
||||
pre_book: "Förboka"
|
||||
pre_registration_end_date: "Deadline för förbokning"
|
||||
pre_registration: "Föranmälan"
|
||||
#public calendar
|
||||
calendar:
|
||||
calendar: "Kalender"
|
||||
show_unavailables: "Visa obokbara platser"
|
||||
filter_calendar: "Filtrera kalender"
|
||||
trainings: "Utbildningar"
|
||||
machines: "Utrustning"
|
||||
spaces: "Lokaler"
|
||||
events: "Evenemang"
|
||||
externals: "Andra kalendrar"
|
||||
choose_a_machine: "Välj utrustning"
|
||||
cancel: "Avbryt"
|
||||
#list of spaces
|
||||
spaces_list:
|
||||
the_spaces: "Lokalerna"
|
||||
new_availability: "Öppna bokningar"
|
||||
add_a_space: "Lägg till lokal"
|
||||
status_enabled: "Aktiverad"
|
||||
status_disabled: "Inaktiverad"
|
||||
status_all: "Alla"
|
||||
book: "Boka"
|
||||
#display the details of a space
|
||||
space_show:
|
||||
book_this_space: "Boka utrustning"
|
||||
unauthorized_operation: "Obehörig åtgärd"
|
||||
confirmation_required: "Verifiering krävs"
|
||||
do_you_really_want_to_delete_this_space: "Vill du verkligen ta bort denna lokal?"
|
||||
the_space_cant_be_deleted_because_it_is_already_reserved_by_some_users: "Det går inte att ta bort denna lokal, eftersom den redan är reserverad av en användare."
|
||||
characteristics: "Egenskaper"
|
||||
files_to_download: "Filer att ladda ner"
|
||||
projects_using_the_space: "Projekt som använder lokalen"
|
||||
#public store
|
||||
store:
|
||||
fablab_store: "Butik"
|
||||
unexpected_error_occurred: "Ett oväntat fel inträffade. Var god försök senare."
|
||||
add_to_cart_success: "Produkten har lagts till i varukorgen."
|
||||
products:
|
||||
all_products: "Alla produkter"
|
||||
filter: "Filtrera"
|
||||
filter_clear: "Rensa allt"
|
||||
filter_apply: "Verkställ"
|
||||
filter_categories: "Kategorier"
|
||||
filter_machines: "Utrustningen"
|
||||
filter_keywords_reference: "Med sökord eller referens"
|
||||
in_stock_only: "Endast tillgängliga produkter"
|
||||
sort:
|
||||
name_az: "A-Ö"
|
||||
name_za: "Ö-A"
|
||||
price_low: "Pris: lågt till högt"
|
||||
price_high: "Högt till lågt"
|
||||
store_product:
|
||||
ref: "ref: {REF}"
|
||||
add_to_cart_success: "Produkten har lagts till i varukorgen."
|
||||
unexpected_error_occurred: "Ett oväntat fel inträffade. Var god försök senare."
|
||||
show_more: "Visa mer"
|
||||
show_less: "Visa mindre"
|
||||
documentation: "Dokumentation"
|
||||
minimum_purchase: "Minsta köp: "
|
||||
add_to_cart: "Lägg till I varukorgen"
|
||||
stock_limit: "Du har nått den aktuella lagergränsen"
|
||||
stock_status:
|
||||
available: "Tillgänglig"
|
||||
limited_stock: "Begränsat lager"
|
||||
out_of_stock: "Tillfälligt slut"
|
||||
store_product_item:
|
||||
minimum_purchase: "Minsta köp: "
|
||||
add: "Lägg till"
|
||||
add_to_cart: "Lägg till i varukorgen"
|
||||
stock_limit: "Du har nått den aktuella lagergränsen"
|
||||
product_price:
|
||||
per_unit: "/ enhet"
|
||||
free: "Gratis"
|
||||
cart:
|
||||
my_cart: "Min varukorg"
|
||||
cart_button:
|
||||
my_cart: "Min varukorg"
|
||||
store_cart:
|
||||
checkout: "Kassa"
|
||||
cart_is_empty: "Din varukorg är tom"
|
||||
pickup: "Hämta dina produkter"
|
||||
checkout_header: "Totalt belopp för din varukorg"
|
||||
checkout_products_COUNT: "Din varukorg innehåller {COUNT} {COUNT, plural, one {}=1{produkt} other{produkter}}"
|
||||
checkout_products_total: "Produkter totalt"
|
||||
checkout_gift_total: "Rabatt totalt"
|
||||
checkout_coupon: "Rabattkupong"
|
||||
checkout_total: "Totalt kundvagn"
|
||||
checkout_error: "Oväntat fel uppstod. Vänligen kontakta systemadministratören."
|
||||
checkout_success: "Köp bekräftat. Tack!"
|
||||
select_user: "Välj en användare innan du fortsätter."
|
||||
abstract_item:
|
||||
offer_product: "Erbjud produkten"
|
||||
total: "Totalt"
|
||||
errors:
|
||||
unauthorized_offering_product: "Du kan inte erbjuda något till dig själv"
|
||||
cart_order_product:
|
||||
reference_short: "ref:"
|
||||
minimum_purchase: "Minsta köp: "
|
||||
stock_limit: "Du har nått den aktuella lagergränsen"
|
||||
unit: "Enhet"
|
||||
update_item: "Uppdatera"
|
||||
errors:
|
||||
product_not_found: "Denna produkt är inte längre tillgänglig, vänligen ta bort den från din varukorg."
|
||||
out_of_stock: "Denna produkt är slut i lager, vänligen ta bort den från din varukorg."
|
||||
stock_limit_QUANTITY: "Endast {QUANTITY} {QUANTITY, plural, one {}=1{enhet} other{enheter}} kvar i lager, vänligen justera antalet objekt."
|
||||
quantity_min_QUANTITY: "Minsta antal av produkten ändrades till {QUANTITY}, vänligen justera antalet objekt."
|
||||
price_changed_PRICE: "Produktens pris har ändrats till {PRICE}"
|
||||
cart_order_reservation:
|
||||
reservation: "Bokning"
|
||||
offer_reservation: "Erbjud bokningen"
|
||||
slot: "{DATE}: {START} - {END}"
|
||||
offered: "erbjuds"
|
||||
orders_dashboard:
|
||||
heading: "Mina beställningar"
|
||||
sort:
|
||||
newest: "Senaste först"
|
||||
oldest: "Äldsta först"
|
||||
member_select:
|
||||
select_a_member: "Välj en medlem"
|
||||
start_typing: "Börja skriva..."
|
||||
children_dashboard:
|
||||
heading: "Barn"
|
||||
member_heading: "Mina barn"
|
||||
add_child: "Lägg till barn"
|
||||
child_modal:
|
||||
edit_child: "Redigera barn"
|
||||
new_child: "Nytt barn"
|
||||
child_form:
|
||||
child_form_info: "Endast barn under 18 år kan läggas till i ditt familjekonto. Underlag kan begäras för att validera ditt barns konto och tillåta dig att registrera dem för evenemang."
|
||||
first_name: "Förnamn"
|
||||
last_name: "Efternamn"
|
||||
birthday: "Födelsedatum"
|
||||
email: "E-post"
|
||||
phone: "Telefon"
|
||||
save: "Spara"
|
||||
supporting_documents: "Underlag"
|
||||
to_complete: "Att slutföra"
|
||||
refuse_documents_info: "Du kan avböja ett urval av dokument genom att klicka på följande knapp."
|
||||
refuse_documents: "Avböj dokument"
|
||||
child_item:
|
||||
first_name: "Barns förnamn"
|
||||
last_name: "Barns efternamn"
|
||||
birthday: "Födelsedatum"
|
||||
deleted: "Barnet har tagits bort."
|
||||
unable_to_delete: "Det går inte att ta bort barnet."
|
||||
delete_child_modal:
|
||||
confirmation_required: "Verifiering krävs"
|
||||
confirm: "Bekräfta"
|
||||
confirm_delete_child: "Vill du verkligen ta bort detta barn?"
|
||||
tour:
|
||||
conclusion:
|
||||
title: "Tack för er uppmärksamhet"
|
||||
content: "<p>Om du vill starta om denna kontextuella hjälp, tryck på <strong>F1</strong> när som helst eller klicka på « ? Hjälp » från användarens meny.</p><p>Om du behöver ytterligare hjälp kan du kolla i <a href='http://guide-fr.fab.mn' target='_blank'>användarhandboken</a> (endast på franska just nu).</p><p>Fab-managers team ger även personlig support (hjälp med att komma igång, hjälp med installation, anpassning etc. , <a href='mailto:contact@fab-manager.com'>Kontakta oss</a> för mer information.</p>"
|
||||
welcome:
|
||||
welcome:
|
||||
title: "Välkommen till Fab-manager"
|
||||
content: "För att hjälpa dig komma igång med systemet, kommer vi att ta en snabb rundtur bland funktionerna."
|
||||
home:
|
||||
title: "Startsida"
|
||||
content: "Klicka här kommer att ta dig tillbaka till sidan där du är för närvarande."
|
||||
machines:
|
||||
title: "Utrustning"
|
||||
content: "<p>Den här sidan låter dig konsultera listan över all utrustning och reservera en lokal åt en medlem.</p><p>Utrustning kan till exempel vara en TV.</p><p>Medlemmar kan också komma åt denna sida och reservera utrustning själva, om kreditkortsbetalning är aktiverad, eller om vissa priser är lika med 0.</p>"
|
||||
trainings:
|
||||
title: "Utbildningar"
|
||||
content: "<p>Den här sidan låter dig konsultera listan över all utrustning och reservera en lokal åt en medlem.</p><p>Utrustning kan till exempel vara en Tv.</p><p>Medlemmar kan också komma åt denna sida och reservera utrustning själva, om kreditkortsbetalning är aktiverad, eller om vissa priser är lika med 0.</p>"
|
||||
spaces:
|
||||
title: "Lokaler"
|
||||
content: "<p>Den här sidan låter dig konsultera listan över all utrustning och reservera en lokal åt en medlem.</p><p>Utrustning kan till exempel vara en TV.</p><p>Medlemmar kan också komma åt denna sida och reservera utrustning själva, om kreditkortsbetalning är aktiverad, eller om vissa priser är lika med 0.</p>"
|
||||
events:
|
||||
title: "Evenemang"
|
||||
content: "<p>Öppet hus eller föreningsmöt? Kolla här!</p><p>Evenemang kan vara gratis eller med betalning, med eller utan bokning.</p><p>Medlemmar kan komma åt denna sida och boka plats för gratis evenemang, eller betalda evenemang om kreditkortsbetalning är aktiverad.</p>"
|
||||
calendar:
|
||||
title: "Agenda"
|
||||
content: "Presentera i korthet allt som är planerat till de kommande veckorna (evenemang, kurser, tillgänglig utrustning m. m.)."
|
||||
projects:
|
||||
title: "Projekt"
|
||||
content: "<p>Dokumentera och dela alla dina projekt med föreningen.</p><p>Om du använder OpenLab, kommer du också att kunna besöka projekten i hela Fab-Manager-nätverket. <a href='mailto:contact@fab-manager.com'>Contact-us</a> för att få din tillgång, det är gratis!</p>"
|
||||
plans:
|
||||
title: "Prenumerationer"
|
||||
content: "Prenumerationer ger ett sätt att segmentera dina priser och ge fördelar för medlemmar."
|
||||
admin:
|
||||
title: "{ROLE} sektion"
|
||||
content: "<p>Alla element nedan är endast tillgängliga för administratörer. De tillåter dig att hantera och konfigurera Fab-manager.</p><p>I slutet av detta besök, klicka på ett av dem för att ta reda på mer.</p>"
|
||||
about:
|
||||
title: "Om"
|
||||
content: "En sida som du kan anpassa helt och hållet, för att presentera din verksamhet och din struktur."
|
||||
notifications:
|
||||
title: "Notifieringscenter"
|
||||
content: "<p>Varje gång något viktigt händer (reservationer, skapande av konton, aktivitet från dina medlemmar, etc)., du kommer att meddelas här.</p><p>Dina medlemmar får också meddelanden där.</p>"
|
||||
profile:
|
||||
title: "Användarens meny"
|
||||
content: "<p>Hitta din personliga information här samt all din aktivitet på Fab-manager.</p><p>Detta utrymme är också tillgängligt för alla dina medlemmar.</p>"
|
||||
news:
|
||||
title: "Nyheter"
|
||||
content: "<p>Detta utrymme låter dig visa de senaste nyheterna från din verksamhet.</p><p>Du kan enkelt ändra dess innehåll från « Anpassning », « Hemsida ».</p>"
|
||||
last_projects:
|
||||
title: "Senaste projekten"
|
||||
content: "<p>Detta bildspel rullar igenom de senaste projekten som dokumenterats av dina medlemmar.</p>"
|
||||
last_tweet:
|
||||
title: "Senaste tweet"
|
||||
content: "<p>Den sista tweeten i ditt Twitter-flöde kan visas här.</p><p>Konfigurera det från « Anpassning », « Startsida ».</p>"
|
||||
last_members:
|
||||
title: "Senaste medlemmar"
|
||||
content: "De senast registrerade medlemmar som har bekräftat sin adress och godkänt att bli kontaktade kommer att visas här."
|
||||
next_events:
|
||||
title: "Kommande evenemang"
|
||||
content: "De kommande tre schemalagda evenemangen visas i detta utrymme."
|
||||
customize:
|
||||
title: "Anpassa startsidan"
|
||||
content: "<p>Denna sida kan vara helt personlig.</p><p>Du kan <a href='mailto:contact@fab-manager.com'>kontakta oss</a> för att göra en skräddarsydd anpassning av startsidan.</p>"
|
||||
version:
|
||||
title: "Programversion"
|
||||
content: "Håll muspekaren över denna ikon för att ta reda på versionen av Fab-manager. Om du inte är uppdaterad, kommer detta att rapporteras här och du kommer att kunna få information genom att klicka på den."
|
||||
machines:
|
||||
welcome:
|
||||
title: "Utrustning"
|
||||
content: "<p>Utrustning är de maskiner och verktyg som finns tillgängliga för dina användare. Här måste du skapa utrustning som sedan kan reserveras av medlemmarna.</p><p>Du kan också skapa poster för icke-bokningsbar eller gratis tillgänglig utrustning, då du behöver bara inte associera bokningsbakara tider med dem.</p>"
|
||||
welcome_manager:
|
||||
title: "Utrustning"
|
||||
content: "Utrustning är de maskiner och verktyg som finns tillgängliga för användarna att reservera."
|
||||
view:
|
||||
title: "Visa"
|
||||
content: "För att ändra eller ta bort utrustning, klicka här först. Du kommer inte att kunna ta bort utrustning som redan har förknippats med bokningsbara tider, men du kan inaktivera den."
|
||||
reserve:
|
||||
title: "Reservera"
|
||||
content: "Klicka här för att se en kalender som visar bokningsbara tider. Detta låter dig boka denna utrustning och hantera befintliga bokningar."
|
||||
spaces:
|
||||
welcome:
|
||||
title: "Lokaler"
|
||||
content: "<p>Lokaler är tillgängliga för dina användare. Till exempel ett mötesrum eller ett kök. Här kan du skapa de lokaler som sedan kan reserveras av medlemmar.</p><p>Lokalerna kan reserveras av flera användare samtidigt.</p>"
|
||||
welcome_manager:
|
||||
title: "Lokaler"
|
||||
content: "<p>Lokaler är tillgängliga för dina användare. Till exempel ett mötesrum eller ett kök. Här kan du skapa de lokaler som sedan kan reserveras av medlemmar.</p><p>Lokalerna kan reserveras av flera användare samtidigt.</p>"
|
||||
view:
|
||||
title: "Visa"
|
||||
content: "För att ändra eller ta bort en lokal, klicka här först. Du kommer inte att kunna ta bort en lokal som redan har förknippats med bokningsbara tider, men du kan inaktivera den."
|
||||
reserve:
|
||||
title: "Reservera"
|
||||
content: "Klicka här för att se en kalender som visar bokningsbara tider. Detta låter dig boka denna lokal och hantera befintliga bokningar."
|
555
config/locales/app.shared.sv.yml
Normal file
555
config/locales/app.shared.sv.yml
Normal file
@ -0,0 +1,555 @@
|
||||
sv:
|
||||
app:
|
||||
shared:
|
||||
#translations of common buttons
|
||||
buttons:
|
||||
confirm_changes: "Bekräfta ändringar"
|
||||
consult: "Fråga"
|
||||
edit: "Redigera"
|
||||
change: "Ändra"
|
||||
delete: "Ta bort"
|
||||
browse: "Bläddra"
|
||||
cancel: "Avbryt"
|
||||
close: "Avsluta"
|
||||
clear: "Rensa"
|
||||
today: "Idag"
|
||||
confirm: "Bekräfta"
|
||||
save: "Spara"
|
||||
"yes": "Ja"
|
||||
"no": "Nej"
|
||||
apply: "Verkställ"
|
||||
messages:
|
||||
you_will_lose_any_unsaved_modification_if_you_quit_this_page: "Du kommer att förlora alla osparade ändringar om du avslutar denna sida"
|
||||
you_will_lose_any_unsaved_modification_if_you_reload_this_page: "Du kommer att förlora alla osparade ändringar om du laddar om denna sida"
|
||||
payment_card_declined: "Ditt kort nekades."
|
||||
change_group:
|
||||
title: "{OPERATOR, select, self{Min grupp} other{Användargruppen}}"
|
||||
change: "Ändra {OPERATOR, select, self{min} other{hans/hennes}} grupp"
|
||||
cancel: "Avbryt"
|
||||
validate: "Validera gruppändring"
|
||||
success: "Gruppen har skapats"
|
||||
stripe_form:
|
||||
payment_card_error: "Ett problem uppstod med ditt betalkort:"
|
||||
#text editor
|
||||
text_editor:
|
||||
fab_text_editor:
|
||||
text_placeholder: "Skriv någonting…"
|
||||
menu_bar:
|
||||
link_placeholder: "Klistra in länk…"
|
||||
url_placeholder: "Klistra in url…"
|
||||
new_tab: "Öppna i en ny flik"
|
||||
add_link: "Infoga länk"
|
||||
add_video: "Bädda in en video"
|
||||
add_image: "Infoga en bild"
|
||||
#modal dialog
|
||||
fab_modal:
|
||||
close: "Avsluta"
|
||||
fab_socials:
|
||||
follow_us: "Följ oss"
|
||||
networks_update_success: "Uppdatering av sociala nätverk lyckades"
|
||||
networks_update_error: "Problem med att uppdatera sociala nätverk"
|
||||
url_placeholder: "Klistra in url…"
|
||||
save: "Spara"
|
||||
website_invalid: "Webbplatsens adress är inte en giltig URL"
|
||||
edit_socials:
|
||||
url_placeholder: "Klistra in url…"
|
||||
website_invalid: "Webbplatsens adress är inte en giltig URL"
|
||||
#user edition form
|
||||
avatar_input:
|
||||
add_an_avatar: "Lägg till en avatar"
|
||||
change: "Ändra"
|
||||
user_profile_form:
|
||||
personal_data: "Personligt"
|
||||
account_data: "Konto"
|
||||
account_networks: "Sociala nätverk"
|
||||
organization_data: "Organisation"
|
||||
profile_data: "Profil"
|
||||
preferences_data: "Inställningar"
|
||||
declare_organization: "Jag företräder en organisation"
|
||||
declare_organization_help: "Om du företräder en organisation kommer dina fakturor att utfärdas i organisationens namn."
|
||||
pseudonym: "Smeknamn"
|
||||
external_id: "Extern identifierare"
|
||||
first_name: "Förnamn"
|
||||
surname: "Efternamn"
|
||||
email_address: "E-postadress"
|
||||
organization_name: "Organisationsnamn"
|
||||
organization_address: "Organisationsadress"
|
||||
profile_custom_field_is_required: "{FEILD} krävs"
|
||||
date_of_birth: "Födelsedatum"
|
||||
website: "Webbsida"
|
||||
website_invalid: "Webbplatsens adress är inte en giltig URL"
|
||||
job: "Jobb"
|
||||
interests: "Intressen"
|
||||
CAD_softwares_mastered: "Färdigheter"
|
||||
birthday: "Födelsedatum"
|
||||
birthday_is_required: "Födelsedatum krävs."
|
||||
address: "Adress"
|
||||
phone_number: "Telefonnummer"
|
||||
phone_number_invalid: "Telefonnumret är ogiltigt."
|
||||
allow_public_profile: "Jag samtycker till att dela min e-postadress med registrerade medlemmar på denna sida"
|
||||
allow_public_profile_help: "Du kommer att ha en publik profil och andra användare kommer att kunna knyta dig till sina projekt."
|
||||
allow_newsletter: "Jag accepterar att få information från FabLab"
|
||||
used_for_statistics: "Dessa uppgifter kommer att användas för statistiska ändamål"
|
||||
used_for_invoicing: "Dessa uppgifter kommer att användas för faktureringsändamål"
|
||||
used_for_reservation: "Dessa uppgifter kommer att användas i händelse av ändring av dina bokningar"
|
||||
used_for_profile: "Denna data kommer endast att visas på din profil"
|
||||
group: "Grupp"
|
||||
trainings: "Utbildningar"
|
||||
tags: "Taggar"
|
||||
note: "Personlig anteckning"
|
||||
note_help: "Denna anteckning är endast synlig för administratörer och chefer. Medlemmen kan inte se den."
|
||||
terms_and_conditions_html: "Jag har läst och godkänt <a href=\"{POLICY_URL}\" target=\"_blank\">användarvillkoren<a/>"
|
||||
must_accept_terms: "Du måste acceptera villkoren"
|
||||
save: "Spara"
|
||||
gender_input:
|
||||
label: "Kön"
|
||||
man: "Man"
|
||||
woman: "Kvinna"
|
||||
change_password:
|
||||
change_my_password: "Byt lösenord"
|
||||
confirm_current: "Bekräfta ditt nuvarande lösenord"
|
||||
confirm: "OK"
|
||||
wrong_password: "Fel lösenord"
|
||||
password_input:
|
||||
new_password: "Nytt lösenord"
|
||||
confirm_password: "Bekräfta lösenord"
|
||||
help: "Lösenordet måste bestå av minst 12 tecken, minst en stor bokstav, en liten bokstav, ett nummer och ett specialtecken."
|
||||
password_too_short: "Lösenordet är för kort (minst 12 tecken)"
|
||||
confirmation_mismatch: "Lösenorden stämmer inte överens."
|
||||
password_strength:
|
||||
not_in_requirements: "Ditt lösenord uppfyller inte kraven"
|
||||
0: "Väldigt svagt lösenord"
|
||||
1: "Svagt lösenord"
|
||||
2: "Nästan ok"
|
||||
3: "Bra lösenord"
|
||||
4: "Utmärkt lösenord"
|
||||
#project edition form
|
||||
project:
|
||||
name: "Namn"
|
||||
name_is_required: "Namn måste fyllas i."
|
||||
illustration: "Visuellt"
|
||||
illustration_recommendation: "Maximal skärmstorlek: 932 * 700 px (obegränsad förhållande)."
|
||||
add_an_illustration: "Lägg till en illustration"
|
||||
CAD_file: "CAD-fil"
|
||||
CAD_files: "CAD-filer"
|
||||
allowed_extensions: "Tillåtna filändelser:"
|
||||
add_a_new_file: "Lägg till ny fil"
|
||||
description: "Beskrivning"
|
||||
description_is_required: "Beskrivning krävs."
|
||||
steps: "Steg"
|
||||
step_N: "Steg {INDEX}"
|
||||
step_title: "Titel på steg"
|
||||
step_image: "Bild"
|
||||
add_a_picture: "Lägg till en bild"
|
||||
change_the_picture: "Ändra bilden"
|
||||
delete_the_step: "Ta bort steget"
|
||||
confirmation_required: "Verifiering krävs"
|
||||
do_you_really_want_to_delete_this_step: "Vill du radera detta steg?"
|
||||
add_a_new_step: "Lägg till nytt steg"
|
||||
publish_your_project: "Publicera ditt projekt"
|
||||
or: "eller"
|
||||
employed_materials: "Använda råvaror"
|
||||
employed_machines: "Använd utrustning"
|
||||
collaborators: "Medverkande"
|
||||
author: Skapare
|
||||
creative_commons_licences: "Creative Commons-licenser"
|
||||
licence: "Licens"
|
||||
themes: "Teman"
|
||||
tags: "Taggar"
|
||||
save_as_draft: "Spara som utkast"
|
||||
status: "Status"
|
||||
#button to book a machine reservation
|
||||
reserve_button:
|
||||
book_this_machine: "Boka utrustning"
|
||||
#frame to select a plan to subscribe
|
||||
plan_subscribe:
|
||||
subscribe_online: "prenumerera online"
|
||||
do_not_subscribe: "prenumerera inte"
|
||||
#admin: choose a member to interact with
|
||||
member_select:
|
||||
select_a_member: "Välj en medlem"
|
||||
start_typing: "Börja skriva..."
|
||||
member_not_validated: "Denna medlem har ännu inte validerats."
|
||||
#payment modal
|
||||
abstract_payment_modal:
|
||||
online_payment: "Onlinebetalning"
|
||||
i_have_read_and_accept_: "Jag har läst och accepterat "
|
||||
_the_general_terms_and_conditions: "läs de allmänna villkoren."
|
||||
payment_schedule_html: "<p>Du är på väg att prenumerera enligt ett betalningsschema på {DEADLINES} månader.</p><p>Genom att betala denna faktura godkänner du att skicka instruktioner till det finansiella institut som utfärdar ditt kort, att ta betalningar från ditt kortkonto, under hela denna prenumeration. Detta innebär att dina kortuppgifter sparas av {GATEWAY} och en rad betalningar kommer att initieras för din räkning, som överensstämmer med den betalningsplan som tidigare visats.</p>"
|
||||
confirm_payment_of_: "Betala: {AMOUNT}"
|
||||
validate: "Bekräfta"
|
||||
#dialog of on site payment for reservations
|
||||
valid_reservation_modal:
|
||||
booking_confirmation: "Bokningsbekräftelse"
|
||||
here_is_the_summary_of_the_slots_to_book_for_the_current_user: "Här är sammanfattningen av tider att boka för den aktuella användaren:"
|
||||
subscription_confirmation: "Bekräftelse på prenumeration"
|
||||
here_is_the_subscription_summary: "Här är prenumerationssammanfattningen:"
|
||||
payment_method: "Betalningsmetod"
|
||||
method_card: "Online med kort"
|
||||
method_check: "Med check"
|
||||
card_collection_info: "Genom att validera kommer du att bli tillfrågad om medlemmens kortnummer. Detta kort kommer att debiteras automatiskt vid deadlines."
|
||||
check_collection_info: "Genom att validera bekräftar du att du har {DEADLINES} kontroller, så att du kan samla in alla månadsbetalningar."
|
||||
#partial form to edit/create a user (admin view)
|
||||
user_admin:
|
||||
user: "Användare"
|
||||
incomplete_profile: "Ofullständig profil"
|
||||
user_profile: "Användarprofil"
|
||||
warning_incomplete_user_profile_probably_imported_from_sso: "Varning: Denna användares profil är ofullständig. Eftersom \"single sign-on\" (SSO) autentisering för närvarande är aktiverad, kan det förmodligen vara ett importerat men icke länkat konto. Ändra inte det om du inte vet vad du gör."
|
||||
group: "Grupp"
|
||||
group_is_required: "Grupp krävs."
|
||||
trainings: "Utbildningar"
|
||||
tags: "Taggar"
|
||||
children: "Barn"
|
||||
#machine/training slot modification modal
|
||||
confirm_modify_slot_modal:
|
||||
change_the_slot: "Ändra bokningstiden"
|
||||
do_you_want_to_change_your_booking_slot_initially_planned_at: "Vill du ändra din bokningstid, ursprungligen planerad:"
|
||||
do_you_want_to_change_NAME_s_booking_slot_initially_planned_at: "Vill du ändra bokningstiden för {NAME}, ursprungligen planerad:"
|
||||
cancel_this_reservation: "Avbryt bokningen"
|
||||
i_want_to_change_date: "Jag vill ändra datum"
|
||||
deleted_user: "raderad användare"
|
||||
#user public profile
|
||||
public_profile:
|
||||
last_activity_html: "Senaste aktivitet <br><strong>den {DATE}</strong>"
|
||||
to_come: "kommande"
|
||||
approved: "godkänt"
|
||||
projects: "Projekt"
|
||||
no_projects: "Inga projekt"
|
||||
author: "Upphovsman"
|
||||
collaborator: "Samarbetspartner"
|
||||
private_profile: "Privat profil"
|
||||
interests: "Intressen"
|
||||
CAD_softwares_mastered: "Färdigheter"
|
||||
email_address: "E-postadress"
|
||||
trainings: "Utbildningar"
|
||||
no_trainings: "Inga utbildningar"
|
||||
#wallet
|
||||
wallet:
|
||||
wallet: 'Plånbok'
|
||||
your_wallet_amount: 'Ditt tillgängliga belopp'
|
||||
wallet_amount: 'Belopp tillgängligt'
|
||||
no_transactions_for_now: 'Inga transaktioner just nu'
|
||||
date: "Datum"
|
||||
operation: 'Operation'
|
||||
operator: 'Operatör'
|
||||
amount: 'Belopp'
|
||||
credit: 'Kredit'
|
||||
debit: 'Debet'
|
||||
credit_title: 'Kreditplånbok'
|
||||
credit_label: 'Ange beloppet som ska krediteras'
|
||||
confirm_credit_label: 'Bekräfta beloppet som ska krediteras'
|
||||
generate_a_refund_invoice: "Generera en kreditnota"
|
||||
description_optional: "Beskrivning (frivillig):"
|
||||
will_appear_on_the_refund_invoice: "Kommer att visas på kreditnota."
|
||||
to_credit: 'Kredit'
|
||||
wallet_credit_successfully: "Användarens plånbok krediteras framgångsrikt."
|
||||
a_problem_occurred_for_wallet_credit: "Ett problem uppstod när du krediterade plånboken."
|
||||
amount_is_required: "Beloppet är obligatoriskt."
|
||||
amount_minimum_1: "Minsta belopp är 1"
|
||||
amount_confirm_is_required: "Bekräftelsen är obligatorisk."
|
||||
amount_confirm_does_not_match: "Beloppen överensstämmer inte."
|
||||
debit_subscription: "Betala för en prenumeration"
|
||||
debit_reservation_training: "Betala för bokad utbildning"
|
||||
debit_reservation_machine: "Betala för bokad utrustning"
|
||||
debit_reservation_event: "Betala för en evenemangsbokning"
|
||||
warning_uneditable_credit: "Varning: När det har validerats kommer det krediterade beloppet inte längre att kunna redigeras."
|
||||
wallet_info:
|
||||
you_have_AMOUNT_in_wallet: "Du har {AMOUNT} i din plånbok"
|
||||
wallet_pay_ITEM: "Du betalar din {ITEM} direkt."
|
||||
item_reservation: "bokning"
|
||||
item_subscription: "prenumeration"
|
||||
item_first_deadline: "första deadline"
|
||||
item_other: "köp"
|
||||
credit_AMOUNT_for_pay_ITEM: "Du har fortfarande {AMOUNT} att betala för att validera din {ITEM}."
|
||||
client_have_AMOUNT_in_wallet: "Medlemmen har {AMOUNT} på sin plånbok"
|
||||
client_wallet_pay_ITEM: "Medlemmen kan betala direkt för {ITEM}."
|
||||
client_credit_AMOUNT_for_pay_ITEM: "{AMOUNT} återstår att betala, för att validera {ITEM}"
|
||||
other_deadlines_no_wallet: "Varning: det återstående plånbokssaldot kan inte användas för kommande betalningar."
|
||||
#coupon (promotional) (creation/edition form)
|
||||
coupon:
|
||||
name: "Namn"
|
||||
name_is_required: "Namn måste fyllas i."
|
||||
code: "Kod"
|
||||
code_is_required: "Kod krävs."
|
||||
code_must_be_composed_of_capital_letters_digits_and_or_dashes: "Koden måste bestå av stora bokstäver, siffror och/eller bindestreck."
|
||||
kind_of_coupon: "Typ av kupong"
|
||||
percentage: "Procent"
|
||||
amount: "Belopp"
|
||||
amount_off: "Belopp av"
|
||||
percent_off: "Procentsats"
|
||||
percent_off_is_required: "Procentsats krävs."
|
||||
percentage_must_be_between_0_and_100: "Andel måste vara mellan 1 och 100."
|
||||
validity_per_user: "Giltighet per användare"
|
||||
once: "Bara en gång"
|
||||
forever: "Varje användning"
|
||||
warn_validity_once: "Observera att när denna kupong kommer att användas med ett betalningsschema kommer rabatten endast att tillämpas på den första betalningen."
|
||||
warn_validity_forever: "Observera att när denna kupong används med ett betalningsschema kommer rabatten endast att tillämpas på den första betalningen."
|
||||
validity_per_user_is_required: "Giltighet per användare krävs."
|
||||
valid_until: "Giltig till (ingår)"
|
||||
leave_empty_for_no_limit: "Ange inte någon gräns genom att lämna fältet tomt."
|
||||
max_usages: "Maximal användning tillåts"
|
||||
max_usages_must_be_equal_or_greater_than_0: "De maximalt tillåtna användningsområdena måste vara fler än 0."
|
||||
enabled: "Aktiv"
|
||||
#coupon (input zone for users)
|
||||
coupon_input:
|
||||
i_have_a_coupon: "Jag har en kupong!"
|
||||
code_: "Kod:"
|
||||
the_coupon_has_been_applied_you_get_PERCENT_discount: "Kupongen har tillämpats. Du får en {PERCENT}% rabatt."
|
||||
the_coupon_has_been_applied_you_get_AMOUNT_CURRENCY: "Kupongen har använts. Du får rabatt på {AMOUNT} {CURRENCY}."
|
||||
coupon_validity_once: "Denna kupong gäller endast en gång. Vid betalningsschema, endast för det första förfallodatumet."
|
||||
unable_to_apply_the_coupon_because_disabled: "Det går inte att använda kupongen: den här koden har inaktiverats."
|
||||
unable_to_apply_the_coupon_because_expired: "Det går inte att använda kupongen: den här koden har gått ut."
|
||||
unable_to_apply_the_coupon_because_sold_out: "Det går inte att tillämpa kupongen: denna kod är utnyttjad."
|
||||
unable_to_apply_the_coupon_because_already_used: "Det går inte att tillämpa kupongen: du har redan använt denna kod en gång tidigare."
|
||||
unable_to_apply_the_coupon_because_amount_exceeded: "Det går inte att tillämpa kupongen: rabatten överstiger det totala beloppet för detta köp."
|
||||
unable_to_apply_the_coupon_because_undefined: "Det gick inte att tillämpa kupongen: ett oväntat fel uppstod, kontakta oss."
|
||||
unable_to_apply_the_coupon_because_rejected: "Denna kod existerar inte."
|
||||
payment_schedule_summary:
|
||||
your_payment_schedule: "Ditt betalningsschema"
|
||||
NUMBER_monthly_payment_of_AMOUNT: "{NUMBER} {NUMBER, plural, one {}=1{månatlig betalning} other{månatligabetalningar}} av {AMOUNT}"
|
||||
first_debit: "Första debiteringen på beställningsdagen."
|
||||
monthly_payment_NUMBER: "{NUMBER}{NUMBER, plural, one {}=1{:a} =2{:a} =3{:e} other{:e}} månadsbetalning: "
|
||||
debit: "Debitering på beställningsdagen."
|
||||
view_full_schedule: "Visa hela betalningsschemat"
|
||||
select_schedule:
|
||||
monthly_payment: "Månadsbetalning"
|
||||
#shopping cart module for reservations
|
||||
cart:
|
||||
summary: "Sammanfattning"
|
||||
select_one_or_more_slots_in_the_calendar: "Välj en {SINGLE, select, true{tid} other{eller fler tider}} i kalendern"
|
||||
select_a_plan: "Välj en plan här"
|
||||
you_ve_just_selected_the_slot: "Du har valt tiden:"
|
||||
datetime_to_time: "{START_DATETIME} till {END_TIME}" #eg: Thursday, September 4, 1986 8:30 PM to 10:00 PM
|
||||
cost_of_TYPE: "Kostnad för {TYPE, select, Machine{utrustning} Training{utbildning} Space{lokal} other{objekt}}"
|
||||
offer_this_slot: "Erbjud denna tid"
|
||||
confirm_this_slot: "Bekräfta denna tid"
|
||||
remove_this_slot: "Ta bort denna tid"
|
||||
to_benefit_from_attractive_prices: "Dra nytta av attraktiva priser"
|
||||
view_our_subscriptions: "Visa våra prenumerationer"
|
||||
or: "eller"
|
||||
cost_of_the_subscription: "Kostnad för prenumerationen"
|
||||
subscription_price: "Prenumerationspris"
|
||||
you_ve_just_selected_a_subscription_html: "Du har valt <strong>prenumerationen</strong>:"
|
||||
confirm_and_pay: "Bekräfta och betala"
|
||||
you_have_settled_the_following_TYPE: "Du har betalat för följande {TYPE, select, Machine{utrustning} Training{utbildning} other{objekt}}:"
|
||||
you_have_settled_a_: "Du har betalat en"
|
||||
total_: "TOTAL:"
|
||||
thank_you_your_payment_has_been_successfully_registered: "Tack. Din betalning har registrerats !"
|
||||
your_invoice_will_be_available_soon_from_your_: "Din faktura kommer att finnas tillgänglig från din översiktsvy inom kort"
|
||||
dashboard: "Översikt"
|
||||
i_want_to_change_the_following_reservation: "Jag vill ändra följande bokning:"
|
||||
cancel_my_modification: "Avbryt ändringar"
|
||||
select_a_new_slot_in_the_calendar: "Välj en ny tid i kalendern"
|
||||
cancel_my_selection: "Avbryt val"
|
||||
tags_of_the_original_slot: "Taggar på den ursprungliga bokningstiden:"
|
||||
tags_of_the_destination_slot: "Taggar för destinationsbokningen:"
|
||||
confirm_my_modification: "Bekräfta min ändring"
|
||||
your_booking_slot_was_successfully_moved_from_: "Din bokningsplats har flyttats från"
|
||||
to_date: "till" #eg. from 01 to 05 january.
|
||||
please_select_a_member_first: "Välj en medlem först"
|
||||
unable_to_select_plan_if_slots_in_the_past: "Det går inte att välja en plan om någon av de valda platserna är i det förflutna"
|
||||
unable_to_change_the_reservation: "Det går inte att ändra bokningen"
|
||||
confirmation_required: "Verifiering krävs"
|
||||
do_you_really_want_to_cancel_this_reservation_html: "<p>Vill du verkligen avboka denna bokning?</p><p>Varning: om denna bokning gjordes gratis, som en del av ett abonnemang, kommer krediterna som används inte att krediteras.</p>"
|
||||
reservation_was_cancelled_successfully: "Reserveringen avbröts."
|
||||
cancellation_failed: "Avbokning misslyckades."
|
||||
confirm_payment_of_html: "{METHOD, select, card{Betala med kort} other{Betala på plats}}: {AMOUNT}"
|
||||
a_problem_occurred_during_the_payment_process_please_try_again_later: "Ett problem uppstod under betalningsprocessen. Försök igen senare."
|
||||
none: "Inget"
|
||||
online_payment_disabled: "Online-betalning är inte tillgänglig. Kontakta oss direkt."
|
||||
slot_restrict_plans: "Denna bokningsplats är begränsad till planerna nedan:"
|
||||
slot_restrict_subscriptions_must_select_plan: "Platsen är endast tillgänglig för prenumeranter. Välj en prenumeration först."
|
||||
slot_restrict_plans_of_others_groups: "Platsen är endast tillgänglig för medlemmar i andra grupper."
|
||||
selected_plan_dont_match_slot: "Vald plan matchar inte denna bokningsplats"
|
||||
user_plan_dont_match_slot: "Vald plan matchar inte denna bokningsplats"
|
||||
no_plan_match_slot: "Du har ingen matchande plan för denna bokningsplats"
|
||||
slot_at_same_time: "Konflikt med andra bokningar"
|
||||
do_you_really_want_to_book_slot_at_same_time: "Vill du verkligen boka denna tid? Andra bokningar sker samtidigt"
|
||||
unable_to_book_slot_because_really_have_reservation_at_same_time: "Det går inte att boka denna tid eftersom efterföljande bokning överlappar."
|
||||
tags_mismatch: "Taggarna matchar inte"
|
||||
confirm_book_slot_tags_mismatch: "Vill du verkligen boka den här platsen? {USER} har inga av de taggar som krävs."
|
||||
unable_to_book_slot_tags_mismatch: "Det går inte att boka denna plats eftersom du inte har någon av de nödvändiga taggarna."
|
||||
slot_tags: "Bokningstaggar"
|
||||
user_tags: "Användarens taggar"
|
||||
no_tags: "Inga taggar"
|
||||
user_validation_required_alert: "Varning!<br>Din administratör måste validera ditt konto. Då kommer du då att kunna komma åt alla bokningsfunktioner."
|
||||
select_the_reservation_context: "Välj sammanhang för bokningen"
|
||||
please_select_a_reservation_context: "Vänligen välj sammanhang för bokningen först"
|
||||
child_validation_required_alert: "Administratören måste validera ditt barnkonto. Då kommer du då att kunna boka händelsen."
|
||||
child_birthday_must_be_under_18_years_ago_alert: "Ditt barn måste vara under 18. Då kommer du då att kunna boka evenemanget."
|
||||
#feature-tour modal
|
||||
tour:
|
||||
previous: "Föregående"
|
||||
next: "Nästa"
|
||||
end: "Avsluta turen"
|
||||
#help modal
|
||||
help:
|
||||
title: "Hjälp"
|
||||
what_to_do: "Vad vill du göra?"
|
||||
tour: "Starta funktionsturen"
|
||||
guide: "Öppna användarens manual"
|
||||
stripe_confirm_modal:
|
||||
resolve_action: "Lös åtgärden"
|
||||
ok_button: "OK"
|
||||
#2nd factor authentication for card payments
|
||||
stripe_confirm:
|
||||
pending: "Väntar på åtgärd..."
|
||||
success: "Tack, dina kortinställningar är färdiga. Betalningen kommer att fortsätta inom kort."
|
||||
#the summary table of all payment schedules
|
||||
payment_schedules_table:
|
||||
schedule_num: "Schema #"
|
||||
date: "Datum"
|
||||
price: "Pris"
|
||||
customer: "Kund"
|
||||
deadline: "Tidsfrist"
|
||||
amount: "Belopp"
|
||||
state: "Län"
|
||||
download: "Ladda ner"
|
||||
state_new: "Ännu inte upplupen"
|
||||
state_pending_check: "Väntar på inbetalning av checken"
|
||||
state_pending_transfer: "Väntar på överföringsbekräftelse"
|
||||
state_pending_card: "Väntar på kortbetalning"
|
||||
state_requires_payment_method: "Kreditkortet måste uppdateras"
|
||||
state_requires_action: "Åtgärd krävs"
|
||||
state_paid: "Betald"
|
||||
state_error: "Fel"
|
||||
state_gateway_canceled: "Avbruten av betalningsgateway"
|
||||
state_canceled: "Avbruten"
|
||||
method_card: "med kort"
|
||||
method_check: "med check"
|
||||
method_transfer: "med överföring"
|
||||
payment_schedule_item_actions:
|
||||
download: "Ladda ner"
|
||||
cancel_subscription: "Avsluta prenumerationen"
|
||||
confirm_payment: "Bekräfta betalning"
|
||||
confirm_check: "Bekräfta inbetalning"
|
||||
resolve_action: "Lös åtgärden"
|
||||
update_card: "Uppdatera kortet"
|
||||
update_payment_mean: "Uppdatera betalningsmedel"
|
||||
please_ask_reception: "För eventuella frågor, kontakta oss."
|
||||
confirm_button: "Bekräfta"
|
||||
confirm_check_cashing: "Väntar på inbetalning av checken"
|
||||
confirm_check_cashing_body: "Du måste betala en check på {AMOUNT} inom tidsfristen som löper ut den {DATE}. Genom att bekräfta utbetalningen av checken, kommer en faktura att genereras för detta förfallodatum."
|
||||
confirm_bank_transfer: "Bekräfta banköverföringen"
|
||||
confirm_bank_transfer_body: "Du måste bekräfta mottagandet på {AMOUNT} inom tidsfristen som löper ut den {DATE}. Genom att bekräfta utbetalningen av checken, kommer en faktura att genereras för detta förfallodatum."
|
||||
confirm_cancel_subscription: "Du är på väg att avbryta denna betalningsplan och den relaterade prenumerationen. Är du säker?"
|
||||
card_payment_modal:
|
||||
online_payment_disabled: "Online-betalning är inte tillgänglig. Kontakta oss direkt."
|
||||
unexpected_error: "Ett fel uppstod. Rapportera problemet till oss."
|
||||
update_card_modal:
|
||||
unexpected_error: "Ett fel uppstod. Rapportera problemet till oss."
|
||||
stripe_card_update_modal:
|
||||
update_card: "Uppdatera kortet"
|
||||
validate_button: "Validera det nya kortet"
|
||||
payzen_card_update_modal:
|
||||
update_card: "Uppdatera kortet"
|
||||
validate_button: "Validera det nya kortet"
|
||||
form_multi_select:
|
||||
create_label: "Lägg till {VALUE}"
|
||||
form_checklist:
|
||||
select_all: "Markera allt"
|
||||
unselect_all: "Avmarkera allt"
|
||||
form_file_upload:
|
||||
placeholder: "Lägg till en fil"
|
||||
browse: "Bläddra"
|
||||
edit: "Redigera"
|
||||
form_image_upload:
|
||||
browse: "Bläddra"
|
||||
edit: "Redigera"
|
||||
main_image: "Huvudbild"
|
||||
store:
|
||||
order_item:
|
||||
total: "Totalt"
|
||||
client: "Kund"
|
||||
created_at: "Order skapad"
|
||||
last_update: "Senast uppdaterad"
|
||||
state:
|
||||
cart: 'Varukorg'
|
||||
in_progress: 'Under behandling'
|
||||
paid: "Betald"
|
||||
payment_failed: "Fel vid betalning"
|
||||
canceled: "Avbruten"
|
||||
ready: "Färdig"
|
||||
refunded: "Återbetald"
|
||||
delivered: "Levererat"
|
||||
show_order:
|
||||
back_to_list: "Tillbaka till listan"
|
||||
see_invoice: "Se faktura"
|
||||
tracking: "Spåra beställning"
|
||||
client: "Kund"
|
||||
created_at: "Skapad datum"
|
||||
last_update: "Senast uppdaterad"
|
||||
cart: "Varukorg"
|
||||
reference_short: "ref:"
|
||||
unit: "Enhet"
|
||||
item_total: "Totalt"
|
||||
payment_informations: "Betalningsinformation"
|
||||
amount: "Belopp"
|
||||
products_total: "Produkter totalt"
|
||||
gift_total: "Rabatt totalt"
|
||||
coupon: "Rabattkupong"
|
||||
cart_total: "Totalt varukorg"
|
||||
pickup: "Hämta dina produkter"
|
||||
state:
|
||||
cart: 'Varukorg'
|
||||
in_progress: 'Under behandling'
|
||||
paid: "Betald"
|
||||
payment_failed: "Fel vid betalning"
|
||||
canceled: "Avbruten"
|
||||
ready: "Färdig"
|
||||
refunded: "Återbetald"
|
||||
delivered: "Levererat"
|
||||
payment:
|
||||
by_wallet: "med plånbok"
|
||||
settlement_by_debit_card: "Betalning med betalkort"
|
||||
settlement_done_at_the_reception: "Betalning görs på plats"
|
||||
settlement_by_wallet: "Betalning med plånbok"
|
||||
on_DATE_at_TIME: "den {DATE} kl {TIME},"
|
||||
for_an_amount_of_AMOUNT: "för ett belopp på {AMOUNT}"
|
||||
and: 'och'
|
||||
order_actions:
|
||||
state:
|
||||
cart: 'Varukorg'
|
||||
in_progress: 'Under behandling'
|
||||
paid: "Betald"
|
||||
payment_failed: "Fel vid betalning"
|
||||
canceled: "Avbruten"
|
||||
ready: "Färdig"
|
||||
refunded: "Återbetald"
|
||||
delivered: "Levererat"
|
||||
confirm: 'Bekräfta'
|
||||
confirmation_required: "Verifiering krävs"
|
||||
confirm_order_in_progress_html: "Vänligen bekräfta att denna order är förberedd."
|
||||
order_in_progress_success: "Beställningen är under behandling"
|
||||
confirm_order_ready_html: "Vänligen bekräfta att denna beställning är klar."
|
||||
order_ready_note: 'Du kan lämna ett meddelande till kunden om instruktioner för uttag'
|
||||
order_ready_success: "Beställningen är klar"
|
||||
confirm_order_delivered_html: "Vänligen bekräfta att denna beställning är klar."
|
||||
order_delivered_success: "Beställningen levererades"
|
||||
confirm_order_canceled_html: "<strong>Vill du verkligen annullera denna beställning?</strong><p>Om detta påverkar lager, vänligen repetera förändringen under <em>redigera produkt > lagerhantering</em>. Detta kommer inte att ske automatiskt.</p>"
|
||||
order_canceled_success: "Beställningen avbröts"
|
||||
confirm_order_refunded_html: "<strong>Vill du verkligen återbetala denna beställning?</strong><p>Om så är fallet, vänligen återbetala kunden och generera kreditfaktura från <em>Fakturor</em> -fliken.</p><p>Om detta påverkar lager, vänligen redigera din produkt och repeteraunderförändringen i <em>lagerhantering</em> -fliken.</p><p>Dessa åtgärder kommer inte att ske automatiskt.</p>"
|
||||
order_refunded_success: "Ordern har återbetalats"
|
||||
unsaved_form_alert:
|
||||
modal_title: "Du har några osparade ändringar"
|
||||
confirmation_message: "Om du lämnar den här sidan kommer dina ändringar att gå förlorade. Är du säker på att du vill fortsätta?"
|
||||
confirmation_button: "Ja, spara inte"
|
||||
active_filters_tags:
|
||||
keyword: "Nyckelord: {KEYWORD}"
|
||||
stock_internal: "Privat lager"
|
||||
stock_external: "Publikt lager"
|
||||
calendar:
|
||||
calendar: "Kalender"
|
||||
show_unavailables: "Visa otillgängliga tider"
|
||||
filter_calendar: "Filtrera kalender"
|
||||
trainings: "Utbildningar"
|
||||
machines: "Utrustning"
|
||||
spaces: "Lokaler"
|
||||
events: "Evenemang"
|
||||
externals: "Andra kalendrar"
|
||||
show_reserved_uniq: "Visa endast tider med bokningar"
|
||||
machine:
|
||||
machine_uncategorized: "Okategoriserad utrustning"
|
||||
form_unsaved_list:
|
||||
save_reminder: "Glöm inte att spara dina ändringar"
|
||||
cancel: "Avbryt"
|
5
config/locales/base.sv.yml
Normal file
5
config/locales/base.sv.yml
Normal file
@ -0,0 +1,5 @@
|
||||
sv:
|
||||
time:
|
||||
formats:
|
||||
#See http://apidock.com/ruby/DateTime/strftime for a list of available directives
|
||||
hour_minute: "%H:%M"
|
63
config/locales/devise.sv.yml
Normal file
63
config/locales/devise.sv.yml
Normal file
@ -0,0 +1,63 @@
|
||||
#Additional translations at https://github.com/plataformatec/devise/wiki/I18n
|
||||
sv:
|
||||
devise:
|
||||
confirmations:
|
||||
confirmed: "Ditt konto har uppdaterats."
|
||||
send_instructions: "Inom några minuter får du ett e-postmeddelande med instruktioner för hur du bekräftar ditt konto."
|
||||
send_paranoid_instructions: "Om din e-postadress finns i vår databas får du inom några minuter ett e-postmeddelande med instruktioner för hur du bekräftar ditt konto."
|
||||
failure:
|
||||
already_authenticated: "Du har redan loggat in."
|
||||
inactive: "Ditt konto har inte aktiverats ännu."
|
||||
invalid: "Ogiltig e-postadress eller lösenord."
|
||||
locked: "Ditt konto är låst."
|
||||
last_attempt: "Du har ett försök kvar innan vi låser kontot."
|
||||
not_found_in_database: "Ogiltig e-postadress eller lösenord."
|
||||
timeout: "Din session har upphört att gälla. Vänligen logga in igen om du vill fortsätta."
|
||||
unauthenticated: "Du måste logga in eller skapa ett konto innan du kan fortsätta."
|
||||
unconfirmed: "Du måste bekräfta ditt konto innan du fortsätter. Klicka på länken nedanför formuläret."
|
||||
mailer:
|
||||
confirmation_instructions:
|
||||
action: "Bekräfta e-postadress"
|
||||
instruction: "Du kan slutföra din registrering genom att bekräfta din e-postadress. Klicka på följande länk:"
|
||||
subject: "Bekräftelseinstruktioner"
|
||||
reset_password_instructions:
|
||||
action: "Byt lösenord"
|
||||
instruction: "Någon har begärt att ändra ditt lösenordet. Du kan göra det genom länken nedan."
|
||||
ignore_otherwise: "Om du inte har gjort denna begäran, vänligen ignorera detta meddelande."
|
||||
subject: "Instruktioner för återställning av lösenord"
|
||||
unlock_instructions:
|
||||
subject: "Instruktioner för upplåsning"
|
||||
omniauth_callbacks:
|
||||
failure: "Kunde inte autentisera dig med %{kind} på grund av \"%{reason}\"."
|
||||
success: "Autentiserat med %{kind}-konto."
|
||||
passwords:
|
||||
no_token: "Tillgång till den här sidan kräver att du fått ett mejl som sätter tillbaka ditt lösenord. Om du kom hit från ett sådant mejl, säkerställ att du har använt hela URL: en."
|
||||
send_instructions: "Du kommer få ett mejl med instruktioner för hur du kan återställa ditt lösenord inom några minuter."
|
||||
send_paranoid_instructions: "Om din e-postadress finns i vår databas kommer du att få en länk för lösenordsåterställning via e-post inom några minuter."
|
||||
updated: "Ditt lösenord har ändrats. Du är nu inloggad."
|
||||
updated_not_active: "Ditt lösenord har ändrats."
|
||||
registrations:
|
||||
destroyed: "Hej då! Ditt konto har nu avslutats. Vi hoppas att vi snart ses igen."
|
||||
signed_up: "Välkommen! Du har registrerat dig."
|
||||
signed_up_but_inactive: "Din registrering är klar. Men vi kunde inte logga in dig eftersom ditt konto ännu inte är aktiverat."
|
||||
signed_up_but_locked: "Din registrering är klar. Men vi kunde inte logga in dig eftersom ditt konto är låst."
|
||||
signed_up_but_unconfirmed: "Ett meddelande med en bekräftelselänk har skickats till din e-postadress. Aktivera ditt konto genom att klicka på den länken."
|
||||
update_needs_confirmation: "Du uppdaterade ditt konto, men vi måste verifiera din nya e-postadress. Kontrollera din e-post och klicka på bekräftelselänken för att slutföra bekräftandet av din nya e-postadress."
|
||||
updated: "Ditt konto har uppdaterats."
|
||||
sessions:
|
||||
signed_in: "Inloggningen lyckades."
|
||||
signed_out: "Du har loggats ut."
|
||||
unlocks:
|
||||
send_instructions: "Inom några minuter får du ett e-postmeddelande med instruktioner för hur du låser upp ditt konto."
|
||||
send_paranoid_instructions: "Om ditt konto finns får du inom några minuter ett e-postmeddelande med instruktioner för hur du låser upp det."
|
||||
unlocked: "Ditt konto har blivit upplåst. Logga in för att fortsätta."
|
||||
errors:
|
||||
messages:
|
||||
already_confirmed: "Detta e-postmeddelande har redan bekräftats, försök logga in."
|
||||
confirmation_period_expired: "måste bekräftas inom %{period}, vänligen begär ett nytt"
|
||||
expired: "har gått ut, vänligen begär ett nytt"
|
||||
not_found: "Meddelandet hittades inte"
|
||||
not_locked: ""
|
||||
not_saved:
|
||||
one: "1 fel gjorde att denna %{resource} inte kunde sparas:"
|
||||
other: "%{count} fel gjorde att denna %{resource} inte kunde sparas:"
|
@ -49,7 +49,7 @@ fr:
|
||||
gateway_amount_too_large: "Les paiements supérieurs à %{AMOUNT} ne sont pas pris en charge. Merci de passer commande directement à l'accueil."
|
||||
product_in_use: "Ce produit a déjà été commandé"
|
||||
slug_already_used: "est déjà utilisée"
|
||||
birthday_less_than_18_years_ago: "l'age devez avoir au moins 18 ans"
|
||||
birthday_less_than_18_years_ago: "L'age doit être inférieur à 18 ans"
|
||||
coupon:
|
||||
code_format_error: "seules les majuscules, chiffres et tirets sont autorisés"
|
||||
apipie:
|
||||
|
@ -289,9 +289,9 @@ es-MX:
|
||||
notify_member_about_coupon:
|
||||
subject: "Cupón"
|
||||
body:
|
||||
enjoy_a_discount_of_PERCENT_with_code_CODE: "Disfruta de un descuento del %{PERCENT}% en toda la web con el código %{CODE}."
|
||||
enjoy_a_discount_of_AMOUNT_with_code_CODE: "Disfruta de un descuento de %{AMOUNT} en toda la web con el código %{CODE}."
|
||||
this_coupon_is_valid_USAGE_times_until_DATE_for_all_your_purchases: "Este cupón es válido {USAGE, plural, =1{just once} other{many times}}: para todas tus compras {TYPE, select, amount_off{at least equal to the amount of the coupon} other{}}, desde ahora {DATE, select, NO-DATE{and without time limit} other{and until {DATE}}}."
|
||||
enjoy_a_discount_of_PERCENT_with_code_CODE: "Disfruta de un descuento del %{PERCENT}% en todo el sitio con el código %{CODE}."
|
||||
enjoy_a_discount_of_AMOUNT_with_code_CODE: "Disfruta de un descuento de %{AMOUNT} en todo el sitio con el código %{CODE}."
|
||||
this_coupon_is_valid_USAGE_times_until_DATE_for_all_your_purchases: "Este cupón es válido {USAGE, plural, =1{une vez} other{varias veces}}: para todas tus compras {TYPE, select, amount_off{al menos igual al valor del cupón} other{}}, desde ahora {DATE, select, NO-DATE{y sin limite de tiempo} other{y hasta {DATE}}}."
|
||||
notify_admin_free_disk_space:
|
||||
subject: "Poco espacio libre en disco"
|
||||
body: "Advertencia: el espacio disponible en el servidor que aloja Fab-manager es inferior a %{THRESHOLD} MiB. Esto puede afectar a su funcionamiento y evitar que se guarden algunos datos. Actualmente, hay %{AVAILABLE} MiB de espacio libre en el disco del punto de montaje."
|
||||
|
@ -289,9 +289,9 @@ es:
|
||||
notify_member_about_coupon:
|
||||
subject: "Cupón"
|
||||
body:
|
||||
enjoy_a_discount_of_PERCENT_with_code_CODE: "Disfruta de un descuento del %{PERCENT}% en toda la web con el código %{CODE}."
|
||||
enjoy_a_discount_of_AMOUNT_with_code_CODE: "Disfruta de un descuento de %{AMOUNT} en toda la web con el código %{CODE}."
|
||||
this_coupon_is_valid_USAGE_times_until_DATE_for_all_your_purchases: "Este cupón es válido {USAGE, plural, =1{just once} other{many times}}: para todas tus compras {TYPE, select, amount_off{at least equal to the amount of the coupon} other{}}, desde ahora {DATE, select, NO-DATE{and without time limit} other{and until {DATE}}}."
|
||||
enjoy_a_discount_of_PERCENT_with_code_CODE: "Disfruta de un descuento del %{PERCENT}% en todo el sitio con el código %{CODE}."
|
||||
enjoy_a_discount_of_AMOUNT_with_code_CODE: "Disfruta de un descuento de %{AMOUNT} en todo el sitio con el código %{CODE}."
|
||||
this_coupon_is_valid_USAGE_times_until_DATE_for_all_your_purchases: "Este cupón es válido {USAGE, plural, =1{une vez} other{varias veces}}: para todas tus compras {TYPE, select, amount_off{al menos igual al valor del cupón} other{}}, desde ahora {DATE, select, NO-DATE{y sin limite de tiempo} other{y hasta {DATE}}}."
|
||||
notify_admin_free_disk_space:
|
||||
subject: "Poco espacio libre en disco"
|
||||
body: "Advertencia: el espacio disponible en el servidor que aloja Fab-manager es inferior a %{THRESHOLD} MiB. Esto puede afectar a su funcionamiento y evitar que se guarden algunos datos. Actualmente, hay %{AVAILABLE} MiB de espacio libre en el disco del punto de montaje."
|
||||
|
490
config/locales/mails.sv.yml
Normal file
490
config/locales/mails.sv.yml
Normal file
@ -0,0 +1,490 @@
|
||||
sv:
|
||||
layouts:
|
||||
notifications_mailer:
|
||||
see_you_later: "Vi ses snart {GENDER, select, neutral{} other{}}" #messageFormat interpolation
|
||||
sincerely: "Vänliga hälsningar,"
|
||||
signature: "Fab Lab teamet."
|
||||
do_not_reply: "Vänligen svara inte på detta meddelande."
|
||||
users_mailer:
|
||||
notify_user_account_created:
|
||||
subject: "Ditt FabLab-konto har skapats"
|
||||
body:
|
||||
hello: "Hej %{NAME},"
|
||||
intro: "FabLab-teamet har just skapat ett konto åt dig, på sidan {GENDER, select, neutral{} other{}} {FABLAB} :" #messageFormat interpolation
|
||||
connection_parameters: "Här är dina inloggningsuppgifter:"
|
||||
account_name: "Kontonamn:"
|
||||
password: "Lösenord:"
|
||||
temporary_password: "Detta är ett tillfälligt lösenord, du kan ändra det på sidan «Mitt konto»."
|
||||
keep_advantages: "Med detta konto behåller du alla fördelar som är kopplade till din Fab Lab-användarprofil (utbildningar, prenumerationsplaner)."
|
||||
to_use_platform: "För att använda webbplatsen, vänligen"
|
||||
logon_or_login: "skapa ett nytt konto eller logga in genom att klicka här."
|
||||
token_if_link_problem: "Om du upplever problem med länken kan du ange följande kod vid ditt första inloggningsförsök:"
|
||||
notifications_mailer:
|
||||
notify_user_user_group_changed:
|
||||
subject: "Du har bytt grupp"
|
||||
body:
|
||||
warning: "Du har bytt grupp. Kontroller kan utföras i lokalen för att kontrollera legitimiteten i denna ändring."
|
||||
user_invalidated: "Ditt konto har blivit ogiltigförklarat, ladda upp dina nya underlag för att validera ditt konto."
|
||||
notify_admin_user_group_changed:
|
||||
subject: "En användare har ändrat sin grupp"
|
||||
body:
|
||||
user_changed_group_html: "Användare <em><strong>%{NAME}</strong></em> ändrade grupp."
|
||||
previous_group: "Föregående grupp:"
|
||||
new_group: "Ny grupp:"
|
||||
user_invalidated: "Användarens konto har ogiltigförklarats."
|
||||
notify_admin_subscription_extended:
|
||||
subject: "En prenumeration har förlängts"
|
||||
body:
|
||||
subscription_extended_html: "Prenumeration <strong><em>{PLAN}</em></strong> av medlemmen <strong><em>{NAME}</strong></em> har förlängts {FREE, select, true{gratis} other{}} tills {DATE}." #messageFormat interpolation
|
||||
notify_member_subscription_extended:
|
||||
subject: "Din prenumerationsplan har förlängts"
|
||||
body:
|
||||
your_plan: "Din prenumerationsplan"
|
||||
has_been_extended: "har utökats"
|
||||
free: "gratis"
|
||||
until: "till och med"
|
||||
notify_partner_subscribed_plan:
|
||||
subject: "En prenumeration har köpts"
|
||||
body:
|
||||
a_plan: "En prenumerationsplan"
|
||||
was_purchased_by_member: "har köpts av användaren"
|
||||
notify_admin_when_project_published:
|
||||
subject: "Ett projekt har publicerats"
|
||||
body:
|
||||
new_project_published: "Ett nytt projekt har publicerat:"
|
||||
notify_project_collaborator_to_valid:
|
||||
subject: "Inbjudan att delta i ett projekt"
|
||||
body:
|
||||
your_are_invited_to_take_part_in_a_project: "Du är inbjuden att delta i detta projekt:"
|
||||
to_accept_the_invitation_click_on_following_link: "För att tacka ja till denna inbjudan, klicka på följande länk:"
|
||||
notify_project_author_when_collaborator_valid:
|
||||
subject: "Ny medarbetare i ditt projekt"
|
||||
body:
|
||||
the_member: "användaren"
|
||||
accepted_your_invitation_to_take_part_in_the_project: "har accepterat din inbjudan att gå med i ditt projekt:"
|
||||
notify_user_training_valid:
|
||||
subject: "Din utbildning har validerats"
|
||||
body:
|
||||
your_training: "Din utbildning"
|
||||
has_been_validated: "har validerats"
|
||||
notify_member_subscribed_plan:
|
||||
subject: "Din prenumeration har köpts"
|
||||
body:
|
||||
plan_subscribed_html: "Du har prenumererat på planen: <strong><em>%{PLAN}</em></strong>."
|
||||
rolling_subscription_stops_on: "Din prenumeration avslutas %{DURATION} efter din första utbildning. Annars kommer den att sluta på %{DATE}."
|
||||
subscription_stops_on: "Din prenumeration avslutas den %{DATE}."
|
||||
notify_member_create_reservation:
|
||||
subject: "Din bokning har sparats"
|
||||
body:
|
||||
reservation_saved_html: "Din bokning <strong><em>%{RESERVATION}</em></strong> har sparats"
|
||||
your_reserved_slots: "Dina bokade platser är:"
|
||||
notify_member_pre_booked_reservation:
|
||||
subject: "Din föranmälan har sparats"
|
||||
body:
|
||||
reservation_saved_html: "Din föranmälan <strong><em>%{RESERVATION}</em></strong> har sparats"
|
||||
your_reserved_slots: "Dina förbokade platser är:"
|
||||
reservation_warning: "<strong><em>Detta mail räknas inte som registrering till %{RESERVATION}.</em></strong><br/>Du kommer att få ett annat e-postmeddelande för att bekräfta eller neka din begäran."
|
||||
notify_member_subscribed_plan_is_changed:
|
||||
subject: "Din prenumeration har uppdaterats"
|
||||
body:
|
||||
new_plan_html: "Du har ändrat din plan till <strong><em>%{PLAN}</em></strong>."
|
||||
notify_admin_member_create_reservation:
|
||||
subject: "Ny Bokning"
|
||||
body:
|
||||
member_reserved_html: "Användare %{NAME} har bokat <strong><em>%{RESERVABLE}</em></strong>."
|
||||
reserved_slots: "Bokade platser är:"
|
||||
notify_admin_member_pre_booked_reservation:
|
||||
subject: "Ny föranmälan"
|
||||
body:
|
||||
member_reserved_html: "Användare %{NAME} har förbokat <strong><em>%{RESERVABLE}</em></strong>."
|
||||
reserved_slots: "Förbokade platser är:"
|
||||
notify_member_slot_is_modified:
|
||||
subject: "Din bokning har sparats"
|
||||
body:
|
||||
reservation_changed_to: "Din bokning har ändrats till:"
|
||||
previous_date: "Tidigare datum:"
|
||||
notify_admin_slot_is_modified:
|
||||
subject: "En plats har ändrats"
|
||||
body:
|
||||
slot_modified: "Användare %{NAME} hade ändrat sin plats"
|
||||
new_date: "Ny plats"
|
||||
old_date: "Föregående plats"
|
||||
notify_admin_when_user_is_created:
|
||||
subject: "Användarkonto har skapats"
|
||||
body:
|
||||
new_account_created: "Ett nytt användarkonto har skapats på webbplatsen:"
|
||||
user_of_group_html: "Användaren har registrerat sig i gruppen <strong>%{GROUP}</strong>"
|
||||
account_for_organization: "Detta konto företräder en organisation:"
|
||||
notify_admin_child_created:
|
||||
subject: "En användares barn har lagts till"
|
||||
body:
|
||||
new_child_created: "Ett nytt barn har lagts till på webbplatsen"
|
||||
notify_admin_subscribed_plan:
|
||||
subject: "En prenumeration har köpts"
|
||||
body:
|
||||
plan_subscribed_html: "En plan <strong><em>%{PLAN}</em></strong> har prenumererats på av användaren <strong><em>%{NAME}</strong></em>."
|
||||
notify_member_invoice_ready:
|
||||
subject: "Din FabLabfaktura"
|
||||
body:
|
||||
please_find_attached_html: "Som bifogad fil hittar du din faktura från {DATE}med ett belopp på {AMOUNT} för din {TYPE, select, Reservation{reservation} OrderItem{order} other{prenumeration}}." #messageFormat interpolation
|
||||
invoice_in_your_dashboard_html: "Du kan komma åt din faktura i %{DASHBOARD} på Fab Labs webbplats."
|
||||
your_dashboard: "din kontrollpanel"
|
||||
notify_member_reservation_reminder:
|
||||
subject: "Bokningspåminnelse"
|
||||
body:
|
||||
this_is_a_reminder_about_your_reservation_RESERVABLE_to_be_held_on_DATE_html: "Detta är en påminnelse om din bokning <strong>%{RESERVABLE}</strong> som hålls på <em>%{DATE}</em>"
|
||||
this_reservation_concerns_the_following_slots: "Denna bokning gäller följande platser:"
|
||||
notify_member_avoir_ready:
|
||||
subject: "Din FabLabkreditnota"
|
||||
body:
|
||||
please_find_attached_html: "Som bifogad fil hittar du din faktura från {DATE}med ett belopp på {AMOUNT} för din {TYPE, select, Reservation{reservation} WalletTransaction{wallet credit} other{subscription}}." #messageFormat interpolation
|
||||
invoice_in_your_dashboard_html: "Du får tillgång till din kreditnota i %{DASHBOARD} på webbplatsen."
|
||||
your_dashboard: "din kontrollpanel"
|
||||
notify_member_subscription_will_expire_in_7_days:
|
||||
subject: "Din prenumeration upphör om 7 dagar"
|
||||
body:
|
||||
your_plan: "din plan"
|
||||
expires_in_7_days: "kommer att löpa ut om 7 dagar."
|
||||
to_renew_your_plan_follow_the_link: "Följ denna länk för att förnya din plan"
|
||||
notify_member_training_authorization_expired:
|
||||
subject: "Din auktorisation har återkallats"
|
||||
body:
|
||||
training_expired_html: "<p>Du gick %{TRAINING} utbildning, på %{DATE}.</p><p>Din auktorisering för denna utbildning, giltig för %{PERIOD} månader, har löpt ut.</p><p>Vänligen validera den igen för att kunna reservera %{MACHINES}</p>."
|
||||
notify_member_training_auto_cancelled:
|
||||
subject: "Din utbildning avbröts"
|
||||
body:
|
||||
cancelled_training: "Utbildningen %{TRAINING} är planerad den %{DATE}, från %{START} till %{END} har avbrutits på grund av otillräckligt antal deltagare."
|
||||
auto_refund: "Du har återbetalats till din plånbok och en kreditfaktura är tillgänglig."
|
||||
notify_member_training_invalidated:
|
||||
subject: "Din auktorisation har återkallats"
|
||||
body:
|
||||
training_invalidated_html: "<p>Du gick %{TRAINING} -utbildningen, på %{DATE} vilket ger dig tillgång till %{MACHINES}.</p><p>På grund av bristen på reservationer för utrustningen under de senaste %{PERIOD} månaderna, din auktorisering har ogiltigförklarats.</p><p>Vänligen bekräfta utbildningen igen för att fortsätta reservera denna utrustning.</p>."
|
||||
notify_member_subscription_is_expired:
|
||||
subject: "Din prenumeration har löpt ut"
|
||||
body:
|
||||
your_plan: "Din plan"
|
||||
has_expired: "har gått ut."
|
||||
you_can_go_to: "Gå till"
|
||||
to_renew_your_plan: "för att förnya din plan"
|
||||
notify_admin_subscription_will_expire_in_7_days:
|
||||
subject: "Ett medlemsabonnemang löper ut om 7 dagar"
|
||||
body:
|
||||
subscription_will_expire_html: "Prenumerationsplan för användaren %{NAME} <strong><em>%{PLAN}</em></strong> löper ut om 7 dagar."
|
||||
notify_admin_training_auto_cancelled:
|
||||
subject: "En utbildning avbröts automatiskt"
|
||||
body:
|
||||
cancelled_training: "Utbildningen %{TRAINING} är planerad den %{DATE}, från %{START} till %{END} har avbrutits på grund av otillräckligt antal deltagare."
|
||||
auto_refund: "Medlemmarna som har bokat detta träningspass återbetalades automatiskt till sin plånbok och kreditnotor genererades."
|
||||
manual_refund: "Vänligen återbetala alla medlemmar som har bokat denna utbildning manuellt och generera kreditfakturor."
|
||||
notify_admin_subscription_is_expired:
|
||||
subject: "En medlemsprenumeration har avbrutits"
|
||||
body:
|
||||
subscription_expired_html: "Prenumerationsplan för användaren %{NAME} <strong><em>%{PLAN}</em></strong> har nu löpt ut."
|
||||
notify_admin_subscription_canceled:
|
||||
subject: "En medlemsprenumeration har avbrutits"
|
||||
body:
|
||||
subscription_canceled_html: "Prenumeration <strong><em>%{PLAN}</em></strong> för användaren %{NAME} har avbrutits."
|
||||
notify_member_subscription_canceled:
|
||||
subject: "Din prenumeration har avbrutits"
|
||||
body:
|
||||
your_plan_was_canceled: "Din prenumeration har avbrutits."
|
||||
your_plan: "din prenumerationsplan"
|
||||
end_at: "slutar den"
|
||||
notify_member_slot_is_canceled:
|
||||
subject: "Din bokning har avbrutits"
|
||||
body:
|
||||
reservation_canceled: "Din bokning av %{RESERVABLE} har avbrutits"
|
||||
notify_admin_slot_is_canceled:
|
||||
subject: "En bokning har avbokats"
|
||||
body:
|
||||
member_cancelled: "Användare %{NAME} har avbokat sin bokning"
|
||||
item_details: "%{START} - %{END}, om %{RESERVABLE}"
|
||||
generate_refund: "Glöm inte att generera en kreditfaktura eller en återbetalning för denna avbokning."
|
||||
notify_admin_when_user_is_imported:
|
||||
subject: "Ett användarkonto har importerats via SSO"
|
||||
body:
|
||||
new_account_imported: "Ett nytt användarkonto (ID: %{ID}) har importerats till webbplatsen via %{PROVIDER}."
|
||||
provider_uid: "dess leverantörs-ID är: "
|
||||
known_information: "Här är vad vi vet om denna leverantör:"
|
||||
address_already_used: "E-posten är redan kopplad till en annan användare"
|
||||
no_more_info_available: "Ingen annan information om denna användare kan lämnas innan den slutför sin profil."
|
||||
notify_user_profile_complete:
|
||||
subject: "Du har nu tillgång till hela webbplatsen"
|
||||
body:
|
||||
message: "Dina kontoinformation har uppdaterats korrekt, du har nu tillgång till hela webbplatsen."
|
||||
notify_user_auth_migration:
|
||||
subject: "Viktiga ändringar i ditt konto"
|
||||
body:
|
||||
the_platform: "webbplatsen"
|
||||
is_changing_its_auth_system_and_will_now_use: "faktiskt ändra sitt användar-identifieringssystem och kommer att använda"
|
||||
instead_of: "istället för"
|
||||
consequence_of_the_modification: "På grund av denna förändring kommer du inte att kunna logga in på webbplatsen med dina faktiska användarnamn"
|
||||
to_use_the_platform_thanks_for: "För att fortsätta använda webbplatsen, vänligen"
|
||||
create_an_account_on: "skapa ett konto"
|
||||
or_use_an_existing_account_clicking_here: "eller använd ett befintligt konto genom att klicka här"
|
||||
in_case_of_problem_enter_the_following_code: "Vid problem med denna länk, kan du ange följande kod vid ditt första anslutningsförsök för att migrera ditt faktiska konto till det nya autentiseringssystemet:"
|
||||
notify_admin_user_merged:
|
||||
subject: "Ett importerat konto har slagits samman med ett befintligt konto"
|
||||
body:
|
||||
imported_account_merged: "Ett tidigare importerat användarkonto via %{PROVIDER) har slagits samman med det befintliga kontot %{NAME}"
|
||||
provider_uid: "dess leverantörs-ID är:"
|
||||
notify_admin_profile_complete:
|
||||
subject: "Ett importerat konto har gjort klar sin profil"
|
||||
body:
|
||||
account_completed: "Ett användarkonto har gjort klart sin profil:"
|
||||
imported_account_completed: "Ett användarkonto, som tidigare importerats via %{PROVIDER}, har gjort klart sin profil:"
|
||||
provider_id: "dess leverantörs-ID är:"
|
||||
notify_admin_abuse_reported:
|
||||
subject: "Kränkande innehåll har rapporterats"
|
||||
body:
|
||||
intro: "En användare har flaggat ett innehåll som kränkande"
|
||||
signaled_content: "flaggat innehåll:"
|
||||
signaled_by: "flaggad av:"
|
||||
signaled_on: "flaggad den:"
|
||||
message: "Meddelande:"
|
||||
visit_management_interface: "Se rapporteringsgränssnittet för mer information."
|
||||
notify_user_wallet_is_credited:
|
||||
subject: "Din plånbok har krediterats"
|
||||
body:
|
||||
wallet_credit_html: "Din plånbok har krediterats %{AMOUNT} av administratör."
|
||||
notify_admin_user_wallet_is_credited:
|
||||
subject: "En användares plånbok har krediterats"
|
||||
body:
|
||||
wallet_credit_html: "Plånboken för medlemmen %{USER} har krediterats %{AMOUNT} av administratören %{ADMIN}."
|
||||
notify_admin_export_complete:
|
||||
subject: "Exporten är klar"
|
||||
body:
|
||||
you_asked_for_an_export: "Du bad om en export"
|
||||
statistics_global: "av all statistik"
|
||||
statistics_account: "av bokningsstatistiken"
|
||||
statistics_event: "av statistik om evenemang"
|
||||
statistics_machine: "av statistik om utrustningsbokningar"
|
||||
statistics_project: "av statistik om projekt"
|
||||
statistics_subscription: "av prenumerationsstatistik"
|
||||
statistics_training: "av statistik om utbildningar"
|
||||
statistics_space: "statistik om lokaler"
|
||||
users_members: "av medlemslistan"
|
||||
users_subscriptions: "av listan över prenumerationer"
|
||||
users_reservations: "av bokningslistan"
|
||||
availabilities_index: "av bokningens tillgänglighet"
|
||||
accounting_acd: "av bokföringsdata till ACD"
|
||||
accounting_vat: "av den ingående momsen"
|
||||
click_to_download: "Excel-fil genererades framgångsrikt. För att ladda ner den, klicka"
|
||||
here: "här"
|
||||
file_type:
|
||||
xlsx: "Excel"
|
||||
csv: "CSV"
|
||||
notify_admin_import_complete:
|
||||
subject: "Import slutförd"
|
||||
body:
|
||||
you_made_an_import: "Du har initierat en import %{CATEGORY}"
|
||||
category_members: "av medlemmarna"
|
||||
click_to_view_results: "Klicka här för att se resultat"
|
||||
notify_admin_low_stock_threshold:
|
||||
subject: "Varning vid lågt lagersaldo"
|
||||
body:
|
||||
low_stock: "En ny lagerförflyttning av %{PRODUCT} har överskridit gränsen för lågt lager."
|
||||
stocks_state_html: "Nuvarande lagerstatus: <ul><li>internt: %{INTERNAL}</li><li>externt: %{EXTERNAL}</li></ul>"
|
||||
manage_stock: "Hantera lager för denna produkt"
|
||||
notify_member_about_coupon:
|
||||
subject: "Rabattkupong"
|
||||
body:
|
||||
enjoy_a_discount_of_PERCENT_with_code_CODE: "Erhåll %{PERCENT}% rabatt på webbplatsen med koden %{CODE}."
|
||||
enjoy_a_discount_of_AMOUNT_with_code_CODE: "Erhåll %{AMOUNT}% rabatt på webbplatsen med koden %{CODE}."
|
||||
this_coupon_is_valid_USAGE_times_until_DATE_for_all_your_purchases: "Denna kupong är giltig {USAGE, plural, =1{en gång} other{flera gånger}}: vid samtliga köp {TYPE, select, amount_off{som minst uppgår till kupongens värde} other{}}, fr. o. m. nu {DATE, select, NO-DATE{och utan bortre tidsgräns} other{t. o. m. {DATE}}}."
|
||||
notify_admin_free_disk_space:
|
||||
subject: "Lågt diskutrymme"
|
||||
body: "Varning: tillgängligt diskutrymme på serverns webbhotell är mindre än %{THRESHOLD} MiB. Detta kan påverka dess funktion och förhindra att vissa data sparas. För närvarande finns %{AVAILABLE} MiB ledigt diskutrymme kvar på monteringspunkten."
|
||||
notify_admin_close_period_reminder:
|
||||
subject: "Påminnelse om att stänga dina bokföringsperioder"
|
||||
body:
|
||||
warning_last_closed_period_over_1_year: "Vänligen kom ihåg att regelbundet stänga dina redovisningsperioder. Senast stängd period avslutades på %{LAST_END}."
|
||||
warning_no_closed_periods: "Vänligen påminn om att regelbundet stänga dina bokföringsperioder. Du måste stänga perioder från %{FIRST_DATE}."
|
||||
notify_admin_archive_complete:
|
||||
subject: "Arkivering slutförd"
|
||||
body:
|
||||
archive_complete: "Du har stängt redovisningsperioden från %{START} till %{END}. Arkivering av data är nu klar."
|
||||
click_to_download: "För att ladda ner ZIP-arkivet, klicka"
|
||||
here: "här."
|
||||
save_on_secured: "Kom ihåg att du måste spara detta arkiv på en säker extern plats som skattemyndigheterna kan begära ut dem från vid en kontroll."
|
||||
notify_privacy_policy_changed:
|
||||
subject: "Integritetspolicy uppdaterad"
|
||||
body:
|
||||
content_html: "<p>Vi vill informera dig om att vi just har uppdaterat vår sekretesspolicy.</p><p>Vi kan komma att ändra vår sekretesspolicy regelbundet. I enlighet med reglerna får du en avisering för varje uppdatering.</p><p>Genom att få tillgång till eller använda våra tjänster efter integritetspolicyuppdateringen, kommer vi att överväga att du godkänner dess villkor, inklusive uppdateringar.</p>"
|
||||
link_to_policy: "Klicka här för att se sekretesspolicyn."
|
||||
notify_admin_refund_created:
|
||||
subject: "En återbetalning har skapats"
|
||||
body:
|
||||
refund_created: "Återbetalning av %{AMOUNT} har genererats på faktura %{INVOICE} för användaren %{USER}"
|
||||
wallet_refund_created: "En återbetalning av %{AMOUNT} har skapats för användarens plånbok %{USER}"
|
||||
download: "Klicka här för att ladda ner denna kreditnota"
|
||||
notify_admins_role_update:
|
||||
subject: "Rollen för en användare har ändrats"
|
||||
body:
|
||||
user_role_changed_html: "Rollen för användaren <em><strong>%{NAME}</strong></em> har ändrats."
|
||||
previous_role: "Föregående roll:"
|
||||
new_role: "Ny roll:"
|
||||
notify_user_role_update:
|
||||
subject: "Din roll har ändrats"
|
||||
body:
|
||||
role_changed_html: "Din roll på {GENDER, select, male{} female{} neutral{} other{}} {NAME} har ändrats. Du är nu <strong>{ROLE}</strong>.<br/>Med stor kraft kommer stort ansvar, använd dina nya privilegier rättvist och respektfullt."
|
||||
notify_admin_objects_stripe_sync:
|
||||
subject: "Stripe-synkronisering"
|
||||
body:
|
||||
objects_sync: "Alla medlemmar, kuponger, utrustning, utbildningar, lokaler och planer synkroniserades framgångsrikt på Stripe."
|
||||
notify_admin_order_is_paid:
|
||||
subject: "Ny beställning"
|
||||
body:
|
||||
order_placed: "En ny beställning (%{REFERENCE}) har lagts och betalats av %{USER}."
|
||||
view_details: ""
|
||||
notify_member_payment_schedule_ready:
|
||||
subject: "Ditt betalningsschema"
|
||||
body:
|
||||
please_find_attached_html: "är ser du ditt bifogade betalningsschema, utfärdat på {DATE}, med ett belopp av {AMOUNT} om din {TYPE, select, Reservation{bokning} other{prenumeration}}." #messageFormat interpolation
|
||||
schedule_in_your_dashboard_html: "Du hittar detta betalningsschema när som helst i %{DASHBOARD} på webbplatsen."
|
||||
your_dashboard: "din kontrollpanel"
|
||||
notify_admin_payment_schedule_error:
|
||||
subject: "[URGENT] Kortdebitering misslyckades"
|
||||
body:
|
||||
remember: "I enlighet med ditt %{REFERENCE} betalningsschema planerades ett kortköp på %{AMOUNT} den %{DATE}."
|
||||
error: "Tyvärr inträffade ett fel och denna kortdebitering kunde inte slutföras."
|
||||
action: "Vänligen konsultera sedan %{GATEWAY} kontrollpanelen och kontakta medlemmen så snart som möjligt för att lösa problemet."
|
||||
notify_member_payment_schedule_error:
|
||||
subject: "[URGENT] Kortdebitering misslyckades"
|
||||
body:
|
||||
remember: "I enlighet med ditt %{REFERENCE} betalningsschema planerades ett kortköp på %{AMOUNT} den %{DATE}."
|
||||
error: "Tyvärr inträffade ett fel och denna kortdebitering kunde inte slutföras."
|
||||
action: "Kontakta en ansvarig så snart som möjligt för att lösa problemet."
|
||||
notify_admin_payment_schedule_failed:
|
||||
subject: "[URGENT] Kortdebitering misslyckades"
|
||||
body:
|
||||
remember: "I enlighet med ditt %{REFERENCE} betalningsschema planerades ett kortköp på %{AMOUNT} den %{DATE}."
|
||||
error: "Tyvärr inträffade ett fel och denna kortdebitering kunde inte slutföras."
|
||||
action: "Vänligen kontakta medlemmen så snart som möjligt, gå sedan till betalningsschemats hanteringsgränssnitt för att lösa problemet. Efter en viss tidsperiod kan kortprenumerationen avbrytas."
|
||||
notify_member_payment_schedule_failed:
|
||||
subject: "[URGENT] Kortdebitering misslyckades"
|
||||
body:
|
||||
remember: "I enlighet med ditt %{REFERENCE} betalningsschema planerades ett kortköp på %{AMOUNT} den %{DATE}."
|
||||
error: "Tyvärr kunde inte kortdebiteringen slutföras."
|
||||
action_html: "Vänligen kontrollera %{DASHBOARD} eller kontakta en ansvarig snabbt, annars kan ditt abonnemang avbrytas."
|
||||
your_dashboard: "din kontrollpanel"
|
||||
notify_admin_payment_schedule_gateway_canceled:
|
||||
subject: "[URGENT] Betalningsschema avbruten av betalningsleverantör"
|
||||
body:
|
||||
error: "Betalningsschemat %{REFERENCE} avbröts av betalningsleverantören (%{GATEWAY}). Inga ytterligare debiteringar kommer att göras på denna betalning."
|
||||
action: "Vänligen konsultera betalningsschemats administrationsgränssnitt och kontakta medlemmen så snart som möjligt för att lösa problemet."
|
||||
notify_member_payment_schedule_gateway_canceled:
|
||||
subject: "[URGENT] Betalningsschema avbruten av betalningsleverantör"
|
||||
body:
|
||||
error: "Ditt betalningsschema %{REFERENCE} avbröts av betalningsleverantören. Inga ytterligare debiteringar kommer att göras på denna betalning."
|
||||
action: "Kontakta en ansvarig så snart som möjligt för att lösa problemet."
|
||||
notify_admin_payment_schedule_check_deadline:
|
||||
subject: "Betalningsfrist"
|
||||
body:
|
||||
remember: "I enlighet med %{REFERENCE} betalningsschemat skulle %{AMOUNT} debiteras den %{DATE}."
|
||||
date: "Detta är en påminnelse om att betala så snart som möjligt."
|
||||
confirm: "Glöm inte att bekräfta kvittot i ditt schemas hanteringsgränssnitt, så att motsvarande faktura kommer att genereras."
|
||||
notify_member_payment_schedule_transfer_deadline:
|
||||
subject: "Betalningsfrist"
|
||||
body:
|
||||
remember: "I enlighet med ditt %{REFERENCE} betalningsschema skulle %{AMOUNT} debiteras på %{DATE}."
|
||||
date: "Detta är en påminnelse om att kontrollera att banköverföringen var framgångsrik."
|
||||
confirm: "Vänligen bekräfta mottagandet av pengar i ditt schemahanteringsgränssnitt, så att motsvarande faktura kommer att genereras."
|
||||
notify_member_reservation_limit_reached:
|
||||
subject: "Den dagliga bokningsgränsen har uppnåtts"
|
||||
body:
|
||||
limit_reached: "För %{DATE} har du nått din dagliga gräns för %{HOURS} timmar av %{ITEM} bokningar."
|
||||
notify_admin_user_supporting_document_files_created:
|
||||
subject: "Underlag uppladdat av medlemmen"
|
||||
body:
|
||||
supporting_document_files_uploaded_below: "Medlem %{NAME} har laddat upp följande underlag:"
|
||||
validate_user: "Vänligen bekräfta detta konto"
|
||||
notify_admin_user_supporting_document_files_updated:
|
||||
subject: "Medlemmens underlag har ändrats"
|
||||
body:
|
||||
user_update_supporting_document_file: "Medlem %{NAME} har ändrat dokumenten nedan:"
|
||||
validate_user: "Vänligen bekräfta detta konto"
|
||||
notify_admin_user_child_supporting_document_files_created:
|
||||
subject: "Underlag för barn uppladdat av medlemmen"
|
||||
body:
|
||||
supporting_document_files_uploaded_below: "Child %{NAME} har laddat upp följande underlag:"
|
||||
validate_child: "Vänligen bekräfta detta barnkonto"
|
||||
notify_admin_user_child_supporting_document_files_updated:
|
||||
subject: "Barnets underlag har ändrats"
|
||||
body:
|
||||
child_update_supporting_document_file: "Child %{NAME} har ändrat underlagen nedan:"
|
||||
validate_child: "Vänligen bekräfta detta barnkonto"
|
||||
notify_user_is_validated:
|
||||
subject: "Konto bekräftat"
|
||||
body:
|
||||
account_validated: "Ditt konto har bekräftats. Nu har du tillgång till bokningsfunktioner."
|
||||
notify_user_is_invalidated:
|
||||
subject: "Kontot ogiltigförklarat"
|
||||
body:
|
||||
account_invalidated: "Ditt konto har ogiltigförklarats. Du kommer inte att kunna boka igen förrän ditt konto har validerats."
|
||||
notify_user_child_is_validated:
|
||||
subject: "Barnkonto validerat"
|
||||
body:
|
||||
child_validated: "Ditt barnkonto har validerats. Nu har du tillgång till bokningsfunktioner för evenemang."
|
||||
notify_user_child_is_invalidated:
|
||||
subject: "Barnkonto ogiltigförklarat"
|
||||
body:
|
||||
child_invalidated: "Ditt barnkonto har ogiltigförklarats. Du kommer inte att kunna boka evenemang, förrän ditt barnkonto har validerats igen."
|
||||
notify_user_supporting_document_refusal:
|
||||
subject: "Dina underlag avvisades"
|
||||
body:
|
||||
user_supporting_document_files_refusal: "Dina underlag avvisades:"
|
||||
action: "Vänligen ladda upp några nya underlag."
|
||||
notify_user_supporting_document_reminder:
|
||||
subject: "Påminnelse om att ladda upp dina underlag"
|
||||
body:
|
||||
user_supporting_document_reminder: "Detta är en påminnelse för dig att ladda upp dina underlag."
|
||||
notify_admin_user_supporting_document_refusal:
|
||||
subject: "Medlemmens underlag avvisades"
|
||||
body:
|
||||
user_supporting_document_files_refusal: "Medlem %{NAME} s underlag avvisades av %{OPERATOR}:"
|
||||
notify_user_child_supporting_document_refusal:
|
||||
subject: "Ditt barns underlag avvisades"
|
||||
body:
|
||||
user_child_supporting_document_files_refusal: "Dina underlag avvisades:"
|
||||
action: "Vänligen ladda upp några nya underlag."
|
||||
notify_admin_user_child_supporting_document_refusal:
|
||||
subject: "Ditt barns underlag avvisades"
|
||||
body:
|
||||
user_child_supporting_document_files_refusal: "Barnet %{NAME} s underlag avvisades av %{OPERATOR}:"
|
||||
shared:
|
||||
hello: "Hej %{user_name}"
|
||||
notify_user_order_is_ready:
|
||||
subject: "Din beställning är redo"
|
||||
body:
|
||||
notify_user_order_is_ready: "Din beställning %{REFERENCE} är redo:"
|
||||
notify_user_order_is_canceled:
|
||||
subject: "Din beställning är avbruten"
|
||||
body:
|
||||
notify_user_order_is_canceled: "Din beställning %{REFERENCE} är avbruten."
|
||||
notify_user_order_is_refunded:
|
||||
subject: "Din beställning har återbetalats"
|
||||
body:
|
||||
notify_user_order_is_refunded: "Din beställning %{REFERENCE} har återbetalats."
|
||||
notify_member_reservation_validated:
|
||||
subject: "Din bokning har godkänts"
|
||||
body:
|
||||
reservation_validated_html: "<strong><em>%{RESERVABLE}</em></strong> godkändes."
|
||||
your_reserved_slots: "Dina bokade platser är:"
|
||||
notify_admin_reservation_validated:
|
||||
subject: "Din förbokning har godkänts"
|
||||
body:
|
||||
reservation_validated_html: "<strong><em>%{RESERVABLE}</em></strong> godkändes."
|
||||
reserved_slots: "Bokade platser är:"
|
||||
notify_member_reservation_invalidated:
|
||||
subject: "Din förbokning har avslagits"
|
||||
body:
|
||||
reservation_invalidated_html: "<strong><em>%{RESERVABLE}</em></strong> avslogs."
|
||||
notify_admin_reservation_invalidated:
|
||||
subject: "Din förbokning har avslagits"
|
||||
body:
|
||||
reservation_invalidated_html: "<strong><em>%{RESERVABLE}</em></strong> i %{NAME} avslogs."
|
||||
notify_user_when_child_age_will_be_18:
|
||||
subject: "Ditt barn kommer att vara 18 år"
|
||||
body:
|
||||
child_age_will_be_18_years_ago: "Ditt barn %{NAME} kommer att fylla 18 den %{DATE}, och det kommer automatiskt att kopplas bort från ditt familjekonto. Det måste skapa ett eget konto för att kunna göra reservationer."
|
749
config/locales/sv.yml
Normal file
749
config/locales/sv.yml
Normal file
@ -0,0 +1,749 @@
|
||||
sv:
|
||||
#subscription plan duration
|
||||
duration:
|
||||
year:
|
||||
one: 'ett år'
|
||||
other: '%{count} år'
|
||||
month:
|
||||
one: 'en månad'
|
||||
other: '%{count} månader'
|
||||
week:
|
||||
one: 'en vecka'
|
||||
other: '%{count} veckor'
|
||||
activerecord:
|
||||
attributes:
|
||||
product:
|
||||
amount: "Priset"
|
||||
slug: "URL"
|
||||
errors:
|
||||
#CarrierWave
|
||||
messages:
|
||||
carrierwave_processing_error: "misslyckades att bearbetas"
|
||||
carrierwave_integrity_error: "är inte av en tillåten filtyp"
|
||||
carrierwave_download_error: "kunde inte laddas ner"
|
||||
extension_whitelist_error: "Du kan inte ladda upp %{extension} filer, tillåtna typer: %{allowed_types}"
|
||||
extension_blacklist_error: "Du kan inte ladda upp %{extension} filer, förbjudna typer: %{prohibited_types}"
|
||||
content_type_whitelist_error: "Du kan inte ladda upp %{content_type} filer, tillåtna typer: %{allowed_types}"
|
||||
rmagick_processing_error: "Misslyckades att redigera med rmagick, kanske är det inte en bild?"
|
||||
mime_types_processing_error: "Det gick inte att bearbeta filen med MIME::Types, kanske inte giltig innehållstyp?"
|
||||
mini_magick_processing_error: "Misslyckades att redigera filen, kanske är det inte en bild?"
|
||||
wrong_size: "är fel storlek (ska vara %{file_size})"
|
||||
size_too_small: "är för liten (bör vara minst %{file_size})"
|
||||
size_too_big: "är för stor (bör vara som mest %{file_size})"
|
||||
export_not_found: "Begärd export hittades inte. Det har förmodligen tagits bort, vänligen generera en ny export."
|
||||
percentage_out_of_range: "Procent måste anges mellan 0 och 100"
|
||||
cannot_be_blank_at_same_time: "kan inte vara tomt när %{field} är tomt också"
|
||||
cannot_be_in_the_past: "kan inte vara i det förflutna"
|
||||
cannot_be_before_previous_value: "kan inte vara innan föregående värde"
|
||||
cannot_overlap: "kan inte överlappa en befintlig redovisningsperiod"
|
||||
cannot_encompass: "kan inte omfatta en befintlig redovisningsperiod"
|
||||
in_closed_period: "kan inte vara inom en stängd redovisningsperiod"
|
||||
invalid_footprint: "fakturans kontrollsumma är ogiltig"
|
||||
end_before_start: "Slutdatumet kan inte vara före startdatumet. Välj ett datum efter %{START}"
|
||||
invalid_duration: "Den tillåtna perioden måste vara mellan 1 dag och 1 år. Din period är %{DAYS} dagar lång."
|
||||
must_be_in_the_past: "Perioden måste vara strikt innan dagens datum."
|
||||
registration_disabled: "Registrering inaktiverad"
|
||||
undefined_in_store: "måste definieras för att göra produkten tillgänglig i butiken"
|
||||
gateway_error: "Fel hos betalningsleverantör: %{MESSAGE}"
|
||||
gateway_amount_too_small: "Betalningar under %{AMOUNT} stöds inte. Vänligen beställ direkt i receptionen."
|
||||
gateway_amount_too_large: "Betalningar över %{AMOUNT} stöds inte. Vänligen beställ direkt i receptionen."
|
||||
product_in_use: "Denna produkt har redan beställts"
|
||||
slug_already_used: "används redan"
|
||||
birthday_less_than_18_years_ago: "Födelsedag måste vara mindre än 18 år sedan"
|
||||
coupon:
|
||||
code_format_error: "bara stora bokstäver, siffror och bindestreck är tillåtna"
|
||||
apipie:
|
||||
api_documentation: "API-dokumentation"
|
||||
code: "HTTP-kod"
|
||||
#error messages when importing an account from an SSO
|
||||
omniauth:
|
||||
email_already_linked_to_another_account_please_input_your_authentication_code: "E-postadress \"%{OLD_MAIL}\" är redan länkad till ett annat konto, vänligen ange din autentiseringskod."
|
||||
your_username_is_already_linked_to_another_account_unable_to_update_it: "Ditt användarnamn (%{USERNAME}) är redan kopplat till ett annat konto, det gick inte att uppdatera det."
|
||||
your_email_address_is_already_linked_to_another_account_unable_to_update_it: "Din e-postadress (%{EMAIL}) är redan kopplad till ett annat konto, det gick inte att uppdatera det."
|
||||
this_account_is_already_linked_to_an_user_of_the_platform: "Detta %{NAME} konto är redan länkat till en användare av plattformen."
|
||||
#availability slots in the calendar
|
||||
availabilities:
|
||||
not_available: "Inte tillgänglig"
|
||||
reserving: "Jag bokar"
|
||||
i_ve_reserved: "Jag har bokat"
|
||||
blocked: "Blockerad"
|
||||
length_must_be_slot_multiple: "måste vara minst %{MIN} minuter efter startdatum"
|
||||
must_be_associated_with_at_least_1_machine: "måste vara associerad med minst 1 maskin"
|
||||
deleted_user: "Raderad användare"
|
||||
#members management
|
||||
members:
|
||||
unable_to_change_the_group_while_a_subscription_is_running: "Det går inte att ändra gruppen medan en prenumeration är aktiv"
|
||||
please_input_the_authentication_code_sent_to_the_address: "Ange autentiseringskoden som skickats till e-postadressen %{EMAIL}"
|
||||
your_authentication_code_is_not_valid: "Ogiltig aktiveringskod."
|
||||
current_authentication_method_no_code: "Den aktuella autentiseringsmetoden kräver ingen migreringskod"
|
||||
requested_account_does_not_exists: "Det begärda kontot finns inte"
|
||||
#SSO external authentication
|
||||
authentication_providers:
|
||||
local_database_provider_already_exists: 'En "lokal databas-leverantör" finns redan. Kan inte skapa en till.'
|
||||
matching_between_User_uid_and_API_required: "Matchningen mellan User.uid och API behöver ställas in för att lägga till denna leverantör."
|
||||
#PDF invoices generation
|
||||
invoices:
|
||||
refund_invoice_reference: "Kreditnotereferens: %{REF}"
|
||||
invoice_reference: "Fakturareferens: %{REF}"
|
||||
code: "Kod: %{CODE}"
|
||||
order_number: "Beställnings#: %{NUMBER}"
|
||||
invoice_issued_on_DATE: "Faktura utfärdad den%{DATE}"
|
||||
refund_invoice_issued_on_DATE: "Kreditnota utfärdad den %{DATE}"
|
||||
wallet_credit: "Plånbokens krediter"
|
||||
cancellation_of_invoice_REF: "Avbokning av faktura %{REF}"
|
||||
reservation_of_USER_on_DATE_at_TIME: "Bokning av %{USER} på %{DATE} på %{TIME}"
|
||||
cancellation: "Avbokning"
|
||||
object: "Objekt:"
|
||||
order_summary: "Beställningsöversikt:"
|
||||
details: "Detaljer"
|
||||
amount: "Belopp"
|
||||
subscription_extended_for_free_from_START_to_END: "Prenumerationen förlängs kostnadsfritt - Från %{START} till %{END}"
|
||||
subscription_NAME_from_START_to_END: "Prenumeration %{NAME} - Från %{START} till %{END}"
|
||||
machine_reservation_DESCRIPTION: "Utrustningsbokning - %{DESCRIPTION}"
|
||||
space_reservation_DESCRIPTION: "Lokalbokning - %{DESCRIPTION}"
|
||||
training_reservation_DESCRIPTION: "Kursbokning - %{DESCRIPTION}"
|
||||
event_reservation_DESCRIPTION: "Evenemangsbokning - %{DESCRIPTION}"
|
||||
from_payment_schedule: "Att betala %{NUMBER} av %{TOTAL}, från %{DATE}. Återbetalningsschema %{SCHEDULE}"
|
||||
null_invoice: "Faktura på noll, fakturering hoppades över efter ett fel i Fab Manager programvaran"
|
||||
full_price_ticket:
|
||||
one: "En fullprisbiljett"
|
||||
other: "%{count} biljetter till fullt priset"
|
||||
other_rate_ticket:
|
||||
one: "En %{NAME} biljett"
|
||||
other: "%{count} %{NAME} biljetter"
|
||||
coupon_CODE_discount_of_DISCOUNT: "Kupong {CODE}: rabatt på {DISCOUNT}{TYPE, select, percent_off{%} other{}}" #messageFormat interpolation
|
||||
total_including_all_taxes: "Totalt inkl. moms"
|
||||
VAT: "Moms"
|
||||
including_VAT_RATE: "Inklusive %{NAME} %{RATE}% av %{AMOUNT}"
|
||||
including_total_excluding_taxes: "Totalt exkl. moms"
|
||||
including_amount_payed_on_ordering: "Inklusive belopp som betalades vid beställning"
|
||||
total_amount: "Totalt belopp"
|
||||
refund_on_DATE: "Återbetalning den %{DATE}"
|
||||
by_card_online_payment: "med kort (onlinebetalning)"
|
||||
by_cheque: "med check"
|
||||
by_transfer: "med överföring"
|
||||
by_cash: "med kontanter"
|
||||
by_wallet: "med plånbok"
|
||||
no_refund: "Ingen återbetalning"
|
||||
settlement_by_debit_card: "Betalning med betalkort"
|
||||
settlement_done_at_the_reception: "Betalning görs i receptionen"
|
||||
settlement_by_wallet: "Betalning med plånbok"
|
||||
on_DATE_at_TIME: "den %{DATE} kl %{TIME},"
|
||||
for_an_amount_of_AMOUNT: "för ett belopp på %{AMOUNT}"
|
||||
on_DATE_from_START_to_END: "Den %{DATE} från %{START} till %{END}" #eg: on feb. 7 from 7AM to 9AM
|
||||
from_STARTDATE_to_ENDDATE_from_STARTTIME_to_ENDTIME: "Från %{STARTDATE} till %{ENDDATE}, från %{STARTTIME} till %{ENDTIME}" #eg: from feb. 7 to feb. 10, from 6PM to 10PM
|
||||
subscription_of_NAME_for_DURATION_starting_from_DATE: "Prenumeration på %{NAME} för %{DURATION} med start från %{DATE}"
|
||||
subscription_of_NAME_extended_starting_from_STARTDATE_until_ENDDATE: "Prenumeration på %{NAME} förlängd (fria dagar) från %{STARTDATE} till %{ENDDATE}"
|
||||
and: 'och'
|
||||
invoice_text_example: "Vår förening är inte momspliktig"
|
||||
error_invoice: "Felaktig faktura. Objekt nedan är inte bokade. Kontakta oss för återbetalning."
|
||||
prepaid_pack: "Förbetalda timmar"
|
||||
pack_item: "Paketet %{COUNT} timmar för %{ITEM}"
|
||||
order: "Din beställning i butiken"
|
||||
unable_to_find_pdf: "Vi kan inte hitta din faktura. Om du beställde den senaste tiden kanske den inte har genererats ännu. Försök igen strax."
|
||||
#PDF payment schedule generation
|
||||
payment_schedules:
|
||||
schedule_reference: "Referens till betalningsschema: %{REF}"
|
||||
schedule_issued_on_DATE: "Schemat utfärdat på %{DATE}"
|
||||
object: "Objekt: Betalningsschema för %{ITEM}"
|
||||
subscription_of_NAME_for_DURATION_starting_from_DATE: "prenumeration på %{NAME} för %{DURATION} med start från %{DATE}"
|
||||
deadlines: "Lista över dina deadlines"
|
||||
deadline_date: "Betalningsdatum"
|
||||
deadline_amount: "Belopp inklusive moms"
|
||||
total_amount: "Totalt belopp"
|
||||
settlement_by_METHOD: "Debitering kommer att göras från {METHOD, select, card{kort} transfer{banköverföring} other{kontant}} för varje deadline."
|
||||
settlement_by_wallet: "%{AMOUNT} kommer att debiteras från din plånbok för att reglera den första deadlinen."
|
||||
#CVS accounting export (columns headers)
|
||||
accounting_export:
|
||||
journal_code: "Journalkod"
|
||||
date: "Transaktionsdatum"
|
||||
account_code: "Kontokod"
|
||||
account_label: "Kontonamn"
|
||||
piece: "Dokument"
|
||||
line_label: "Postens etikett"
|
||||
debit_origin: "Ursprungsdebitering"
|
||||
credit_origin: "Ursprungskredititering"
|
||||
debit_euro: "Euro debitering"
|
||||
credit_euro: "Euro kreditering"
|
||||
lettering: "Textning"
|
||||
VAT: 'Moms'
|
||||
accounting_summary:
|
||||
subscription_abbreviation: "pren."
|
||||
Machine_reservation_abbreviation: "maskin reserv."
|
||||
Training_reservation_abbreviation: "utbildning reserv."
|
||||
Event_reservation_abbreviation: "evenemang reserv."
|
||||
Space_reservation_abbreviation: "lokal reserv."
|
||||
wallet_abbreviation: "plånbok"
|
||||
shop_order_abbreviation: "butiksbeställning"
|
||||
vat_export:
|
||||
start_date: "Startdatum"
|
||||
end_date: "Slutdatum"
|
||||
vat_rate: "%{NAME} procentsats"
|
||||
amount: "Totalt belopp"
|
||||
#training availabilities
|
||||
trainings:
|
||||
i_ve_reserved: "Jag har bokat"
|
||||
completed: "Full"
|
||||
refund_for_auto_cancel: "Utbildningen avbröts på grund av otillräckligt antal deltagare."
|
||||
#error messages when updating an event
|
||||
events:
|
||||
error_deleting_reserved_price: "Det går inte att ta bort det begärda priset eftersom det är associerat med vissa bokningar"
|
||||
other_error: "Ett oväntat fel inträffade när evenemanget uppdaterades"
|
||||
#event duration
|
||||
from_STARTDATE_to_ENDDATE: "Från %{STARTDATE} till %{ENDDATE},"
|
||||
from_STARTTIME_to_ENDTIME: "från %{STARTTIME} till %{ENDTIME}"
|
||||
#members list export to EXCEL format
|
||||
export_members:
|
||||
members: "Medlemmar"
|
||||
id: "ID"
|
||||
external_id: "Externt ID"
|
||||
surname: "Efternamn"
|
||||
first_name: "Förnamn"
|
||||
email: "E-postadress"
|
||||
newsletter: "Nyhetsbrev"
|
||||
last_login: "Senaste inloggning"
|
||||
gender: "Kön"
|
||||
age: "Ålder"
|
||||
address: "Adress"
|
||||
phone: "Telefon"
|
||||
website: "Webbsida"
|
||||
job: "Jobb"
|
||||
interests: "Intressen"
|
||||
cad_software_mastered: "Färdigheter"
|
||||
group: "Grupp"
|
||||
subscription: "Prenumeration"
|
||||
subscription_end_date: "Slutdatum för prenumeration"
|
||||
validated_trainings: "Validerade utbildningar"
|
||||
tags: "Taggar"
|
||||
number_of_invoices: "Antal fakturor"
|
||||
projects: "Projekt"
|
||||
facebook: "Facebook"
|
||||
twitter: "Twitter"
|
||||
echo_sciences: "Naturvetenskap"
|
||||
organization: "Organisation"
|
||||
organization_address: "Organisationsadress"
|
||||
note: "Anteckning"
|
||||
man: "Man"
|
||||
woman: "Kvinna"
|
||||
without_subscriptions: "Utan prenumerationer"
|
||||
#machines/trainings/events reservations list to EXCEL format
|
||||
export_reservations:
|
||||
reservations: "Bokningar"
|
||||
customer_id: "Kund-ID"
|
||||
customer: "Kund"
|
||||
email: "E-postadress"
|
||||
reservation_date: "Bokningsdatum"
|
||||
reservation_type: "Typ av bokning"
|
||||
reservation_object: "Bokningsobjekt"
|
||||
slots_number_hours_tickets: "Antal platser (timmar/biljetter)"
|
||||
payment_method: "Betalningsmetod"
|
||||
local_payment: "Betalning i receptionen"
|
||||
online_payment: "Onlinebetalning"
|
||||
deleted_user: "Raderad användare"
|
||||
coupon: "Kupong använd"
|
||||
#subscriptions list export to EXCEL format
|
||||
export_subscriptions:
|
||||
subscriptions: "Prenumerationer"
|
||||
id: "ID"
|
||||
customer: "Kund"
|
||||
email: "E-postadress"
|
||||
subscription: "Prenumeration"
|
||||
period: "Period"
|
||||
start_date: "Startdatum"
|
||||
expiration_date: "Utgångsdatum"
|
||||
amount: "Belopp"
|
||||
local_payment: "Betalning i receptionen"
|
||||
online_payment: "Onlinebetalning"
|
||||
deleted_user: "Raderad användare"
|
||||
#reservation slots export, by type, to EXCEL format
|
||||
export_availabilities:
|
||||
machines: "Utrustning"
|
||||
trainings: "Utbildningar"
|
||||
spaces: "Lokaler"
|
||||
events: "Evenemang"
|
||||
day_of_week: "Veckodag"
|
||||
date: "Datum"
|
||||
slot: "Lucka"
|
||||
machine: "Utrustning"
|
||||
training: "Utbildning"
|
||||
space: "Lokal"
|
||||
event: "Evenemang"
|
||||
reservations: "Bokningar"
|
||||
available_seats: "Lediga platser"
|
||||
reservation_ics:
|
||||
description_slot: "Du har bokat %{COUNT} platser i %{ITEM}"
|
||||
description_training: "Du har bokat en %{TYPE} utbildning"
|
||||
description_event: "Du har bokat %{NUMBER} biljetter till detta evenemang"
|
||||
alarm_summary: "Påminnelse om din bokning"
|
||||
roles:
|
||||
member: "Medlem"
|
||||
manager: "Ansvarig"
|
||||
admin: "Administratör"
|
||||
api:
|
||||
#internal app notifications
|
||||
notifications:
|
||||
deleted_user: "Raderad användare"
|
||||
notify_admin_abuse_reported:
|
||||
an_abuse_was_reported_on_TYPE_ID_NAME_html: "Felaktig användning rapporterades på <strong>%{TYPE} %{ID}: <em>%{NAME}</em></strong>."
|
||||
notify_admin_member_create_reservation:
|
||||
a_RESERVABLE_reservation_was_made_by_USER_html: "En <strong><em>%{RESERVABLE}</em></strong> bokning gjordes av <strong><em>%{USER}</em></strong>."
|
||||
notify_admin_member_pre_booked_reservation:
|
||||
a_RESERVABLE_reservation_was_made_by_USER_html: "En <strong><em>%{RESERVABLE}</em></strong> föranmälan gjordes av <strong><em>%{USER}</em></strong>."
|
||||
notify_admin_profile_complete:
|
||||
account_imported_from_PROVIDER_UID_has_completed_its_information_html: "Konto importerat från <strong><em>%{PROVIDER}</strong> (%{UID})</em> har överfört sin information."
|
||||
notify_admin_slot_is_canceled:
|
||||
USER_s_reservation_on_the_DATE_was_cancelled_remember_to_generate_a_refund_invoice_if_applicable_html: "<strong><em>%{USER}</em></strong>s bokning, den %{DATE}, avbröts. Kom ihåg att generera en återbetalningsfaktura om det behövs."
|
||||
notify_admin_slot_is_modified:
|
||||
a_booking_slot_was_modified: "En bokningsplats ändrades."
|
||||
notify_admin_subscribed_plan:
|
||||
subscription_PLAN_has_been_subscribed_by_USER_html: "Prenumerationen <strong><em>%{PLAN}</em></strong> har tecknats av <strong><em>%{USER}</strong></em>."
|
||||
notify_admin_subscription_canceled:
|
||||
USER_s_subscription_has_been_cancelled: "%{USER} s prenumeration har avbrutits."
|
||||
notify_admin_subscription_extended:
|
||||
subscription_PLAN_of_the_member_USER_has_been_extended_FREE_until_DATE_html: "Prenumeration <strong><em>{PLAN}</em></strong> av medlemmen <strong><em>{USER}</strong></em> har förlängts {FREE, select, true{gratis} other{}} tills {DATE}." #messageFormat interpolation
|
||||
notify_admin_subscription_is_expired:
|
||||
USER_s_subscription_has_expired: "%{USER} s prenumeration har löpt ut."
|
||||
notify_admin_subscription_will_expire_in_7_days:
|
||||
USER_s_subscription_will_expire_in_7_days: "%{USER} s prenumeration löper ut om 7 dagar."
|
||||
notify_admin_training_auto_cancelled:
|
||||
auto_cancelled_training: "Utbildningen %{TRAINING} som är schemalagd för %{DATE}, har avbrutits automatiskt på grund av otillräckligt antal deltagare."
|
||||
auto_refund: "Medlemmarna har återbetalats automatiskt till sin plånbok."
|
||||
manual_refund: "Vänligen återbetala varje medlem."
|
||||
notify_admin_user_group_changed:
|
||||
user_NAME_changed_his_group_html: "Användare <strong><em>{NAME}</strong></em> ändrade grupp." #messageFormat interpolation
|
||||
notify_admin_user_merged:
|
||||
user_NAME_has_merged_his_account_with_the_one_imported_from_PROVIDER_UID_html: "<strong><em>{NAME}</strong></em>s konto slogs samman med det importerade från <strong><em>{PROVIDER} </strong> ({%UID})</em>." #messageFormat interpolation
|
||||
notify_admin_when_project_published:
|
||||
project_NAME_has_been_published_html: "Projekt <a href='/#!/projects/%{ID}'><strong><em>%{NAME}<em></strong></a> har publicerats."
|
||||
notify_admin_when_user_is_created:
|
||||
a_new_user_account_has_been_created_NAME_EMAIL_html: "Ett nytt användarkonto har skapats: <strong><em>%{NAME} <%{EMAIL}></strong></em>."
|
||||
notify_admin_child_created:
|
||||
a_new_child_has_been_created_NAME_html: "Ett nytt barn har skapats: <strong><em>%{NAME}</em></strong>."
|
||||
notify_admin_when_user_is_imported:
|
||||
a_new_user_account_has_been_imported_from_PROVIDER_UID_html: "Ett nytt användarkonto har importerats från: <strong><em>%{PROVIDER}</strong> (%{UID})</em>."
|
||||
notify_member_create_reservation:
|
||||
your_reservation_RESERVABLE_was_successfully_saved_html: "Din bokning <strong><em>%{RESERVABLE}</em></strong> har sparats."
|
||||
notify_member_pre_booked_reservation:
|
||||
your_reservation_RESERVABLE_was_successfully_saved_html: "Din föranmälan <strong><em>%{RESERVABLE}</em></strong> har sparats."
|
||||
notify_member_reservation_reminder:
|
||||
reminder_you_have_a_reservation_RESERVABLE_to_be_held_on_DATE_html: "Påminnelse: Du har en bokning <strong>%{RESERVABLE}</strong> som hålls den <em>%{DATE}</em>"
|
||||
notify_member_slot_is_canceled:
|
||||
your_reservation_RESERVABLE_of_DATE_was_successfully_cancelled: "Din bokning %{RESERVABLE} den %{DATE} har avbrutits."
|
||||
notify_member_slot_is_modified:
|
||||
your_reservation_slot_was_successfully_changed: "Din bokning har sparats."
|
||||
notify_member_subscribed_plan:
|
||||
you_have_subscribed_to_PLAN_html: "Du har prenumererat på <strong><em>%{PLAN}</em></strong>."
|
||||
notify_member_subscribed_plan_is_changed:
|
||||
you_have_changed_your_subscription_to_PLAN_html: "Du har ändrat din prenumeration till <strong><em>%{PLAN}</em></strong>."
|
||||
notify_member_subscription_canceled:
|
||||
your_subscription_PLAN_was_successfully_cancelled_html: "Ditt prenumeration <strong><em>%{PLAN}</em></strong> har avbrutits."
|
||||
notify_member_subscription_extended:
|
||||
your_subscription_PLAN_has_been_extended_FREE_until_DATE_html: "Din prenumeration <strong><em>{PLAN}</em></strong> har förlängts {FREE, select, true{kostnadsfritt} other{}} tills {DATE}." #messageFormat interpolation
|
||||
notify_member_subscription_is_expired:
|
||||
your_subscription_has_expired: "Din prenumeration har löpt ut."
|
||||
notify_member_subscription_will_expire_in_7_days:
|
||||
your_subscription_will_expire_in_7_days: "Din prenumeration upphör om 7 dagar."
|
||||
notify_member_training_authorization_expired:
|
||||
training_authorization_revoked: "Ditt tillstånd att använda %{MACHINES} har återkallats eftersom det har löpt ut."
|
||||
notify_member_training_auto_cancelled:
|
||||
auto_cancelled_training: "Utbildningen %{TRAINING} som är schemalagd för %{DATE}, har avbrutits automatiskt på grund av otillräckligt antal deltagare."
|
||||
auto_refund: "Du har återbetalats till din plånbok."
|
||||
notify_member_training_invalidated:
|
||||
invalidated: "Ditt tillstånd att använda %{MACHINES} har ogiltigförklarats på grund av brist på reservationer."
|
||||
notify_partner_subscribed_plan:
|
||||
subscription_partner_PLAN_has_been_subscribed_by_USER_html: "Partnerprenumeration <strong><em>%{PLAN}</em></strong> har prenumererats av <strong><em>%{USER}</strong></em>."
|
||||
notify_project_author_when_collaborator_valid:
|
||||
USER_became_collaborator_of_your_project: "%{USER} blev samarbetspartner för ditt projekt:"
|
||||
notify_project_collaborator_to_valid:
|
||||
you_are_invited_to_collaborate_on_the_project: "Du är inbjuden att delta i projektet:"
|
||||
notify_user_auth_migration:
|
||||
your_account_was_migrated: "Ditt konto har migrerats till det nya autentiseringssystemet."
|
||||
notify_user_profile_complete:
|
||||
your_profile_was_completed: "Din profil har färdigställts, du har nu tillgång till hela plattformen."
|
||||
notify_user_training_valid:
|
||||
your_TRAINING_was_validated_html: "Din utbildning <strong><em>%{TRAINING}</em></strong> har validerats."
|
||||
notify_user_user_group_changed:
|
||||
your_group_has_changed: "Din grupp har ändrats."
|
||||
notify_user_when_avoir_ready:
|
||||
your_avoir_is_ready_html: "Din kreditnota #%{REFERENCE}, av %{AMOUNT}, är klar. <a href='api/invoices/%{INVOICE_ID}/download' target='_blank'>Klicka här för att ladda ner</a>."
|
||||
notify_user_when_invoice_ready:
|
||||
your_invoice_is_ready_html: "Din faktura #%{REFERENCE}, av %{AMOUNT} är klar. <a href='api/invoices/%{INVOICE_ID}/download' target='_blank'>Klicka här för att ladda ner</a>."
|
||||
undefined_notification:
|
||||
unknown_notification: "Okänd avisering"
|
||||
notification_ID_wrong_type_TYPE_unknown: "Notifiering %{ID} fel (typ %{TYPE} okänd)"
|
||||
notify_user_wallet_is_credited:
|
||||
your_wallet_is_credited: "Din plånbok har krediterats av administratören"
|
||||
notify_admin_user_wallet_is_credited:
|
||||
wallet_is_credited: "Plånboken för medlemmen %{USER} har krediterats %{AMOUNT}"
|
||||
notify_admin_export_complete:
|
||||
export: "Exporten"
|
||||
statistics_global: "av all statistik"
|
||||
statistics_account: "av bokningsstatistiken"
|
||||
statistics_event: "statistik om evenemang"
|
||||
statistics_machine: "statistik om utrustningsbokningar"
|
||||
statistics_project: "statistik om projekt"
|
||||
statistics_subscription: "av prenumerationsstatistik"
|
||||
statistics_training: "statistik om projekt"
|
||||
statistics_space: "statistik om lokaler"
|
||||
statistics_order: "statistik över butiksbeställningar"
|
||||
users_members: "av medlemmarnas lista"
|
||||
users_subscriptions: "av listan över prenumerationer"
|
||||
users_reservations: "av bokningslistan"
|
||||
availabilities_index: "av bokningens tillgänglighet"
|
||||
accounting_acd: "av bokföringsdata till ACD"
|
||||
accounting_vat: "av den ingående momsen"
|
||||
is_over: "är färdig."
|
||||
download_here: "Ladda ner här"
|
||||
notify_admin_import_complete:
|
||||
import_over: "%{CATEGORY} importen är färdig. "
|
||||
members: "Medlemmar"
|
||||
view_results: "Visa resultat."
|
||||
notify_admin_low_stock_threshold:
|
||||
low_stock: "Lågt lager för %{PRODUCT}. "
|
||||
view_product: "Visa produkten."
|
||||
notify_member_about_coupon:
|
||||
enjoy_a_discount_of_PERCENT_with_code_CODE: "Ta del av en rabatt på %{PERCENT}% med koden %{CODE}"
|
||||
enjoy_a_discount_of_AMOUNT_with_code_CODE: "Ta del av en rabatt på %{AMOUNT}% med koden %{CODE}"
|
||||
notify_admin_free_disk_space:
|
||||
warning_free_disk_space: "Varning: serverns tillgängliga diskutrymme är nu %{AVAILABLE} MB"
|
||||
notify_admin_close_period_reminder:
|
||||
warning_last_closed_period_over_1_year: "Vänligen kom ihåg att regelbundet stänga dina redovisningsperioder. Senast stängd period avslutades på %{LAST_END}"
|
||||
warning_no_closed_periods: "Vänligen kom ihåg att regelbundet stänga dina redovisningsperioder. Senaste stängd period avslutades på %{FIRST_DATE}"
|
||||
notify_admin_archive_complete:
|
||||
archive_complete: "Dataarkivering från %{START} till %{END} är klart. <a href='api/accounting_periods/%{ID}/archive' target='_blank'>klicka här för att ladda ner</a>. Kom ihåg att spara den på ett säkert, externt medium."
|
||||
notify_privacy_policy_changed:
|
||||
policy_updated: "Integritetspolicy uppdaterad."
|
||||
click_to_show: "Klicka här för att fråga"
|
||||
notify_admin_refund_created:
|
||||
refund_created: "En återbetalning av %{AMOUNT} har skapats för användaren %{USER}"
|
||||
notify_user_role_update:
|
||||
your_role_is_ROLE: "Din roll har ändrats till %{ROLE}."
|
||||
notify_admins_role_update:
|
||||
user_NAME_changed_ROLE_html: "Användare <strong><em>%{NAME}</strong></em> är nu %{ROLE}."
|
||||
notify_admin_objects_stripe_sync:
|
||||
all_objects_sync: "Alla data har synkroniserats till Stripe."
|
||||
notify_admin_order_is_paid:
|
||||
order_paid_html: "En ny order har lagts till. <a href='/#!/admin/store/orders/%{ID}'>Visa detaljer</a>."
|
||||
notify_user_when_payment_schedule_ready:
|
||||
your_schedule_is_ready_html: "Ditt betalningsschema #%{REFERENCE}, %{AMOUNT}, är klart. <a href='api/payment_schedules/%{SCHEDULE_ID}/download' target='_blank'>Klicka här för att ladda ner</a>."
|
||||
notify_admin_payment_schedule_error:
|
||||
schedule_error: "Ett fel uppstod för kortdebitering som löpte ut den %{DATE} för schemat %{REFERENCE}"
|
||||
notify_member_payment_schedule_error:
|
||||
schedule_error: "Ett fel uppstod för kortdebitering som löpte ut %{DATE}, för ditt schema %{REFERENCE}"
|
||||
notify_admin_payment_schedule_failed:
|
||||
schedule_failed: "Ett fel uppstod för kortdebitering som löpte ut den %{DATE} för schemat %{REFERENCE}"
|
||||
notify_member_payment_schedule_failed:
|
||||
schedule_failed: "Ett fel uppstod för kortdebitering som löpte ut %{DATE}, för ditt schema %{REFERENCE}"
|
||||
notify_admin_payment_schedule_gateway_canceled:
|
||||
schedule_canceled: "Betalningsschemat %{REFERENCE} avbröts av betalningsleverantören. En åtgärd krävs."
|
||||
notify_member_payment_schedule_gateway_canceled:
|
||||
schedule_canceled: "Ditt betalningsschema %{REFERENCE} avbröts av betalningsleverantören."
|
||||
notify_admin_payment_schedule_check_deadline:
|
||||
schedule_deadline: "Du måste betala in checken inom tidsfristen, %{DATE} för schemat %{REFERENCE}"
|
||||
notify_admin_payment_schedule_transfer_deadline:
|
||||
schedule_deadline: "Du måste bekräfta autogiro inom tidsfristen %{DATE}, för schema %{REFERENCE}"
|
||||
notify_member_reservation_limit_reached:
|
||||
limit_reached: "För %{DATE} har du nått din dagliga gräns för %{HOURS} timmars bokning av %{ITEM}."
|
||||
notify_admin_user_supporting_document_files_created:
|
||||
supporting_document_files_uploaded: "Underlag uppladdat av medlemmen <strong><em>%{NAME}</strong></em>."
|
||||
notify_admin_user_supporting_document_files_updated:
|
||||
supporting_document_files_uploaded: "Underlag ändrat av medlemmen <strong><em>%{NAME}</strong></em>."
|
||||
notify_admin_user_child_supporting_document_files_created:
|
||||
supporting_document_files_uploaded: "Barnet <strong><em>%{NAME} s</strong></em> underlag uppladdat."
|
||||
notify_admin_user_child_supporting_document_files_updated:
|
||||
supporting_document_files_uploaded: "Underlag ändrat av barnet <strong><em>%{NAME}</strong></em>."
|
||||
notify_user_is_validated:
|
||||
account_validated: "Ditt konto är giltigt."
|
||||
notify_user_is_invalidated:
|
||||
account_invalidated: "Ditt konto är ogiltigt."
|
||||
notify_user_child_is_validated:
|
||||
child_validated: "Ditt barns konto är giltigt."
|
||||
notify_user_child_is_invalidated:
|
||||
child_invalidated: "Ditt barns konto är ogiltigt."
|
||||
notify_user_supporting_document_refusal:
|
||||
refusal: "Dina underlag avvisades"
|
||||
notify_user_supporting_document_reminder:
|
||||
reminder_message: "Detta är en påminnelse för dig att ladda upp dina underlag."
|
||||
notify_admin_user_supporting_document_refusal:
|
||||
refusal: "Medlemmens underlag <strong><em>%{NAME}</strong></em> avvisades."
|
||||
notify_user_child_supporting_document_refusal:
|
||||
refusal: "Ditt barns underlag avvisades"
|
||||
notify_admin_user_child_supporting_document_refusal:
|
||||
refusal: "Barnets underlag <strong><em>%{NAME}</strong></em> avvisades."
|
||||
notify_user_order_is_ready:
|
||||
order_ready: "Din beställning %{REFERENCE} är redo"
|
||||
notify_user_order_is_canceled:
|
||||
order_canceled: "Din beställning %{REFERENCE} är avbruten"
|
||||
notify_user_order_is_refunded:
|
||||
order_refunded: "Din beställning %{REFERENCE} har återbetalats"
|
||||
notify_member_reservation_validated:
|
||||
your_reservation_RESERVABLE_was_validated_html: "Din bokning <strong><em>%{RESERVABLE}</em></strong> har validerats."
|
||||
notify_admin_reservation_validated:
|
||||
a_RESERVABLE_reservation_was_validated_html: "En <strong><em>%{RESERVABLE}</em></strong> bokning av <strong><em>%{NAME}</em></strong> validerades."
|
||||
notify_member_reservation_invalidated:
|
||||
your_reservation_RESERVABLE_was_invalidated_html: "Din föranmälan av <strong><em>%{RESERVABLE}</em></strong> validerades inte."
|
||||
notify_admin_reservation_invalidated:
|
||||
a_RESERVABLE_reservation_was_invalidated_html: "En <strong><em>%{RESERVABLE}</em></strong> föranmälan av <strong><em>%{NAME}</em></strong> ogiltigförklarades."
|
||||
notify_user_when_child_age_will_be_18:
|
||||
child_age_will_be_18_years_ago: "Ditt barn %{NAME} kommer att fylla 18 den %{DATE}, och det kommer automatiskt att kopplas bort från ditt familjekonto. Det måste skapa ett eget konto för att kunna göra reservationer."
|
||||
#statistics tools for admins
|
||||
statistics:
|
||||
subscriptions: "Prenumerationer"
|
||||
machines_hours: "Utrustning bokningsplatser"
|
||||
machine_dates: "Datum för bokningsplatser"
|
||||
space_dates: "Datum för bokningsplatser"
|
||||
spaces: "Lokaler"
|
||||
orders: "Beställningar"
|
||||
trainings: "Utbildningar"
|
||||
events: "Evenemang"
|
||||
registrations: "Bokningar"
|
||||
projects: "Projekt"
|
||||
users: "Användare"
|
||||
training_id: "Utbildnings-ID"
|
||||
training_date: "Utbildningsdatum"
|
||||
event_id: "Evenemangs-ID"
|
||||
event_date: "Evenemangsdatum"
|
||||
event_name: "Evenemangsnamn"
|
||||
event_theme: "Tema"
|
||||
age_range: "Åldersintervall"
|
||||
themes: "Teman"
|
||||
components: "Komponenter"
|
||||
machines: "Utrustning"
|
||||
user_id: "Användar-ID"
|
||||
group: "Grupp"
|
||||
bookings: "Bokningar"
|
||||
hours_number: "Antal timmar"
|
||||
tickets_number: "Biljettnummer"
|
||||
revenue: "Intäkter"
|
||||
account_creation: "Skapa konto"
|
||||
project_publication: "Projektpublikation"
|
||||
duration: "Varaktighet"
|
||||
store: "Butik"
|
||||
paid-processed: "Betalad och/eller bearbetad"
|
||||
aborted: "Avbruten"
|
||||
project_status: Status
|
||||
project_name: Namn
|
||||
project_user_names: Medverkande
|
||||
#statistics exports to the Excel file format
|
||||
export:
|
||||
entries: "Inlägg"
|
||||
revenue: "Intäkter"
|
||||
average_age: "Medelålder"
|
||||
total: "Totalt"
|
||||
date: "Datum"
|
||||
user: "Användare"
|
||||
email: "E-post"
|
||||
phone: "Telefon"
|
||||
gender: "Kön"
|
||||
age: "Ålder"
|
||||
type: "Typ"
|
||||
male: "Man"
|
||||
female: "Kvinna"
|
||||
deleted_user: "Raderad användare"
|
||||
reservation_context: "Kontext för bokning"
|
||||
coupon: "Rabattkupong"
|
||||
project_author: Skapare
|
||||
#initial price's category for events, created to replace the old "reduced amount" property
|
||||
price_category:
|
||||
reduced_fare: "Reducerat pris"
|
||||
reduced_fare_if_you_are_under_25_student_or_unemployed: "Reducerat pris om du är under 25, student eller arbetslös."
|
||||
cart_items:
|
||||
free_extension: "Gratis förlängning av en prenumeration tills %{DATE}"
|
||||
must_be_after_expiration: "Det nya förfallodatumet måste anges efter det aktuella förfallodatumet"
|
||||
group_subscription_mismatch: "Din grupp stämmer inte med din prenumeration. Vänligen rapportera detta fel."
|
||||
statistic_profile:
|
||||
birthday_in_past: "Födelsedatum måste vara i det förflutna"
|
||||
order:
|
||||
please_contact_FABLAB: "Vänligen kontakta oss för återkallningsinstruktioner."
|
||||
cart_item_validation:
|
||||
slot: "Platsen finns inte"
|
||||
availability: "Tillgängligheten finns inte"
|
||||
full: "Platsen är redan fullt bokad"
|
||||
deadline: "Du kan inte reservera en plats %{MINUTES} minuter innan dess start"
|
||||
limit_reached: "Du har nått bokningsgränsen för %{HOURS}H per dag för %{RESERVABLE}, för ditt nuvarande abonnemang. Vänligen justera din bokning."
|
||||
restricted: "Denna tillgänglighet är begränsad till prenumeranter"
|
||||
plan: "Prenumerationsplanen är inaktiverad"
|
||||
plan_group: "Denna prenumerationsplan är reserverad för medlemmar i gruppen %{GROUP}"
|
||||
reserved: "Denna plats är redan reserverad"
|
||||
pack: "Detta förbetalda paket är inaktiverat"
|
||||
pack_group: "Detta förbetalda paket är reserverat för medlemmar i gruppen %{GROUP}"
|
||||
space: "Denna lokal är inaktiverad"
|
||||
machine: "Denna utrustning är inaktiverad"
|
||||
reservable: "Denna utrustning är inte bokningsbar"
|
||||
blocked_by_another_reservation: "Denna plats är blockerad av en annan bokning"
|
||||
cart_validation:
|
||||
select_user: "Välj en användare innan du fortsätter"
|
||||
settings:
|
||||
locked_setting: "inställningen är låst."
|
||||
about_title: "\"Om\" sidan titel"
|
||||
about_body: "\"Om\" sidan innehåll"
|
||||
about_contacts: "\"Om\" sidan kontakter"
|
||||
privacy_draft: "Utkast till integritetspolicy"
|
||||
privacy_body: "Integritetspolicy"
|
||||
privacy_dpo: "Adress till dataskyddsombud"
|
||||
twitter_name: "Namn på Twitter-flöde"
|
||||
home_blogpost: "Startsidans sammanfattning"
|
||||
machine_explications_alert: "Förklaringsmeddelande på sidan för bokning av utrustning"
|
||||
training_explications_alert: "Förklaringsmeddelande på bokningssidan för utbildningar"
|
||||
training_information_message: "Informationsmeddelande på sidan för bokning av utrustning"
|
||||
subscription_explications_alert: "Förklaringsmeddelande på prenumerationssidan"
|
||||
invoice_logo: "Fakturalogotyp"
|
||||
invoice_reference: "Fakturareferens"
|
||||
invoice_code-active: "Aktivering av fakturakod"
|
||||
invoice_code-value: "Fakturakod"
|
||||
invoice_order-nb: "Fakturans ordernummer"
|
||||
invoice_VAT-active: "Aktivering av moms"
|
||||
invoice_VAT-rate: "Momssats"
|
||||
invoice_VAT-rate_Product: "Momssats för butikens produktförsäljning"
|
||||
invoice_VAT-rate_Event: "Momssats för bokning av evenemang"
|
||||
invoice_VAT-rate_Machine: "Momssats för bokning av utrustning"
|
||||
invoice_VAT-rate_Subscription: "Momssats för prenumerationer"
|
||||
invoice_VAT-rate_Space: "Momssats för bokning av lokaler"
|
||||
invoice_VAT-rate_Training: "Momssats för bokning av utbildning"
|
||||
invoice_text: "Fakturatext"
|
||||
invoice_legals: "Fakturas juridiska information"
|
||||
booking_window_start: "Öppningstid"
|
||||
booking_window_end: "Stängningstid"
|
||||
booking_move_enable: "Aktivering av bokningar flyttar"
|
||||
booking_move_delay: "Förebyggande dröjsmål innan bokning flyttas"
|
||||
booking_cancel_enable: "Aktivera avbokning"
|
||||
booking_cancel_delay: "Förebyggande dröjsmål innan bokning flyttas"
|
||||
main_color: "Primär färg"
|
||||
secondary_color: "Sekundär färg"
|
||||
fablab_name: "Fablabs namn"
|
||||
name_genre: "Titels överensstämmelse"
|
||||
reminder_enable: "Aktivera bokningspåminnelser"
|
||||
reminder_delay: "Fördröjning innan påminnelse skickas"
|
||||
event_explications_alert: "Förklaringsmeddelande på sidan för bokning av händelser"
|
||||
space_explications_alert: "Förklaringsmeddelande på sidan för lokalreservation"
|
||||
visibility_yearly: "Maximal synlighet för årliga prenumeranter"
|
||||
visibility_others: "Maximal synlighet för andra medlemmar"
|
||||
reservation_deadline: "Förhindra bokning innan den börjar"
|
||||
display_name_enable: "Visa namn i kalendern"
|
||||
machines_sort_by: "Utrustnings visningsordning"
|
||||
accounting_sales_journal_code: "Försäljning journalkod"
|
||||
accounting_payment_card_code: "Kortets betalningskod"
|
||||
accounting_payment_card_label: "Etikett för kortbetalningar"
|
||||
accounting_payment_card_journal_code: "Kortets klientjournalkod"
|
||||
accounting_payment_wallet_code: "Betalningskod för plånboken"
|
||||
accounting_payment_wallet_label: "Etikett för plånboksbetalningar"
|
||||
accounting_payment_wallet_journal_code: "Betalningskod för plånboken"
|
||||
accounting_payment_other_code: "Kod för annan betalning"
|
||||
accounting_payment_other_label: "Etikett för annan betalning"
|
||||
accounting_payment_other_journal_code: "Kod för annan betalning"
|
||||
accounting_wallet_code: "Plånbokens kreditkod"
|
||||
accounting_wallet_label: "Plånbokskredit etikett"
|
||||
accounting_wallet_journal_code: "Betalningskod för plånboken"
|
||||
accounting_VAT_code: "Momsregistreringsnummer"
|
||||
accounting_VAT_label: "Momsetikett"
|
||||
accounting_VAT_journal_code: "Momsjornalkod"
|
||||
accounting_subscription_code: "Prenumerationskod"
|
||||
accounting_subscription_label: "Etikett för prenumerationer"
|
||||
accounting_Machine_code: "Utrustningens kod"
|
||||
accounting_Machine_label: "Etikett för utrustning"
|
||||
accounting_Training_code: "Utbildnings kod"
|
||||
accounting_Training_label: "Etikett för utbildningar"
|
||||
accounting_Event_code: "Kod för evenemang"
|
||||
accounting_Event_label: "Etikett för evenemang"
|
||||
accounting_Space_code: "Kod för lokaler"
|
||||
accounting_Space_label: "Etikett för lokaler"
|
||||
accounting_Pack_code: "Förbetalda tim-paketskod"
|
||||
accounting_Pack_label: "Förbetalda tim-paketsetikett"
|
||||
accounting_Product_code: "Produkters kod"
|
||||
accounting_Product_label: "Etikett för produkter"
|
||||
hub_last_version: "Senaste Fab-managerns version"
|
||||
hub_public_key: "Instansens publika nyckel"
|
||||
fab_analytics: "Fab Analys"
|
||||
link_name: "Länk titeln till sidan \"Om\""
|
||||
home_content: "Startsidan"
|
||||
home_css: "Stilmall för startsidan"
|
||||
origin: "Instansens URL"
|
||||
uuid: "Instans ID"
|
||||
phone_required: "Telefon krävs?"
|
||||
tracking_id: "Spårnings-ID"
|
||||
book_overlapping_slots: "Boka överlappande platser"
|
||||
slot_duration: "Standardlängd för bokning av platser"
|
||||
events_in_calendar: "Visa evenemang i kalendern"
|
||||
spaces_module: "Modulen Lokaler"
|
||||
plans_module: "Modulen Planer"
|
||||
invoicing_module: "Faktureringsmodul"
|
||||
facebook_app_id: "ID för Facebook-app"
|
||||
twitter_analytics: "Twitter-analyskonto"
|
||||
recaptcha_site_key: "reCAPTCHA webbplatsnyckel"
|
||||
recaptcha_secret_key: "reCAPTCHA hemlig nyckel"
|
||||
feature_tour_display: "Visningsläge för guidad tur"
|
||||
email_from: "Utförarens adress"
|
||||
disqus_shortname: "Disqus kortnamn"
|
||||
allowed_cad_extensions: "Tillåtna CAD-filnamn"
|
||||
allowed_cad_mime_types: "Tillåtna CAD-filer MIME-typer"
|
||||
openlab_app_id: "OpenLab ID"
|
||||
openlab_app_secret: "OpenLab hemlighet"
|
||||
openlab_default: "Förvald projektgallerivy"
|
||||
online_payment_module: "Onlinebetalningsmodul"
|
||||
stripe_public_key: "Stripe publik nyckel"
|
||||
stripe_secret_key: "Stripe hemlig nyckel"
|
||||
stripe_currency: "Stripe valuta"
|
||||
invoice_prefix: "Fakturor filnamnsprefix"
|
||||
confirmation_required: "Verifiering krävs"
|
||||
wallet_module: "Plånboksmodul"
|
||||
statistics_module: "Statistikmodul"
|
||||
upcoming_events_shown: "Visa gräns för kommande evenemang"
|
||||
payment_schedule_prefix: "Prefix för betalningsschemats filer"
|
||||
trainings_module: "Utbildningsmodul"
|
||||
address_required: "Adress krävs"
|
||||
accounting_Error_code: "Felkod"
|
||||
accounting_Error_label: "Felbeskrivning"
|
||||
payment_gateway: "Betallösning"
|
||||
payzen_username: "PayZen användarnamn"
|
||||
payzen_password: "PayZen lösenord"
|
||||
payzen_endpoint: "PayZen API endpoint"
|
||||
payzen_public_key: "PayZen klient publik nyckel"
|
||||
payzen_hmac: "PayZen HMAC-SHA-256 key"
|
||||
payzen_currency: "PayZen valuta"
|
||||
public_agenda_module: "Modul för publikt kalendarium"
|
||||
renew_pack_threshold: "Tröskelvärde för förnyelse av paket"
|
||||
pack_only_for_subscription: "Begränsa paket för prenumeranter"
|
||||
overlapping_categories: "Kategorier för att förebygga överlappande bokning"
|
||||
extended_prices_in_same_day: "Utökade priser samma dag"
|
||||
public_registrations: "Öppna registreringar"
|
||||
facebook: "Facebook"
|
||||
twitter: "Twitter"
|
||||
viadeo: "viadeo"
|
||||
linkedin: "linkedin"
|
||||
instagram: "Instagram"
|
||||
youtube: "YouTube"
|
||||
vimeo: "Vimeo"
|
||||
dailymotion: "Dailymotion"
|
||||
github: "GitHub"
|
||||
echosciences: "echosciences"
|
||||
pinterest: "Pinterest"
|
||||
lastfm: "Last.fm"
|
||||
flickr: "Flickr"
|
||||
machines_module: "Utrustningsmodul"
|
||||
user_change_group: "Tillåt användare att ändra sin grupp"
|
||||
store_module: "Butiksmodul"
|
||||
store_withdrawal_instructions: "Uttagsinstruktioner"
|
||||
store_hidden: "Butiken är dold för allmänheten"
|
||||
advanced_accounting: "Avancerad redovisning"
|
||||
external_id: "extern identifierare"
|
||||
prevent_invoices_zero: "förhindra att fakturor på 0 skapas"
|
||||
invoice_VAT-name: "Momsbeteckning"
|
||||
trainings_auto_cancel: "Utbildning automatisk avbokning"
|
||||
trainings_auto_cancel_threshold: "Minsta antal deltagare för automatisk avbokning"
|
||||
trainings_auto_cancel_deadline: "Tidsfristen för automatisk avbokning"
|
||||
trainings_authorization_validity: "Utbildningens giltighetstid"
|
||||
trainings_authorization_validity_duration: "Utbildningens giltighetstid varaktighet"
|
||||
trainings_invalidation_rule: "Utbildning automatisk ogiltigförklaring"
|
||||
trainings_invalidation_rule_period: "Frist innan en träning ogiltigförklaras"
|
||||
projects_list_member_filter_presence: "Filtrera på närvaro i projektlistan"
|
||||
projects_list_date_filters_presence: "Filtrera på datum i projektlistan"
|
||||
project_categories_filter_placeholder: "Platshållare för kategorifilter i projektgalleriet"
|
||||
project_categories_wording: "Ord som används för att ersätta \"Kategorier\" på publika sidor"
|
||||
reservation_context_feature: "Tvinga medlem att välja typ av bokning "
|
||||
family_account: "Familjekonto"
|
||||
#statuses of projects
|
||||
statuses:
|
||||
new: "Ny"
|
||||
pending: "Väntar"
|
||||
done: "Klar"
|
||||
abandoned: "Övergiven"
|
10
db/migrate/20240116163703_create_saml_providers.rb
Normal file
10
db/migrate/20240116163703_create_saml_providers.rb
Normal file
@ -0,0 +1,10 @@
|
||||
class CreateSamlProviders < ActiveRecord::Migration[7.0]
|
||||
def change
|
||||
create_table :saml_providers do |t|
|
||||
t.string :sp_entity_id
|
||||
t.string :idp_sso_service_url
|
||||
|
||||
t.timestamps
|
||||
end
|
||||
end
|
||||
end
|
@ -0,0 +1,7 @@
|
||||
# frozen_string_literal:true
|
||||
|
||||
class AddProfileUrlToSamlProviders < ActiveRecord::Migration[7.0]
|
||||
def change
|
||||
add_column :saml_providers, :profile_url, :string
|
||||
s end
|
||||
end
|
@ -0,0 +1,6 @@
|
||||
class AddIdpCertToSamlProvider < ActiveRecord::Migration[7.0]
|
||||
def change
|
||||
add_column :saml_providers, :idp_cert, :string
|
||||
add_column :saml_providers, :idp_cert_fingerprint, :string
|
||||
end
|
||||
end
|
140
db/structure.sql
140
db/structure.sql
@ -9,6 +9,13 @@ SET xmloption = content;
|
||||
SET client_min_messages = warning;
|
||||
SET row_security = off;
|
||||
|
||||
--
|
||||
-- Name: public; Type: SCHEMA; Schema: -; Owner: -
|
||||
--
|
||||
|
||||
-- *not* creating schema, since initdb creates it
|
||||
|
||||
|
||||
--
|
||||
-- Name: fuzzystrmatch; Type: EXTENSION; Schema: -; Owner: -
|
||||
--
|
||||
@ -2235,6 +2242,41 @@ CREATE SEQUENCE public.payment_gateway_objects_id_seq
|
||||
ALTER SEQUENCE public.payment_gateway_objects_id_seq OWNED BY public.payment_gateway_objects.id;
|
||||
|
||||
|
||||
--
|
||||
-- Name: payment_infos; Type: TABLE; Schema: public; Owner: -
|
||||
--
|
||||
|
||||
CREATE TABLE public.payment_infos (
|
||||
id bigint NOT NULL,
|
||||
data jsonb,
|
||||
state character varying,
|
||||
payment_for character varying,
|
||||
service character varying,
|
||||
statistic_profile_id bigint,
|
||||
created_at timestamp(6) without time zone NOT NULL,
|
||||
updated_at timestamp(6) without time zone NOT NULL
|
||||
);
|
||||
|
||||
|
||||
--
|
||||
-- Name: payment_infos_id_seq; Type: SEQUENCE; Schema: public; Owner: -
|
||||
--
|
||||
|
||||
CREATE SEQUENCE public.payment_infos_id_seq
|
||||
START WITH 1
|
||||
INCREMENT BY 1
|
||||
NO MINVALUE
|
||||
NO MAXVALUE
|
||||
CACHE 1;
|
||||
|
||||
|
||||
--
|
||||
-- Name: payment_infos_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
|
||||
--
|
||||
|
||||
ALTER SEQUENCE public.payment_infos_id_seq OWNED BY public.payment_infos.id;
|
||||
|
||||
|
||||
--
|
||||
-- Name: payment_schedule_items; Type: TABLE; Schema: public; Owner: -
|
||||
--
|
||||
@ -3224,6 +3266,41 @@ CREATE SEQUENCE public.roles_id_seq
|
||||
ALTER SEQUENCE public.roles_id_seq OWNED BY public.roles.id;
|
||||
|
||||
|
||||
--
|
||||
-- Name: saml_providers; Type: TABLE; Schema: public; Owner: -
|
||||
--
|
||||
|
||||
CREATE TABLE public.saml_providers (
|
||||
id bigint NOT NULL,
|
||||
sp_entity_id character varying,
|
||||
idp_sso_service_url character varying,
|
||||
created_at timestamp(6) without time zone NOT NULL,
|
||||
updated_at timestamp(6) without time zone NOT NULL,
|
||||
profile_url character varying,
|
||||
idp_cert character varying,
|
||||
idp_cert_fingerprint character varying
|
||||
);
|
||||
|
||||
|
||||
--
|
||||
-- Name: saml_providers_id_seq; Type: SEQUENCE; Schema: public; Owner: -
|
||||
--
|
||||
|
||||
CREATE SEQUENCE public.saml_providers_id_seq
|
||||
START WITH 1
|
||||
INCREMENT BY 1
|
||||
NO MINVALUE
|
||||
NO MAXVALUE
|
||||
CACHE 1;
|
||||
|
||||
|
||||
--
|
||||
-- Name: saml_providers_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
|
||||
--
|
||||
|
||||
ALTER SEQUENCE public.saml_providers_id_seq OWNED BY public.saml_providers.id;
|
||||
|
||||
|
||||
--
|
||||
-- Name: schema_migrations; Type: TABLE; Schema: public; Owner: -
|
||||
--
|
||||
@ -4316,8 +4393,8 @@ CREATE TABLE public.users (
|
||||
is_allow_newsletter boolean,
|
||||
current_sign_in_ip inet,
|
||||
last_sign_in_ip inet,
|
||||
mapped_from_sso character varying,
|
||||
validated_at timestamp without time zone,
|
||||
mapped_from_sso character varying,
|
||||
supporting_documents_reminder_sent_at timestamp(6) without time zone
|
||||
);
|
||||
|
||||
@ -4870,6 +4947,13 @@ ALTER TABLE ONLY public.organizations ALTER COLUMN id SET DEFAULT nextval('publi
|
||||
ALTER TABLE ONLY public.payment_gateway_objects ALTER COLUMN id SET DEFAULT nextval('public.payment_gateway_objects_id_seq'::regclass);
|
||||
|
||||
|
||||
--
|
||||
-- Name: payment_infos id; Type: DEFAULT; Schema: public; Owner: -
|
||||
--
|
||||
|
||||
ALTER TABLE ONLY public.payment_infos ALTER COLUMN id SET DEFAULT nextval('public.payment_infos_id_seq'::regclass);
|
||||
|
||||
|
||||
--
|
||||
-- Name: payment_schedule_items id; Type: DEFAULT; Schema: public; Owner: -
|
||||
--
|
||||
@ -5066,6 +5150,13 @@ ALTER TABLE ONLY public.reservations ALTER COLUMN id SET DEFAULT nextval('public
|
||||
ALTER TABLE ONLY public.roles ALTER COLUMN id SET DEFAULT nextval('public.roles_id_seq'::regclass);
|
||||
|
||||
|
||||
--
|
||||
-- Name: saml_providers id; Type: DEFAULT; Schema: public; Owner: -
|
||||
--
|
||||
|
||||
ALTER TABLE ONLY public.saml_providers ALTER COLUMN id SET DEFAULT nextval('public.saml_providers_id_seq'::regclass);
|
||||
|
||||
|
||||
--
|
||||
-- Name: settings id; Type: DEFAULT; Schema: public; Owner: -
|
||||
--
|
||||
@ -5799,6 +5890,14 @@ ALTER TABLE ONLY public.payment_gateway_objects
|
||||
ADD CONSTRAINT payment_gateway_objects_pkey PRIMARY KEY (id);
|
||||
|
||||
|
||||
--
|
||||
-- Name: payment_infos payment_infos_pkey; Type: CONSTRAINT; Schema: public; Owner: -
|
||||
--
|
||||
|
||||
ALTER TABLE ONLY public.payment_infos
|
||||
ADD CONSTRAINT payment_infos_pkey PRIMARY KEY (id);
|
||||
|
||||
|
||||
--
|
||||
-- Name: payment_schedule_items payment_schedule_items_pkey; Type: CONSTRAINT; Schema: public; Owner: -
|
||||
--
|
||||
@ -6023,6 +6122,14 @@ ALTER TABLE ONLY public.roles
|
||||
ADD CONSTRAINT roles_pkey PRIMARY KEY (id);
|
||||
|
||||
|
||||
--
|
||||
-- Name: saml_providers saml_providers_pkey; Type: CONSTRAINT; Schema: public; Owner: -
|
||||
--
|
||||
|
||||
ALTER TABLE ONLY public.saml_providers
|
||||
ADD CONSTRAINT saml_providers_pkey PRIMARY KEY (id);
|
||||
|
||||
|
||||
--
|
||||
-- Name: schema_migrations schema_migrations_pkey; Type: CONSTRAINT; Schema: public; Owner: -
|
||||
--
|
||||
@ -7004,6 +7111,13 @@ CREATE INDEX index_payment_gateway_objects_on_item_type_and_item_id ON public.pa
|
||||
CREATE INDEX index_payment_gateway_objects_on_payment_gateway_object_id ON public.payment_gateway_objects USING btree (payment_gateway_object_id);
|
||||
|
||||
|
||||
--
|
||||
-- Name: index_payment_infos_on_statistic_profile_id; Type: INDEX; Schema: public; Owner: -
|
||||
--
|
||||
|
||||
CREATE INDEX index_payment_infos_on_statistic_profile_id ON public.payment_infos USING btree (statistic_profile_id);
|
||||
|
||||
|
||||
--
|
||||
-- Name: index_payment_schedule_items_on_invoice_id; Type: INDEX; Schema: public; Owner: -
|
||||
--
|
||||
@ -7795,14 +7909,6 @@ CREATE INDEX proof_of_identity_type_id_and_proof_of_identity_refusal_id ON publi
|
||||
CREATE UNIQUE INDEX unique_not_null_external_id ON public.invoicing_profiles USING btree (external_id) WHERE (external_id IS NOT NULL);
|
||||
|
||||
|
||||
--
|
||||
-- Name: accounting_periods accounting_periods_del_protect; Type: RULE; Schema: public; Owner: -
|
||||
--
|
||||
|
||||
CREATE RULE accounting_periods_del_protect AS
|
||||
ON DELETE TO public.accounting_periods DO INSTEAD NOTHING;
|
||||
|
||||
|
||||
--
|
||||
-- Name: accounting_periods accounting_periods_upd_protect; Type: RULE; Schema: public; Owner: -
|
||||
--
|
||||
@ -7836,6 +7942,14 @@ ALTER TABLE ONLY public.payment_schedules
|
||||
ADD CONSTRAINT fk_rails_00308dc223 FOREIGN KEY (wallet_transaction_id) REFERENCES public.wallet_transactions(id);
|
||||
|
||||
|
||||
--
|
||||
-- Name: payment_infos fk_rails_0308366a58; Type: FK CONSTRAINT; Schema: public; Owner: -
|
||||
--
|
||||
|
||||
ALTER TABLE ONLY public.payment_infos
|
||||
ADD CONSTRAINT fk_rails_0308366a58 FOREIGN KEY (statistic_profile_id) REFERENCES public.statistic_profiles(id);
|
||||
|
||||
|
||||
--
|
||||
-- Name: cart_item_event_reservation_booking_users fk_rails_0964335a37; Type: FK CONSTRAINT; Schema: public; Owner: -
|
||||
--
|
||||
@ -9182,8 +9296,10 @@ INSERT INTO "schema_migrations" (version) VALUES
|
||||
('20230328094808'),
|
||||
('20230328094809'),
|
||||
('20230331132506'),
|
||||
('20230509121907'),
|
||||
('20230509161557'),
|
||||
('20230510141305'),
|
||||
('20230511080650'),
|
||||
('20230511081018'),
|
||||
('20230524080448'),
|
||||
('20230524083558'),
|
||||
@ -9199,11 +9315,15 @@ INSERT INTO "schema_migrations" (version) VALUES
|
||||
('20230720085857'),
|
||||
('20230728072726'),
|
||||
('20230728090257'),
|
||||
('20230825101952'),
|
||||
('20230828073428'),
|
||||
('20230831103208'),
|
||||
('20230901090637'),
|
||||
('20230907124230'),
|
||||
('20231103093436'),
|
||||
('20231108094433');
|
||||
('20231108094433'),
|
||||
('20240116163703'),
|
||||
('20240126145351'),
|
||||
('20240126192110');
|
||||
|
||||
|
||||
|
3
lib/omni_auth/saml.rb
Normal file
3
lib/omni_auth/saml.rb
Normal file
@ -0,0 +1,3 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
require_relative 'strategies/sso_saml_provider'
|
34
lib/omni_auth/strategies/sso_saml_provider.rb
Normal file
34
lib/omni_auth/strategies/sso_saml_provider.rb
Normal file
@ -0,0 +1,34 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
require 'omniauth-saml'
|
||||
require_relative '../data_mapping/mapper'
|
||||
|
||||
# Authentication strategy provided trough SAML
|
||||
class OmniAuth::Strategies::SsoSamlProvider < OmniAuth::Strategies::SAML
|
||||
include OmniAuth::DataMapping::Mapper
|
||||
|
||||
def self.active_provider
|
||||
active_provider = Rails.configuration.auth_provider
|
||||
if active_provider.providable_type != 'SamlProvider'
|
||||
raise "Trying to instantiate the wrong provider: Expected SamlProvider, received #{active_provider.providable_type}"
|
||||
end
|
||||
|
||||
active_provider
|
||||
end
|
||||
|
||||
# Strategy name.
|
||||
option :name, active_provider.strategy_name
|
||||
|
||||
info do
|
||||
{
|
||||
mapping: parsed_info
|
||||
}
|
||||
end
|
||||
|
||||
def parsed_info
|
||||
mapped_info(
|
||||
OmniAuth::Strategies::SsoSamlProvider.active_provider.auth_provider_mappings,
|
||||
user_info: @attributes.attributes.transform_values {|v| v.is_a?(Array) ? v.first : v }
|
||||
)
|
||||
end
|
||||
end
|
@ -5,21 +5,6 @@ namespace :fablab do
|
||||
namespace :auth do
|
||||
desc 'switch the active authentication provider'
|
||||
task :switch_provider, [:provider] => :environment do |_task, args|
|
||||
providers = AuthProvider.all.inject('') { |str, item| "#{str}#{item[:name]}, " }
|
||||
unless args.provider
|
||||
puts "\e[0;31mERROR\e[0m: You must pass a provider name to activate. Available providers are: #{providers[0..-3]}"
|
||||
next
|
||||
end
|
||||
|
||||
if AuthProvider.find_by(name: args.provider).nil?
|
||||
puts "\e[0;31mERROR\e[0m: the provider '#{args.provider}' does not exists. Available providers are: #{providers[0..-3]}"
|
||||
next
|
||||
end
|
||||
|
||||
if AuthProvider.active.name == args.provider
|
||||
puts "\e[0;31mERROR\e[0m: the provider '#{args.provider}' is already enabled"
|
||||
next
|
||||
end
|
||||
|
||||
# disable previous provider
|
||||
prev_prev = AuthProvider.previous
|
||||
@ -28,7 +13,7 @@ namespace :fablab do
|
||||
AuthProvider.active.update(status: 'previous') unless AuthProvider.active.name == 'DatabaseProvider::SimpleAuthProvider'
|
||||
|
||||
# enable given provider
|
||||
AuthProvider.find_by(name: args.provider).update(status: 'active')
|
||||
AuthProvider.find_by(name: 'FabManager').update(status: 'active')
|
||||
|
||||
# migrate the current users.
|
||||
if AuthProvider.active.providable_type == DatabaseProvider.name
|
||||
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "fab-manager",
|
||||
"version": "6.3.8",
|
||||
"version": "6.3.10",
|
||||
"description": "Fab-manager is the FabLab management solution. It provides a comprehensive, web-based, open-source tool to simplify your administrative tasks and your marker's projects.",
|
||||
"keywords": [
|
||||
"fablab",
|
||||
|
Loading…
x
Reference in New Issue
Block a user