diff --git a/app/assets/stylesheets/basic/_layout.scss b/app/assets/stylesheets/basic/_layout.scss index 6fd3e556860..1b8b79646a0 100644 --- a/app/assets/stylesheets/basic/_layout.scss +++ b/app/assets/stylesheets/basic/_layout.scss @@ -2,8 +2,9 @@ html { font-family: "Roboto", sans-serif; } + body { - background-color: #f7f7ed; + background-color: rgb(252,246,235); color: rgba(0,0,0,0.9); margin: 1em auto; line-height: 1.5; @@ -53,10 +54,3 @@ footer { } } -main { - background-color: #fff; - padding: 1em; - margin: 1em; - border-radius: 5px; - border: 1px solid #ccc; -} diff --git a/app/assets/stylesheets/marketing/buttons.scss b/app/assets/stylesheets/marketing/buttons.scss index a17538eb9d7..a9eb15cdf26 100644 --- a/app/assets/stylesheets/marketing/buttons.scss +++ b/app/assets/stylesheets/marketing/buttons.scss @@ -7,19 +7,10 @@ text-decoration: none; text-align: center; background: transparent; - // white-space: nowrap; - // line-height: 3; } .btn { @extend %btn--base; - - &:hover, - &:focus, - &:active { - background-color: rgba(0,0,0,0.05); - color: darken($font-color, 20%); - } } .btn--blue { @@ -47,8 +38,7 @@ &:hover, &:focus, &:active { - color: $white; - background-color: lighten($primary-color, 5%); + opacity: 0.9; } } diff --git a/app/assets/stylesheets/marketing/landing.scss b/app/assets/stylesheets/marketing/landing.scss index 6aa6057f16f..ff02bee1d04 100644 --- a/app/assets/stylesheets/marketing/landing.scss +++ b/app/assets/stylesheets/marketing/landing.scss @@ -1,3 +1,49 @@ +.ribbon-parent { + overflow: hidden; /* required */ + position: relative; /* required for demo*/ +} + +.ribbon { + margin: 0; + padding: 0; + background: #DCA034; + color:white; + padding:0.6em 0; + position: absolute; + top:0; + right:0; + transform: translateX(30%) translateY(0%) rotate(45deg); + transform-origin: top left; +} + +.ribbon-grey { + background: rgb(41, 60, 74) !important; +} + +.ribbon-grey:before, +.ribbon-grey:after { + background: rgb(41, 60, 74) !important; +} + +.ribbon:before, +.ribbon:after { + content: ''; + position: absolute; + top:0; + margin: 0 -1px; /* tweak */ + width: 100%; + height: 100%; + background: #DCA034; +} + +.ribbon:before { + right:100%; +} + +.ribbon:after { + left:100%; +} + .main--landing { section { margin-left: auto; @@ -28,15 +74,26 @@ @extend .btn--primary; border-radius: 6px; - text-transform: uppercase; - padding: 15px 20px; font-size: 16px; font-weight: normal; - letter-spacing: .75px; display: inline-block; } +.btn--ink { + @extend .btn--base--landing; + border-color: transparent; + background-color: #293c4a; + color: #fff; +} + +.btn--gold { + @extend .btn--base--landing; + border-color: transparent; + background-color: #dca034; + color: #fff; +} + .btn--primary--landing { @extend .btn--base--landing; } @@ -58,30 +115,31 @@ } } +.nonprofit-warning { + border: 2px solid #293c4a; + border-radius: 1.5rem; + margin-left: auto; + margin-right: auto; +} + .price-box { - background-color: rgba($accent-color, 0.15); + border: 2px solid #293c4a; + border-radius: 1.5rem; margin: 0 20px 20px; padding-bottom: 20px; - border-radius: 6px; - width: 300px; + width: 325px; + padding: 24px; h2 { margin: 0; - background-color: $accent-color; - border-radius: 6px 6px 0 0; - text-align: center; - color: white; - text-transform: uppercase; - font-size: 18px; - padding: 10px; + font-size: 1.875rem; + line-height: 2.25rem; + color: #000; + font-weight: 400 } &.primary { - background-color: rgba($primary-color, 0.15); - - h2 { - background-color: $primary-color; - } + border-color: #dca034; } .invitation { diff --git a/app/assets/stylesheets/vtfy/typography.css b/app/assets/stylesheets/vtfy/typography.css index 682ec3fd989..bba217e423c 100644 --- a/app/assets/stylesheets/vtfy/typography.css +++ b/app/assets/stylesheets/vtfy/typography.css @@ -23,6 +23,15 @@ kbd{ padding:.2em .4rem; box-shadow:0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12) } + +.text-ink, .text-ink a { + color: rgb(41, 60, 74); +} + +.text-slate-700, .text-slate-700 a { + color: rgb(51, 65, 85); +} + .theme--light.heading{ color:rgba(0,0,0,.87) } diff --git a/app/controllers/api/v1/snorlax_base.rb b/app/controllers/api/v1/snorlax_base.rb index 72224097d1d..2d1008fdf5f 100644 --- a/app/controllers/api/v1/snorlax_base.rb +++ b/app/controllers/api/v1/snorlax_base.rb @@ -276,7 +276,7 @@ def resource_class end def respond_with_standard_error(error, status) - render json: {exception: "#{error.class} #{error.to_s}"}, root: false, status: status + render json: {exception: error.class, error: error.to_s}, root: false, status: status end def respond_with_error(status, message = "error") diff --git a/app/controllers/api/v1/trials_controller.rb b/app/controllers/api/v1/trials_controller.rb new file mode 100644 index 00000000000..3f0bc75ca0b --- /dev/null +++ b/app/controllers/api/v1/trials_controller.rb @@ -0,0 +1,33 @@ +class API::V1::TrialsController < API::V1::RestfulController + def create + email = params[:user_email].strip + + user = User.verified.find_by(email: email) + if !user + user = User.where(email_verified: false, email: email).first_or_create + user.name = params[:user_name].strip + user.recaptcha = params[:recaptcha] + user.legal_accepted = true + user.email_newsletter = !!params[:newsletter] + # user.require_valid_signup = true + # user.require_recaptcha = true + user.save! + end + + raise "you said I'd have a user by now" unless user && user.valid? + + group = Group.new( + name: params[:group_name].strip, + description: MarkdownService.render_html(params[:group_intention].strip), + description_format: 'html', + group_privacy: "secret", + category: params[:group_category], + ) + group.handle = GroupService.suggest_handle(name: group.name, parent_handle: nil) + GroupService.create(group: group, actor: user, skip_authorize: true) + + raise "start trial failed" unless group.valid? + + render json: {success: :ok, group_path: group_handle_path(group.handle)} + end +end diff --git a/app/extras/app_config.rb b/app/extras/app_config.rb index 5731e307dd1..9cff2c4f4a2 100644 --- a/app/extras/app_config.rb +++ b/app/extras/app_config.rb @@ -91,6 +91,7 @@ def self.app_features subscriptions: !!ENV.fetch('CHARGIFY_API_KEY', false), demos: ENV.fetch('FEATURES_DEMO_GROUPS', false), trials: ENV.fetch('FEATURES_TRIALS', false), + trial_days: ENV.fetch('TRIAL_DAYS', nil), new_thread_button: !!ENV.fetch('FEATURES_NEW_THREAD_BUTTON', false), email_login: !ENV['FEATURES_DISABLE_EMAIL_LOGIN'], create_user: !ENV['FEATURES_DISABLE_CREATE_USER'], diff --git a/app/extras/user_inviter.rb b/app/extras/user_inviter.rb index d6153757e34..473544c7fa3 100644 --- a/app/extras/user_inviter.rb +++ b/app/extras/user_inviter.rb @@ -58,6 +58,9 @@ def self.authorize!(emails: , user_ids:, audience:, model:, actor:) # members belong to group member_ids = model.members.where(id: user_ids).pluck(:id) + member_ids += model.members.where(email: emails).pluck(:id) + + emails -= User.where(email: emails, id: member_ids).pluck(:email) # guests are outside of the group, but allowed to be referenced by user query guest_ids = UserQuery.invitable_user_ids(model: model, actor: actor, user_ids: user_ids - member_ids) diff --git a/app/mailers/event_mailer.rb b/app/mailers/event_mailer.rb index cc8350fa4a5..dcb67d266eb 100644 --- a/app/mailers/event_mailer.rb +++ b/app/mailers/event_mailer.rb @@ -28,7 +28,6 @@ def event(recipient_id, event_id) # if someone does not respond to the invitation, don't send them more emails return if @membership && !@recipient.email_verified && - !@membership.accepted_at && !["membership_created", "membership_resent"].include?(@event.kind) end diff --git a/app/models/ability/discussion.rb b/app/models/ability/discussion.rb index 53b3d8f4003..5fb49854608 100644 --- a/app/models/ability/discussion.rb +++ b/app/models/ability/discussion.rb @@ -41,8 +41,8 @@ def initialize(user) can [:add_guests], ::Discussion do |discussion| if discussion.group_id - discussion.group.admins.exists?(user.id) || - (discussion.group.members_can_add_guests && discussion.members.exists?(user.id)) + Subscription.for(discussion.group).allow_guests && + (discussion.group.admins.exists?(user.id) || (discussion.group.members_can_add_guests && discussion.members.exists?(user.id))) else !discussion.id || discussion.admins.exists?(user.id) end diff --git a/app/models/ability/poll.rb b/app/models/ability/poll.rb index 9afd81962ca..1b2b7b7ac9b 100644 --- a/app/models/ability/poll.rb +++ b/app/models/ability/poll.rb @@ -51,8 +51,8 @@ def initialize(user) can [:add_guests], ::Poll do |poll| if poll.group_id - poll.group.admins.exists?(user.id) || - (poll.group.members_can_add_guests && poll.admins.exists?(user.id)) + Subscription.for(poll.group).allow_guests && + (poll.group.admins.exists?(user.id) || (poll.group.members_can_add_guests && poll.admins.exists?(user.id))) else poll.admins.exists?(user.id) end diff --git a/app/models/group.rb b/app/models/group.rb index 1ed04d5f9c8..9fee388ecd8 100644 --- a/app/models/group.rb +++ b/app/models/group.rb @@ -290,7 +290,7 @@ def org_memberships_count end def org_members_count - Membership.active.where(group_id: id_and_subgroup_ids).count('distinct user_id') + Membership.active.accepted.where(group_id: id_and_subgroup_ids).count('distinct user_id') end def org_discussions_count diff --git a/app/models/stance.rb b/app/models/stance.rb index dab9849de59..ddfd143106e 100644 --- a/app/models/stance.rb +++ b/app/models/stance.rb @@ -82,7 +82,7 @@ def self.pg_search_insert_statement(id: nil, author_id: nil, discussion_id: nil, scope :oldest_first, -> { order(created_at: :asc) } scope :priority_first, -> { joins(:poll_options).order('poll_options.priority ASC') } scope :priority_last, -> { joins(:poll_options).order('poll_options.priority DESC') } - scope :with_reason, -> { where("reason IS NOT NULL AND reason != ''") } + scope :with_reason, -> { where("reason IS NOT NULL AND reason != '' AND reason != '

'") } scope :in_organisation, ->(group) { joins(:poll).where("polls.group_id": group.id_and_subgroup_ids) } scope :decided, -> { where("stances.cast_at IS NOT NULL") } scope :undecided, -> { where("stances.cast_at IS NULL") } diff --git a/app/queries/user_query.rb b/app/queries/user_query.rb index e1d4ac37686..467fb38fc82 100644 --- a/app/queries/user_query.rb +++ b/app/queries/user_query.rb @@ -65,7 +65,7 @@ def self.invitable_user_ids(model: , actor:, user_ids: ) def self.invitable_search(model:, actor:, q: nil, limit: 50) ids = relations(model: model, actor: actor).map do |rel| - rel.active.verified.search_for(q).limit(limit).pluck(:id) + rel.active.search_for(q).limit(limit).pluck(:id) end.flatten.uniq.compact User.where(id: ids).order(:memberships_count).limit(50) end diff --git a/app/serializers/group_serializer.rb b/app/serializers/group_serializer.rb index adb73bf9a6c..b3da5511e2c 100644 --- a/app/serializers/group_serializer.rb +++ b/app/serializers/group_serializer.rb @@ -74,6 +74,7 @@ def subscription { max_members: sub.max_members, max_threads: sub.max_threads, + allow_subgroups: sub.allow_subgroups, plan: sub.plan, active: sub.is_active?, renews_at: sub.renews_at, @@ -84,6 +85,7 @@ def subscription { max_members: sub.max_members, max_threads: sub.max_threads, + allow_subgroups: sub.allow_subgroups, plan: sub.plan, active: sub.is_active?, members_count: sub.members_count diff --git a/app/services/group_service.rb b/app/services/group_service.rb index 9fb54238799..5e1421a36d0 100644 --- a/app/services/group_service.rb +++ b/app/services/group_service.rb @@ -85,8 +85,8 @@ def self.invite(group:, params:, actor:) Membership.active.where(group_id: group.id, user_id: users.pluck(:id)) end - def self.create(group:, actor: ) - actor.ability.authorize! :create, group + def self.create(group:, actor: , skip_authorize: false) + actor.ability.authorize!(:create, group) unless skip_authorize return false unless group.valid? diff --git a/app/views/layouts/basic.html.haml b/app/views/layouts/basic.html.haml index c7c79763e2e..b823a6e33af 100644 --- a/app/views/layouts/basic.html.haml +++ b/app/views/layouts/basic.html.haml @@ -10,9 +10,10 @@ = stylesheet_link_tag 'marketing/all' = render 'plausible' %body - %header - %a{href: '/'} - %img{style: 'max-width: 256px', src: AppConfig.theme[:app_logo_src]} + .container + %header.d-flex.justify-center + %a{href: '/'} + %img{style: 'max-width: 128px', src: AppConfig.theme[:app_logo_src]} .container = yield diff --git a/config/initializers/rack_attack.rb b/config/initializers/rack_attack.rb index bd94847b468..f5be3d16ad7 100644 --- a/config/initializers/rack_attack.rb +++ b/config/initializers/rack_attack.rb @@ -15,8 +15,9 @@ def remote_ip # req.remote_ip # end IP_POST_LIMITS = { + '/api/v1/trails' => 10, '/api/v1/announcements' => 100, - '/api/v1/groups' => 30, + '/api/v1/groups' => 20, '/api/v1/templates' => 10, '/api/v1/login_tokens' => 10, '/api/v1/membership_requests' => 100, diff --git a/config/locales/client.ca.yml b/config/locales/client.ca.yml index 703633e6df6..32defe5e3da 100644 --- a/config/locales/client.ca.yml +++ b/config/locales/client.ca.yml @@ -778,6 +778,8 @@ ca: thread_admin: Admin del fil last_read_at: Darrera visualització %{time} has_not_read_thread: No ha visualitzat el fil + has_not_joined_yet: Encara no s'ha unit + has_not_joined_yet_hint: Aquest usuari no ha acceptat la seva invitació per unir-se a Loomio i no rebrà més notificacions fins que ho faci group_form: search_placeholder: Busca gent... modal_title: Selecciona membres del grup @@ -1770,6 +1772,9 @@ ca: subgroups_panel: search_subgroups_of_name: Buscar subgrups dins de %{name} group_without_subgroups: "%{name} sense subgrups" + need_a_space_for_your_team: Necessites un espai de descans per al teu equip? + explainer: 'Els subgrups són llocs privats on els equips de la vostra organització poden discutir i prendre decisions. El contingut dels subgrups és privat de la resta de l''organització. Exemples de subgrups: Junta, decisions de contractació o equip de projecte' + upgrade: Per iniciar un subgrup, haureu d' actualitzar la vostra subscripció a Loomio. poll_common_action_panel: anonymous: Els vots són anònims unable_to_vote: No heu estat convidat a votar en aquesta %{poll_type}. @@ -2592,3 +2597,21 @@ ca: accept_prompt: Per què ets voluntari per això? decline_meaning: No puc participar decline_prompt: Hi ha alguna cosa que t'agradaria dir? + start_trial: + title: Inicieu una prova gratuïta de Loomio + intro: Gràcies pel teu interès en Loomio. Estem encantats d'oferir-vos una prova gratuïta de %{day} dies perquè pugueu veure si Loomio s'adapta bé a la vostra organització. + lets_get_started: Comencem! + your_name: El teu nom + your_email: El teu email + how_would_you_like_to_use_loomio: Com t'agradaria utilitzar Loomio a la teva organització? + newsletter_intro: T'agradaria subscriure't al nostre butlletí? + newsletter_description: Manteniu-vos al dia sobre noves funcions i històries inspiradores sobre com utilitzen Loomio les organitzacions d'arreu del món + subscribe_to_newsletter: Subscriu-te al butlletí de Loomio + form_incomplete: Si us plau, omple tots els camps del formulari per continuar + success: Èxit! + taken_first_step: Heu fet el primer pas cap a la presa de decisions col·laborativa amb Loomio. + account_created_for_you: Hem creat un compte d'usuari per a %{email} i un grup a Loomio. + please_sign_in_to_continue: Si us plau, inicieu la sessió per continuar. + please_complete_this_field: Si us plau, omple aquest camp + please_enter_a_valid_email_address: siusplau, introdueixi una adreça de correu electrònic vàlida + please_accept_the_terms: Accepteu els termes diff --git a/config/locales/client.da.yml b/config/locales/client.da.yml index 8b40bb54237..00d66805484 100644 --- a/config/locales/client.da.yml +++ b/config/locales/client.da.yml @@ -692,6 +692,8 @@ da: thread_admin: Tråd administrator last_read_at: Sidst set %{time} has_not_read_thread: Har ikke set tråden + has_not_joined_yet: Har ikke været med endnu + has_not_joined_yet_hint: Denne bruger har ikke accepteret deres invitation til at blive medlem af Loomio og vil ikke modtage yderligere meddelelser, før de gør det group_form: search_placeholder: Søg efter personer... modal_title: Vælg gruppemedlemmer @@ -2255,6 +2257,9 @@ da: subgroups_panel: search_subgroups_of_name: Søg i undergrupper af %{name} group_without_subgroups: "%{name} uden undergrupper" + need_a_space_for_your_team: Har du brug for en break-out plads til dit team? + explainer: 'Undergrupper er private steder, hvor teams i din organisation kan have diskussioner og træffe beslutninger. Indhold i undergrupper er privat fra resten af organisationen. Eksempler på undergrupper: bestyrelse, ansættelsesbeslutninger eller projektteam' + upgrade: For at starte en undergruppe skal du opgradere dit Loomio-abonnement. poll_common_action_panel: from_the_thread: Fra trådskabelonen from_the_group: Fra gruppen @@ -2549,3 +2554,21 @@ da: privacy_policy: Fortrolighedspolitik terms_of_service: Servicevilkår front_page: Forside + start_trial: + title: Start en gratis prøveversion af Loomio + intro: Tak for din interesse i Loomio. Vi er glade for at kunne tilbyde dig en %{day}-dages gratis prøveperiode, så du kan se, om Loomio passer godt til din organisation. + lets_get_started: Lad os komme igang! + your_name: Dit navn + your_email: Din email + how_would_you_like_to_use_loomio: Hvordan vil du gerne bruge Loomio i din organisation? + newsletter_intro: Vil du tilmelde dig vores nyhedsbrev? + newsletter_description: Hold dig opdateret om nye funktioner og inspirerende historier om, hvordan Loomio bliver brugt af organisationer over hele verden + subscribe_to_newsletter: Abonner på Loomio nyhedsbrev + form_incomplete: Udfyld venligst alle felter på formularen for at fortsætte + success: Succes! + taken_first_step: Du har taget det første skridt mod samarbejdsbeslutninger med Loomio. + account_created_for_you: Vi har oprettet en brugerkonto til %{email} og en gruppe på Loomio. + please_sign_in_to_continue: Log venligst ind for at fortsætte. + please_complete_this_field: Udfyld venligst dette felt + please_enter_a_valid_email_address: Indtast venligst en gyldig e-mailadresse + please_accept_the_terms: Accepter venligst vilkårene diff --git a/config/locales/client.de.yml b/config/locales/client.de.yml index 38c51acffb5..5788043f46c 100644 --- a/config/locales/client.de.yml +++ b/config/locales/client.de.yml @@ -840,6 +840,8 @@ de: thread_admin: Diskussionsadmin last_read_at: Zuletzt angesehen %{time} has_not_read_thread: Hat den Thread nicht angesehen + has_not_joined_yet: Ist noch nicht beigetreten + has_not_joined_yet_hint: Dieser Benutzer hat die Einladung zur Teilnahme an Loomio nicht angenommen und erhält keine weiteren Benachrichtigungen, bis er dies tut. group_form: search_placeholder: Nach Personen suchen... modal_title: Gruppenmitglieder bestimmen @@ -1820,6 +1822,9 @@ de: subgroups_panel: search_subgroups_of_name: Durchsuche Untergruppen von %{name} group_without_subgroups: "%{name} ohne Untergruppen" + need_a_space_for_your_team: Benötigen Sie einen Pausenraum für Ihr Team? + explainer: 'Untergruppen sind private Orte, an denen Teams innerhalb Ihrer Organisation Diskussionen führen und Entscheidungen treffen können. Inhalte in Untergruppen sind für den Rest der Organisation privat. Beispiele für Untergruppen: Vorstand, Einstellungsentscheidungen oder Projektteam' + upgrade: Um eine Untergruppe zu starten, müssen Sie Ihr Loomio-Abonnement aktualisieren. poll_common_action_panel: anonymous: Stimmabgaben sind anonym unable_to_vote: Du wurdest nicht eingeladen in diesem %{poll_type} abzustimmen. @@ -2648,3 +2653,21 @@ de: audio_transcript: 'Audiotranskript: %{text}' why_type_when_you_can_talk: Warum tippen, wenn man reden kann? Senden Sie eine Sprachaufnahme transcript_included: Ein Transkript der Aufzeichnung wird Ihrer Nachricht beigefügt + start_trial: + title: Starten Sie eine kostenlose Testversion von Loomio + intro: Vielen Dank für Ihr Interesse an Loomio. Wir freuen uns, Ihnen eine %{day}-tägige kostenlose Testversion anbieten zu können, damit Sie sehen können, ob Loomio für Ihre Organisation geeignet ist. + lets_get_started: Lass uns anfangen! + your_name: Ihr Name + your_email: Deine E-Mail + how_would_you_like_to_use_loomio: Wie möchten Sie Loomio in Ihrer Organisation einsetzen? + newsletter_intro: Möchten Sie unseren Newsletter abonnieren? + newsletter_description: Bleiben Sie über neue Funktionen und inspirierende Geschichten darüber, wie Loomio von Organisationen auf der ganzen Welt eingesetzt wird, auf dem Laufenden + subscribe_to_newsletter: Abonnieren Sie den Loomio-Newsletter + form_incomplete: Bitte füllen Sie alle Felder im Formular aus, um fortzufahren + success: Erfolg! + taken_first_step: Mit Loomio haben Sie den ersten Schritt zur gemeinsamen Entscheidungsfindung getan. + account_created_for_you: Wir haben ein Benutzerkonto für %{email} und eine Gruppe auf Loomio erstellt. + please_sign_in_to_continue: Bitte einloggen, um fortzufahren. + please_complete_this_field: Bitte füllen Sie dieses Feld aus + please_enter_a_valid_email_address: Bitte geben Sie eine gültige E-Mail-Adresse ein + please_accept_the_terms: Bitte akzeptieren Sie die Bedingungen diff --git a/config/locales/client.el.yml b/config/locales/client.el.yml index ceafcdd463b..37cf8680dbf 100644 --- a/config/locales/client.el.yml +++ b/config/locales/client.el.yml @@ -683,6 +683,8 @@ el: thread_admin: Διαχειριστής νήματος last_read_at: Τελευταία προβολή %{time} has_not_read_thread: Δεν έχει δει το νήμα + has_not_joined_yet: Δεν έχει εγγραφεί ακόμα + has_not_joined_yet_hint: Αυτός ο χρήστης δεν έχει αποδεχτεί την πρόσκλησή του να εγγραφεί στο Loomio και δεν θα λάβει περαιτέρω ειδοποιήσεις μέχρι να το κάνει group_form: search_placeholder: Αναζήτηση ατόμων... modal_title: Επιλέξτε μέλη της ομάδας @@ -2105,6 +2107,9 @@ el: subgroups_panel: search_subgroups_of_name: Αναζήτηση υποομάδων του %{name} group_without_subgroups: "%{name} χωρίς υποομάδες" + need_a_space_for_your_team: Χρειάζεστε έναν χώρο ξεκούρασης για την ομάδα σας; + explainer: 'Οι υποομάδες είναι ιδιωτικοί χώροι όπου οι ομάδες εντός του οργανισμού σας μπορούν να κάνουν συζητήσεις και να λάβουν αποφάσεις. Το περιεχόμενο σε υποομάδες είναι ιδιωτικό από τον υπόλοιπο οργανισμό. Παραδείγματα υποομάδων: Διοικητικό Συμβούλιο, αποφάσεις πρόσληψης ή ομάδα έργου' + upgrade: Για να ξεκινήσετε μια υποομάδα, θα πρέπει να αναβαθμίσετε τη συνδρομή σας στο Loomio. poll_common_action_panel: from_the_thread: Από το πρότυπο νήματος from_the_group: Από την ομάδα @@ -2537,3 +2542,21 @@ el: privacy_policy: Πολιτική απορρήτου terms_of_service: Οροι χρήσης front_page: Εξώφυλλο + start_trial: + title: Ξεκινήστε μια δωρεάν δοκιμή του Loomio + intro: Σας ευχαριστούμε για το ενδιαφέρον σας για το Loomio. Είμαστε στην ευχάριστη θέση να σας προσφέρουμε μια δωρεάν δοκιμή %{day}-ημέρας, ώστε να μπορείτε να δείτε εάν το Loomio είναι κατάλληλο για τον οργανισμό σας. + lets_get_started: Ας αρχίσουμε! + your_name: Το όνομα σου + your_email: Η διεύθυνση του ηλεκτρονικού σου ταχυδρομείου + how_would_you_like_to_use_loomio: Πώς θα θέλατε να χρησιμοποιήσετε το Loomio στον οργανισμό σας; + newsletter_intro: Θα θέλατε να εγγραφείτε στο ενημερωτικό μας δελτίο; + newsletter_description: Μείνετε ενημερωμένοι για νέες δυνατότητες και εμπνευσμένες ιστορίες για το πώς χρησιμοποιείται το Loomio από οργανισμούς σε όλο τον κόσμο + subscribe_to_newsletter: Εγγραφείτε στο ενημερωτικό δελτίο Loomio + form_incomplete: Συμπληρώστε όλα τα πεδία της φόρμας για να συνεχίσετε + success: Επιτυχία! + taken_first_step: Κάνατε το πρώτο βήμα προς τη συλλογική λήψη αποφάσεων με τη Loomio. + account_created_for_you: Έχουμε δημιουργήσει έναν λογαριασμό χρήστη για το %{email} και μια ομάδα στο Loomio. + please_sign_in_to_continue: Συνδεθείτε για να συνεχίσετε. + please_complete_this_field: Συμπληρώστε αυτό το πεδίο + please_enter_a_valid_email_address: Παρακαλώ εισάγετε μια έγκυρη διεύθυνση ηλεκτρονικού ταχυδρομείου + please_accept_the_terms: Παρακαλώ αποδεχτείτε τους όρους diff --git a/config/locales/client.en.yml b/config/locales/client.en.yml index 63cc964227c..1f5bb2275ac 100644 --- a/config/locales/client.en.yml +++ b/config/locales/client.en.yml @@ -1,4 +1,22 @@ en: + start_trial: + title: Start a free trial of Loomio + intro: Thank you for your interest in Loomio. We're delighted to offer you a %{day}-day free trial so you can see if Loomio is a good fit for you organization. + lets_get_started: Let's get started! + your_name: Your name + your_email: Your email + how_would_you_like_to_use_loomio: How would you like to use Loomio in your organization? + newsletter_intro: Would you like to subscribe to our newsletter? + newsletter_description: Stay updated about new features and inspiring stories of how Loomio is being used by organizations around the world + subscribe_to_newsletter: Subscribe to Loomio newsletter + form_incomplete: Please complete all fields on the form to continue + success: Success! + taken_first_step: You've taken the first step towards collaborative decision-making with Loomio. + account_created_for_you: We have created a user account for %{email} and a group on Loomio. + please_sign_in_to_continue: Please sign in to continue. + please_complete_this_field: Please complete this field + please_enter_a_valid_email_address: Please enter a valid email address + please_accept_the_terms: Please accept the terms tasks: tasks: Tasks your_tasks: Your tasks @@ -935,6 +953,8 @@ en: thread_admin: "Thread admin" last_read_at: "Last viewed %{time}" has_not_read_thread: "Has not viewed thread" + has_not_joined_yet: "Has not joined yet" + has_not_joined_yet_hint: "This user has not accepted their invitation to join Loomio and will not receive further notifications until they do" group_form: search_placeholder: Search for people... modal_title: Select group members @@ -2009,6 +2029,12 @@ en: subgroups_panel: search_subgroups_of_name: 'Search subgroups of %{name}' group_without_subgroups: '%{name} without subgroups' + need_a_space_for_your_team: Need a break-out space for your team? + explainer: | + Subgroups are private places where teams within your organization can have discussions and make decisions. + Content in subgroups is private from the rest of the organization. Examples of subgroups: Board, Hiring decisions or Project team + upgrade: | + To start a subgroup, you'll need to upgrade your Loomio subscription. poll_common_action_panel: from_the_thread: From the thread template @@ -2930,7 +2956,7 @@ en: front_page: Front page group_survey: - describe_other: Select the category that best describes your group + describe_other: Which category best describes your organization categories: party: Political party coop: Cooperative diff --git a/config/locales/client.es.yml b/config/locales/client.es.yml index 2a87e9f0226..c2131c5a8fc 100644 --- a/config/locales/client.es.yml +++ b/config/locales/client.es.yml @@ -878,6 +878,8 @@ es: thread_admin: Hilo de administración last_read_at: El último visto %{time} has_not_read_thread: Tiene un hilo no visto + has_not_joined_yet: Aún no se ha unido + has_not_joined_yet_hint: Este usuario no ha aceptado su invitación para unirse a Loomio y no recibirá más notificaciones hasta que lo haga. group_form: search_placeholder: Buscar personas... modal_title: Selecciona integrantes del grupo @@ -1882,6 +1884,9 @@ es: subgroups_panel: search_subgroups_of_name: Subgrupos de búsqueda de %{name} group_without_subgroups: "%{name} sin subgrupos" + need_a_space_for_your_team: "¿Necesita un espacio de descanso para su equipo?" + explainer: 'Los subgrupos son lugares privados donde los equipos de su organización pueden debatir y tomar decisiones. El contenido de los subgrupos es privado del resto de la organización. Ejemplos de subgrupos: Junta Directiva, Decisiones de contratación o Equipo de proyecto' + upgrade: Para iniciar un subgrupo, deberá actualizar su suscripción a Loomio. poll_common_action_panel: from_the_thread: Desde la plantilla de subproceso from_the_group: Del grupo @@ -2673,3 +2678,21 @@ es: audio_transcript: 'Transcripción de audio: %{text}' why_type_when_you_can_talk: "¿Por qué escribir cuando puedes hablar? Enviar una grabación de voz" transcript_included: Se adjuntará una transcripción de la grabación a su mensaje. + start_trial: + title: Iniciar una prueba gratuita de Loomio + intro: Gracias por tu interés en Loomio. Estamos encantados de ofrecerle una prueba gratuita de %{day} días para que pueda ver si Loomio es una buena opción para su organización. + lets_get_started: "¡Empecemos!" + your_name: Su nombre + your_email: Tu correo electrónico + how_would_you_like_to_use_loomio: "¿Cómo le gustaría utilizar Loomio en su organización?" + newsletter_intro: "¿Le gustaría suscribirse a nuestro boletín informativo?" + newsletter_description: Manténgase actualizado sobre nuevas funciones e historias inspiradoras sobre cómo organizaciones de todo el mundo utilizan Loomio. + subscribe_to_newsletter: Suscríbete al boletín de Loomio + form_incomplete: Por favor complete todos los campos del formulario para continuar + success: "¡Éxito!" + taken_first_step: Ha dado el primer paso hacia la toma de decisiones colaborativa con Loomio. + account_created_for_you: Hemos creado una cuenta de usuario para %{email} y un grupo en Loomio. + please_sign_in_to_continue: Por favor inicie sesión para continuar. + please_complete_this_field: Por favor complete este campo + please_enter_a_valid_email_address: Por favor, introduce una dirección de correo electrónico válida + please_accept_the_terms: Por favor acepta los términos diff --git a/config/locales/client.fi.yml b/config/locales/client.fi.yml index 5d2675173e8..8fba5e4d42f 100644 --- a/config/locales/client.fi.yml +++ b/config/locales/client.fi.yml @@ -1283,6 +1283,8 @@ fi: thread_admin: Viestiketjun ylläpitäjä last_read_at: Viimeksi katsottu %{time} has_not_read_thread: Ei ole katsonut lankaa + has_not_joined_yet: Ei ole vielä liittynyt + has_not_joined_yet_hint: Tämä käyttäjä ei ole hyväksynyt hänen kutsuaan liittyä Loomioon, eikä hän saa muita ilmoituksia ennen kuin hyväksyy group_form: search_placeholder: Etsi ihmisiä... modal_title: Valitse ryhmän jäsenet @@ -1927,6 +1929,9 @@ fi: subgroups_panel: search_subgroups_of_name: Hae alaryhmiä %{name} group_without_subgroups: "%{name} ilman alaryhmiä" + need_a_space_for_your_team: Tarvitsetko purkutilaa tiimillesi? + explainer: 'Alaryhmät ovat yksityisiä paikkoja, joissa organisaatiosi tiimit voivat keskustella ja tehdä päätöksiä. Alaryhmien sisältö on yksityistä muulta organisaatiolta. Esimerkkejä alaryhmistä: hallitus, palkkauspäätökset tai projektitiimi' + upgrade: Jos haluat perustaa alaryhmän, sinun on päivitettävä Loomio-tilauksesi. poll_common_action_panel: from_the_thread: Lankamallista from_the_group: Ryhmästä @@ -2535,3 +2540,21 @@ fi: community: yhteisön ryhmä government: Hallitus/paikallinen hallinto other: Muut + start_trial: + title: Aloita ilmainen Loomio-kokeilu + intro: Kiitos mielenkiinnostasi Loomiota kohtaan. Meillä on ilo tarjota sinulle %{day} päivän ilmainen kokeilu, jotta voit nähdä, sopiiko Loomio organisaatiollesi. + lets_get_started: Aloitetaan! + your_name: Sinun nimesi + your_email: Sähköpostisi + how_would_you_like_to_use_loomio: Miten haluaisit käyttää Loomiota organisaatiossasi? + newsletter_intro: Haluatko tilata uutiskirjeemme? + newsletter_description: Pysy ajan tasalla uusista ominaisuuksista ja inspiroivista tarinoista siitä, kuinka organisaatiot ympäri maailmaa käyttävät Loomiota + subscribe_to_newsletter: Tilaa Loomio-uutiskirje + form_incomplete: Täytä kaikki lomakkeen kentät jatkaaksesi + success: Menestys! + taken_first_step: Olet ottanut ensimmäisen askeleen kohti yhteistä päätöksentekoa Loomion kanssa. + account_created_for_you: Olemme luoneet käyttäjätilin %{email} ja ryhmän Loomioon. + please_sign_in_to_continue: Kirjaudu sisään jatkaaksesi. + please_complete_this_field: Täytä tämä kenttä + please_enter_a_valid_email_address: Ole hyvä ja syötä toimiva sähköpostiosoite + please_accept_the_terms: Hyväksy ehdot diff --git a/config/locales/client.fr.yml b/config/locales/client.fr.yml index a0c1e130b38..75a3b451762 100644 --- a/config/locales/client.fr.yml +++ b/config/locales/client.fr.yml @@ -880,6 +880,8 @@ fr: thread_admin: Discussion admin last_read_at: Dernière visite %{time} has_not_read_thread: N’a pas thread vu + has_not_joined_yet: N'a pas encore rejoint + has_not_joined_yet_hint: Cet utilisateur n'a pas accepté son invitation à rejoindre Loomio et ne recevra pas d'autres notifications tant qu'il ne l'aura pas fait. group_form: search_placeholder: Chercher des personnes... modal_title: Sélectionner des membres du groupe @@ -1886,6 +1888,9 @@ fr: subgroups_panel: search_subgroups_of_name: Rechercher des sous-groupes de %{name} group_without_subgroups: "%{name} sans sous-groupes" + need_a_space_for_your_team: Besoin d'un espace de détente pour votre équipe ? + explainer: 'Les sous-groupes sont des lieux privés où les équipes de votre organisation peuvent discuter et prendre des décisions. Le contenu des sous-groupes est privé du reste de l’organisation. Exemples de sous-groupes : Conseil d''administration, décisions d''embauche ou équipe de projet' + upgrade: Pour créer un sous-groupe, vous devrez mettre à niveau votre abonnement Loomio. poll_common_action_panel: from_the_thread: À partir du modèle de thread from_the_group: Du groupe @@ -2677,3 +2682,21 @@ fr: audio_transcript: Transcription audio : %{text} why_type_when_you_can_talk: Pourquoi taper quand on peut parler ? Envoyer un enregistrement vocal transcript_included: Une transcription de l'enregistrement sera annexée à votre message + start_trial: + title: Commencez un essai gratuit de Loomio + intro: Merci de votre intérêt pour Loomio. Nous sommes ravis de vous offrir un essai gratuit de %{day} jours afin que vous puissiez voir si Loomio convient bien à votre organisation. + lets_get_started: Commençons! + your_name: Votre nom + your_email: Votre email + how_would_you_like_to_use_loomio: Comment souhaiteriez-vous utiliser Loomio dans votre organisation ? + newsletter_intro: Souhaitez-vous vous inscrire à notre newsletter? + newsletter_description: Restez informé des nouvelles fonctionnalités et des histoires inspirantes sur la façon dont Loomio est utilisé par les organisations du monde entier. + subscribe_to_newsletter: Abonnez-vous à la newsletter Loomio + form_incomplete: Veuillez remplir tous les champs du formulaire pour continuer + success: Succès! + taken_first_step: Vous avez fait le premier pas vers une prise de décision collaborative avec Loomio. + account_created_for_you: Nous avons créé un compte utilisateur pour %{email} et un groupe sur Loomio. + please_sign_in_to_continue: Veuillez vous connecter pour continuer. + please_complete_this_field: Veuillez remplir ce champ + please_enter_a_valid_email_address: S'il vous plaît, mettez une adresse email valide + please_accept_the_terms: Veuillez accepter les conditions diff --git a/config/locales/client.he.yml b/config/locales/client.he.yml index 7d43ec1612b..c3f89fd2d73 100644 --- a/config/locales/client.he.yml +++ b/config/locales/client.he.yml @@ -727,6 +727,8 @@ he: thread_admin: מנהל שרשור last_read_at: נצפה לאחרונה %{time} has_not_read_thread: לא צפה בשרשור + has_not_joined_yet: עדיין לא הצטרף + has_not_joined_yet_hint: משתמש זה לא קיבל את הזמנתו להצטרף ל-Loomio ולא יקבל הודעות נוספות עד שיקבל group_form: search_placeholder: חפש אנשים... modal_title: בחר את חברי הקבוצה @@ -2367,6 +2369,9 @@ he: subgroups_panel: search_subgroups_of_name: חפש בקבוצות משנה של %{name} group_without_subgroups: "%{name} ללא תת-קבוצות" + need_a_space_for_your_team: זקוק למרחב פריצה לצוות שלך? + explainer: 'תת-קבוצות הן מקומות פרטיים שבהם צוותים בתוך הארגון שלך יכולים לנהל דיונים ולקבל החלטות. התוכן בתתי קבוצות הוא פרטי משאר הארגון. דוגמאות לתתי קבוצות: דירקטוריון, החלטות גיוס או צוות פרויקטים' + upgrade: כדי לפתוח תת-קבוצה, תצטרך לשדרג את מנוי ה-Loomio שלך. poll_common_action_panel: from_the_thread: מתוך תבנית השרשור from_the_group: מתוך הקבוצה @@ -2573,3 +2578,21 @@ he: decline_prompt: יש משהו שהיית רוצה להגיד? add_poll_to_thread_modal: success: הצלחה, %{pollType} נוסף לשרשור! + start_trial: + title: התחל ניסיון חינם של Loomio + intro: תודה על התעניינותך ב-Loomio. אנו שמחים להציע לך ניסיון חינם של %{day} ימים כדי שתוכל לראות אם Loomio מתאים לארגון שלך. + lets_get_started: בואו נתחיל! + your_name: השם שלך + your_email: האימייל שלך + how_would_you_like_to_use_loomio: כיצד תרצה להשתמש ב-Loomio בארגון שלך? + newsletter_intro: האם תרצה להירשם לניוזלטר שלנו? + newsletter_description: הישאר מעודכן לגבי תכונות חדשות וסיפורים מעוררי השראה על האופן שבו משתמשים ב-Loomio על ידי ארגונים ברחבי העולם + subscribe_to_newsletter: הירשם לניוזלטר של Loomio + form_incomplete: אנא מלא את כל השדות בטופס כדי להמשיך + success: הַצלָחָה! + taken_first_step: עשית את הצעד הראשון לקראת קבלת החלטות בשיתוף פעולה עם Loomio. + account_created_for_you: יצרנו חשבון משתמש עבור %{email} וקבוצה ב-Loomio. + please_sign_in_to_continue: אנא היכנס כדי להמשיך. + please_complete_this_field: נא למלא שדה זה + please_enter_a_valid_email_address: אנא הזן כתובת דוא"ל תקנית + please_accept_the_terms: אנא קבל את התנאים diff --git a/config/locales/client.hr.yml b/config/locales/client.hr.yml index 99e02c27a60..a7c6b59e39f 100644 --- a/config/locales/client.hr.yml +++ b/config/locales/client.hr.yml @@ -1182,6 +1182,8 @@ hr: thread_admin: Administrator teme last_read_at: Zadnji put pogledano %{time} has_not_read_thread: Nije pogledao nit + has_not_joined_yet: Još se nije pridružio + has_not_joined_yet_hint: Ovaj korisnik nije prihvatio njihov poziv da se pridruži Loomiju i neće primati daljnje obavijesti dok to ne prihvati group_form: search_placeholder: Traži ljude... modal_title: Odaberite članove grupe @@ -1837,6 +1839,9 @@ hr: subgroups_panel: search_subgroups_of_name: Traži podgrupe %{name} group_without_subgroups: "%{name} bez podgrupa" + need_a_space_for_your_team: Trebate prostor za odmor za svoj tim? + explainer: 'Podgrupe su privatna mjesta gdje timovi unutar vaše organizacije mogu raspravljati i donositi odluke. Sadržaj u podgrupama privatan je od ostatka organizacije. Primjeri podskupina: odbor, odluke o zapošljavanju ili projektni tim' + upgrade: Da biste pokrenuli podgrupu, morat ćete nadograditi svoju pretplatu na Loomio. poll_common_action_panel: from_the_thread: Iz predloška niti from_the_group: Iz grupe @@ -2535,3 +2540,21 @@ hr: community: Grupa zajednice government: Vlada/Lokalna uprava other: ostalo + start_trial: + title: Započnite besplatnu probnu verziju Loomija + intro: Hvala vam na interesu za Loomio. Drago nam je što vam možemo ponuditi %{day}-dnevno besplatno probno razdoblje kako biste mogli vidjeti odgovara li Loomio vašoj organizaciji. + lets_get_started: Započnimo! + your_name: Tvoje ime + your_email: Tvoj email + how_would_you_like_to_use_loomio: Kako biste željeli koristiti Loomio u svojoj organizaciji? + newsletter_intro: Želite li se pretplatiti na naš newsletter? + newsletter_description: Budite u tijeku s novim značajkama i inspirativnim pričama o tome kako Loomio koriste organizacije diljem svijeta + subscribe_to_newsletter: Pretplatite se na Loomio newsletter + form_incomplete: Ispunite sva polja na obrascu za nastavak + success: Uspjeh! + taken_first_step: Poduzeli ste prvi korak prema donošenju odluka u suradnji s Loomiom. + account_created_for_you: Napravili smo korisnički račun za %{email} i grupu na Loomio. + please_sign_in_to_continue: Prijavite se za nastavak. + please_complete_this_field: Molimo ispunite ovo polje + please_enter_a_valid_email_address: Unesite važeću adresu e-pošte + please_accept_the_terms: Molimo prihvatite uvjete diff --git a/config/locales/client.hu.yml b/config/locales/client.hu.yml index a8a3ae40f79..62cea6efb20 100644 --- a/config/locales/client.hu.yml +++ b/config/locales/client.hu.yml @@ -801,6 +801,8 @@ hu: thread_admin: Téma adminisztrátora last_read_at: 'Utoljára megtekintve: %{time}' has_not_read_thread: Nem nézte meg a szálat + has_not_joined_yet: Még nem csatlakozott + has_not_joined_yet_hint: Ez a felhasználó nem fogadta el a meghívását, hogy csatlakozzon a Loomióhoz, és addig nem kap további értesítéseket, amíg el nem fogadja group_form: search_placeholder: Emberek keresése ... modal_title: Válassza ki a csoporttagokat @@ -2376,6 +2378,9 @@ hu: subgroups_panel: search_subgroups_of_name: Keresés a(z) %{name} alcsoportjaiban group_without_subgroups: "%{name} alcsoportok nélkül" + need_a_space_for_your_team: Kitörési helyre van szüksége csapatának? + explainer: 'Az alcsoportok olyan privát helyek, ahol a szervezeten belüli csapatok megbeszélést folytathatnak és döntéseket hozhatnak. Az alcsoportok tartalma privát a szervezet többi részétől. Példák alcsoportokra: Igazgatóság, Felvételi döntések vagy Projektcsapat' + upgrade: Alcsoport létrehozásához frissítenie kell Loomio-előfizetését. poll_common_action_panel: from_the_thread: A fonalasablonból from_the_group: A csoportból @@ -2618,3 +2623,21 @@ hu: audio_transcript: 'Hang átirata: %{text}' why_type_when_you_can_talk: Miért írj, ha tudsz beszélni? Hangfelvétel küldése transcript_included: Az üzenethez csatoljuk a felvétel átiratát + start_trial: + title: Kezdje el a Loomio ingyenes próbaverzióját + intro: Köszönjük érdeklődését Loomio iránt. Örömmel kínálunk Önnek egy %{day} napos ingyenes próbaverziót, hogy megbizonyosodjon arról, hogy a Loomio megfelelő-e az Ön szervezete számára. + lets_get_started: Kezdjük el! + your_name: A neved + your_email: Az email címed + how_would_you_like_to_use_loomio: Hogyan szeretné használni a Loomiót a szervezetében? + newsletter_intro: Szeretne feliratkozni hírlevelünkre? + newsletter_description: Legyen naprakész az új funkciókkal és inspiráló történetekkel kapcsolatban arról, hogy a Loomiot hogyan használják a szervezetek szerte a világon + subscribe_to_newsletter: Iratkozzon fel a Loomio hírlevélre + form_incomplete: A folytatáshoz töltse ki az űrlap összes mezőjét + success: Siker! + taken_first_step: Ön megtette az első lépést az együttműködésen alapuló döntéshozatal felé a Loomióval. + account_created_for_you: Létrehoztunk egy felhasználói fiókot a %{email} számára és egy csoportot a Loomio-n. + please_sign_in_to_continue: Kérjük, jelentkezzen be a folytatáshoz. + please_complete_this_field: Kérjük, töltse ki ezt a mezőt + please_enter_a_valid_email_address: Kérjük valós e-mail címet adjon meg + please_accept_the_terms: Kérjük, fogadja el a feltételeket diff --git a/config/locales/client.it.yml b/config/locales/client.it.yml index e265528f566..37d2f85b3c9 100644 --- a/config/locales/client.it.yml +++ b/config/locales/client.it.yml @@ -842,6 +842,8 @@ it: thread_admin: Amministratore thread last_read_at: Ultima vista %{time} has_not_read_thread: Non ha visualizzato la discussione + has_not_joined_yet: Non si è ancora iscritto + has_not_joined_yet_hint: Questo utente non ha accettato l'invito a iscriversi a Loomio e non riceverà ulteriori notifiche finché non lo farà group_form: search_placeholder: Cerca persone... modal_title: Seleziona i membri del gruppo @@ -1814,6 +1816,9 @@ it: subgroups_panel: search_subgroups_of_name: Cerca i sottogruppi di %{name} group_without_subgroups: "%{name} senza sottogruppi" + need_a_space_for_your_team: Hai bisogno di uno spazio ricreativo per il tuo team? + explainer: 'I sottogruppi sono luoghi privati in cui i team all''interno della tua organizzazione possono discutere e prendere decisioni. Il contenuto dei sottogruppi è privato rispetto al resto dell''organizzazione. Esempi di sottogruppi: Consiglio di amministrazione, Decisioni di assunzione o Team di progetto' + upgrade: Per creare un sottogruppo, dovrai aggiornare il tuo abbonamento a Loomio. poll_common_action_panel: basic_templates: Modelli di base anonymous: I voti sono anonimi @@ -2640,3 +2645,21 @@ it: audio_transcript: 'Trascrizione audio: %{text}' why_type_when_you_can_talk: Perché scrivere quando puoi parlare? Invia una registrazione vocale transcript_included: Una trascrizione della registrazione verrà allegata al tuo messaggio + start_trial: + title: Inizia una prova gratuita di Loomio + intro: Grazie per il tuo interesse per Loomio. Siamo lieti di offrirti una prova gratuita di %{day} giorni in modo che tu possa vedere se Loomio è adatto alla tua organizzazione. + lets_get_started: Iniziamo! + your_name: Il tuo nome + your_email: La tua email + how_would_you_like_to_use_loomio: Come vorresti utilizzare Loomio nella tua organizzazione? + newsletter_intro: Desideri iscriverti alla nostra newsletter? + newsletter_description: Rimani aggiornato sulle nuove funzionalità e sulle storie stimolanti su come Loomio viene utilizzato dalle organizzazioni di tutto il mondo + subscribe_to_newsletter: Iscriviti alla newsletter di Loomio + form_incomplete: Compila tutti i campi del modulo per continuare + success: Successo! + taken_first_step: Hai fatto il primo passo verso un processo decisionale collaborativo con Loomio. + account_created_for_you: Abbiamo creato un account utente per %{email} e un gruppo su Loomio. + please_sign_in_to_continue: Accedi per continuare. + please_complete_this_field: Per favore completa questo campo + please_enter_a_valid_email_address: Si prega di inserire un indirizzo email valido + please_accept_the_terms: Si prega di accettare i termini diff --git a/config/locales/client.nl_NL.yml b/config/locales/client.nl_NL.yml index 4ba00ff6f87..7f6096b3df1 100644 --- a/config/locales/client.nl_NL.yml +++ b/config/locales/client.nl_NL.yml @@ -802,6 +802,8 @@ nl_NL: thread_admin: Bord administrator last_read_at: Laatst gezien %{time} has_not_read_thread: Hebben bord niet gezien + has_not_joined_yet: Is nog niet lid + has_not_joined_yet_hint: Deze gebruiker heeft de uitnodiging om lid te worden van Loomio niet geaccepteerd en ontvangt geen verdere meldingen totdat hij dit wel doet group_form: search_placeholder: Zoek naar mensen... modal_title: Selecteer groepsleden @@ -1795,6 +1797,9 @@ nl_NL: subgroups_panel: search_subgroups_of_name: Doorzoek subgroepen van %{name} group_without_subgroups: "%{name} zonder subgroepen" + need_a_space_for_your_team: Heeft u een break-outruimte nodig voor uw team? + explainer: 'Subgroepen zijn besloten plekken waar teams binnen uw organisatie discussies kunnen voeren en beslissingen kunnen nemen. Inhoud in subgroepen is privé voor de rest van de organisatie. Voorbeelden van subgroepen: Bestuur, Aanwervingsbesluiten of Projectteam' + upgrade: Om een subgroep te starten, moet je je Loomio-abonnement upgraden. poll_common_action_panel: anonymous: Stemmen zijn anoniem unable_to_vote: Je bent niet uitgenodigd om in te stemmen in deze %{poll_type}. @@ -2640,3 +2645,21 @@ nl_NL: audio_transcript: 'Audiotranscript: %{text}' why_type_when_you_can_talk: Waarom typen als je kunt praten? Stuur een spraakopname transcript_included: Een transcriptie van de opname wordt aan uw bericht toegevoegd + start_trial: + title: Start een gratis proefperiode van Loomio + intro: Bedankt voor uw interesse in Loomio. We bieden u graag een gratis proefperiode van %{day} dagen aan, zodat u kunt zien of Loomio goed bij uw organisatie past. + lets_get_started: Laten we beginnen! + your_name: Uw naam + your_email: Jouw email + how_would_you_like_to_use_loomio: Hoe zou jij Loomio willen inzetten in jouw organisatie? + newsletter_intro: Wilt u zich abonneren op onze nieuwsbrief? + newsletter_description: Blijf op de hoogte van nieuwe functies en inspirerende verhalen over hoe Loomio door organisaties over de hele wereld wordt gebruikt + subscribe_to_newsletter: Abonneer u op de Loomio-nieuwsbrief + form_incomplete: Vul alle velden van het formulier in om door te gaan + success: Succes! + taken_first_step: U heeft de eerste stap gezet naar gezamenlijke besluitvorming met Loomio. + account_created_for_you: We hebben een gebruikersaccount aangemaakt voor %{email} en een groep op Loomio. + please_sign_in_to_continue: Log alstublieft in om verder te gaan. + please_complete_this_field: Vul dit veld in + please_enter_a_valid_email_address: Gelieve een geldig e-mailadres in te geven + please_accept_the_terms: Accepteer alstublieft de voorwaarden diff --git a/config/locales/client.pl.yml b/config/locales/client.pl.yml index 1035a468338..162583a4fe8 100644 --- a/config/locales/client.pl.yml +++ b/config/locales/client.pl.yml @@ -814,6 +814,8 @@ pl: thread_admin: Administrator wątku last_read_at: Ostatnio wyświetlono %{time} has_not_read_thread: Jeszcze nie zobaczył/a wątku + has_not_joined_yet: Jeszcze nie dołączył + has_not_joined_yet_hint: Ten użytkownik nie zaakceptował zaproszenia do dołączenia do Loomio i nie będzie otrzymywać dalszych powiadomień, dopóki tego nie zrobi group_form: search_placeholder: Szukaj ludzi... modal_title: Wybierz osoby do tej grupy @@ -1812,6 +1814,9 @@ pl: subgroups_panel: search_subgroups_of_name: Szukaj podgrup w %{name} group_without_subgroups: "%{name} bez podgrup" + need_a_space_for_your_team: Potrzebujesz miejsca do odpoczynku dla swojego zespołu? + explainer: 'Podgrupy to prywatne miejsca, w których zespoły w organizacji mogą prowadzić dyskusje i podejmować decyzje. Treść w podgrupach jest prywatna i niedostępna dla reszty organizacji. Przykłady podgrup: Zarząd, Decyzje o zatrudnieniu lub Zespół projektowy' + upgrade: Aby założyć podgrupę, musisz zaktualizować swoją subskrypcję Loomio. poll_common_action_panel: anonymous: Głosy są anonimowe unable_to_vote: Nie zostałeś zaproszony do głosowania w %{poll_type} @@ -2640,3 +2645,21 @@ pl: audio_transcript: 'Transkrypcja audio: %{text}' why_type_when_you_can_talk: Po co pisać, skoro można rozmawiać? Wyślij nagranie głosowe transcript_included: Transkrypcja nagrania zostanie dołączona do Twojej wiadomości + start_trial: + title: Rozpocznij bezpłatny okres próbny Loomio + intro: Dziękujemy za zainteresowanie Loomio. Z przyjemnością oferujemy Ci %{day}-dniowy bezpłatny okres próbny, dzięki któremu możesz sprawdzić, czy Loomio jest dobrym rozwiązaniem dla Twojej organizacji. + lets_get_started: Zacznijmy! + your_name: Twoje imię + your_email: Twój email + how_would_you_like_to_use_loomio: Jak chciałbyś używać Loomio w swojej organizacji? + newsletter_intro: Chcesz zapisać się do naszego newslettera? + newsletter_description: Bądź na bieżąco z nowymi funkcjami i inspirującymi historiami o tym, jak Loomio jest wykorzystywane przez organizacje na całym świecie + subscribe_to_newsletter: Zapisz się do newslettera Loomio + form_incomplete: Aby kontynuować, wypełnij wszystkie pola formularza + success: Powodzenie! + taken_first_step: Zrobiłeś pierwszy krok w kierunku wspólnego podejmowania decyzji z Loomio. + account_created_for_you: Stworzyliśmy konto użytkownika dla %{email} i grupę na Loomio. + please_sign_in_to_continue: Zaloguj się, aby kontynuować. + please_complete_this_field: Proszę wypełnić to pole + please_enter_a_valid_email_address: Proszę wpisać aktualny adres e-mail + please_accept_the_terms: Proszę zaakceptować warunki diff --git a/config/locales/client.pt_BR.yml b/config/locales/client.pt_BR.yml index 41f788e502d..67fc00d4cf3 100644 --- a/config/locales/client.pt_BR.yml +++ b/config/locales/client.pt_BR.yml @@ -843,6 +843,8 @@ pt_BR: thread_admin: Administrador do tópico last_read_at: Última visualização %{time} has_not_read_thread: Não visualizou o tópico + has_not_joined_yet: Ainda não aderiu + has_not_joined_yet_hint: Este usuário não aceitou o convite para ingressar no Loomio e não receberá mais notificações até que o faça group_form: search_placeholder: Buscar pessoas… modal_title: Selecionar membros do grupo @@ -1851,6 +1853,9 @@ pt_BR: subgroups_panel: search_subgroups_of_name: Buscar nos subgrupos de %{name} group_without_subgroups: "%{name} sem subgrupos" + need_a_space_for_your_team: Precisa de um espaço de descanso para sua equipe? + explainer: 'Subgrupos são locais privados onde as equipes da sua organização podem discutir e tomar decisões. O conteúdo dos subgrupos é privado do resto da organização. Exemplos de subgrupos: Diretoria, Decisões de contratação ou Equipe de projeto' + upgrade: Para iniciar um subgrupo, você precisará atualizar sua assinatura do Loomio. poll_common_action_panel: from_the_thread: Do modelo de tópico from_the_group: Do grupo @@ -2679,3 +2684,21 @@ pt_BR: audio_transcript: 'Transcrição de áudio: %{text}' why_type_when_you_can_talk: Por que digitar quando você pode falar? Envie uma gravação de voz transcript_included: Uma transcrição da gravação será anexada à sua mensagem + start_trial: + title: Comece uma avaliação gratuita do Loomio + intro: Obrigado pelo seu interesse no Loomio. Temos o prazer de oferecer a você um teste gratuito de %{day} dias para que você possa ver se o Loomio é adequado para sua organização. + lets_get_started: Vamos começar! + your_name: Seu nome + your_email: Seu email + how_would_you_like_to_use_loomio: Você gostaria de usar o Loomio em sua organização? + newsletter_intro: Gostaria de assinar a nossa newsletter? + newsletter_description: Mantenha-se atualizado sobre novos recursos e histórias inspiradoras de como o Loomio está sendo usado por organizações em todo o mundo + subscribe_to_newsletter: Assine a newsletter do Loomio + form_incomplete: Preencha todos os campos do formulário para continuar + success: Sucesso! + taken_first_step: Você deu o primeiro passo para a tomada de decisões colaborativas com o Loomio. + account_created_for_you: Criamos uma conta de usuário para %{email} e um grupo no Loomio. + please_sign_in_to_continue: Faça login para continuar. + please_complete_this_field: Por favor preencha este campo + please_enter_a_valid_email_address: Por favor insira um endereço de e-mail válido + please_accept_the_terms: Por favor, aceite os termos diff --git a/config/locales/client.ro.yml b/config/locales/client.ro.yml index 46440b23d45..d990c87d4b9 100644 --- a/config/locales/client.ro.yml +++ b/config/locales/client.ro.yml @@ -729,6 +729,8 @@ ro: thread_admin: Admin subiect last_read_at: Ultima vizualizare la %{time} has_not_read_thread: Nu a văzut firul + has_not_joined_yet: Nu s-a alăturat încă + has_not_joined_yet_hint: Acest utilizator nu și-a acceptat invitația de a se alătura Loomio și nu va mai primi notificări până nu o va face group_form: search_placeholder: Cauta oameni... modal_title: Selectați membrii grupului @@ -2142,6 +2144,9 @@ ro: subgroups_panel: search_subgroups_of_name: Căutați subgrupuri de %{name} group_without_subgroups: "%{name} fără subgrupuri" + need_a_space_for_your_team: Ai nevoie de un spațiu de relaxare pentru echipa ta? + explainer: 'Subgrupurile sunt locuri private în care echipele din cadrul organizației dvs. pot avea discuții și pot lua decizii. Conținutul din subgrupuri este privat de restul organizației. Exemple de subgrupuri: Consiliu, decizii de angajare sau echipa de proiect' + upgrade: Pentru a începe un subgrup, va trebui să vă actualizați abonamentul Loomio. poll_common_action_panel: from_the_thread: Din șablonul firului from_the_group: Din grup @@ -2552,3 +2557,21 @@ ro: privacy_policy: Politica de confidențialitate terms_of_service: Termenii serviciului front_page: Prima pagina + start_trial: + title: Începeți o încercare gratuită a Loomio + intro: Vă mulțumim pentru interesul manifestat față de Loomio. Suntem încântați să vă oferim o perioadă de încercare gratuită de %{day} zile, astfel încât să puteți vedea dacă Loomio este potrivit pentru organizația dvs. + lets_get_started: Să începem! + your_name: Numele dumneavoastră + your_email: Email-ul tau + how_would_you_like_to_use_loomio: Cum ați dori să utilizați Loomio în organizația dvs.? + newsletter_intro: Doriți să vă abonați la newsletter-ul nostru? + newsletter_description: Rămâneți la curent cu noile funcții și poveștile inspiratoare despre modul în care Loomio este folosit de organizații din întreaga lume + subscribe_to_newsletter: Abonați-vă la newsletter-ul Loomio + form_incomplete: Vă rugăm să completați toate câmpurile din formular pentru a continua + success: Succes! + taken_first_step: Ai făcut primul pas către luarea deciziilor în colaborare cu Loomio. + account_created_for_you: Am creat un cont de utilizator pentru %{email} și un grup pe Loomio. + please_sign_in_to_continue: Vă rugăm să vă conectați pentru a continua. + please_complete_this_field: Vă rugăm să completați acest câmp + please_enter_a_valid_email_address: Vă rugăm să introduceți o adresă de email validă + please_accept_the_terms: Vă rugăm să acceptați termenii diff --git a/config/locales/client.ru.yml b/config/locales/client.ru.yml index 2fa487aaf11..1bd8946ac23 100644 --- a/config/locales/client.ru.yml +++ b/config/locales/client.ru.yml @@ -757,6 +757,8 @@ ru: thread_admin: Администратор темы last_read_at: 'Последний просмотр: %{time}' has_not_read_thread: Не просматривал тему + has_not_joined_yet: Еще не присоединился + has_not_joined_yet_hint: Этот пользователь не принял приглашение присоединиться к Loomio и не будет получать дальнейших уведомлений, пока не примет это. group_form: search_placeholder: Ищите людей... modal_title: Выберите участников группы @@ -2159,6 +2161,9 @@ ru: subgroups_panel: search_subgroups_of_name: Поиск в подгруппах %{name} group_without_subgroups: "%{name} без подгрупп" + need_a_space_for_your_team: Вам нужно место для отдыха для вашей команды? + explainer: 'Подгруппы — это частные места, где команды внутри вашей организации могут обсуждать и принимать решения. Содержимое в подгруппах является конфиденциальным для остальной части организации. Примеры подгрупп: Совет директоров, Решения о найме или Команда проекта.' + upgrade: Чтобы создать подгруппу, вам необходимо обновить подписку Loomio. poll_common_action_panel: from_the_thread: Из шаблона темы from_the_group: Из группы @@ -2547,3 +2552,21 @@ ru: event_removed: Удалено из темы add_poll_to_thread_modal: success: Успех, %{pollType} добавлен в тему! + start_trial: + title: Начать бесплатную пробную версию Loomio + intro: Благодарим вас за интерес к Лумио. Мы рады предложить вам бесплатную пробную версию на %{day} дня, чтобы вы могли убедиться, подходит ли Loomio для вашей организации. + lets_get_started: Давайте начнем! + your_name: Ваше имя + your_email: Ваш адрес электронной почты + how_would_you_like_to_use_loomio: Как бы вы хотели использовать Loomio в своей организации? + newsletter_intro: Хотите подписаться на нашу рассылку? + newsletter_description: Будьте в курсе новых функций и вдохновляющих историй о том, как Loomio используется организациями по всему миру. + subscribe_to_newsletter: Подпишитесь на рассылку новостей Loomio + form_incomplete: Пожалуйста, заполните все поля формы, чтобы продолжить + success: Успех! + taken_first_step: Вы сделали первый шаг к совместному принятию решений с Loomio. + account_created_for_you: Мы создали учетную запись пользователя для %{email} и группу в Loomio. + please_sign_in_to_continue: Пожалуйста, войдите, чтобы продолжить. + please_complete_this_field: Пожалуйста, заполните это поле + please_enter_a_valid_email_address: Пожалуйста, введите действительный адрес электронной почты + please_accept_the_terms: Пожалуйста, примите условия diff --git a/config/locales/client.sl.yml b/config/locales/client.sl.yml index 4637970b6b5..df8eeaac236 100644 --- a/config/locales/client.sl.yml +++ b/config/locales/client.sl.yml @@ -693,6 +693,8 @@ sl: thread_admin: Skrbnik teme last_read_at: Zadnji ogled %{time} has_not_read_thread: Ni si ogledal niti + has_not_joined_yet: Se še ni pridružil + has_not_joined_yet_hint: Ta uporabnik ni sprejel njihovega povabila, da se pridruži Loomio, in ne bo prejel nadaljnjih obvestil, dokler tega ne stori flash: success: "%{count} poslanih obvestil" action_dock: @@ -2120,6 +2122,9 @@ sl: subgroups_panel: search_subgroups_of_name: Išči podskupine %{name} group_without_subgroups: "%{name} brez podskupin" + need_a_space_for_your_team: Potrebujete prostor za oddih za svojo ekipo? + explainer: 'Podskupine so zasebna mesta, kjer lahko ekipe v vaši organizaciji razpravljajo in sprejemajo odločitve. Vsebina v podskupinah je zasebna za preostalo organizacijo. Primeri podskupin: odbor, odločitve o zaposlovanju ali projektna skupina' + upgrade: Če želite ustanoviti podskupino, boste morali nadgraditi svojo naročnino na Loomio. poll_common_action_panel: from_the_thread: Iz predloge niti from_the_group: Iz skupine @@ -2537,3 +2542,21 @@ sl: privacy_policy: Politika zasebnosti terms_of_service: Pogoji storitve front_page: Prednja stran + start_trial: + title: Začnite brezplačno preskusno različico Loomio + intro: Hvala za vaše zanimanje za Loomio. Z veseljem vam ponujamo %{day}-dnevno brezplačno preskusno različico, da boste lahko videli, ali je Loomio primeren za vašo organizacijo. + lets_get_started: Začnimo! + your_name: Tvoje ime + your_email: Vaš e-poštni naslov + how_would_you_like_to_use_loomio: Kako želite uporabljati Loomio v vaši organizaciji? + newsletter_intro: Bi se želeli naročiti na naše novice? + newsletter_description: Bodite na tekočem z novimi funkcijami in navdihujočimi zgodbami o tem, kako organizacije po vsem svetu uporabljajo Loomio + subscribe_to_newsletter: Naročite se na glasilo Loomio + form_incomplete: Za nadaljevanje izpolnite vsa polja na obrazcu + success: uspeh! + taken_first_step: Z Loomio ste naredili prvi korak k skupnemu odločanju. + account_created_for_you: Ustvarili smo uporabniški račun za %{email} in skupino na Loomio. + please_sign_in_to_continue: Za nadaljevanje se prijavite. + please_complete_this_field: Izpolnite to polje + please_enter_a_valid_email_address: Vnesite veljaven elektronski naslov + please_accept_the_terms: Sprejmite pogoje diff --git a/config/locales/client.sv.yml b/config/locales/client.sv.yml index b20e80a4e41..2e286a28a60 100644 --- a/config/locales/client.sv.yml +++ b/config/locales/client.sv.yml @@ -715,6 +715,8 @@ sv: thread_admin: Trådadmin last_read_at: Senast visade %{time} has_not_read_thread: Har inte sett tråden + has_not_joined_yet: Har inte gått med ännu + has_not_joined_yet_hint: Den här användaren har inte accepterat sin inbjudan att gå med i Loomio och kommer inte att få ytterligare meddelanden förrän de gör det group_form: search_placeholder: Sök efter personer... modal_title: Välj gruppmedlemmar @@ -2112,6 +2114,9 @@ sv: subgroups_panel: search_subgroups_of_name: Sök i undergrupper av %{name} group_without_subgroups: "%{name} utan undergrupper" + need_a_space_for_your_team: Behöver du ett break-out-utrymme för ditt team? + explainer: 'Undergrupper är privata platser där team inom din organisation kan föra diskussioner och fatta beslut. Innehåll i undergrupper är privat från resten av organisationen. Exempel på undergrupper: Styrelse, Anställningsbeslut eller Projektteam' + upgrade: För att starta en undergrupp måste du uppgradera din Loomio-prenumeration. poll_common_action_panel: from_the_thread: Från trådmallen from_the_group: Från gruppen @@ -2537,3 +2542,21 @@ sv: privacy_policy: Integritetspolicy terms_of_service: Användarvillkor front_page: Framsida + start_trial: + title: Starta en gratis provperiod av Loomio + intro: Tack för ditt intresse för Loomio. Vi är glada över att kunna erbjuda dig en %{day}-dagars kostnadsfri provperiod så att du kan se om Loomio passar din organisation. + lets_get_started: Låt oss börja! + your_name: Ditt namn + your_email: Din email + how_would_you_like_to_use_loomio: Hur skulle du vilja använda Loomio i din organisation? + newsletter_intro: Vill du prenumerera på vårt nyhetsbrev? + newsletter_description: Håll dig uppdaterad om nya funktioner och inspirerande berättelser om hur Loomio används av organisationer runt om i världen + subscribe_to_newsletter: Prenumerera på Loomios nyhetsbrev + form_incomplete: Fyll i alla fält på formuläret för att fortsätta + success: Framgång! + taken_first_step: Du har tagit det första steget mot beslutsfattande i samarbete med Loomio. + account_created_for_you: Vi har skapat ett användarkonto för %{email} och en grupp på Loomio. + please_sign_in_to_continue: Logga in för att fortsätta. + please_complete_this_field: Fyll i detta fält + please_enter_a_valid_email_address: Ange en giltig e-postadress + please_accept_the_terms: Vänligen acceptera villkoren diff --git a/config/locales/client.tr.yml b/config/locales/client.tr.yml index b9034e6d3e7..4a0eed62c25 100644 --- a/config/locales/client.tr.yml +++ b/config/locales/client.tr.yml @@ -736,6 +736,8 @@ tr: thread_admin: Konu yöneticisi last_read_at: Son görüntülenen %{time} has_not_read_thread: Konuyu görüntülemedi + has_not_joined_yet: Henüz katılmadı + has_not_joined_yet_hint: Bu kullanıcı, Loomio'ya katılma davetini kabul etmemiştir ve kabul edene kadar başka bildirim almayacaktır. group_form: search_placeholder: İnsanları arayın... modal_title: Grup üyelerini seçin @@ -2124,6 +2126,9 @@ tr: subgroups_panel: search_subgroups_of_name: "%{name} alt gruplarını ara" group_without_subgroups: Alt grupları olmayan %{name} + need_a_space_for_your_team: Ekibiniz için bir mola alanına mı ihtiyacınız var? + explainer: 'Alt gruplar, kuruluşunuzdaki ekiplerin tartışabileceği ve kararlar alabileceği özel yerlerdir. Alt gruplardaki içerik kuruluşun geri kalanından özeldir. Alt gruplara örnekler: Yönetim Kurulu, İşe alma kararları veya Proje ekibi' + upgrade: Bir alt grup başlatmak için Loomio aboneliğinizi yükseltmeniz gerekir. poll_common_action_panel: from_the_thread: Konu şablonundan from_the_group: Gruptan @@ -2554,3 +2559,21 @@ tr: privacy_policy: Gizlilik Politikası terms_of_service: Kullanım Şartları front_page: Ön Sayfa + start_trial: + title: Loomio'nun ücretsiz deneme sürümünü başlatın + intro: Loomio'ya gösterdiğiniz ilgi için teşekkür ederiz. Loomio'nun kuruluşunuza uygun olup olmadığını görebilmeniz için size %{day} günlük ücretsiz deneme olanağı sunmaktan mutluluk duyuyoruz. + lets_get_started: Başlayalım! + your_name: Adınız + your_email: E-posta adresiniz + how_would_you_like_to_use_loomio: Kuruluşunuzda Loomio'yu nasıl kullanmak istersiniz? + newsletter_intro: Bizim bültenimize kaydolmak ister miydiniz? + newsletter_description: Loomio'nun dünya çapındaki kuruluşlar tarafından nasıl kullanıldığına dair yeni özellikler ve ilham verici hikayeler hakkında güncel kalın + subscribe_to_newsletter: Loomio bültenine abone olun + form_incomplete: Devam etmek için lütfen formdaki tüm alanları doldurun + success: Başarı! + taken_first_step: Loomio ile işbirliğine dayalı karar alma yolunda ilk adımı attınız. + account_created_for_you: "%{email} için bir kullanıcı hesabı ve Loomio'da bir grup oluşturduk." + please_sign_in_to_continue: Devam etmek için giriş yapın. + please_complete_this_field: Lütfen bu alanı doldurun + please_enter_a_valid_email_address: Geçerli bir e + please_accept_the_terms: Lütfen şartları kabul edin diff --git a/config/locales/client.uk.yml b/config/locales/client.uk.yml index cfbd7f797e3..57c74acb4a2 100644 --- a/config/locales/client.uk.yml +++ b/config/locales/client.uk.yml @@ -835,6 +835,8 @@ uk: thread_admin: Адміністратор теми last_read_at: Останній перегляд %{time} has_not_read_thread: Не переглянув тему + has_not_joined_yet: Ще не приєднався + has_not_joined_yet_hint: Цей користувач не прийняв запрошення приєднатися до Loomio і не отримуватиме подальших сповіщень, доки не прийме group_form: search_placeholder: Шукати людину... modal_title: Вибрати учасників групи @@ -1819,6 +1821,9 @@ uk: subgroups_panel: search_subgroups_of_name: Шукати підгрупи у %{name} group_without_subgroups: "%{name} без підгруп" + need_a_space_for_your_team: Потрібен простір для відпочинку для вашої команди? + explainer: 'Підгрупи – це приватні місця, де команди у вашій організації можуть обговорювати та приймати рішення. Вміст у підгрупах є приватним для решти організації. Приклади підгруп: Правління, Рішення про прийом на роботу або Команда проекту' + upgrade: Щоб створити підгрупу, вам потрібно оновити підписку на Loomio. poll_common_action_panel: anonymous: Анонімне голосування unable_to_vote: Вас не запросили голосувати в %{poll_type}. @@ -2647,3 +2652,21 @@ uk: audio_transcript: 'Стенограма аудіо: %{text}' why_type_when_you_can_talk: Навіщо друкувати, коли можна говорити? Надіслати голосовий запис transcript_included: Стенограму запису буде додано до вашого повідомлення + start_trial: + title: Почніть безкоштовну пробну версію Loomio + intro: Дякуємо за інтерес до Loomio. Ми раді запропонувати вам %{day}-денну безкоштовну пробну версію, щоб ви могли перевірити, чи Loomio добре підходить для вашої організації. + lets_get_started: Давайте розпочнемо! + your_name: Твоє ім'я + your_email: Ваша електронна адреса + how_would_you_like_to_use_loomio: Як би ви хотіли використовувати Loomio у своїй організації? + newsletter_intro: Бажаєте підписатися на нашу розсилку? + newsletter_description: Будьте в курсі нових функцій і надихаючих історій про те, як Loomio використовують організації по всьому світу + subscribe_to_newsletter: Підпишіться на розсилку новин Loomio + form_incomplete: Щоб продовжити, заповніть усі поля у формі + success: Успіх! + taken_first_step: Ви зробили перший крок до спільного прийняття рішень із Loomio. + account_created_for_you: Ми створили обліковий запис користувача для %{email} і групу на Loomio. + please_sign_in_to_continue: Увійдіть, щоб продовжити. + please_complete_this_field: Будь ласка, заповніть це поле + please_enter_a_valid_email_address: Будь ласка, введіть дійсну адресу електронної пошти + please_accept_the_terms: Будь ласка, прийміть умови diff --git a/config/locales/client.zh_TW.yml b/config/locales/client.zh_TW.yml index d24fa2a696f..edf2f2a3e85 100644 --- a/config/locales/client.zh_TW.yml +++ b/config/locales/client.zh_TW.yml @@ -840,6 +840,8 @@ zh_TW: thread_admin: 討論串管理員 last_read_at: 最後檢視 %{time} has_not_read_thread: 尚未檢視討論串 + has_not_joined_yet: 尚未加入 + has_not_joined_yet_hint: 該用戶尚未接受加入 Loomio 的邀請,並且在接受之前不會收到進一步的通知 group_form: search_placeholder: 搜尋夥伴…… modal_title: 選取群組成員 @@ -1825,6 +1827,9 @@ zh_TW: subgroups_panel: search_subgroups_of_name: 搜尋 %{name} 的子群組 group_without_subgroups: "%{name} 無子群組" + need_a_space_for_your_team: 您的團隊需要一個休息空間嗎? + explainer: 子組是組織內的團隊可以進行討論和決策的私人場所。子組中的內容對於組織的其他部分來說是私有的。子群組範例:董事會、招募決策或專案團隊 + upgrade: 要建立子組,您需要升級您的 Loomio 訂閱。 poll_common_action_panel: anonymous: 匿名投票 results_hidden_until_closed: 投票結束後將顯示結果 @@ -2602,3 +2607,21 @@ zh_TW: accept_prompt: 為什麼自願參加這個活動? decline_meaning: 我無法參加 decline_prompt: 有什麼想說的嗎? + start_trial: + title: 開始免費試用 Loomio + intro: 感謝您對 Loomio 的興趣。我們很高興為您提供 %{day} 天的免費試用,以便您了解 Loomio 是否適合您的組織。 + lets_get_started: 讓我們開始吧! + your_name: 你的名字 + your_email: 你的郵件 + how_would_you_like_to_use_loomio: 您希望如何在您的組織中使用 Loomio? + newsletter_intro: 您想訂閱我們的電子報嗎? + newsletter_description: 隨時了解世界各地的組織如何使用 Loomio 的新功能和鼓舞人心的故事 + subscribe_to_newsletter: 訂閱 Loomio 時事通訊 + form_incomplete: 請填寫表格上的所有欄位以繼續 + success: 成功! + taken_first_step: 您已經踏出了與 Loomio 協作決策的第一步。 + account_created_for_you: 我們已為 %{email} 建立了一個使用者帳戶,並在 Loomio 上建立了一個群組。 + please_sign_in_to_continue: 請登入以繼續。 + please_complete_this_field: 請填寫此字段 + please_enter_a_valid_email_address: 請輸入有效的電子郵件地址 + please_accept_the_terms: 請接受條款 diff --git a/config/locales/server.ca.yml b/config/locales/server.ca.yml index ed982dbd1db..42a1bdf0bc9 100644 --- a/config/locales/server.ca.yml +++ b/config/locales/server.ca.yml @@ -335,3 +335,8 @@ ca: event_mailer: received_email: explaination_html: "

Heu rebut aquest correu electrònic perquè sou administrador del grup Loomio: %{group}.

El grup ha rebut un correu electrònic d'una adreça electrònica no reconeguda.

Si el missatge és d'un membre del grup, reviseu el correu electrònic i seleccioneu el membre.

Si el missatge no és desitjat, podeu bloquejar qualsevol altre correu electrònic des d'aquesta adreça.

" + unauthorized: + manage: + all: No està autoritzat a %{action} %{subject}. + add_guests: + all: Heu d'actualitzar la vostra subscripció a Loomio per afegir convidats al vostre %{subject}. Alternativament, podeu convidar-los a ser membres del vostre grup. diff --git a/config/locales/server.da.yml b/config/locales/server.da.yml index 0824a5ade37..911d948ac5a 100644 --- a/config/locales/server.da.yml +++ b/config/locales/server.da.yml @@ -347,3 +347,8 @@ da: event_mailer: received_email: explaination_html: "

Du modtager denne e-mail, fordi du er administrator for Loomio-gruppen: %{group}.

Gruppen har modtaget en e-mail fra en ikke-genkendt e-mailadresse.

Hvis beskeden er fra et medlem af gruppen, skal du gennemgå e-mailen og vælge medlemmet.

Hvis beskeden er uønsket, kan du blokere yderligere e-mails fra den adresse.

" + unauthorized: + manage: + all: Ikke autoriseret til %{action} %{subject}. + add_guests: + all: Du skal opgradere dit Loomio-abonnement for at tilføje gæster til dit %{subject}. Alternativt kan du invitere dem til at være medlemmer af din gruppe. diff --git a/config/locales/server.de.yml b/config/locales/server.de.yml index 95de8260c47..2d347875389 100644 --- a/config/locales/server.de.yml +++ b/config/locales/server.de.yml @@ -436,3 +436,8 @@ de: event_mailer: received_email: explaination_html: "

Sie erhalten diese E-Mail, weil Sie Administrator der Loomio-Gruppe sind: %{group}.

Die Gruppe hat eine E-Mail von einer unbekannten E-Mail-Adresse erhalten.

Wenn die Nachricht von einem Mitglied der Gruppe stammt, überprüfen Sie bitte die E-Mail und wählen Sie das Mitglied aus.

Wenn die Nachricht unerwünscht ist, können Sie alle weiteren E-Mails von dieser Adresse blockieren.

" + unauthorized: + manage: + all: Nicht autorisiert zum %{action} %{subject}. + add_guests: + all: Sie müssen Ihr Loomio-Abonnement aktualisieren, um Gäste zu Ihrem %{subject} hinzuzufügen. Alternativ können Sie sie einladen, Mitglieder Ihrer Gruppe zu werden. diff --git a/config/locales/server.el.yml b/config/locales/server.el.yml index dc1f66b44fc..c379c6463f7 100644 --- a/config/locales/server.el.yml +++ b/config/locales/server.el.yml @@ -333,3 +333,8 @@ el: event_mailer: received_email: explaination_html: "

Λαμβάνετε αυτό το μήνυμα ηλεκτρονικού ταχυδρομείου επειδή είστε διαχειριστής της ομάδας Loomio: %{group}.

Η ομάδα έχει λάβει ένα μήνυμα ηλεκτρονικού ταχυδρομείου από μια μη αναγνωρισμένη διεύθυνση ηλεκτρονικού ταχυδρομείου.

Εάν το μήνυμα προέρχεται από ένα μέλος της ομάδας, ελέγξτε το email και επιλέξτε το μέλος.

Εάν το μήνυμα είναι ανεπιθύμητο, μπορείτε να αποκλείσετε οποιοδήποτε περαιτέρω email από αυτήν τη διεύθυνση.

" + unauthorized: + manage: + all: Δεν είναι εξουσιοδοτημένο για %{action} %{subject}. + add_guests: + all: Πρέπει να αναβαθμίσετε τη συνδρομή σας στο Loomio για να προσθέσετε επισκέπτες στο %{subject} σας. Εναλλακτικά, μπορείτε να τους προσκαλέσετε να γίνουν μέλη της ομάδας σας. diff --git a/config/locales/server.en.yml b/config/locales/server.en.yml index 1e59295bf49..7d759191cb5 100644 --- a/config/locales/server.en.yml +++ b/config/locales/server.en.yml @@ -244,6 +244,11 @@ en: blank: can't be blank invalid: is not a valid value + unauthorized: + manage: + all: "Not authorized to %{action} %{subject}." + add_guests: + all: "You must upgrade your Loomio subscription to add guests to your %{subject}. Alternatively, you can invite them to be members of your group." errors: clear_cache: "Loading problem detected. Hold shift and press reload, or clear your browser cache." 400: diff --git a/config/locales/server.es.yml b/config/locales/server.es.yml index 585f1aacea4..630017466fb 100644 --- a/config/locales/server.es.yml +++ b/config/locales/server.es.yml @@ -434,3 +434,8 @@ es: event_mailer: received_email: explaination_html: "

Estás recibiendo este correo electrónico porque eres administrador del grupo Loomio: %{group}.

El grupo ha recibido un correo electrónico de una dirección de correo electrónico no reconocida.

Si el mensaje es de un miembro del grupo, revise el correo electrónico y seleccione el miembro.

Si el mensaje no es deseado, puede bloquear cualquier correo electrónico adicional de esa dirección.

" + unauthorized: + manage: + all: No autorizado para %{action} %{subject}. + add_guests: + all: Debes actualizar tu suscripción de Loomio para agregar invitados a tu %{subject}. Alternativamente, puedes invitarlos a ser miembros de tu grupo. diff --git a/config/locales/server.fi.yml b/config/locales/server.fi.yml index 90017891a5f..c6d62b210cd 100644 --- a/config/locales/server.fi.yml +++ b/config/locales/server.fi.yml @@ -331,3 +331,8 @@ fi: event_mailer: received_email: explaination_html: "

Sait tämän sähköpostin, koska olet järjestelmänvalvoja Loomio-ryhmässä: %{group}.

Ryhmä on saanut sähköpostin tuntemattomasta sähköpostiosoitteesta.

Jos viesti on ryhmän jäseneltä, tarkista sähköposti ja valitse jäsen.

Jos viesti on ei-toivottu, voit estää kaikki muut sähköpostit kyseisestä osoitteesta.

" + unauthorized: + manage: + all: Ei valtuutusta %{action} %{subject}. + add_guests: + all: Sinun on päivitettävä Loomio-tilauksesi, jotta voit lisätä vieraita %{subject}. Vaihtoehtoisesti voit kutsua heidät ryhmäsi jäseniksi. diff --git a/config/locales/server.fr.yml b/config/locales/server.fr.yml index 4cb7c12e679..20d7d056f04 100644 --- a/config/locales/server.fr.yml +++ b/config/locales/server.fr.yml @@ -434,3 +434,8 @@ fr: event_mailer: received_email: explaination_html: "

Vous recevez cet e-mail car vous êtes administrateur du groupe Loomio : %{group}.

Le groupe a reçu un e-mail provenant d'une adresse e-mail non reconnue.

Si le message provient d'un membre du groupe, veuillez consulter l'e-mail et sélectionner le membre.

Si le message n'est pas désiré, vous pouvez bloquer tout autre e-mail provenant de cette adresse.

" + unauthorized: + manage: + all: Non autorisé à %{action} %{subject}. + add_guests: + all: Vous devez mettre à niveau votre abonnement Loomio pour ajouter des invités à votre %{subject}. Alternativement, vous pouvez les inviter à devenir membres de votre groupe. diff --git a/config/locales/server.he.yml b/config/locales/server.he.yml index 66090d6d909..6472cb4c22a 100644 --- a/config/locales/server.he.yml +++ b/config/locales/server.he.yml @@ -353,3 +353,8 @@ he: event_mailer: received_email: explaination_html: '

אתה מקבל דוא"ל זה מכיוון שאתה מנהל של קבוצת Loomio: %{group}.

הקבוצה קיבלה אימייל מכתובת אימייל לא מזוהה.

אם ההודעה היא מחבר בקבוצה, אנא עיין באימייל ובחר את החבר.

אם ההודעה אינה רצויה, תוכל לחסום כל אימייל נוסף מכתובת זו.

' + unauthorized: + manage: + all: לא מורשה ל-%{action} %{subject}. + add_guests: + all: עליך לשדרג את מנוי Loomio שלך כדי להוסיף אורחים ל-%{subject} שלך. לחלופין, אתה יכול להזמין אותם להיות חברים בקבוצה שלך. diff --git a/config/locales/server.hr.yml b/config/locales/server.hr.yml index 96e3b106971..64c7571b50c 100644 --- a/config/locales/server.hr.yml +++ b/config/locales/server.hr.yml @@ -331,3 +331,8 @@ hr: event_mailer: received_email: explaination_html: "

Primili ste ovu e-poruku jer ste administrator za Loomio grupu: %{group}.

Grupa je primila e-poruku s neprepoznate adrese e-pošte.

Ako je poruka od člana grupe, pregledajte e-poštu i odaberite člana.

Ako je poruka neželjena, možete blokirati daljnju e-poštu s te adrese.

" + unauthorized: + manage: + all: Nije ovlašten za %{action} %{subject}. + add_guests: + all: Morate nadograditi svoju pretplatu na Loomio da biste dodali goste u svoj %{subject}. Alternativno, možete ih pozvati da budu članovi vaše grupe. diff --git a/config/locales/server.hu.yml b/config/locales/server.hu.yml index a49cab94e8d..49ecbb8702f 100644 --- a/config/locales/server.hu.yml +++ b/config/locales/server.hu.yml @@ -358,3 +358,8 @@ hu: event_mailer: received_email: explaination_html: "

Azért kapta ezt az e-mailt, mert Ön a(z) %{group} Loomio csoport adminisztrátora.

A csoport e-mailt kapott egy ismeretlen e-mail címről.

Ha az üzenet a csoport egyik tagjától származik, kérjük, tekintse át az e-mailt, és válassza ki a tagot.

Ha az üzenet nem kívánt, letilthatja az erről a címről érkező további e-maileket.

" + unauthorized: + manage: + all: 'Nincs jogosultság erre: %{action} %{subject}.' + add_guests: + all: Frissítenie kell Loomio-előfizetését, hogy vendégeket adhasson a %{subject}-hoz. Alternatív megoldásként meghívhatja őket, hogy legyenek a csoport tagjai. diff --git a/config/locales/server.it.yml b/config/locales/server.it.yml index 0ef913d6040..13b650107bf 100644 --- a/config/locales/server.it.yml +++ b/config/locales/server.it.yml @@ -385,3 +385,8 @@ it: event_mailer: received_email: explaination_html: "

Hai ricevuto questa email perché sei un amministratore del gruppo Loomio: %{group}.

Il gruppo ha ricevuto un'e-mail da un indirizzo e-mail non riconosciuto.

Se il messaggio proviene da un membro del gruppo, controlla l'e-mail e seleziona il membro.

Se il messaggio è indesiderato, puoi bloccare qualsiasi ulteriore email proveniente da quell'indirizzo.

" + unauthorized: + manage: + all: Non autorizzato a %{action} %{subject}. + add_guests: + all: Devi aggiornare il tuo abbonamento Loomio per aggiungere ospiti al tuo %{subject}. In alternativa, puoi invitarli a diventare membri del tuo gruppo. diff --git a/config/locales/server.nl_NL.yml b/config/locales/server.nl_NL.yml index 9c01d2d069b..f5f24ed20a2 100644 --- a/config/locales/server.nl_NL.yml +++ b/config/locales/server.nl_NL.yml @@ -428,3 +428,8 @@ nl_NL: event_mailer: received_email: explaination_html: "

Je ontvangt deze e-mail omdat je beheerder bent van de Loomio-groep: %{group}.

De groep heeft een e-mail ontvangen van een onbekend e-mailadres.

Als het bericht afkomstig is van een lid van de groep, bekijk dan de e-mail en selecteer het lid.

Als het bericht ongewenst is, kunt u verdere e-mail van dat adres blokkeren.

" + unauthorized: + manage: + all: Niet geautoriseerd voor %{action} %{subject}. + add_guests: + all: U moet uw Loomio-abonnement upgraden om gasten toe te voegen aan uw %{subject}. Als alternatief kunt u ze uitnodigen om lid te worden van uw groep. diff --git a/config/locales/server.pl.yml b/config/locales/server.pl.yml index 151715d583e..982411b84b8 100644 --- a/config/locales/server.pl.yml +++ b/config/locales/server.pl.yml @@ -429,3 +429,8 @@ pl: event_mailer: received_email: explaination_html: "

Otrzymujesz tego e-maila, ponieważ jesteś administratorem grupy Loomio: %{group}.

Grupa otrzymała wiadomość e-mail z nieznanego adresu e-mail.

Jeśli wiadomość pochodzi od członka grupy, przejrzyj wiadomość e-mail i wybierz członka.

Jeśli wiadomość jest niechciana, możesz zablokować dalsze wiadomości e-mail wysyłane z tego adresu.

" + unauthorized: + manage: + all: Brak uprawnień do %{action} %{subject}. + add_guests: + all: Musisz uaktualnić swoją subskrypcję Loomio, aby dodać gości do swojego %{subject}. Alternatywnie możesz zaprosić ich do członkostwa w swojej grupie. diff --git a/config/locales/server.pt_BR.yml b/config/locales/server.pt_BR.yml index 7c593e91c9b..13e44669f38 100644 --- a/config/locales/server.pt_BR.yml +++ b/config/locales/server.pt_BR.yml @@ -435,3 +435,8 @@ pt_BR: event_mailer: received_email: explaination_html: "

Você está recebendo este e-mail porque é administrador do grupo Loomio: %{group}.

O grupo recebeu um email de um endereço de email não reconhecido.

Se a mensagem for de um membro do grupo, revise o e-mail e selecione o membro.

Se a mensagem for indesejada, você poderá bloquear qualquer outro e-mail desse endereço.

" + unauthorized: + manage: + all: Não autorizado a %{action} %{subject}. + add_guests: + all: Você deve atualizar sua assinatura do Loomio para adicionar convidados ao seu %{subject}. Alternativamente, você pode convidá-los para serem membros do seu grupo. diff --git a/config/locales/server.ro.yml b/config/locales/server.ro.yml index 1bf2fccc885..eb37a7d0885 100644 --- a/config/locales/server.ro.yml +++ b/config/locales/server.ro.yml @@ -333,3 +333,8 @@ ro: event_mailer: received_email: explaination_html: "

Primiți acest e-mail deoarece sunteți administrator pentru grupul Loomio: %{group}.

Grupul a primit un e-mail de la o adresă de e-mail nerecunoscută.

Dacă mesajul este de la un membru al grupului, consultați e-mailul și selectați membrul.

Dacă mesajul este nedorit, puteți bloca orice e-mail suplimentar de la acea adresă.

" + unauthorized: + manage: + all: Neautorizat pentru %{action} %{subject}. + add_guests: + all: Trebuie să vă actualizați abonamentul Loomio pentru a adăuga invitați la %{subject}. Alternativ, îi puteți invita să fie membri ai grupului dvs. diff --git a/config/locales/server.ru.yml b/config/locales/server.ru.yml index 97bb06e6687..c93c71745b3 100644 --- a/config/locales/server.ru.yml +++ b/config/locales/server.ru.yml @@ -351,3 +351,8 @@ ru: event_mailer: received_email: explaination_html: "

Вы получили это письмо, потому что являетесь администратором группы Loomio: %{group}.

Группа получила электронное письмо с неизвестного адреса электронной почты.

Если сообщение пришло от члена группы, просмотрите электронное письмо и выберите участника.

Если сообщение нежелательно, вы можете заблокировать дальнейшую электронную почту с этого адреса.

" + unauthorized: + manage: + all: Не авторизован для %{action} %{subject}. + add_guests: + all: Вам необходимо обновить подписку Loomio, чтобы добавлять гостей в %{subject}. Кроме того, вы можете пригласить их стать членами вашей группы. diff --git a/config/locales/server.sl.yml b/config/locales/server.sl.yml index bfa909a7b86..062e0ee7a8d 100644 --- a/config/locales/server.sl.yml +++ b/config/locales/server.sl.yml @@ -331,3 +331,8 @@ sl: event_mailer: received_email: explaination_html: "

To e-pošto ste prejeli, ker ste skrbnik skupine Loomio: %{group}.

Skupina je prejela e-poštno sporočilo z neprepoznanega e-poštnega naslova.

Če je sporočilo poslal član skupine, preglejte e-pošto in izberite člana.

Če je sporočilo neželeno, lahko blokirate vsa nadaljnja e-poštna sporočila s tega naslova.

" + unauthorized: + manage: + all: Ni pooblaščen za %{action} %{subject}. + add_guests: + all: Morate nadgraditi svojo naročnino na Loomio, da dodate goste v svoj %{subject}. Lahko pa jih povabite, da postanejo člani vaše skupine. diff --git a/config/locales/server.sv.yml b/config/locales/server.sv.yml index 7c00f282f35..ba7269af9ea 100644 --- a/config/locales/server.sv.yml +++ b/config/locales/server.sv.yml @@ -333,3 +333,8 @@ sv: event_mailer: received_email: explaination_html: "

Du får det här e-postmeddelandet eftersom du är administratör för Loomio-gruppen: %{group}.

Gruppen har fått ett e-postmeddelande från en okänd e-postadress.

Om meddelandet kommer från en medlem i gruppen, vänligen granska e-postmeddelandet och välj medlem.

Om meddelandet är oönskat kan du blockera ytterligare e-postmeddelanden från den adressen.

" + unauthorized: + manage: + all: Inte behörig till %{action} %{subject}. + add_guests: + all: Du måste uppgradera din Loomio-prenumeration för att lägga till gäster till din %{subject}. Alternativt kan du bjuda in dem att bli medlemmar i din grupp. diff --git a/config/locales/server.tr.yml b/config/locales/server.tr.yml index 3229d19e84a..3e71f8ac099 100644 --- a/config/locales/server.tr.yml +++ b/config/locales/server.tr.yml @@ -333,3 +333,8 @@ tr: event_mailer: received_email: explaination_html: "

Bu e-postayı Loomio grubunun yöneticisi olduğunuz için alıyorsunuz: %{group}.

Grup tanınmayan bir e-posta adresinden bir e-posta aldı.

Mesaj grubun bir üyesinden geliyorsa lütfen e-postayı inceleyin ve üyeyi seçin.

Mesaj istenmeyense, bu adresten gelecek diğer e-postaları engelleyebilirsiniz.

" + unauthorized: + manage: + all: "%{action} %{subject} yapma yetkisi yok." + add_guests: + all: "%{subject}'inize misafir eklemek için Loomio aboneliğinizi yükseltmelisiniz. Alternatif olarak onları grubunuzun üyesi olmaya davet edebilirsiniz." diff --git a/config/locales/server.uk.yml b/config/locales/server.uk.yml index a5e91fa6b1b..a76753f8d7f 100644 --- a/config/locales/server.uk.yml +++ b/config/locales/server.uk.yml @@ -360,3 +360,8 @@ uk: event_mailer: received_email: explaination_html: "

Ви отримали цей електронний лист, оскільки ви є адміністратором групи Loomio: %{group}.

Група отримала електронний лист із нерозпізнаної електронної адреси.

Якщо повідомлення надійшло від члена групи, перегляньте електронний лист і виберіть учасника.

Якщо повідомлення небажане, ви можете заблокувати будь-яку подальшу електронну пошту з цієї адреси.

" + unauthorized: + manage: + all: Не авторизовано для %{action} %{subject}. + add_guests: + all: Ви повинні оновити підписку на Loomio, щоб додати гостей до %{subject}. Крім того, ви можете запросити їх стати членами вашої групи. diff --git a/config/locales/server.zh_TW.yml b/config/locales/server.zh_TW.yml index 55ae7a414a9..6185c762802 100644 --- a/config/locales/server.zh_TW.yml +++ b/config/locales/server.zh_TW.yml @@ -433,3 +433,8 @@ zh_TW: event_mailer: received_email: explaination_html: "

您收到這封電子郵件是因為您是 Loomio 群組的管理員:%{group}。

該小組收到了一封來自無法識別的電子郵件地址的電子郵件。

如果郵件來自群組成員,請查看電子郵件並選擇該成員。

如果您不需要該郵件,您可以封鎖來自該位址的任何其他電子郵件。

" + unauthorized: + manage: + all: 未獲得 %{action} %{subject} 的授權。 + add_guests: + all: 您必須升級您的 Loomio 訂閱才能將訪客新增至您的 %{subject}。或者,您可以邀請他們成為您小組的成員。 diff --git a/config/routes.rb b/config/routes.rb index 2d31467839a..d4c57e54d03 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -60,6 +60,7 @@ def dev_routes_for(namespace) end namespace :v1 do + resources :trials, only: [:create] resources :attachments, only: [:index, :destroy] resources :webhooks, only: [:create, :destroy, :index, :update] resources :chatbots, only: [:create, :destroy, :index, :update] do @@ -367,7 +368,7 @@ def dev_routes_for(namespace) get '/start_group', to: redirect('/try') - get 'try' => redirect("/g/new") + get 'try' => 'application#index', as: :start_trial get 'dashboard' => 'application#index', as: :dashboard get 'dashboard/:filter' => 'application#index' get 'inbox' => 'application#index', as: :inbox diff --git a/db/migrate/20240414211059_add_allow_subgroups_to_subscriptions.rb b/db/migrate/20240414211059_add_allow_subgroups_to_subscriptions.rb new file mode 100644 index 00000000000..46766764dc0 --- /dev/null +++ b/db/migrate/20240414211059_add_allow_subgroups_to_subscriptions.rb @@ -0,0 +1,5 @@ +class AddAllowSubgroupsToSubscriptions < ActiveRecord::Migration[7.0] + def change + add_column :subscriptions, :allow_subgroups, :boolean, default: true, null: false + end +end diff --git a/db/migrate/20240414225428_add_allow_guests_to_subscriptions.rb b/db/migrate/20240414225428_add_allow_guests_to_subscriptions.rb new file mode 100644 index 00000000000..98eb5b8b5c4 --- /dev/null +++ b/db/migrate/20240414225428_add_allow_guests_to_subscriptions.rb @@ -0,0 +1,5 @@ +class AddAllowGuestsToSubscriptions < ActiveRecord::Migration[7.0] + def change + add_column :subscriptions, :allow_guests, :boolean, default: true, null: false + end +end diff --git a/db/schema.rb b/db/schema.rb index 59f48ce3d8f..49ef243e2ed 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema[7.0].define(version: 2024_04_05_000007) do +ActiveRecord::Schema[7.0].define(version: 2024_04_14_225428) do # These are extensions that must be enabled in order to support this database enable_extension "citext" enable_extension "hstore" @@ -883,6 +883,8 @@ t.datetime "activated_at", precision: nil t.datetime "renews_at", precision: nil t.datetime "renewed_at", precision: nil + t.boolean "allow_subgroups", default: true, null: false + t.boolean "allow_guests", default: true, null: false t.index ["owner_id"], name: "index_subscriptions_on_owner_id" t.index ["plan"], name: "index_subscriptions_on_plan" end diff --git a/spec/controllers/api/v1/trials_controller_spec.rb b/spec/controllers/api/v1/trials_controller_spec.rb new file mode 100644 index 00000000000..815cd048e48 --- /dev/null +++ b/spec/controllers/api/v1/trials_controller_spec.rb @@ -0,0 +1,32 @@ +require 'rails_helper' + +describe API::V1::TrialsController do + describe "email does not exist" do + it "creates new user and group and sends login email" do + post :create, params: { + user_name: "Jimmy", + user_email: "jimmy@example.com", + group_name: "Jim group", + group_intention: "Make decisions", + group_category: "boards", + newsletter: true, + } + expect(response.status).to eq 200 + user = User.find_by(email: 'jimmy@example.com') + expect(user.name).to eq "Jimmy" + expect(user.email_newsletter).to be true + group = user.adminable_groups.first + expect(group.name).to eq "Jim group" + expect(group.handle).to eq "jim-group" + expect(group.description).to include "Make decisions" + expect(group.category).to eq "boards" + end + end + + # test email is unverified + # test email is verified + + # test newsletter bool + # test recaptcha? + +end diff --git a/vue/src/components/auth/form.vue b/vue/src/components/auth/form.vue index 450766f11ae..bf19f8a288e 100644 --- a/vue/src/components/auth/form.vue +++ b/vue/src/components/auth/form.vue @@ -52,14 +52,6 @@ export default { pendingIdentity() { return (AppConfig.pending_identity || {}); }, - - startDemo() { - return this.$route.path === '/try'; - }, - - startTrial() { - return AppConfig.features.app.trials && this.$route.path == '/g/new' - } } } @@ -74,8 +66,6 @@ v-card.auth-form v-spacer dismiss-modal-button(v-if='!preventClose') v-sheet - v-alert.ma-4(text outlined type="info" v-if="startDemo" v-t="'templates.demo_needs_user'") - v-alert.ma-4.mb-8(text outlined type="info" v-if="startTrial" v-t="'templates.trial_needs_user'") p.text-h5.text-center(v-if="pendingGroup" v-t="{path: 'auth_form.youre_invited', args: {group_name: pendingGroup.name}}") p.text-h5.text-center(v-if="pendingDiscussion" v-t="'auth_form.youre_invited_discussion'") p.text-h5.text-center(v-if="pendingPoll" v-t="'auth_form.youre_invited_poll'") diff --git a/vue/src/components/auth/modal.vue b/vue/src/components/auth/modal.vue index 374e0b8d773..0b43c94ba95 100644 --- a/vue/src/components/auth/modal.vue +++ b/vue/src/components/auth/modal.vue @@ -21,7 +21,7 @@ export default { return { siteName: AppConfig.theme.site_name, titleKey: 'auth_form.sign_in_to_loomio', - user: Records.users.build({createAccount: false}), + user: Records.users.build({createAccount: false, email: this.$route.query['user_email']}), isDisabled: false, pendingProviderIdentity: Session.providerIdentity() }; diff --git a/vue/src/components/common/flash.vue b/vue/src/components/common/flash.vue index b4e801c3156..1700e186a5e 100644 --- a/vue/src/components/common/flash.vue +++ b/vue/src/components/common/flash.vue @@ -39,7 +39,7 @@ v-snackbar.flash-root( span.flash-root__message( v-if="flash.text" role="status" - aria-live="assertive") + aria-live="assertive") {{flash.text}} v-progress-linear.mt-2(v-if="flash.level == 'wait'" :value="seconds") .flash-root__action(v-if="flash.actionFn") a(@click="flash.actionFn()", v-t="flash.action") diff --git a/vue/src/components/common/recipients_autocomplete.vue b/vue/src/components/common/recipients_autocomplete.vue index 666f54f446b..183bda63520 100644 --- a/vue/src/components/common/recipients_autocomplete.vue +++ b/vue/src/components/common/recipients_autocomplete.vue @@ -132,7 +132,6 @@ export default { let chain = Records.users.collection.chain(); chain = chain.find({id: {$in: difference(this.suggestedUserIds, this.excludedUserIds)}}); - chain = chain.find({emailVerified: true}); chain = chain.find({ $or: [ diff --git a/vue/src/components/demos/index.vue b/vue/src/components/demos/index.vue deleted file mode 100644 index 09d03e053bd..00000000000 --- a/vue/src/components/demos/index.vue +++ /dev/null @@ -1,95 +0,0 @@ - - - diff --git a/vue/src/components/discussion/form.vue b/vue/src/components/discussion/form.vue index 065973bf37e..b8d131db1be 100644 --- a/vue/src/components/discussion/form.vue +++ b/vue/src/components/discussion/form.vue @@ -90,7 +90,9 @@ export default { Flash.success(`discussion_form.messages.${actionName}`); this.$router.push(this.urlFor(discussion)); }); - }).catch(error => true); + }).catch( error => { + Flash.custom(error.error, 'error', 5000); + }); }, updateGroupItems() { diff --git a/vue/src/components/group/form.vue b/vue/src/components/group/form.vue index 968a27747a2..f2ce9542ec9 100644 --- a/vue/src/components/group/form.vue +++ b/vue/src/components/group/form.vue @@ -71,7 +71,9 @@ export default Flash.success(`group_form.messages.group_${this.actionName}`); EventBus.$emit('closeModal'); this.$router.push(`/g/${groupKey}`); - }).catch(error => true); + }).catch(error => { + Flash.custom(error.error, 'error', 5000); + }) }, diff --git a/vue/src/components/group/subgroups_panel.vue b/vue/src/components/group/subgroups_panel.vue index 01b47605136..3f7775e2fb6 100644 --- a/vue/src/components/group/subgroups_panel.vue +++ b/vue/src/components/group/subgroups_panel.vue @@ -3,6 +3,7 @@ import Records from '@/shared/services/records'; import Session from '@/shared/services/session'; import EventBus from '@/shared/services/event_bus'; import AbilityService from '@/shared/services/ability_service'; +import AppConfig from '@/shared/services/app_config'; import { debounce, some } from 'lodash-es'; import { mdiMagnify } from '@mdi/js'; @@ -12,7 +13,8 @@ export default return { mdiMagnify, group: null, - loading: true + loading: true, + upgradeUrl: AppConfig.baseUrl + 'upgrade' }; }, @@ -49,6 +51,9 @@ export default computed: { canCreateSubgroups() { return AbilityService.canCreateSubgroups(this.group); + }, + upgradeRequired() { + return !this.group.subscription.allow_subgroups; } }, @@ -97,9 +102,13 @@ div(v-if="group") v-text-field.mr-2(clearable hide-details solo :value="$route.query.q" @input="onQueryInput" :placeholder="$t('subgroups_panel.search_subgroups_of_name', {name: group.name})" :append-icon="mdiMagnify") v-btn.subgroups-card__start(color="primary" @click='startSubgroup()' v-if='canCreateSubgroups' v-t="'common.action.add_subgroup'") - v-card.group-subgroups-panel(outlined) - p.text-center.pa-4(v-if="!loading && !subgroups.length" v-t="'common.no_results_found'") - v-list(v-else avatar three-line) + v-alert(v-if="subgroups.length == 0" outlined color="primary") + p(v-t="'subgroups_panel.need_a_space_for_your_team'") + p(v-t="'subgroups_panel.explainer'") + p(v-if="upgradeRequired" v-html="$t('subgroups_panel.upgrade', {url: upgradeUrl})") + + v-card.group-subgroups-panel(outlined v-if="subgroups.length") + v-list(avatar three-line) v-list-item.subgroups-card__list-item(v-if="group.subgroups().length > 0" :to="urlFor(group)+'?subgroups=none'") v-list-item-avatar.subgroups-card__list-item-logo group-avatar(:group="group" :size="28") @@ -112,4 +121,5 @@ div(v-if="group") v-list-item-content v-list-item-title {{ group.name }} v-list-item-subtitle {{ stripDescription(group.description) }} + diff --git a/vue/src/components/poll/common/outcome_modal.vue b/vue/src/components/poll/common/outcome_modal.vue index 06f633264cd..0e6589a696f 100644 --- a/vue/src/components/poll/common/outcome_modal.vue +++ b/vue/src/components/poll/common/outcome_modal.vue @@ -77,7 +77,9 @@ export default { this.outcome.save().then(data => { Flash.success(`poll_common_outcome_form.outcome_${actionName}`); return this.closeModal(); - }).catch(error => true); + }).catch(error => { + Flash.custom(error.error, 'error', 5000); + }) }, newRecipients(val) { diff --git a/vue/src/components/poll/members.vue b/vue/src/components/poll/members.vue index 5b05bc37599..ab9032105ad 100644 --- a/vue/src/components/poll/members.vue +++ b/vue/src/components/poll/members.vue @@ -100,6 +100,8 @@ export default { } this.reset = !this.reset; + }).catch(error => { + Flash.custom(error.error, 'error', 5000); }).finally(() => { this.saving = false; }); @@ -199,6 +201,7 @@ export default { span.mr-2 {{user.nameWithTitle(poll.group())}} v-chip.mr-1(v-if="isGuest[user.id]" outlined x-small label v-t="'members_panel.guest'" :title="$t('announcement.inviting_guests_to_thread')") v-chip.mr-1(v-if="isMemberAdmin[user.id] || isStanceAdmin[user.id]" outlined x-small label v-t="'members_panel.admin'") + v-chip.mr-1(v-if="!user.emailVerified" outlined x-small label v-t="'announcement.members_list.has_not_joined_yet'" :title="$t('announcement.members_list.has_not_joined_yet_hint')") v-list-item-action v-menu(offset-y) diff --git a/vue/src/components/start_trial/page.vue b/vue/src/components/start_trial/page.vue new file mode 100644 index 00000000000..f9b1dbaf706 --- /dev/null +++ b/vue/src/components/start_trial/page.vue @@ -0,0 +1,117 @@ + + + diff --git a/vue/src/components/strand/members_list.vue b/vue/src/components/strand/members_list.vue index 1751ea7e281..b60aa463e63 100644 --- a/vue/src/components/strand/members_list.vue +++ b/vue/src/components/strand/members_list.vue @@ -79,6 +79,8 @@ export default { Records.remote.post('announcements', params).then(() => { this.reset = !this.reset; Flash.success('announcement.flash.success', { count }); + }).catch(error => { + Flash.custom(error.error, 'error', 5000); }).finally(() => { this.saving = false; }); @@ -190,6 +192,7 @@ export default { v-chip.mr-1(v-if="discussion.groupId && reader.guest" outlined x-small label v-t="'members_panel.guest'" :title="$t('announcement.inviting_guests_to_thread')") v-chip.mr-1(v-if="reader.admin" outlined x-small label v-t="'announcement.members_list.thread_admin'") v-chip.mr-1(v-if="isGroupAdmin(reader)" outlined x-small label v-t="'announcement.members_list.group_admin'") + v-chip.mr-1(v-if="!reader.user().emailVerified" outlined x-small label v-t="'announcement.members_list.has_not_joined_yet'" :title="$t('announcement.members_list.has_not_joined_yet_hint')") v-list-item-subtitle span(v-if="reader.lastReadAt" v-t="{ path: 'announcement.members_list.last_read_at', args: { time: approximateDate(reader.lastReadAt) } }") span(v-else v-t="'announcement.members_list.has_not_read_thread'") diff --git a/vue/src/routes.js b/vue/src/routes.js index dc916a974db..a98eac7e4d2 100644 --- a/vue/src/routes.js +++ b/vue/src/routes.js @@ -26,7 +26,7 @@ const ThreadTemplateIndexPage = () => import('./components/thread_template/index const ThreadTemplateBrowsePage = () => import('./components/thread_template/browse_page'); const UserPage = () => import('./components/user/page'); const ThreadsPage = () => import('./components/threads/page'); -const DemosPage = () => import('./components/demos/index.vue'); +const StartTrialPage = () => import('./components/start_trial/page.vue'); import './config/catch_navigation_duplicated.js'; import Vue from 'vue'; @@ -64,8 +64,8 @@ const router = new Router({ }, routes: [ - {path: '/demo', component: DemosPage}, - {path: '/try', redirect: '/g/new'}, + {path: '/demo', redirect: '/try'}, + {path: '/try', component: StartTrialPage}, {path: '/users/sign_in', redirect: '/dashboard' }, {path: '/users/sign_up', redirect: '/dashboard' }, {path: '/tasks', component: TasksPage}, diff --git a/vue/src/shared/services/ability_service.js b/vue/src/shared/services/ability_service.js index 938fdc852c8..8949105b9f7 100644 --- a/vue/src/shared/services/ability_service.js +++ b/vue/src/shared/services/ability_service.js @@ -193,7 +193,7 @@ export default new class AbilityService { } canCreateSubgroups(group) { - return group.isParent() && + return group.isParent() && group.subscription.allow_subgroups && (group.adminsInclude(Session.user()) || (group.membersInclude(Session.user()) && group.membersCanCreateSubgroups)); }